Rails 5.2 -> Rails 6.0 アップデートメモ: Rails update (9)

はじめに

いよいよ 6.0 まで来ました。6.0 は Ruby 2.7.2 で動作することが確認できています。一気に Ruby 2.7.2 をインストールして、そのまま Rails を 6.0 まで上げてしまいます。

Rails のアップデート

まず、Gemfile の rails を6.0 の最終である 6.0.3.4 に変更します。

gem 'rails', '6.0.3.4'

bundle update します。

bundle update

app:update もしておきます。

env THOR_DIFF=vimdiff bin/rake app:update

実行したら、こんなエラーが出てきました。指示されたようにとりあえず、app/assets/config/manifest.js を作っておきます。後で、webpack に変更するつもりですが、とりあえず、assets のまま続けていきます。

rails aborted!
Sprockets::Railtie::ManifestNeededError: Expected to find a manifest file in `app/assets/config/manifest.js`
But did not, please create this file and use it to link any assets that need
to be rendered by your app:

Example:
  //= link_tree ../images
  //= link_directory ../javascripts .js
  //= link_directory ../stylesheets .css
and restart your server 

bin/rails したら、まだ Segmentation fault が出ていました。 Rails 6.0 の空プロジェクトを作成し、その Gemfile と比較して必要なさそうな gem を外してみたところ、Segmentation fault がなくなりました。あとは順に未対応部分を修正していきます。

update_attributes の修正

controller で以下の警告が出ていました。update_attributes を update に置き換えます。これも vim のマクロで一括置換します。

DEPRECATION WARNING: update_attributes is deprecated and will be removed from Rails 6.1 (please, use update instead)

be_success の修正

be_success でエラーが出ていました。Rails6でRSpecのコントローラテストをしようとするとエラーが発生する - Qiitaによると、be_sucessbe_successful に修正すればよいようです。

おわりに

とりあえず、テストが全て通過しましたが、多分実際に使うと不具合がありそうです。後でテストを追加します。Ruby が最新の 2.7.2 になったので、テストの時間が約半分になっています。

Finished in 6 minutes 50 seconds (files took 5.11 seconds to load)
7725 examples, 0 failures, 98 pending
gem_name ver5.1 ver5.2 changed
actioncable 5.2.4.4 6.0.3.4
actionmailbox 6.0.3.4 +
actionmailer 5.2.4.4 6.0.3.4
actionpack 5.2.4.4 6.0.3.4
actiontext 6.0.3.4 +
actionview 5.2.4.4 6.0.3.4
activejob 5.2.4.4 6.0.3.4
activemodel 5.2.4.4 6.0.3.4
activerecord 5.2.4.4 6.0.3.4
activestorage 5.2.4.4 6.0.3.4
activesupport 5.2.4.4 6.0.3.4
arel 9.0.0 -
bcrypt 3.1.16 3.1.16 =
bindex 0.8.1 0.8.1 =
bootsnap 1.4.5 1.5.1
builder 3.2.4 3.2.4 =
choice 0.2.0 0.2.0 =
coderay 1.1.3 1.1.3 =
coffee-rails 5.0.0 -
coffee-script 2.4.1 -
coffee-script-source 1.12.2 -
concurrent-ruby 1.1.7 1.1.7 =
crass 1.0.6 1.0.6 =
database_cleaner 1.8.5 1.8.5 =
devise 4.7.3 4.7.3 =
devise-encryptable 0.2.0 0.2.0 =
devise_ldap_authenticatable 0.8.7 0.8.7 =
diff-lcs 1.4.4 1.4.4 =
docile 1.3.4 1.3.4 =
dotenv 2.7.6 2.7.6 =
erubi 1.10.0 1.10.0 =
erubis 2.7.0 2.7.0 =
execjs 2.7.0 -
factory_bot 4.11.1 6.1.0
factory_bot_rails 4.11.1 6.1.0
ffi 1.12.2 1.14.2
formatador 0.2.5 0.2.5 =
globalid 0.4.2 0.4.2 =
guard 2.16.2 2.16.2 =
guard-compat 1.2.1 1.2.1 =
guard-rspec 4.7.3 4.7.3 =
haml 5.2.1 5.2.1 =
haml-rails 1.0.0 2.0.1
hpricot 0.8.6 -
html2haml 2.2.0 2.2.0 =
i18n 1.5.1 1.8.5
jquery-rails 4.4.0 4.4.0 =
json 2.5.1 -
kaminari 1.2.1 1.2.1 =
kaminari-actionview 1.2.1 1.2.1 =
kaminari-activerecord 1.2.1 1.2.1 =
kaminari-core 1.2.1 1.2.1 =
listen 3.0.8 3.0.8 =
loofah 2.8.0 2.8.0 =
lumberjack 1.0.13 1.2.8
mail 2.7.1 2.7.1 =
marcel 0.3.3 0.3.3 =
method_source 1.0.0 1.0.0 =
mimemagic 0.3.5 0.3.5 =
mini_mime 1.0.2 1.0.2 =
mini_portile2 2.4.0 2.4.0 =
minitest 5.14.2 5.14.2 =
msgpack 1.3.3 1.3.3 =
nenv 0.3.0 0.3.0 =
net-ldap 0.17.0 0.17.0 =
nio4r 2.3.1 2.5.4
nokogiri 1.9.1 1.10.10
notiffany 0.1.3 0.1.3 =
orm_adapter 0.5.0 0.5.0 =
pg 1.2.3 1.2.3 =
power_assert 1.2.0 1.2.0 =
pry 0.13.1 0.13.1 =
puma 5.1.1 5.1.1 =
rack 2.1.4 2.2.3
rack-cache 1.9.0 -
rack-test 1.1.0 1.1.0 =
rails 5.2.4.4 6.0.3.4
rails-controller-testing 1.0.5 1.0.5 =
rails-dom-testing 2.0.3 2.0.3 =
rails-erd 1.6.0 1.6.0 =
rails-html-sanitizer 1.3.0 1.3.0 =
railties 5.2.4.4 6.0.3.4
rake 13.0.3 13.0.3 =
rb-fsevent 0.10.4 0.10.4 =
rb-inotify 0.10.1 0.10.1 =
rdoc 6.2.0 6.3.0
redcarpet 3.5.1 3.5.1 =
responders 2.4.1 3.0.1
rexml 3.2.4 +
rspec 3.10.0 3.10.0 =
rspec-core 3.10.1 3.10.1 =
rspec-expectations 3.10.1 3.10.1 =
rspec-mocks 3.10.0 3.10.0 =
rspec-rails 4.0.2 4.0.2 =
rspec-support 3.10.1 3.10.1 =
ruby-graphviz 1.2.4 1.2.5
ruby_parser 3.15.0 3.15.0 =
sassc 2.4.0 2.4.0 =
sassc-rails 2.1.2 2.1.2 =
sexp_processor 4.15.1 4.15.1 =
shellany 0.0.1 0.0.1 =
simplecov 0.17.1 0.20.0
simplecov-html 0.10.2 0.12.3
simplecov-rcov 0.2.3 0.2.3 =
simplecov_json_formatter 0.1.2 +
spring 2.0.2 2.1.1
spring-commands-rspec 1.0.4 1.0.4 =
spring-watcher-listen 2.0.1 2.0.1 =
sprockets 3.7.2 4.0.2
sprockets-rails 3.2.2 3.2.2 =
temple 0.8.2 0.8.2 =
test-unit 3.3.8 3.3.8 =
thor 1.0.1 1.0.1 =
thread_safe 0.3.6 0.3.6 =
tilt 2.0.10 2.0.10 =
tzinfo 1.2.9 1.2.9 =
uglifier 4.2.0 -
warden 1.2.9 1.2.9 =
web-console 3.7.0 4.1.0
websocket-driver 0.7.3 0.7.3 =
websocket-extensions 0.1.5 0.1.5 =
yard 0.9.26 0.9.26 =
yard-activerecord 0.0.16 0.0.16 =
zeitwerk 2.4.2 +

hkob.hatenablog.com