2015-05-01 2 views
2

Я бегу Minitest с Rake и хотел бы иметь две отдельные задачи Rake.Как вы используете несколько задач с помощью Rake :: TestTask?

Я добавил следующее:

require 'rake/testtask' 

task :default => [:test] 
task :quick => [:unit] 

Rake::TestTask.new do |t| 
    puts 'within test task' 
    t.libs.push 'specs' 
    t.pattern = 'specs/*_spec.rb' 
    ENV['STACK'] = 'stack1' 
    puts "test stack #{ENV['STACK']}" 
end 


Rake::TestTask.new('unit') do |t| 
    puts 'within unit task' 
    t.libs.push 'specs' 
    t.pattern = 'specs/*_unit.rb' 
    ENV['STACK'] = 'stack2' 
    puts "test stack #{ENV['STACK']}" 
end 

Когда я бегу bundle exec rake quick тогда я получаю этот выход:

within test task 
test stack stack1 
within unit task 
test stack stack2 

Я не ожидал, обе задачи выполняются. Как создать и запустить две отдельные задачи rake? Как и сейчас, вторая всегда перезаписывает переменную среды.

Благодаря

ответ

2

Вы решить эту проблему с помощью Rake::Task["task_name"].clear вроде этого:

task :test_task do 
    Rake::TestTask.new do |t| 
    puts 'within test task' 
    t.libs.push 'specs' 
    t.pattern = 'specs/*_spec.rb' 
    ENV['STACK'] = 'stack1' 
    puts "test stack #{ENV['STACK']}" 
    end 
end 

task :unit_task do 
    Rake::TestTask.new('unit') do |t| 
    puts 'within unit task' 
    t.libs.push 'specs' 
    t.pattern = 'specs/*_unit.rb' 
    ENV['STACK'] = 'stack2' 
    puts "test stack #{ENV['STACK']}" 
    end 

end 

task :test do 
    Rake::Task["unit_task"].clear 
    Rake::Task["test_task"].invoke 
end 

task :unit do 
    Rake::Task["test_task"].clear 
    Rake::Task["unit_task"].invoke 
end 
+0

Спасибо. Должно ли это быть «Rake :: Task [" db: test_task "]. Clear' или' Rake :: Task ["test"]. Clear' – Daryn

+0

Упс, в первом редактировании я только что протестировал с 'namespace' ... У меня есть обновленный ответ. –

+0

Спасибо, это сделало трюк! – Daryn

Смежные вопросы