rails 5.1.6 のアプリをrails 5.2.0にアップデートしたときに困ったとこメモ
rails 5.1.6 のアプリをrails 5.2.0にアップデートしたときに、いろいろハマったのでメモ。
rails側
rails側での作業メモ。
cannot load such file -- bootsnap/setup
とりあえず rails app:updateしてみる。 route.rbなどは上書きしたらダメだけど、boot.rbとか触った覚えのないファイルは上書きしていく。
$ rails app:update conflict config/boot.rb Overwrite /Users/tkmru/code/old_app/config/boot.rb? (enter "h" for help) [Ynaqdh] Y force config/boot.rb exist config conflict config/routes.rb Overwrite /Users/tkmru/code/old_app/config/routes.rb? (enter "h" for help) [Ynaqdh] n ...
rails serverを起動するとbootsnapというrailsの起動を早くするgemがないとエラーが出た。railsが標準で使うようになったとのこと。
週刊Railsウォッチ(20170728)bootsnapがRailsで正式採用、Ruby Prizeの推薦開始、PostgreSQL配列の重複を除去ほか
gemファイルに追加してbundle installする。
$ bin/rails s Traceback (most recent call last): 3: from bin/rails:3:in `<main>' 2: from bin/rails:3:in `require_relative' 1: from /Users/tkmru/code/old_app/config/boot.rb:4:in `<top (required)>' /Users/tkmru/code/old_app/config/boot.rb:4:in `require': cannot load such file -- bootsnap/setup (LoadError)
undefined method `halt_callback_chains_on_return_false=' for ActiveSupport:Module
halt_callback_chains_on_return_falseはRails 4との後方互換のためのメソッドで、rails serverを起動するとこれがないというエラーが出た。
$ bin/rails s => Booting Puma => Rails 5.2.0 application starting in development => Run `rails server -h` for more startup options Exiting Traceback (most recent call last): 73: from bin/rails:4:in `<main>' 72: from /Users/tkmru/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/activesupport-5.2.0/lib/active_support/dependencies.rb:283:in `require' 71: from /Users/tkmru/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/activesupport-5.2.0/lib/active_support/dependencies.rb:249:in `load_dependency' 70: from /Users/tkmru/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/activesupport-5.2.0/lib/active_support/dependencies.rb:283:in `block in require' ... 10: from /Users/tkmru/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/railties-5.2.0/lib/rails/engine.rb:613:in `each' 9: from /Users/tkmru/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/railties-5.2.0/lib/rails/engine.rb:614:in `block (2 levels) in <class:Engine>' 8: from /Users/tkmru/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/railties-5.2.0/lib/rails/engine.rb:656:in `load_config_initializer' 7: from /Users/tkmru/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/activesupport-5.2.0/lib/active_support/notifications.rb:170:in `instrument' 6: from /Users/tkmru/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/railties-5.2.0/lib/rails/engine.rb:657:in `block in load_config_initializer' 5: from /Users/tkmru/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/activesupport-5.2.0/lib/active_support/dependencies.rb:277:in `load' 4: from /Users/tkmru/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/activesupport-5.2.0/lib/active_support/dependencies.rb:249:in `load_dependency' 3: from /Users/tkmru/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/activesupport-5.2.0/lib/active_support/dependencies.rb:277:in `block in load' 2: from /Users/tkmru/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/bootsnap-1.3.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:50:in `load' 1: from /Users/tkmru/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/bootsnap-1.3.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:50:in `load' /Users/tkmru/code/old_app/config/initializers/new_framework_defaults.rb:23:in `<main>': undefined method `halt_callback_chains_on_return_false=' for ActiveSupport:Module (NoMethodError)
Ruby on Rails 5.2.0 Deprecations – Drifting Rubyによると、 5.2よりhalt_callback_chains_on_return_falseは削除されたみたい。 config/initializers/new_framework_defaults.rbの中のhalt_callback_chains_on_return_falseの行をコメントアウトした。
# Be sure to restart your server when you modify this file. # # This file contains migration options to ease your Rails 5.0 upgrade. # # Read the Guide for Upgrading Ruby on Rails for more info on each option. Rails.application.config.raise_on_unfiltered_parameters = true # Enable per-form CSRF tokens. Previous versions had false. Rails.application.config.action_controller.per_form_csrf_tokens = true # Enable origin-checking CSRF mitigation. Previous versions had false. Rails.application.config.action_controller.forgery_protection_origin_check = true # Make Ruby 2.4 preserve the timezone of the receiver when calling `to_time`. # Previous versions had false. ActiveSupport.to_time_preserves_timezone = true # Require `belongs_to` associations by default. Previous versions had false. Rails.application.config.active_record.belongs_to_required_by_default = true # Do not halt callback chains when a callback returns false. Previous versions had true. # ActiveSupport.halt_callback_chains_on_return_false = false # これをコメントアウトした!! # Configure SSL options to enable HSTS with subdomains. Previous versions had false. Rails.application.config.ssl_options = { hsts: { subdomains: true } }
これでrailsは起動するようになった。
frontend 側
フロントエンド側の作業メモ
can't find executable webpack for gem webpacker
webpackを実行してみると、gemのwebpackerから動かせるwebpackがないってエラーが出た。
$ bin/webpack Traceback (most recent call last): 2: from bin/webpack:17:in `<main>' 1: from /Users/tkmru/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/bundler-1.16.1/lib/bundler/rubygems_integration.rb:489:in `block in replace_bin_path' /Users/tkmru/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/bundler-1.16.1/lib/bundler/rubygems_integration.rb:458:in `block in replace_bin_path': can't find executable webpack for gem webpacker (Gem::Exception)
rails webpacker:binstubsでwebpackのバイナリを再インストールすると、webpackも動くようになった。
$ bin/rails webpacker:binstubs Copying binstubs exist bin conflict bin/webpack Overwrite /Users/tkmru/code/old_app/bin/webpack? (enter "h" for help) [Ynaqdh] Y force bin/webpack conflict bin/webpack-dev-server Overwrite /Users/tkmru/code/old_app/bin/webpack-dev-server? (enter "h" for help) [Ynaqdh] Y force bin/webpack-dev-server $ bin/webpack set is deprecated! Use append instead Hash: 9c54321948fe9d42f554 Version: webpack 3.11.0 Time: 4625ms Asset Size Chunks Chunk Names application-07d7627f2dffd5e35ab1.js 607 kB 1 [emitted] [big] application _/node_modules/font-awesome/fonts/fontawesome-webfont-674f50d287a8c48dc19ba404d20fe713.eot 166 kB [emitted] _/node_modules/font-awesome/fonts/fontawesome-webfont-fee66e712a8a08eef5805a46892932ad.woff 98 kB [emitted] ...