是否可以在运行时刷新 ENV

Is it possible to refresh ENV during runtime

我正在使用 dotenv Gem 来读取我的 .env 文件中的变量。我创建了一个控制台命令来更新 .env 文件,但也在同一运行时读取它们。问题是它读取旧值,即使我更新了 .env 文件。有没有办法在运行时刷新 ENV 以获取最新值?

.env

FOOBAR=hello

ruby.rb

puts ENV['FOOBAR'] # Prints "hello"
EnvFile.update_variable('.env', 'FOOBAR', "How are you?")
Dotenv.load('.env')
puts ENV['FOOBAR'] # Prints "hello" even though looking in .env it has the new value "How are you?"

您是说您正在使用 dotenvrbenv 管理 ruby 安装,但不读取 .env 我在源代码中搜索的内容。使用 dotenv,您可以通过调用 Dotenv.load.env 文件重新加载 ENV。它可能会给你关于常量被重新定义的警告。我要做的是制作一个配置 class 以将 ENV 的默认设置与您想要的重新定义 feature/function 结合起来。 Config 管理所有内容,但从 .env.

读取默认值

您可以通过以下方式刷新:

Dotenv.overload('.env')

感谢 domcermak 在以下位置回答此问题:https://github.com/bkeepers/dotenv/issues/426