Rails控制台是否重新加载初始化程序?

时间:2015-09-27 18:51:00

标签: ruby-on-rails ruby

我正在使用Rails控制台手动测试一些东西,发现我的一个初始化程序(在config / initializers下)有错误。我退出了控制台,进行了更改,然后跑了#34; rails c"再次。令我惊讶的是,更新的初始化程序未执行。

这是我发现的:

- 如果我开始一个新的Bash会话并输入" rails c"所有初始化程序都会被执行。

- 如果我添加/更改初始化程序然后重新运行" rails c"在同一个Bash会话中,初始化程序不会被执行。

这会在禁用缓存的开发中发生。

到底发生了什么事?感谢。

2 个答案:

答案 0 :(得分:17)

Spring的引入意味着通过将应用程序的副本保留在内存中并仅重新加载更改,可以更快地加载rails应用程序。

不幸的是,有时您的初始化程序可以保持完全相同,但它们需要重新运行。一个例子是“business_time”gem,它生成一个加载YAML文件的初始化程序。您可以更改YAML文件并重新启动控制台,但Spring会发现您的初始化程序没有更改,因此它不会重新运行它。因此,对YAML文件的更改不会引起注意,这是一个非常难以排除故障的错误。

如果您遇到初始化程序问题,请退出控制台并运行:

bundle exec spring stop

返回控制台之前。这将迫使重新加载初始化器。

您还可以通过从Gemfile中删除gem来完全禁用Spring。

答案 1 :(得分:0)

将此命令输入rails

reload!

重装你的导轨c

相关问题