Rake testtask导出任务外部的环境变量

时间:2018-11-21 17:19:40

标签: ruby environment-variables rake

在标准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中全局定义的一样。

0 个答案:

没有答案