【不定期配信】最新のRuby & Railsへのバージョンアップ時の注意点 (~ 2021-10-17)

9 minute read

Ruby と Rails を安定して使い続けるために 最新の Ruby と Rails に対して行われた変更がバージョンアップするときに問題になるかどうか という観点で情報をまとめています。

情報が多いので時間がない人は Rubyの仕様変更の一覧Railsの仕様変更の一覧 を見てください。

Ruby の最新情報は nagachikaさん (@nagachika) / Twitterruby 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

Update bundled_gems · ruby/ruby@fc9f923

【仕様変更】
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

When generating form partials, use correct fields for date, time and datetime by lafeber · Pull Request #43458 · rails/rails

OK
scaffoldで生成するformにおいて、date, time, datetime型のフィールド以下のように変更しています。Rails 独自の select フィールドではなくブラウザ標準のフィールドを使うようになります。

  • time: time_selecttime_field
  • datetime, timestamp: datetime_selectdatetime_field
  • date: date_selectdate_field

これはうれしい変更。これで「いまどきは date_field でしょ」と言えます。

No need to specify webdrivers version to support selenium-webdriver 4 by yahonda · Pull Request #43468 · rails/rails

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を使っているすべての開発者に読んでほしいと感じました。
あとでレビュー記事を書きます。

タグ: ,

カテゴリー:

更新日時: