Ruby on Rails
Railsのアップグレード
サーチ…
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
から継承していApplicationRecord
。 ApplicationRecord
どのように似たすべてのモデルのスーパー、ある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
を使って動作していることに注意してください。