【不定期配信】最新のRuby & Railsへのバージョンアップ時の注意点 (~ 2021-10-17)
Ruby と Rails を安定して使い続けるために 最新の Ruby と Rails に対して行われた変更がバージョンアップするときに問題になるかどうか という観点で情報をまとめています。
情報が多いので時間がない人は Rubyの仕様変更の一覧 と Railsの仕様変更の一覧 を見てください。
Ruby の最新情報は nagachikaさん (@nagachika) / Twitter が ruby trunk changes で公開してくださっています。
Rails の最新情報は Pull requests · rails/rails でマージされた PR を確認できるのと、TechRacho|BPS株式会社のRuby on Rails開発情報サイト が 週刊Railsウォッチの記事一覧|TechRacho by BPS株式会社 で公開してくださっています。
これらは大変有益な情報です。本当にありがたいことです。
Google広告
Ruby
Rubyの仕様変更の一覧
ruby 3.0
- Ractor.make_shareable: バグ修正
ruby trunk
- SMTP.new と SMTP#start の引数
- GZipReader#gets
Google広告
ruby trunk
ruby-trunk-changes 2021-10-15 - ruby trunk changes
以下のようにバージョンアップしている。影響はないです。
- pathname: 0.1.0 => 0.2.0
- open-uri: 0.1.0 => 0.2.0
- time: 0.1.0 => 0.2.0
- drb: 2.0.4 => 2.1.0
- date: 3.1.1 => 3.2.0
【仕様変更】
net-smtp が 0.2.2 から 0.3.0 に変わっている。
SMTP.new と SMTP#start の引数が変わっている。tls を使っている人は要チェック。
[ruby/zlib] Fix a bug that GZipReader#gets may return incomplete line · ruby/ruby@027a337
【仕様変更】
GZipReader#getsのバグ修正だけど、以外とこういうので挙動が変わります。 GZipReader#gets
を使っている人はコーナーケースの挙動を要チェック。
ruby-trunk-changes 2021-10-16 - ruby trunk changes
OK
opensslの修正がいくつかあります。仕様変更はなさそうなのですが、どうやってこれが問題になると気がついたのか不思議。@nagachika さんも「なるほど」と感心する修正だったようでCの拡張ライブラリを書いている人は見ておいたほうが良さそう。
ruby-trunk-changes 2021-10-17 - ruby trunk changes
OK
ruby 3.0
[merge revision(s) 217df51f0e5d9824ed712a4d175f555d932e44d8: Backport… · ruby/ruby@a2fe4b7
OK
Bug #18232: Ractor.make_shareable is broken in code loaded with RubyVM::InstructionSequence.load_from_binary - Ruby master - Ruby Issue Tracking System の修正。内部情報が変わっただけ。
[merge revision(s) 76228191474c76810043b294a74bbb2f1808b3d9: Backport… · ruby/ruby@5427b08
【仕様変更】
Ractor.make_shareable のバグ が修正されたようです。いちおう仕様変更扱いとしていますが困ることはないでしょう。
ruby 2.7
変更なし。
Rails
Railsの仕様変更の一覧
変更なし。
Google広告
Pull requests · rails/rails 2021-10-15
Fix capybara driver name conflict by cjlarose · Pull Request #42511 · rails/rails
OK
ActionDispatch::SystemTesting::Driver.newのキーワード引数にnameを追加して Capybara のドライバー名を設定できるようにしています。
Document alternative smtp_settings options by jacobherrington · Pull Request #43454 · rails/rails
OK: doc
OK
scaffoldで生成するformにおいて、date, time, datetime型のフィールド以下のように変更しています。Rails 独自の select フィールドではなくブラウザ標準のフィールドを使うようになります。
- time:
time_select
→time_field
- datetime, timestamp:
datetime_select
→datetime_field
- date:
date_select
→date_field
これはうれしい変更。これで「いまどきは date_field でしょ」と言えます。
OK: Rails自体の開発で利用する webdrivers gemのバージョン指定をなくしただけ。
Fix system tests generated by scaffold by alexandreruban · Pull Request #43473 · rails/rails
OK: generator
Modernize scaffold generator by dhh · Pull Request #41210 · rails/rails で scaffold が大きく変わったみたい。これもうれしい変更。開発初期しか scaffold は使わないので忘れがちだけど、scaffold は Railsの教科書のひとつ。常に新しいやり方が取り入れられているのはイイ!
Create directory when dumping schema cache by eileencodes · Pull Request #43474 · rails/rails
OK
schema cache を dump するときに FileUtils.mkdir_p(File.dirname(filename))
でキャッシュの保存先がなければ毎回作成するようにしています。バッチとかで定期的にキャッシュを消した時にディレクトリごと消すだけでよくなりますね。ナイス!
それにしても eileencodes (Eileen M. Uchitelle) さんのコミットが多い。どんな人なのだろうと思って調べてみると GitHub の人でかつ Rails のコアチームの人でした。
Upgrading GitHub to Ruby 2.7 | The GitHub Blog という記事も書かれていました。すごいな〜。
Pull requests · rails/rails 2021-10-16
なし
Pull requests · rails/rails 2021-10-17
Fix typo in upgrading_ruby_on_rails.md [ci-skip] by hachi8833 · Pull Request #43480 · rails/rails
OK: doc。Markdownのタイプミスの修正。
Rails: Zeitwerkオートロードの「1ファイルにクラスを複数置けない」問題を回避する|TechRacho by BPS株式会社
Rails 6.1以降にアップグレードするとオートロードで問題になるかもしれないという話。ワークアラウンドも丁寧に説明されている。とても参考になるので読んでおいたほうがいいですね。
今回のおまけ
プロダクトマネジメント ―ビルドトラップを避け顧客に価値を届けるを読み終えました。
良書です。Rubyを使っているすべての開発者に読んでほしいと感じました。
あとでレビュー記事を書きます。