統合テストスイートを構築していますが、クリーンなデータベースを用意する必要があるロジックが1つあります。テストの1つの中でdb:test:purge
タスクを実行するにはどうすればよいですか?
私が使用しています:Ruby 1.9.2、Rails 3.0.9、rspec 2.6
次のようにRakeタスクを呼び出すことができます。
require 'rake'
Rake::Task[name].invoke
この場合、次のコードが生成されます。
require 'rake'
Rake::Task['db:test:purge'].invoke
自分のレーキタスクを実行する必要があるときに、承認された回答が機能しなかった
これが私の解決策です
スペックファイルの先頭に置く
require 'rake'
これらの行を、カスタムrakeタスクを実行する必要がある場所に配置します。 rake update_dataファイルからexample.rake
load File.expand_path("../../../lib/tasks/example.rake", __FILE__)
# make sure you set correct relative path
Rake::Task.define_task(:environment)
Rake::Task["update_data"].invoke
私の環境:
Rails (4.0.0)
Ruby (2.0.0p195)
rspec-core (2.14.7)
rspec-expectations (2.14.3)
rspec-mocks (2.14.4)
rspec (2.14.1)
rspec-Rails (2.14.0)
複数のレーキタスクを使用する必要がある場合は、追加できます
require "rake"
Rails.application.load_tasks
次に、任意のタスクを呼び出します。
Rake::Task['sync:process_companies'].invoke
それはすべてのタスクをロードするので、それが遅いかどうかは確認できませんが
タスクも必要です
require 'rake'
Rake.application.rake_require 'tasks/new_adapter'
この後、タスクを呼び出すだけです
Rake::Task['new:adapter'].invoke