12

1年経っても機能しない古いRubyonRails2アプリを入手するのに問題があります。

rake test:functionalsプロジェクトディレクトリのルートで実行しようとしていますが、取得していundefined method 'name' for "SystemTimer":Stringます。

私はここに問題に関連すると私が信じるすべてを貼り付けました:http: //pastebin.com/NgBvystZ

また、rake自体を実行する Errors running test:units! と、デバッグ方法がわかりません。

この問題を理解するのに役立つと思うものをすべてコピーして貼り付けました。どうぞよろしくお願いいたします。ありがとうございました。

4

2 に答える 2

54

これは、RubyGems の 1.3.7 以降のバージョンと Rails の 2.3.12 未満のバージョンの間の非互換性です。これを解決するにはいくつかの方法があります。

  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

一部のRadiant0.9.1インストールを新しいサーバーに移行するときに次のエラーが発生したため、このスレッドを偶然見つけました。

undefined method `name' for "RedCloth":String

(3)妥協的な解決策:これを個人的にテストしたことはありませんが、バンドラーを備えたRails2.3は最新のrubygemsと互換性があると聞いています。このソリューションに興味がある場合は、 http: //gembundler.com/rails23.htmlを参照して、レイル2.3でバンドラーを機能させてください。

システムに最新のrubygemsを必要とする他のアプリがあったため、私にとってはソリューション3が唯一の選択肢でした。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、ページを実行してリロードし、他に何が欠けているかを確認します。

ベンありがとう!

于 2011-11-05T18:54:11.637 に答える