今天将代码部署到服务器上之后出现了这个奇怪的错误,经过删除gems重装之后问题依旧,最后查找资料,发现可能是 require
和 class
之间的问题,最后在今天写的代码中发现了我在某个model
的文件开头require
了一个包。将require
移入class定义内该问题解决。
原来代码如下:
1 2 3 4 |
require 'faster_csv' class Character < ActiveRecord::Base ... end |
修改后:
1 2 3 4 |
class Character < ActiveRecord::Base require 'faster_csv' ... end |
这个问题产生的原因我还不是非常清楚,难道和ruby的语法或者是内部运行机制和rails有冲突么?
这个问题在Rails的BUG列表中依然存在争议,目前还没有被彻底解决
2007-12-11更新
今天在我更新了服务器后,服务器上又出现了这个问题,但这次换了一个文件,变成了account.rb。这台服务器上装的是CentOS3,而另外一台同步更新的Windows2003服务器,则没有出现这个情况。多次修改找不出原因也不能解决问题,最后通过重启服务器解决了问题……
重新看了Rails Trac上的问题,发现情况并不是那么简单,很多条件可以造成这个错误,而问题的解决也是非常奇怪,比如有个人出现错误后,将某个设置从true改为了false,便正常了,然后他又把设置改回true,但是错误就没有了。