问题描述
我正在使用 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?"
解决方法
您的意思是您使用的是 dotenv
吗? rbenv
管理 ruby 安装并且不会从我在源代码中搜索的内容中读取 .env
。使用 dotenv,您可以通过调用 .env
从 Dotenv.load
文件重新加载 ENV。它可能会给你关于常量被重新定义的警告。我要做的是创建一个配置类,将 ENV 的默认设置与您想要的重新定义特性/功能结合起来。 Config 管理一切,但从 .env
读取默认值。
您可以使用以下内容进行刷新:
Dotenv.overload('.env')
感谢 domcermak 在:https://github.com/bkeepers/dotenv/issues/426