为什么我的Rails开发环境在代码更改时没有重新加载?

5
每次我修改代码后,我都必须重新启动服务器,否则输出不会改变。
我尝试过使用thin和webrick。
我的development.rb文件中写着“config.cache_classes=false”。
我正在使用RubyMine。
有时视图会更新,但模型永远不会更新。
还有什么需要了解的来帮助我解决这个问题吗?
编辑:
我现在离开了我的编码机器,但我开始思考。我在app/models目录下有一个名为makesandwich.rb的文件,app/models/Lesson.rb调用该文件中的函数。我一直在对makesandwich.rb文件进行更改,但它没有重新加载。我需要添加该文件吗,或者它应该自动包含在重新加载中?

1
你在application.rb或development.rb中添加了config.threadsafe!吗? - Eugene Rourke
如果您要将模型添加到Rails应用程序中,则可能首先需要执行rake db:migrate,我认为没有任何绕过此步骤的方法。 - Egryan
是的,RubyMine已自动添加了该项。请查看我的编辑。 - webmagnets
1
如果'makesandwich'不是一个模块,那么你应该去一个lib文件夹或类似的地方。这个stackoverflow答案可能会有所帮助:https://dev59.com/wXNA5IYBdhLWcg3wKacx#1071510 - Egryan
谢谢@EugeneRourke,这对我来说真是一个难题,直到我意识到我在开发中打开了config.threadsafe!来测试某些东西,但没有将其删除。 - concept47
显示剩余6条评论
3个回答

11

我最近也遇到过这个问题。正如其他人所说,它可能是由于将config.cache_classes或config.threadsafe!设置为true而引起的,在大多数情况下都会出现此问题。

但是,我的问题是在虚拟机上运行rails引起的。我的代码存储在主机上的一个文件夹中,然后挂载到虚拟机上。不幸的是,我的主机时钟时间与虚拟机不同步。这是当我修改代码时会发生的事情:

  1. 我在主机上的文本编辑器中更改了一些代码
  2. 保存代码会将文件的修改时间设置为主机当前时间
  3. 从虚拟机的角度来看,这个时间在未来
  4. 当文件更新检查器查找修改的文件时,会忽略我的文件,因为修改日期在未来

再次强调,这可能是一个非常罕见的情况,但如果您在虚拟机上运行rails,则值得检查。


救命稻草!刚刚发现虚拟机内的时钟比主机慢了3分钟。 - msg7086

0
如果你正在开发一个Rails 3项目,你可能会发现Zeus很有用。它可以跟踪你项目中的文件,并且只重新加载内存中更改的代码。这使得在Rails 3开发中REPL更快捷。

https://github.com/burke/zeus


0
问题在于我把一个函数放到了一个单独的文件中,并在那里编辑该函数。这对于生产环境来说是可以正常工作的,但是为了开发目的,我将该函数放回到了Lesson.rb文件中,然后刷新开始正常工作了。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接