2012-12-04 14 views
10

私のrspecでrakeタスクを呼び出そうとしています。rspecでrakeタスクを呼び出す方法

require "rake" 
    rake = Rake::Application.new 
    Rake.application = rake 
    rake.init 
    rake.load_rakefile 
    rake['rake my:task'].invoke 

しかし、私は、誰もが、我々はRSpecのコードでrakeタスクを呼び出すことができる方法のアイデアを持っていますエラー

Failure/Error: rake['rake db:migrate'].invoke 
RuntimeError: 
    Don't know how to build task 'rake db:migrate' 

取得しています。

ご協力いただければ幸いです。

答えて

3

invokeに角括弧内の引数に渡すには:

rake sim:manual_review_referral_program[3,4] 

は次のようになります。

rake['sim:manual_review_referral_program'].invoke(3,4) 

argsであるあなたの場合アレイでは、次の操作を実行できます。

args = [3,4] 
rake['sim:manual_review_referral_program'].invoke(*args) 

このStackOverflow質問の詳細:How to run Rake tasks from within Rake tasks? (RSpecのレールの新しいバージョンのかrails_helper)あなたのspec_helper

12

小さな名前空間の問題は、コマンドラインでの使用のようにdb:migrateではなく、rake db:migrateです。

だからこれにそれを変更することは役立つはず:

rake['db:migrate'].invoke 
+0

ありがとうございます。それは動作します。今私は 'lib/tasks /'フォルダに定義されている私のカスタムレイクタスクを持っています。 rspecからどのように実行できますか? – MKumar

+0

'lib/tasks'フォルダに' .rake'拡張子があるものは、デフォルトでインクルードされます。あなたのRakefileはおそらくレールから来ているので、タスクはロードされ、利用可能でなければなりません。 – stuartc

+0

以下のエラーが表示されるエラー/エラー:rake ['sim:manual_review_referral_program [3]']。起動する RuntimeError: タスク 'simをビルドする方法がわからない:manual_review_referral_program [3]' – MKumar

10

RSpecのとRailsのための簡単なソリューション

require "rake" 
Rails.application.load_tasks 

、あなたのタスクを起動したい場合次に、あなたが行うことができます以下:

Rake::Task['my:task'].invoke 
関連する問題