新しく作成されたRailsプロジェクト(Rails someName
で生成))では、次のような 'デフォルト'のrakeタスクを実行できます。
rake test
rake db:migrate
質問は、これらのタスクはどこで説明されますか?デフォルトのRakefile
には、これらすべてのタスクがありません。
さらに、rspec
を使用するプロジェクトをチェックアウトし、rake spec
を実行してすべてのテストを実行できます。 spec
ターゲットはどこで定義されていますか?
Rakeタスクは、フォルダー構造から自動的にロードされますlib/tasks/*.rake
たとえば、タスクdb:migrateについて話している場合、タスクはRails gem in lib/tasks/databases.rake
そのため、特定のプロジェクトでは、プロジェクトフォルダー構造内のタスクと、指定されたgem内のすべてのタスクが常にあります。
説明で定義されている場合、rake -Wはあなたの友達です。例:
$ rake -W db:create
=>
rake db:create /path/to/Ruby/gems/1.9.1/gems/activerecord-3.1.11/lib/active_record/railties/databases.rake:39:in `block in <top (required)>'
今日これを見つけました:)
タスクが定義および/または変更されている特定のファイルと行番号を見つけるには、次を実行します。
Railsコンソールを開始:
Rails c
次に、これらのコマンドを実行します。
require 'rake'
Rake::TaskManager.record_task_metadata=true
Rake.application.load_rakefile
tsk = Rake.application.tasks.find {|t| t.name =='my_task_name'}
tsk.locations
Rakeは基本的に内部的にロケーションを追跡でき、リクエストに応じてそれらを表示する気の利いたメソッドを持っています。上記のコードは基本的にrakeをロードし、ファイルの場所を追跡するようにRakeに指示し、Rakefile(および他のすべての含まれるファイル)をロードし、問題のタスクを見つけ、その場所メソッドを呼び出します。
同じコメントから、rake v 10.1.0およびrakeの古いバージョンの場合は、tsk.locationsではなくtsk.actionsを呼び出す必要があります。
使用しているRails=のバージョンを指定しませんでしたが、3.0.7ではdb
タスクはActiveRecord gemにあります
lib/active_record/railties/databases.rake
Railsバージョン3.2.7の時点で、タスクは上記のとおりです。
すべてのタスクをリストするには:
rake -P
多くのタスクはgemに由来するため、インストールするタスクを把握するのは困難です...
Rails 3でrailties
gemは多くのrakeタスクを定義します。
railties-3.2.5/lib/Rails/tasks/annotations.rake
railties-3.2.5/lib/Rails/tasks/documentation.rake
railties-3.2.5/lib/Rails/tasks/engine.rake
railties-3.2.5/lib/Rails/tasks/framework.rake
railties-3.2.5/lib/Rails/tasks/log.rake
railties-3.2.5/lib/Rails/tasks/middleware.rake
railties-3.2.5/lib/Rails/tasks/misc.rake
railties-3.2.5/lib/Rails/tasks/routes.rake
railties-3.2.5/lib/Rails/tasks/statistics.rake
railties-3.2.5/lib/Rails/tasks/tmp.rake
railties-3.2.5/lib/Rails/test_unit/testing.rake
もしあなたの $EDITOR
が設定されている場合、open_gem
gem:
gem install open_gem
gem open railties
チェックアウトしたプロジェクトは、おそらくrspec-Railsgemを使用しています。そのgemはspec
タスクを定義します。以下のソースコードを見ることができます:
https://github.com/rspec/rspec-Rails/blob/master/lib/rspec/Rails/tasks/rspec.rake