Jak znaleźć plik źródłowy dla zadania rake?
Wiem, że możesz wyświetlić wszystkie możliwe zadania rake wpisując
rake -T
Ale muszę wiedzieć, co dokładnie robi zadanie. Jak mogę znaleźć plik źródłowy, który rzeczywiście ma to zadanie? Na przykład, próbuję znaleźć źródło dla zadania db: schema: dump. 4 answers
Pomimo tego, co powiedzieli inni, ty możesz programowo uzyskać lokalizację źródłową zadań rake w aplikacji rails. Aby to zrobić, po prostu uruchom coś takiego w kodzie lub z konsoli:
# 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)
Zwróci to lokalizacje źródłowe kodu, który zostanie wykonany dla tego zadania. Możesz również użyć #prerequisites
zamiast #source_location
, aby uzyskać listę wymaganych nazw zadań (np.' środowisko', itp.).
Możesz również wyświetlić listę wszystkich załadowanych zadań użycie:
Rake.application.tasks
Aktualizacja: Zobacz dobrą odpowiedź Magne poniżej. Dla wersji rake > = 0.9.0 możesz użyć rake -W
, aby pokazać lokalizację źródłową swoich zadań rake.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-08-01 00:02:25
Wiem, że to stare pytanie, ale w każdym razie:
rake -W
To zostało wprowadzone w rake 0.9.0.
Http://rake.rubyforge.org/doc/release_notes/rake-0_9_0_rdoc.html
Wsparcie dla flagi-where (- w) do pokazania, gdzie zdefiniowano zadanie.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-04-27 21:41:43
Niestety nie ma na to żadnego programu. Rake tasks może być załadowany albo z samego rails, lib / tasks, albo z dowolnej wtyczki z katalogiem tasks.
To powinno przechwytywać większość wszystkiego, co nie mieści się w Railach:
find . -name "*.rake" | xargs grep "whatever"
Jeśli chodzi o db:schema:dump
, Oto źródło:
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
Można go znaleźć w linii 242 lib / tasks / database.grabie w szynach 2.2.2 gem. Jeśli masz inną wersję Rails, po prostu wyszukaj "namespace :schema
".
Prawdopodobnie chcesz źródło ActiveRecord::SchemaDumper
, ale myślę, że nie powinieneś mieć problemów z ustaleniem, gdzie to jest. :-)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-05-06 18:04:52
Dla większości zadań rake w Rails, poszukaj w katalogu rails gem, w lib / tasks.
Jeśli dodałeś Rails do swojej struktury katalogów aplikacji, poszukaj zamiast tego w vendor / rails / railties / lib / tasks
Tak czy inaczej, db:schema: dump jest w bazach danych.grabie.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-05-06 16:37:54