- 公開日: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を管理している場合は、以下のように削除します。
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を変更します。
変更前
gem 'kaminari'
変更後
gem 'kaminari', github: 'amatsuda/kaminari'
ファイルを修正したら更新処理を実行します。
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で完全に削除されてしまうようです。
なので、以下のように変更します。
変更前
# Configure static asset server for tests with Cache-Control for performance. config.serve_static_files = true
変更後
# 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では完全に削除されてしまうようです。
なので、以下のように変更します。
変更前
# config.serve_static_assets = ENV['RAILS_SERVE_STATIC_FILES'].present? config.static_cache_control = 'public, max-age=3600'
変更後
# 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では完全に削除されてしまうようです。
なので、以下のように変更します。
変更前
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
変更後
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の情報が多くなるかもしれませんが、よろしくお願いします。
以上です
0 件のコメント:
コメントを投稿