12

我在让一个一年内没有工作的旧 Ruby on Rails 2 应用程序工作时遇到问题。

我正在尝试rake test:functionals在我的项目目录的根目录中运行,但正在获取undefined method 'name' for "SystemTimer":String.

我在这里粘贴了我认为与问题相关的所有内容:http: //pastebin.com/NgBvystZ

另外,当我自己运行 rake 时,我 Errors running test:units! 不确定如何调试它。

我已经复制并粘贴了我认为有助于理解这个问题的所有内容。非常感谢您的时间。谢谢你。

4

2 回答 2

54

这是高于 1.3.7 的 RubyGems 版本和低于 2.3.12 的 Rails 版本之间的不兼容。有几种方法可以解决这个问题。

  1. 使用捆绑器

    Bundler易于安装,解决了这个问题,并且还具有许多其他优点。我强烈推荐它。

  2. 升级到 Rails 2.3.12 或更高版本

    Rails 2.3.12 修复了与 RubyGems 1.8.5 的兼容性问题(请参阅发布报告)。

  3. 降级到 RubyGems 1.3.7

    我不会推荐这个,除非你别无选择。使用这个命令:gem update --system 1.3.7. 此外,版本 1.7.2 具有部分兼容性(它会运行,但冻结 gem 会失败并且可能存在其他问题)。

于 2011-06-08T17:00:15.750 回答
4

我偶然发现了这个线程,因为在将一些 Radiant 0.9.1 安装迁移到新服务器时出现以下错误:

undefined method `name' for "RedCloth":String

(3) 妥协的解决方案:我没有亲自测试过,但我听说带有 bundler 的 rails 2.3 与最新的 ruby​​gems 兼容。如果您对此解决方案感兴趣,请参阅http://gembundler.com/rails23.html以了解让 bundler 在 rails 2.3 下工作。

对我来说,解决方案 3 是唯一的选择,因为我们有其他应用程序需要系统上的最新 ruby​​gems。只需安装捆绑器并按照此页面上的步骤操作:http: //gembundler.com/rails23.html

并将其放入应用根目录中名为“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"

这只是我的例子。仅从前 2 行开始,运行bundle update并重新加载页面以查看您可能还缺少什么。

谢谢你本!

于 2011-11-05T18:54:11.637 回答