是否可以在运行时刷新 ENV

问题描述

我正在使用 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,您可以通过调用 .envDotenv.load 文件重新加载 ENV。它可能会给你关于常量被重新定义的警告。我要做的是创建一个配置类,将 ENV 的默认设置与您想要的重新定义特性/功能结合起来。 Config 管理一切,但从 .env 读取默认值。

,

您可以使用以下内容进行刷新:

Dotenv.overload('.env')

感谢 domcermak 在:https://github.com/bkeepers/dotenv/issues/426