年末に作った目標管理システムをRails 5.1にアップデートした
Rails 5.1
年末に作った目標管理システムのフロントにVue.jsを導入しようと思っていたのだが、ちょうどこのタイミングで正式にリリースされたRails 5.1でWebpackがサポートされたため、先にRails 5.1にアップデートをしてからVue.jsを導入することにした。
5.0から5.1への変更内容はRuby on Rails 5.1リリースノートに詳しく記述されているが、フロントエンド周りのアップデートが主となっている。今回のシステムの場合、フロントエンドのこだわった実装がほとんどない状態だったこともあり、Rails 5.0から5.1へのアップデートはほとんど問題なくスムーズに進んだのだが、一応記録として残しておく。
Rails 5.1へのアップデート
Railsのアップデート
Gemfileを編集して、rails
のバージョンを5.1.2
に書き換えbundle update
を実行すると、Railsを含むライブラリ一式がアップデートされる。
gem 'rails', '~> 5.1.2'
bundle update
Rails以外のライブラリのアップデートについて
単純にbundle update
を実行すると、rails
以外でもバージョンを指定していないgem
はアップデートされてしまう。アップデートで不具合が発生してしまう場合は、各gem
のバージョンを明示的に指定する。
今回の場合twitter-bootstrap-rails
で問題が発生してしまった。2017年2月に4.0.0
がリリースされたのだが、そこでfont-awesome
のサポートがドロップされてしまったのが原因だった。(2016年年末時点では3.2.2が最新だった)
参考: https://github.com/seyhunak/twitter-bootstrap-rails/issues/889
font-awesome-rails
gemなどを使うことで、引き続きfont-awesome
を使うことは可能だが、コードの変更を伴う箇所が多数あるため、今回は明示的にtwitter-bootstrap-rails
の3.2.2
を使うように指定する形にした。
アップデートタスク
rails app:update
コマンドで、設定ファイルなどの自動アップデートを行う。
gitコマンドで、差分をチェックする。
routesの中身が消されてしまったので、そこだけ元に戻した。
unknown asset対策
Rails 5.1から存在しないAssetをコンパイルしようとした場合にエラーが発生するようになった。
config
でRails.application.config.assets.unknown_asset_fallback = false
を設定することで、以前と同じような挙動にすることもできるが、なるべく標準の挙動に従っておきたいので設定しないことにした。
前回Rails 5.0で生成したコードでは、favicon
を指定している箇所が何箇所かあるが、favicon自体が存在しないのでエラーになってしまう。本来ならfaviconを用意した方がいいのだろうが、面倒くさいので今回はfaviconの指定個所を削除することにした。
form_withへの置き換え
form_tag
とform_for
が今後deprecatedになった。変更しなくても問題なく動くのだが、form_with
への置き換えが推奨されているため、置き換えた。特に問題もなく、難しい箇所もなかった。
その他
Rails 5.1では他にも秘密情報の暗号化やルーティング周りの強化が追加されているが、今回のシステムでは使う場面がなかったので影響はなかった。フロントエンドJSの部分に関しては、この後Vue.jsの導入と合わせて活用していく予定。
参考
Author And Source
この問題について(年末に作った目標管理システムをRails 5.1にアップデートした), 我々は、より多くの情報をここで見つけました https://qiita.com/croquette0212/items/e3adc40bd2d310e288af著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .