您如何使用 Rake::TestTask 来执行多个任务?
How do you use multiple tasks using Rake::TestTask?
我正在 运行使用 Rake 进行 Minitest,并且希望有两个单独的 Rake 任务。
我添加了以下内容:
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 任务?就像现在一样,第二个总是覆盖环境变量。
谢谢
您可以像这样使用 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
我正在 运行使用 Rake 进行 Minitest,并且希望有两个单独的 Rake 任务。
我添加了以下内容:
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 任务?就像现在一样,第二个总是覆盖环境变量。
谢谢
您可以像这样使用 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