在Rspectesting中运行Rake任务
我正在构build一个集成testing套件,并且有一点逻辑,我需要一个干净的数据库。 我如何在我的一个db:test:purge
运行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
当我需要执行我自己的Rake任务时,批准的答案对我来说不起作用
这是我的解决scheme
放在spec文件的顶部
require 'rake'
将这些行放在需要执行自定义rake任务的位置,例如,从example.rake文件中获取rake update_data
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)
如果我们需要使用多个rake任务,我们可以添加
require "rake" Rails.application.load_tasks
然后简单地调用任何任务。
Rake::Task['sync:process_companies'].invoke
虽然我不能确认,如果它更慢,因为它加载所有的任务