gpt4 book ai didi

ruby - 我的 rake 任务似乎不能在范围内有其他对象?

转载 作者:数据小太阳 更新时间:2023-10-29 08:40:00 25 4
gpt4 key购买 nike

(我没有使用 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 未知,这是为什么?

我认为 ruby​​ 的动态特性会做到这一点:

运行环境任务时,它会创建 env 变量,并且由于该变量是我其他任务范围内的依赖项。

我怎样才能让它在范围内?

注意:以防万一,我的一些任务在不同的 .rake 文件中,如果有任何改变,请提及。

最佳答案

Rakefile 就像任何其他 Ruby 代码一样。 block 变量(在 do-end 中创建的变量)是 block 的本地变量。

要使您的 env 变量在其他 block 中可见,只需将其分配给实例变量即可:

@env = ENV['ENV'] ...
...
puts @env

或者你也可以使用常量:

MYENV = ENV['ENV'] ....
...
puts MYENV

或者在使用之前在 block 范围之外创建变量:

env = nil

task :environment do
env = ENV['ENV'] ....
end

task :othertask ... do
puts env
end

关于ruby - 我的 rake 任务似乎不能在范围内有其他对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10692206/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com