【问题标题】:Is it possible to refresh ENV during runtime是否可以在运行时刷新 ENV
【发布时间】:2021-02-19 23:05:31
【问题描述】:

我正在使用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?"

【问题讨论】:

    标签: ruby dotenv


    【解决方案1】:

    你的意思是你正在使用dotenvrbenv 管理 ruby​​ 安装,并且不会从我在源代码中搜索的内容中读取 .env。使用 dotenv,您可以通过调用 Dotenv.load.env 文件重新加载 ENV。它可能会给你关于常量被重新定义的警告。我要做的是创建一个配置类,将 ENV 的默认设置与您想要的重新定义特性/功能相结合。 Config 管理所有内容,但从 .env 读取默认值。

    【讨论】:

    • 谢谢。我的意思是dotenv。我更新了问题并添加了一些代码。我试过你的建议,但没有奏效。
    【解决方案2】:

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

    Dotenv.overload('.env')
    

    感谢 domcermak 回复此问题:https://github.com/bkeepers/dotenv/issues/426

    【讨论】:

      猜你喜欢
      • 2014-02-28
      • 1970-01-01
      • 1970-01-01
      • 2015-12-16
      • 2019-08-29
      • 2015-09-21
      • 1970-01-01
      • 2012-04-12
      • 1970-01-01
      相关资源
      最近更新 更多