LoginSignup
9
1

More than 3 years have passed since last update.

Ateam Finergy Inc. Advent Calendar 2019の10日目です。

11月5日にRails6.0.1がリリースされましたが、11月27日には早くも6.0.2rc1がリリースされています。
Rails6.0.1から6.0.2への変更点をまとめました。

1. Active Support

1-1. initialize時に訳文(i18n)をeager loadする

Rails6.0.1までは、i18nの読み込みによってアプリケーションの初期レスポンスが遅くなっていました。そこでRails6.0.2からは、アプリケーションのinitialize時にi18neager loadすることで、レスポンス速度の低下を避けるようになりました。

具体的には、以下の変更が追加されています。

activesupport/lib/active_support/i18n_railtie.rb
config.eager_load_namespaces << I18n

config.eager_load_namespacesは元々Railsに存在しているオプションで、ここに名前空間を設定するとconfig.eager_loadオプションをtrueにしている場合に読み込まれます。

1-2. ActiveSupport::NotificationsでスレッドごとのCPUタイムクロックを使用するように

ActiveSupport::Notifications::Instrumentクラスで、CPU時間の取得にProcess::CLOCK_THREAD_CPUTIME_IDを使用するようになりました。
Rails6.0.1まではProcess::CLOCK_PROCESS_CPUTIME_IDを使用していましたが、これでは一般的によく使われているマルチスレッドのWebサーバにおいて、現在のリクエストだけでなく他のリクエストにも時間を費やしてしまうリスクがあります。そこで、Process::CLOCK_THREAD_CPUTIME_IDに変更されました。
またこの変更に伴い、Process::CLOCK_THREAD_CPUTIME_IDが定義されているかをチェックするようになっています。

2. Active Job

2-1. SidekiqActive Jobクラスのsidekiq_optionsにアクセスできるように

SidekiqActive Jobクラスにアクセスすることにより、そのActive Jobタイプに設定されているsidekiq_optionsにアクセスすることができるようになりました。
Rails6.0.1まではActive Jobのクラス名をto_sしていたため文字列型になってしまい、sidekiq_optionsにはアクセスできませんでした。Rails6.0.2からはto_sを無くしたことで、アクセスできるようになりました。

3. Action Pack

3-1. Railsエンジンにマウント可能なルーティングヘルパーを、システムテストで使えるように

Rails6.0.1のシステムテストにおいて、Railsエンジンにマウント可能なルーティングヘルパー(ex: engine_name.root_url)を呼び出すと、未定義のエラーが発生します。
Rails6.0.2では、このエラーを解消しています。

4. Railties

4-1. Scaffoldジェネレーターの衝突チェックを修正

Scaffoldで新たに生成したクラスと既に存在するクラス名が衝突した場合のチェックの処理が、修正されています。

4-2. 各環境ごとにautoload_pathsautoload_once_pathseager_load_pathsが設定できるように

各環境の設定ファイル(config/environments/*.rb)で、autoload_pathsautoload_once_pathseager_load_pathsの値が設定できるようになりました。

5. 最後に

今回はマイナーバージョンアップなので、細かなバグ修正やパフォーマンス向上がほとんでしたね。
今後もRails6の品質とパフォーマンスが、より向上していくことを期待しています。

9
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
1