4

私は現在 Rails 1.2 を使用する Rails アプリに取り組んでいるので、最新の安定版リリース (Rails 2.3) からかなり遅れています。

新しいバージョンの Rails に移行するプロセスはどのようにすればよいですか?

一度に 1 つのポイント リリースをアップグレードするか、Rails 2.3 に直接アップグレードする必要がありますか?

Rails のバージョン間で何が変更されたかを調べるにはどうすればよいですか?

  • アップグレードする理由が増える改善または新機能
  • Rails の変更により、新しいバージョンで動作する前にアプリを変更する必要があります。

(アップグレードの仕組みに関するこの質問を見たことがありますが、アップグレードをできるだけ簡単にするために実行する必要があるプロセスにもっと興味があります。)

4

7 に答える 7

4

私は数か月前にこれを経験し、多くの調査を行い、(他の誰かのスクリプトと追加のリソースに基づいて) rake タスクをまとめました。これは、コードの変更点にフラグを立てるのに役立つ可能性があります。これは Rails 2.2 にアップグレードするためのもので、Rails 2.3 の変更は考慮されていません。

http://gist.github.com/99535

使用するプラグインと gem が Rails 2.x と互換性があり、最新バージョンを使用していることを確認してください。

そして、Rails 2.3 に一度に直接アップグレードすることに、私は間違いなく同意します。後回しにしないでください。アップグレードしない時間が長ければ長いほど、より多くの変更が行われるため、アップグレードが難しくなります。また、Rails 1.x コードをサポートするリソースが少ないため、Rails 1.x コードを維持することは困難です。

于 2009-04-22T01:58:04.817 に答える
2

Rails 1.2.3 アプリケーションを Rails 2.3.4 環境にアップグレードし始めたところです。私が遭遇した基本的な手順と注意事項は次のとおりです。

  • 基本アプリケーションと同様のスケルトン アプリケーションを作成する
  • 古いアプリケーションの設定を確認environment.rbして、これらが新しいバージョンで必要かどうかを確認してください。
  • すべての .rhtml ファイルを .html.erb に移行します。スクリプトまたはマニュアルのいずれかを使用します。私の場合、100以上のファイルがあったので、自動化はずっと簡単でした
  • routes.rbRoR2.3.4 ではルートの指定が簡素化されているため、必要な変更を確認してください。
  • 手元に優れた SCM システムがあることを確認してください。たとえば、小さな増分変更をキャプチャできるように、Git、SVN、さらには CVS のいずれかです。
  • 必要なプラグインを確認します。最初は単純にすべてのプラグインを削除しましたが、実際には、移植されたアプリケーションに実装される予定だった機能に対して廃止されたものもありました。
  • form_tagエントリを更新します。たとえば、<%= form_tag :action => 'search' %>`<% form_tag :action => 'search' do %> のようになります。そうしないと、興味深いエラー メッセージが表示されます。
  • 同様に<%= end_form_tag%>、`<% end %> のようにブロックを閉じるように変更します。
  • 1.2.3 バージョンにコアから削除されたプラグインがあり、プラグインとしてインストールして依存関係を構成する必要があるかどうかを確認します。ポップアップin_place_editに対して行われた と の呼び出しに問題がありました。calendar

他の人が言っているように、予想よりも時間がかかる可能性があります。移行に約 30 時間の作業を行いました。もっと時間がかかると見積もっていました。それで良かったです。しかし、PDF 生成を開始するにはまだいくつかの作業が必要です。

さらに興味深いことに、アプリケーションは MS-Windows 環境で実行されていました。Ruby 1.8.7、Rails 1.2.3、および MS SQL Server。その目的は、Linux 環境に移行することでした。Ruby 1.9.x、Rails 2.3.4、および MySQL データベースであるため、MySQl サーバー データベース移行ツールが必要でした。

于 2009-12-07T10:49:40.240 に答える
2

私のアドバイスは、あなたが蓄積したテスト負債を 1 週間かけて返済してから、アップグレードを一気に行うことです。

私が働いている場所では、昨年の夏に非常に大きなアプリを 1.2 から 2.0.2 にアップグレードし、同時に Ruby 1.8.6 にアップグレードしました。

予想よりもはるかに時間がかかりました。このアプリは、削除または廃止された古い機能 (ActionWebService など) をいくつか使用していたため、それらの変換には時間がかかりました。しかし、ほとんどの場合、ラジオ ボタン パラメータの動作のわずかな違いなど、多くの微妙なバグに遭遇しました。そのうちのいくつかは、Ruby (対 Rails) のアップグレードに起因していました。

アプリの一部のテスト カバレッジはむらがありました。より良いテストを行っていれば、すべてがはるかに簡単だったでしょう。

于 2009-04-21T23:09:18.263 に答える
1

アプリの非推奨を探すことができる Rails rake タスクがいくつかあると思います。

アプリがバージョン管理されている限り、私はアップグレードを一発で行い、エラー メッセージを 1 つずつ調べます。

また、2.2 および 2.3 で見たリリース ノートのページとは別に、ソース自体にリリース ノートまたは変更ログがあるはずです。さらに、「rails xxx new features」などの検索語でブログ投稿を検索できます (Google ブログ検索を使用)。

于 2009-04-21T21:28:40.953 に答える
0

これらのドキュメントにはいくつかの詳細が欠けていて、2.1=>2.2からの移行にはかなりの時間がかかりました。これが私のメモです:

最大のタイムシンク:assert_redirected_to大幅に変更され、ハッシュをサポートしなくなりました(まったく?)

また、environment/test.rb偽造防止を無効にするように設定する必要があります

誰かが2.3のこれらの点に関するニュースを持っているなら、それはとても素晴らしいでしょう。

于 2009-06-06T14:07:57.793 に答える
0

まず、Google で見つけたリソースを使用して、自分の質問に答えることから始めます。Rails 2.2のリリース ノートとRails 2.3 のリリース ノートには、これら 2 つのリリースの新機能と変更された機能の詳細が記載されていますが、以前のリリースについてはこれほど決定的なものは見つかりませんでした。

また、古いバージョンの Passenger は Rails 2.3 では動作しないと言及している このリリース発表を除けば、アップグレード時に何が壊れるかについてもあまり見つけていません。

于 2009-04-21T21:25:01.837 に答える
0

おそらく、この時点で十分な経験があると思いますが、別の Rails 1.2>2.3 アップグレードに関する質問を検索しているときに、これに出くわしました。

比較的単純なアプリで私が経験した最大のブレイクは、ページネーションでした。Classic Pagination プラグインは、このための天の恵みであることがわかりました。

于 2009-12-13T02:42:55.800 に答える