(我没有使用Rails)
我有一个rake任务,用于设置传递的环境,如:
rake some:task ENV=test
我的任务是:
desc "environment"
task :environment do
env = ENV['ENV'] || 'development'
end
现在,如果我有一个类似的任务:
desc "t1"
task :t1 [:environment] do
puts env
end
未能说env不知道,为什么会这样?
我认为红宝石的动态性质会这样做:
在运行环境任务时,它会创建env变量,因为它是一个依赖变量,该变量将在我的其他任务的范围内。
我怎么能拥有它以便它在范围内?
注意:如果它很重要,我的一些任务都在不同的.rake文件中,只要提一下是否会改变任何内容。
答案 0 :(得分:4)
Rakefile就像任何其他Ruby代码一样。块变量(在do-end
内创建的变量)是块的本地变量。
要使env
变量在其他块中可见,只需将其分配给实例变量:
@env = ENV['ENV'] ...
...
puts @env
或者你也可以使用常数:
MYENV = ENV['ENV'] ....
...
puts MYENV
或者在使用之前在块范围外创建变量:
env = nil
task :environment do
env = ENV['ENV'] ....
end
task :othertask ... do
puts env
end