Frage

Ich weiß, können Sie alle möglichen Rake Aufgaben, indem Sie sehen

rake -T

Aber ich muss wissen, was genau eine Aufgabe tut. Vom Ausgang, wie kann ich eine Quelldatei finden, die tatsächlich die Aufgabe hat? Zum Beispiel versuche ich, die Quelle für die db zu finden: schema: Aufgabe Dump

.
War es hilfreich?

Lösung

Trotz allem, was andere gesagt haben, Sie können programmatisch den Quellort von Rake Aufgaben in einer Rails-Anwendung bekommen. Um dies zu tun, nur so etwas wie die folgend in Ihrem Code ausführen oder von einer Konsole aus:

# 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)

Dies wird die Quellen-Standorte von Code zurück, die für diese Aufgabe ausgeführt wird. Sie können auch anstelle von #prerequisites verwenden #source_location eine Liste der Voraussetzung Aufgabennamen zu erhalten (zum Beispiel ‚Umwelt‘, etc.).

Sie können auch alle Aufgaben Liste geladen werden:

Rake.application.tasks

UPDATE: Siehe Magnes gute Antwort unten. Für die Versionen von Rechen> = 0.9.0 Sie rake -W können den Quellort Ihrer Rake Aufgaben zeigen.

Andere Tipps

Ich weiß, das ist eine alte Frage, aber in jedem Fall:

rake -W

Dies wurde in Rake 0.9.0 eingeführt.

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

  

Die Unterstützung für die -wo (-W) Flagge zu zeigen, wo eine Aufgabe definiert ist.

Es gibt keinen programmatischen Weg, dies leider zu tun. Rake Aufgaben geladen werden können, entweder von Schienen selbst, lib / Aufgaben oder von jeder Plugin mit einem Aufgaben-Verzeichnis.

Dies sollte die meisten alles nicht innerhalb Rails selbst nab

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

Wie bei db:schema:dump, hier ist die Quelle:

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

Es kann auf der Leitung 242 von lib / Aufgaben / database.rake in den Schienen 2.2.2 gem finden. Wenn Sie eine andere Version von Rails haben, suchen Sie einfach nach „namespace :schema“.

Sie wollen wahrscheinlich tatsächlich die Quelle des ActiveRecord::SchemaDumper, aber ich denke, Sie sollten keine Probleme haben, herauszufinden, wo das ist. : -)

Für die meisten Rake Aufgaben in Rails, schaut in dem Rails-Juwel Verzeichnis, in lib / Aufgaben.

Wenn Sie Rails in Ihre App-Verzeichnisstruktur weiterverkauft haben, dann schauen Sie in vendor / rails / railties / lib / Aufgaben statt

So oder so, db: schema:. Dump in databases.rake

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top