كيف أجد الملف المصدر لمهمة أشعل النار؟
-
06-07-2019 - |
سؤال
أعلم أنه يمكنك عرض جميع مهام أشعل النار الممكنة عن طريق الكتابة
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: المخطط: تفريغ في قواعد البيانات.