【问题标题】:Undefined method `name' for "SystemTimer":String“SystemTimer”的未定义方法“名称”:字符串
【发布时间】:2011-05-19 21:20:07
【问题描述】:

我无法让一个在一年内没有工作的旧 Ruby on Rails 2 应用程序正常工作。

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

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

另外,当我自己运行 rake 时,我得到 Errors running test:units! 不知道如何调试。

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

【问题讨论】:

  • 你的 Gemfile 中有 SystemTimer gem 吗?
  • 另一个标志:未定义的方法 `name' for "bundler":String

标签: ruby-on-rails ruby ruby-on-rails-2


【解决方案1】:

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

  1. 使用捆绑器

    Bundler 是easy to install,解决了这个问题,并且还有许多其他优点。我强烈推荐它。

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

    Rails 2.3.12 修复了与 RubyGems 1.8.5 的兼容性问题(请参阅 release report)。

  3. 降级到 RubyGems 1.3.7

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

【讨论】:

  • 你是对的。这就是解决方案。我必须找到与 ruby​​ 一起使用的正确包,因为 RoR 开发人员在任何意义上都不支持向后兼容性。我设法找到了带有版本号的旧软件包列表,这救了我。
  • 将 Bundler 添加到 Rails 2 项目非常简单,可以解决这个问题。如果您没有使用 rvm 并且在同一台服务器上有多个站点,请执行以下操作:bundle install --path vendor/bundle 以获取您的 gem 的独立副本。
  • 尝试了许多不同的解决方案,但您的第一个建议对我使用 RVM 非常有效。我使用了两个命令:gem install rubygems-update -v 1.7.2,然后是update_rubygems --version=1.7.2
【解决方案2】:

我偶然发现了这个帖子,因为在将一些 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。 只需安装 bundler 并按照此页面上的步骤操作: 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 并重新加载页面以查看您可能还缺少什么。

谢谢本!

【讨论】:

    猜你喜欢
    • 2012-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-28
    • 2015-01-29
    • 1970-01-01
    • 2014-06-11
    • 2014-06-01
    相关资源
    最近更新 更多