【发布时间】:2016-02-15 10:37:37
【问题描述】:
我一直在使用 gem。我想在计划任务之前设置我的环境变量。下面代码中的第二行是我想在我的 schedule.rb 文件中运行的命令。但看起来我无法完成它,所以我将其注释掉并尝试了不同的方式。似乎仍然没有任何效果。在 ruby 代码中打印 env 似乎正确地显示了所需的变量,但是在运行“bundle execwhen”并使用 env 命令检查终端之后,变量似乎不存在。这里有什么问题?
every :hour do
# Run shell script to assign variables and continue the rake task
#system "for line in `cat config/myEnvFile.env` ; do export $line ; done"
f = File.open("config/myEnvFile.env", "r")
f.each_line do |line|
j = line.split(" ")
arr = j.first.split("=")
system "export #{arr[0]}=#{arr[1]}"
system "env"
# This line below is also another way but still nothing works
ENV[arr[0]] = arr[1]
end
rake "task:continue_doing_my_task"
end
【问题讨论】:
-
这不是这样做的方法,没有理由每小时加载相同的环境变量。相反,当您的应用在其环境中启动时,通过 github.com/bkeepers/dotenv 之类的方式启动这些变量
-
每 1 小时用于测试,部署时为每 1 天,但这不是这里的问题。
标签: ruby-on-rails ruby rubygems rake-task whenever