سؤال

أعلم أنه يمكنك عرض جميع مهام أشعل النار الممكنة عن طريق الكتابة

rake -T

لكنني بحاجة إلى معرفة ما تفعله المهمة بالضبط. من الإخراج ، كيف يمكنني العثور على ملف مصدر له المهمة بالفعل؟ على سبيل المثال ، أحاول العثور على مصدر DB: Schema: Dump Task.

هل كانت مفيدة؟

المحلول

على الرغم من ما قاله الآخرون ، أنت يستطيع احصل برمجياً على موقع مصدر مهام Rake في تطبيق Rails. للقيام بذلك ، ما عليك سوى تشغيل شيء مثل ما يلي في الكود الخاص بك أو من وحدة التحكم:

# load all the tasks associated with the rails app
Rails.application.load_tasks

# get the source locations of actions called by a task
task_name = 'db:schema:load' # fully scoped task name
Rake.application[task_name].actions.map(&:source_location)

سيؤدي ذلك إلى إرجاع مواقع المصدر لأي رمز يتم تنفيذه لهذه المهمة. تستطيع ايضا استخذام #prerequisites بدلاً من #source_location للحصول على قائمة بأسماء المهام المتطلب السابق (على سبيل المثال "البيئة" ، إلخ).

يمكنك أيضًا سرد جميع المهام المحملة باستخدام:

Rake.application.tasks

تحديث: انظر إجابة ماغن جيدة أدناه. لإصدارات أشعل النار> = 0.9.0 يمكنك استخدام rake -W لإظهار موقع المصدر لمهام أشعل النار الخاصة بك.

نصائح أخرى

أعلم أن هذا سؤال قديم ، لكن على أي حال:

rake -W

تم تقديم هذا في أشعل النار 0.9.0.

http://rake.rubyforge.org/doc/release_notes/rake-0_9_0_rdoc.html

دعم العلم-أين (-W) لإظهار مكان تعريف المهمة.

لا توجد طريقة برمجية للقيام بذلك لسوء الحظ. يمكن تحميل مهام Rake إما من Rails نفسها ، LIB/NASKS ، أو من أي مكون إضافي مع دليل المهام.

هذا يجب أن يكون كل شيء ليس داخل القضبان نفسها:

find . -name "*.rake" | xargs grep "whatever"

أما بالنسبة لل db:schema:dump, ، هذا هو المصدر:

desc "Create a db/schema.rb file that can be portably used against any DB supported by AR"
task :dump => :environment do
  require 'active_record/schema_dumper'
  File.open(ENV['SCHEMA'] || "#{RAILS_ROOT}/db/schema.rb", "w") do |file|
    ActiveRecord::SchemaDumper.dump(ActiveRecord::Base.connection, file)
  end
end

يمكن العثور عليه على السطر 242 من lib/ass/database.rake في Rails 2.2.2 GEM. إذا كان لديك نسخة مختلفة من Rails ، فما عليك سوى البحث عن "namespace :schema".

ربما تريد بالفعل مصدر ActiveRecord::SchemaDumper, ، لكنني أعتقد أنه لا ينبغي أن تواجه مشكلة في معرفة مكان ذلك. :-)

بالنسبة لمعظم مهام أشعل النار في القضبان ، انظر إلى دليل GEM Rails ، في LIB/NASKS.

إذا كنت قد عازلت من القضبان في بنية دليل التطبيق الخاص بك ، فابحث في البائع/القضبان/السكك الحديدية/lib/المهام بدلاً من ذلك

في كلتا الحالتين ، DB: المخطط: تفريغ في قواعد البيانات.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top