2016年1月5日火曜日

rails5 rails4.2.4からrails5.0.0beta1の移行作業でわかったこと まとめ その1

  • 公開日:2016年01月05日
  • 最終更新日:2016年01月06日

環境


  • rails 4.2.4, rails 4.2.5 → rails5.0.0beta1
  • ruby 2.2.3
  • rbenv rbenv 0.4.0-183-gc18a3f9

はじめに


rails5のbeta1がリリースされました。春頃には正式なrails5がリリースされるのではないでしょうか。
しかし、Gemfileをrails5に変更しても、既存のrailsアプリはまず動かないと思います。

現在、私も色々とエラーを潰しながら調査と更新に必要な修正作業をしています。その中で、これまでにわかったことを記事としてまとめました。
早めにrails5に更新しようと考えている人の参考になれば幸いです。
read in English

springの未対応について


rails5.0.0beta1では、現在(2016/01/05)springを動かすことができません。なので、既存のrailsアプリで利用している場合は、削除する必要があります。
rbenv exec bundle install(update)でgemを管理している場合は、以下のように削除します。

terminal

vi Gemfile

#gem 'spring'
#gem 'spring-commands-rspec'

rbenv exec bundle exec gem uninstall spring
rbenv exec bundle exec gem uninstall spring-commands-rspec

kaminariの未対応について


rails5.0.0beta1では、現在(2016/01/05)kaminariを動かすことができません。ActionView::MissingTemplateが発生します。
rails5.0.0beta1で動かす場合は、最新のkaminariに変更する必要があります。
rbenv exec bundle install(update)でgemを管理している場合は、以下のようにGemfileを変更します。

変更前

{project_folder}/Gemfile

gem 'kaminari'

変更後

{project_folder}/Gemfile

gem 'kaminari', github: 'amatsuda/kaminari'

ファイルを修正したら更新処理を実行します。

terminal

rbenv exec bundle install

Using kaminari 1.0.0.alpha (was 0.16.3) from git://github.com/amatsuda/kaminari.git (at master)

DEPRECATION WARNING: `serve_static_files` is deprecated and will be removed in Rails 5.1.


serve_static_filesが非推奨になりました。これはrails4.2からですが、rails5.1で完全に削除されてしまうようです。
なので、以下のように変更します。

変更前

{project_folder}/config/environments/test.rb(development.rb and production.rb)

  # Configure static asset server for tests with Cache-Control for performance.
  config.serve_static_files  = true

変更後

{project_folder}/config/environments/test.rb(development.rb and production.rb)

  # Configure static asset server for tests with Cache-Control for performance.
  config.public_file_server.enabled  = true

DEPRECATION WARNING: `static_cache_control` is deprecated and will be removed in Rails 5.1.


static_cache_controlが非推奨になりました。これも上記のserve_static_filesと同様に、rails5.1では完全に削除されてしまうようです。
なので、以下のように変更します。

変更前

{project_folder}/config/environments/test.rb(development.rb and production.rb)

  # config.serve_static_assets = ENV['RAILS_SERVE_STATIC_FILES'].present?
  config.static_cache_control = 'public, max-age=3600'

変更後

{project_folder}/config/environments/test.rb(development.rb and production.rb)

  # config.serve_static_assets = ENV['RAILS_SERVE_STATIC_FILES'].present?
  config.public_file_server.headers = { 'Cache-Control' => 'public, max-age=3600' }

DEPRECATION WARNING: before_filter is deprecated and will be removed in Rails 5.1.


ApplicationControllerで必ずといっていいほど利用するbefore_filterが非推奨になりました。これも上記のserve_static_filesやpublic_file_server.headersと同様に、rails5.1では完全に削除されてしまうようです。
なので、以下のように変更します。

変更前

{projectfolder}/app/controllers/application_controller.rb

class ApplicationController < ActionController::Base
  # Prevent CSRF attacks by raising an exception.
  # For APIs, you may want to use :null_session instead.
  protect_from_forgery with: :exception

  before_filter :set_locale
  
  // something

end

変更後

{projectfolder}/app/controllers/application_controller.rb

class ApplicationController < ActionController::Base
  # Prevent CSRF attacks by raising an exception.
  # For APIs, you may want to use :null_session instead.
  protect_from_forgery with: :exception

  before_action :set_locale
  
  // something

DEPRECATION WARNING: use_transactional_fixtures= is deprecated and will be removed from Rails 5.0.


fixtureのuse_transactional_fixturesも非推奨になります。これはまだrspecが未対応なので、今は変更しないようにしましょう。

まとめ


rails3からrails4のアップデートの時と同じく、rails4からrails5のアップデートもそれなりの時間が取られると思います。
なので、gitで別ブランチを作成し、なるべく早くから対策をしていきましょう。

メジャーアップデートをするときにいつも思うのは、railsでアプリを作成する場合は、人気のあるgemを使い、規約に沿った実装をすることがとても大切ということです。
間違っても、SIビジネスの受託サービスでrailsを使用してはいけません。ほぼ間違いなく、そのプロジェクトは死んでしまいます。

このブログでは、しばらくrails5の情報が多くなるかもしれませんが、よろしくお願いします。

以上です

Rails4の開発にオススメの本


Rubyの応用力をつけるのにオススメの本


運営サイト(railsで作成しています)


関連記事


参考サイト


English

この記事がお役にたちましたらシェアをお願いします

このエントリーをはてなブックマークに追加

0 件のコメント:

コメントを投稿

Related Posts Plugin for WordPress, Blogger...