上比较诡异的图吧 之前一个同事遇到的问题,不管你怎么改 config/secrets.yml 配置文件,用 Rails.application.secrets 访问还时初始化的配置,结束 rails c 重新运行也一样,后来跟踪了一下源码发现 gem 包 spring 做了处理。
它帮我们在本地开发的命令 (rails console, rails generate, rails runner) 做预加载动作,在我们初始打开终端运行这些命令的时候 spring 会在后台启动一个服务,当我们第二次运行这些命令时就不会重复加载 Rails.application.initializers,这样运行速度会快很多,你可以在你的项目目录运行bin/spring status
下查看状态,当我们改动 spring watcher 的一些文件时候 spring 服务会自动 reload.
所以上面这个问题是因为这个 spring 的版本 1.1.3 它没有对 secrets.yml 进行 watch 所以改动时 spring 不会重新 reload, 把 spring 的版本更新 1.2.0 就可以了。
还有在 rails c 运行Spring.watcher.send(:expanded_files)
查看 watcher 的文件列表,也可以手动加一些文件 watcher。
下次童鞋们遇见这坑就不会陌生了