サーチ…


Rails 4.2からRails 5.0へのアップグレード

注意:Railsアプリケーションをアップグレードする前に、必ずGitなどのバージョン管理システムにコードを保存してください。


Rails 4.2からRails 5.0にアップグレードするには、Ruby 2.2.2以降を使用している必要があります。必要に応じてRubyのバージョンをアップグレードしたら、Gemfileに移動して次の行を変更します:

gem 'rails', '4.2.X'

に:

gem 'rails', '~> 5.0.0'

コマンドラインで次のコマンドを実行します。

$ bundle update

次に、次のコマンドを使用して更新タスクを実行します。

$ rake rails:update

これは設定ファイルを更新するのに役立ちます。ファイルを上書きするかどうかを尋ねるプロンプトが表示され、いくつかの入力オプションがあります。

  • Y - はい、上書き
  • n - いいえ、上書きしない
  • a - all、これと他のすべてを上書きする
  • q - 終了する、中止する
  • d - diff、古いものと新しいものの違いを表示する
  • h - ヘルプ

通常、古いファイルと新しいファイルの違いを調べて、望ましくない変更がないことを確認する必要があります。

Rails 5.0 ActiveRecordモデルは、 ActiveRecord::BaseではなくApplicationRecordから継承していApplicationRecordApplicationRecordどのように似たすべてのモデルのスーパー、あるApplicationControllerコントローラのスーパークラスです。モデルが処理されるこの新しい方法を考慮するには、 app/models/フォルダにapplication_record.rbというファイルを作成し、そのファイルの内容を次のように編集する必要があります。

class ApplicationRecord < ActiveRecord::Base
  self.abstract_class = true
end

Rails 5.0では、やや異なるコールバックも処理されます。 falseを返すコールバックはコールバックチェーンを停止させません。これは、Rails 4.2とは異なり、引き続きコールバックが実行されることを意味します。アップグレードすると、Rails 4.2の動作は残りますが、Rails 5.0の動作に切り替えるには、次のものを追加します。

ActiveSupport.halt_callback_chains_on_return_false = false

config/application.rbファイルにconfig/application.rbます。コールバックチェーンを明示的に停止させるには、 throw(:abort)呼び出します。

Rails 5.0では、 ActiveJobはRails 4.2のようにActiveJob::BaseではなくApplicationJobから継承しApplicationJob 。 Rails 5.0にアップグレードするには、 app/jobs/フォルダにapplication_job.rbというファイルを作成します。そのファイルの内容を次のように編集します。

class ApplicationJob < ActiveJob::Base
end

次に、 ActiveJob::BaseではなくApplicationJobから継承するすべてのジョブを変更する必要があります。

Rails 5.0のその他の最も大きな変更の1つは、コードを変更する必要はありませんが、Railsアプリケーションでコマンドラインを使用する方法が変わります。 bin/rails 、またはrailsだけでタスクやテストを実行することができます。たとえば、 $ rake db:migrateを使用する代わりに、 $ rails db:migrate実行できます。 $ bin/railsを実行すると、使用可能なすべてのコマンドを表示できます。 bin/rails実行できるタスクの多くはまだrakeを使って動作していることに注意してください。



Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow