74

新しく作成されたRailsプロジェクト(によって生成されたrails someName)では、次のような「デフォルト」のrakeタスクを実行できます。

  • rake test
  • rake db:migrate

問題は、これらのタスクはどこで説明されるのかということです。デフォルトRakefileには、これらすべてのタスクがあるわけではありません。

さらに、を使用するいくつかのプロジェクトをチェックアウトし、すべてのテストを実行するためrspecに実行することができます。ターゲットrake specはどこで定義されていますか?spec

4

7 に答える 7

117

説明で定義されている場合、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)>'

今日これを見つけた:)

于 2013-04-04T14:39:46.760 に答える
54

レーキタスクはフォルダ構造から自動的にロードされますlib/tasks/*.rake

たとえば、タスクdb:migrateについて話しているとき、それはのrailsgem内にあります。lib/tasks/databases.rake

したがって、特定のプロジェクトでは、プロジェクトフォルダー構造内のタスクと、指定されたgem内のすべてのタスクが常に存在します。

于 2011-01-20T02:36:34.433 に答える
21

タスクが定義および/または変更されている特定のファイルと行番号を見つけるには、次のようにします。

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(および含まれている他のすべてのタスク)をロードし、問題のタスクを見つけて、そのタスクのlocationsメソッドを呼び出します。

同じ人のコメントによると、rake v 10.1.0および場合によっては古いバージョンのrakeについては、tsk.locationsではなくtsk.actionsを呼び出す必要があります。

于 2012-09-01T08:18:00.053 に答える
5

使用しているRailsのバージョンを指定していませんが、3.0.7では、dbタスクはのActiveRecordgemにあります。

lib/active_record/railties/databases.rake

アップデート:

Railsバージョン3.2.7の時点で、タスクはまだ上記のとおりです。

于 2011-05-11T13:52:12.983 に答える
2

Rails 3では、railtiesgemは多くのレーキタスクを定義しています。

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

が構成されている場合は、 gem$EDITORを使用して自分で簡単に確認できます。open_gem

gem install open_gem
gem open railties
于 2012-06-18T23:22:41.373 に答える
2

すべてのタスクを一覧表示するには:

rake -P

多くのタスクはインストールしたgemから発生するため、どのタスクが追加されたかを知るのは困難です...

于 2014-12-14T13:48:51.123 に答える
1

チェックアウトしたプロジェクトは、おそらくrspec-railsgemを使用しています。その宝石がspecタスクを定義します。ここでそのソースコードを見ることができます:

https://github.com/rspec/rspec-rails/blob/master/lib/rspec/rails/tasks/rspec.rake

于 2013-04-25T21:05:25.400 に答える