Ruby on rails 全局常量未使用正确的值更新
在Rails 4中,我有一个config/config.yml,我希望它与config/secrets.yml分开。我更新了配置以包含twilio信息:Ruby on rails 全局常量未使用正确的值更新,ruby-on-rails,ruby,Ruby On Rails,Ruby,在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
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
但是,可以肯定的是:
> 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控制台
,但是spring
会有spring
基本上是在后台运行的,并让你的应用程序驻留在内存中,以便更快地(重新)启动rails控制台,或运行测试等。它检测文件更改并自行重新启动,但它不能监视所有内容,而且肯定不会监视您自己的自定义YAML配置文件中的更改。运行spring
可以准确描述您的症状,这是默认文件的一部分
当这些事情再次发生时:弹簧停止
并重试。我正在使用Rails 5,我遇到了同样的问题,清除缓存工作正常
rake tmp:cache:clear
为什么我关闭mac上的终端,然后重新打开,现在它可以工作了。我不明白终端(可能还有一个正在运行的ruby进程)是如何链接到这个ruby变量的。你有没有可能在后台运行类似spring的东西?@JedSchneider我让faye在后台运行同步gem,但仍然不确定这会对这个问题产生什么影响。所以,如果你运行spring status
你什么也得不到?@smathy现在我得到了“spring没有运行”。但我在退出并重新打开终端后尝试了你说的话。重新打开终端后,变量正确更新。很明显,是某个正在运行的进程导致了这个问题。我不知道春天是什么。但是我确实有一个同步进程在运行:spawn“rackup sync.ru-E production”,我的文件中确实有Spring。有没有办法在控制台内检查spring是否正在运行?我甚至没有意识到Spring就在那里。Spring状态
正如我在评论中提到的。很高兴知道我的直觉是正确的<代码>弹簧停止
弹簧启动
也可以工作。FWIW,您不需要手动弹簧启动
-下次使用任何使用弹簧的设备时,它将自动为您启动弹簧。
rake tmp:cache:clear