我構建了一個集成測試套件,並且有一點邏輯需要我有一個乾淨的數據庫。我如何在我的一個測試中運行db:test:purge
任務?在Rspec測試中運行Rake任務
我使用:紅寶石1.9.2,3.0.9導軌,RSpec的2.6
我構建了一個集成測試套件,並且有一點邏輯需要我有一個乾淨的數據庫。我如何在我的一個測試中運行db:test:purge
任務?在Rspec測試中運行Rake任務
我使用:紅寶石1.9.2,3.0.9導軌,RSpec的2.6
您可以調用Rake任務如下:
require 'rake'
Rake::Task[name].invoke
在這種情況下,這將導致在下面的代碼:
require 'rake'
Rake::Task['db:test:purge'].invoke
批准的回答並沒有爲我工作,當我需要執行我自己的耙子任務
這是我的解決方案
放在規範文件
require '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)
嗨,而不是我已經使用_Rails.application.load_tasks_,下面需要'耙'加載任務。這是一個好的解決方案嗎? – coderVishal
'Rake :: Task.define_task(:environment)'避免了'RuntimeError:不知道如何構建任務'環境'(請參閱 - 任務)' – s2t2
我正在使用:'Rake.application。 rake_require「tasks/task-name」加載正在測試的特定任務,而不是使用Rails.application加載所有任務。 load_tasks'(Rails 5,Rspec 3.5) – Steve
如果我們需要使用多個耙任務,我們可以添加
require "rake"
Rails.application.load_tasks
然後只需調用任何任務。
Rake::Task['sync:process_companies'].invoke
雖然如果慢,因爲它加載的所有任務,我不能確認
不相同RSpec的:http://stackoverflow.com/questions/3530/how-do-i-rake-tasks-within -a-ruby-script –