Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.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 Rails控制台是否重新加载初始值设定项?_Ruby On Rails_Ruby - Fatal编程技术网

Ruby on rails Rails控制台是否重新加载初始值设定项?

Ruby on rails Rails控制台是否重新加载初始值设定项?,ruby-on-rails,ruby,Ruby On Rails,Ruby,我使用Rails控制台手动测试了一些东西,发现我的一个初始值设定项(在config/initializers下)有一个错误。我退出控制台,进行了更改,然后再次运行“rails c”。令我大吃一惊的是,更新后的初始值设定项没有被执行 以下是我的发现: --如果我启动一个新的Bash会话并输入“rails c”,所有的初始化程序都会被执行 --如果我添加/更改一个初始值设定项,然后在同一个Bash会话中重新运行“rails c”,则不会执行初始值设定项 这在禁用缓存的开发中发生 到底发生了什么事?谢

我使用Rails控制台手动测试了一些东西,发现我的一个初始值设定项(在config/initializers下)有一个错误。我退出控制台,进行了更改,然后再次运行“rails c”。令我大吃一惊的是,更新后的初始值设定项没有被执行

以下是我的发现:

--如果我启动一个新的Bash会话并输入“rails c”,所有的初始化程序都会被执行

--如果我添加/更改一个初始值设定项,然后在同一个Bash会话中重新运行“rails c”,则不会执行初始值设定项

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

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

的引入是为了让加载rails应用程序更快,方法是在内存中保留应用程序的副本,只重新加载更改的内容

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

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

bundle exec spring stop
在回到控制台之前。这将强制重新加载初始值设定项


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

在rails中键入此命令

reload!

是的,这就是我所期望的。因此,我的问题是:你试过重新启动spring吗?嗯,“spring”?我不知道你指的是什么。这是一个简单的RubyonRails控制台。您使用的是哪个特定版本的Rails?Spring:小心,不要使用初始值设定项;)真不敢相信,我花了1.5个小时试图弄清楚为什么ENV变量在初始化器中显示为
nil
,直到一位同事指出这一点。我在_exit{spring stop`}添加了
,以解决这个问题