gpt4 book ai didi

ruby-on-rails - 全局常量未更新为正确的值

转载 作者:太空宇宙 更新时间:2023-11-03 17:32:30 25 4
gpt4 key购买 nike

在 Rails 4 中,我有一个 config/config.yml,我想将其与 config/secrets.yml 分开。我更新了配置以包含 twilio 信息:

development:
sendgrid:
username: username
password: password
domain: domain
twilio:
account_sid: account_sid
auth_token: auth_token
twilio_number: twilio_number

在 config/application.rb 中,我加载了全局常量(我无法在初始化程序中加载它,因为我需要在 environments/*rb 中使用它,并且 environments/*rb 在初始化程序之前加载)。这是全局常量:

module RailsDevise
class Application < Rails::Application
...
config.before_configuration do
::APP_CONFIG = YAML.load_file("#{Rails.root}/config/config.yml")[Rails.env]
end
end
end

当我加载控制台时,更改没有反射(reflect)出来:

> APP_CONFIG
=> {"sendgrid"=>{"username"=>"username", "password"=>"password", "domain"=>"domain"}, "twilio"=>{"account_sid"=>"account_sid", "auth_token"=>"auth_token"}}

但是,可以肯定的是:

> YAML.load(File.open("#{Rails.root}/config/config.yml"))
{"development"=>{"sendgrid"=>{"username"=>"username", "password"=>"password", "domain"=>"domain"}, "twilio"=>{"account_sid"=>"account_sid", "auth_token"=>"auth_token", "twilio_number"=>"twilio_number"}}

可以进行什么样的缓存?我重新加载了几次控制台,应该是重新加载整个应用程序。但它没有检测到 yml 文件中的更改。

最佳答案

sync 虽然不会影响您自己的 rails console,但是 spring 会。 spring 基本上在后台运行,让您的应用程序驻留在内存中,以便更快地(重新)启动 rails console 或运行测试等。它会检测文件更改并自行重启,但它无法监视所有内容,也绝对不会监视您自己的自定义 YAML 配置文件中的更改。让 spring 运行会准确描述您的症状,它是默认 Gemfile 的一部分。

当这些事情再次发生时:spring 停止并重试。

关于ruby-on-rails - 全局常量未更新为正确的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30270052/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com