Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 全局常量未使用正确的值更新_Ruby On Rails_Ruby - Fatal编程技术网

Ruby on rails 全局常量未使用正确的值更新

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

在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
但是,可以肯定的是:

> 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