(他の問題の中でも)単一のレガシーアプリを実行するためだけに、古いバージョンのRailsに戻す必要がありますか?
-
03-07-2019 - |
質問
実行する必要がある古いRailsアプリがあります。しかし、私はRailsの最新バージョンを持っています。
この古いアプリを実行しようとすると、次のように表示されます:
Rails 1.99.0 gemがありません。お願いします
gem install -v = 1.99.0 rails
しかし、コマンドを実行すると: gem install -v = 1.99.0 rails
エラー:gemレールが見つかりませんでした ローカルまたはリポジトリ内
次に何をすべきかわからない。ここで何が起こっているのかを誰かが理解するのを手伝ってくれますか?
この問題に関連する2番目の質問は、この1つのレガシーアプリを実行するためだけに古いバージョンのRailsに戻す必要があるのはばかげているようです。
解決
AFAIK、 v1.99.0
は v2.0
プレリリースの一種であるため、 v2.0.x
をインストールして、 config / environment.rb
の RAILS_GEM_VERSION
および rake rails:update
を実行します。
考えてみると、最初に見えるほど愚かではありません。 RoRとして高速に進化するWebフレームワークを使用してアプリを作成します。選択肢は次のとおりです。フレームワークが進化しているのとほぼ同じペースでアプリの開発を続けるか、またはRails gem(およびアプリが依存するすべてのもの、gem、プラグインなど)をアプリに固定して、gemを期待しにくいようにしますアップデート。
他のヒント
2番目の質問について:はい、それはばかげています。幸いなことに、Railsチームは愚かさを発見し、ある時点で「フリーズ」する機能を提供してくれました。アプリケーションに必要なRailsライブラリのバージョン(および特定のgemバージョン)を vendor
ディレクトリに追加します。
Railsのバージョンをフリーズするには:
rake rails:freeze:gems
良いブログ投稿がありますこれを説明しながら。
RVMをインストールおよび展開しない限り、インストールはシステムレールのインストールをロールバックし、他のプロジェクトに影響を与えます。この方法で開発環境を手動で管理する場合は、最初にRailsをアンインストールしてから、現在のプロジェクトに必要なバージョンのRailsをインストールできます。
ただし、代わりに次の構文を使用してrails gemをインストールしてください:
sudo gem install rails -v 1.99.0