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

时间:2012-12-31 15:06:05

标签: ruby ruby-on-rails-3 thin rubymine webrick

每次我对代码进行更改时,我都必须重新启动服务器,否则它不会更改输出。

我尝试过使用thin和webrick。

我的development.rb文件显示“config.cache_classes = false”。

我正在使用RubyMine。

有时我的视图会更新,但模型永远不会更新。

您需要知道的其他任何事情来帮我解决这个问题吗?

编辑:

我现在离开了我的编码机,但我开始思考了。我在app / models目录中有一个名为makesandwich.rb的文件,app / models / Lesson.rb调用该文件中的一个函数。我一直在对makesandwich.rb文件进行更改,但它还没有重新加载。我是否需要添加该文件,还是应该在重新加载时自动包含?

3 个答案:

答案 0 :(得分:10)

我最近也有这个问题。正如其他人所说,它可能是由设置配置引起的。 cache_classes或config.threadsafe!为真,这在大多数情况下可能是问题。

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

  1. 我在主机上的文本编辑器中更改了一些代码
  2. 保存代码会将文件的修改时间设置为我的主机的当前时间
  3. 从VM的角度来看,这个时间是将来
  4. 当文件更新检查程序查找已修改的文件时,它会忽略我的文件,因为修改日期是将来的
  5. 同样,这可能是一个非常罕见的情况,但如果您在VM上运行rails,则值得检查一下

答案 1 :(得分:0)

如果您正在开发Rails 3项目,您可能会发现Zeus很有帮助。它会跟踪项目中的文件,并仅重新加载内存中已更改的代码。它使Rails 3的开发速度更快。

https://github.com/burke/zeus

答案 2 :(得分:0)

问题是我将一个函数放在一个单独的文件中并在那里编辑函数。这适用于生产,但出于开发目的,我将该函数重新放入Lesson.rb文件中,并且刷新开始正常工作。