论坛首页 编程语言技术论坛

从Rails 1.1.6升级到1.2.2遇到的几个问题及解决方案

浏览 4121 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-03-08  
如下:

1.关于enrivonment.rb
要把自己在enrivonment.rb中的配置放到:
Rails::Initializer.run do |config|

之后
我遇到这个问题时,把以下代码放到该句之前:
require 'environments/localization_environment'
require 'localization'
Localization::load_localized_strings
require 'environments/user_environment'

在1.1.6下运行没问题,但在1.2.x不行。

2.关于ActionMailer::Base.server_settings
如果你遇到如下错误:
uninitialized constant ActiveSupport::Deprecation::RAILS_DEFAULT_LOGGER (NameError)
那么把你在environments目录下的development.rb, production.rb, test.rb中的ActionMailer::Base.server_settings全部改成ActionMailer::Base.smtp_settings
如果这句话在environment.rb中,可能没这个问题。

3.把所有的"include"语句放到class/modlue定义块中
如果放在class/modlue定义块之前,在1.1.6下可以,但1.2.x不行,你会遇到错误:
Error calling Dispatcher.dispatch #<NameError: cannot remove Object::COPYRIGHT>
   发表时间:2007-03-08  
补充一下:
这些错误最头疼的地方是错误的提示不得要领、不着边际,甚至在出错的调用栈中根本不会出现实际出错的文件名,让查错大费周折。我只好用最笨的排除法,一点一点往回加文件,直到出错然后跟踪原因。

我以前说过,Rails中用了许多不那么直接了当的Magic,这是导致难以找出错误的主因。
0 请登录后投票
   发表时间:2007-03-08  
1、这个问题可能是你的不规范用法引起的。enrivonment.rb里面的注释已经强调了让用户把自己的代码放在最后面了,如果你非要放在前面,也怪不着rails的magic吧。

2、这个是rails1.2.2才改的配置。我这里用server_settings很正常,照常发邮件,只不过log里面会有一条警告信息而已,不会出现你贴出来的那种错误,貌似你在server_setting里面有些什么特殊的配置引起的。

3、为什么要把include放在class/module之前,不放在class/module里面?有什么特殊的用意?
0 请登录后投票
   发表时间:2007-03-08  
没有什么特殊的用意,是这个项目一年多前的代码,那时是在用Rails搭原型。

这正好就是我说的ruby的随便之处,你把它放在不同的地方,有时候行(比如:1.1.6),有时候又不行。

用server_settings时,如果放在总的environment.rb下可以,但如果是在environments/development.rb, test.rb, prodution.rb里(需要分别设的情况)就*可能*不行,这个可能不行还跟你可能用了一些plugin有关。

不同的Rails项目可能使用了不同的插件,而比较复杂的应用,有时需要超出Rails的约定,这时,这个界限在哪里就很难控制,我希望开发语言或者框架具有一定的一致性,不能在版本A下就可以,在版本B下就不行,而这种不行甚至连写框架的人也未必意识到。
0 请登录后投票
   发表时间:2007-03-08  
dcaoyuan 写道


这正好就是我说的ruby的随便之处,你把它放在不同的地方,有时候行(比如:1.1.6),有时候又不行。


这个不是Ruby的随便之处吧,肯定是Rails的更新引些的
0 请登录后投票
   发表时间:2007-03-09  
我的升级也遇到很多怪异问题,原来把string储二进制文件,升级过后就不能正常使用,会出现截断。网上也找不到相关资料。
后来发现这个问题只存在于win32平台,linux上完全正常,现在找不到好方法解决win32上兼容性问题,看了老外没有几个人在win32上耍rails。在linux上开发又不方便,也买不起mac ,只好老老实实退回到1.1.6。反正发布的时候改成1。2。2,没发现有兼容性问题。
如果你只是在win32上试过,可以linux上试试看。说不定就没有问题了。
0 请登录后投票
论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics