10

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

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

しかし、私はエラーが発生しています

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

rspec コードで rake タスクを呼び出す方法を知っている人はいますか?

どんな助けでも大歓迎です。

4

3 に答える 3

12

小さな名前空間の問題、タスクはコマンド ラインの使用法とはdb:migrate異なります。rake db:migrate

したがって、これを次のように変更すると役立ちます。

rake['db:migrate'].invoke
于 2012-12-04T14:33:51.280 に答える
11

Rspec を使用した Rails のより簡単なソリューション:

あなたのspec_helper(またはrails_helperrspec-railsの新しいバージョンの場合):

require "rake"
Rails.application.load_tasks

次に、タスクを呼び出したい場合は、次のことができます。

Rake::Task['my:task'].invoke
于 2015-02-20T17:54:27.700 に答える
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? .

于 2014-01-06T08:40:36.343 に答える