
コマンドをsudo rake db:migrate
実行すると、以下のエラー メッセージが表示されました。
rake aborted!
RubyGem version error: rack(1.4.1 not ~> 1.1.0)
RubyGem のバージョンが予想よりも新しいようです。RubyGem のバージョンをダウングレードするにはどうすればいいでしょうか?
答え1
確かに、RubyGems の「新しすぎる」バージョンは、一部の古いアプリケーション (主に Rails 2.x を使用しているアプリケーション) では問題になる可能性がありますが、投稿されたエラー メッセージは別の原因を示しているようです。アプリケーションでは特定のバージョンの Rack gem が必要であり、インストールしたバージョンはその要求に適合していない可能性があります。
アプリケーションは rack ~> 1.1.0 を要求します。この条件は、1.1.0、1.1.5、1.1.345 などの 1.1.x シリーズのどのバージョンにも一致しますが、1.2.0 や 2.0.0 には一致しません。Rack を 1.4.1 にインストールしたようですが、これは条件 ~> 1.1.0 に一致しません。
幸いなことに、同じgemの異なるバージョンを並べてインストールすることができます。インストールしたRackのバージョンを確認するには、
gem list -l rack
そのリストには、ローカルにインストールされた (-l スイッチのため) 名前が 'rack' で始まる gem が表示されます。そのリストには、おそらく 1.1.x シリーズのバージョンは含まれていません。
特定のバージョンのgemをインストールするには、--version=xyzオプションを使用します。
gem install rack --version=1.1.0
おそらく、移行はこれで完了するでしょう。
実際にRubyGemsをダウングレードする必要がある場合は、まず、ダウングレードしたいバージョンにRubyGems gem ( :D )をインストールする必要があります。これは、上記で行ったのと同様です。
gem install rubygems-update --version=x.y.z
その後、「アップデート」(あなたの場合はダウングレード)を実行できます。
gem update --system x.y.z
ここで、xyz は必要なバージョン番号です。特定のバージョンへの「更新」は RubyGems 1.5.1 で導入されたため、それより低いバージョンにダウングレードすることはできないことに注意してください。