在标准Rake task中定义环境变量仅将变量应用于任务执行。
在Rake TestTask中执行相同操作会将环境变量导出到其余任务环境。
执行此操作不会影响其他任务的ENV["ENVIRONMENT"]
的值:
task :test do
ENV["ENVIRONMENT"] = "test"
puts "other tasks will not have the env"
end
对于所有任务(即使未运行时),此操作也会更改ENV["ENVIRONMENT"]
:
Rake::TestTask.new(:random_task) do |t|
ENV["ENVIRONMENT"] = "test"
puts "all other tasks have this env set even if this task is not run"
end
如何将常规的Task行为应用于TestTask或设计成这样?
我这样看:
每个任务都继承标准环境,但是在其自己的shell中执行,但是TestTask似乎在所有其他任务都从其继承的主环境中执行。就像ENV["ENVIRONMENT"]
是在Rakefile中全局定义的一样。