我在使用旧的Ruby on Rails 2应用程序时遇到问题,该应用程序在一年内没有工作。
我正在尝试在项目目录的根目录中运行rake test:functionals
,但我正在获取undefined method 'name' for "SystemTimer":String
。
我已经粘贴了我认为与此问题相关的所有内容: http://pastebin.com/NgBvystZ
另外,当我自己跑rake时,我明白了
Errors running test:units!
不知道如何调试。
我复制并粘贴了一些我认为对理解这个问题有用的东西。非常感谢您的时间。谢谢。
答案 0 :(得分:54)
这是大于1.3.7的RubyGems版本与小于2.3.12的Rails版本之间的不兼容性。有几种方法可以解决这个问题。
使用Bundler
Bundler是easy to install,修复了这个问题,并且还有许多其他优点。我强烈推荐它。
升级到Rails 2.3.12或更高版本
Rails 2.3.12修复了RubyGems 1.8.5的兼容性问题(参见release report)。
降级为RubyGems 1.3.7
除非你别无选择,否则我不建议这样做。使用此命令:gem update --system 1.3.7
。此外,版本1.7.2具有部分兼容性(它将运行,但冻结宝石将失败,并且可能存在其他问题)。
答案 1 :(得分:4)
我偶然遇到这个帖子,因为在将一些Radiant 0.9.1安装迁移到新服务器时出现以下错误:
undefined method `name' for "RedCloth":String
(3)妥协的解决方案:我没有亲自测试过,但我听说带有捆绑器的rails 2.3与最新的rubygems兼容。如果您对此解决方案感兴趣,请参阅http://gembundler.com/rails23.html以获取Bundler在rails 2.3下工作。
对我来说,解决方案3是唯一的选择,因为我们有其他应用需要系统上最新的rubygems。 只需安装bundler并按照此页面上的步骤操作: http://gembundler.com/rails23.html
并将其放在app root中名为“Gemfile”的文件中:
source :gemcutter
gem "radiant", "0.9.1"
gem "sanitize"
gem "fastercsv"
gem "rmagick"
gem "rack", "~> 1.1.0"
gem "rake", ">= 0.8.3"
gem "RedCloth", ">= 4.0.0"
gem "will_paginate", "~> 2.3.11"
gem "mysql"
这只是我的榜样。从仅前两行开始,运行bundle update
并重新加载页面以查看您可能缺少的其他内容。
谢谢Ben!