なるようになるブログ

読書感想文かrailsについてかrubyについてか

rails commit log流し読み(2023/06/25)

2023/06/25分のコミットです。

CHANGELOGにのったコミットは以下の通りです。

activesupport/CHANGELOG.md

activerecord/CHANGELOG.md

railties/CHANGELOG.md


Merge pull request #48565 from c960657/range-overlap

activesupport/lib/active_support/core_ext/range/overlap.rbの修正です。

Range#overlaps?Range#overlap?にリネームしています。他のRange関係のメソッド(Range#include?Range#cover?)を考慮すると、overlap?の方が適切だろう、という事でリネームしています。なお、互換性の為に、Range#overlaps?`はまだ使えるようになっています。


Add a encryption option to support previous data encrypted non-deterministically with a SHA1 hash digest (#48530)

Active Recordの修正です。

Active Record Encryptionでnon-deterministically + SHA1 hash digestでencryptされたデータのdecryptingが出来るよう修正しています。

Rails 7.0までのActive Record Encryptionには、Rails.application.config.active_support.key_generator_hash_digest_classで指定したhash digestではなく、必ずSHA1が使われてしまう、というバグがありました。それが7.1から正しくconfig.active_support.key_generator_hash_digest_classに指定された値が使用されるようになったのですが、先のバグの影響でRails 7.0でencryptしたデータを7.1で正しく読み込めない、という非互換が発生してしました。 その問題に対応する為、SHA1が使用されたデータをdecrypting出来るよう処理を追加、及び、その挙動をオプションで指定出来るよ対応しています。このオプションはデフォルトtrueになっており、デフォルトでその処理が有効化されるようになっています。


Introduce config.autoload_lib

railties/lib/rails/application/configuration.rbの修正です。

libディレクトリをautoloadの対象にする為のconfig.autoload_libメソッドを追加しています。libディレクトリ配下にあるが、autoloadの対象にしたく無いディレクトリがある場合、ignoreオプションでそのディレクトリを指定出来るようになっています。

# config/application.rb
config.autoload_lib(ignore: %w(assets tasks generators))

Remove unnecessary Rails module usage

rails guideのAutoloading and Reloading Constantsの修正です。

config.autoload_lib(ignore:)のexampleコードのタイポを修正しています。


Fix a few typos in changelogs [ci skip] (#48573)

activejob/CHANGELOG.mdactivesupport/CHANGELOG.mdの修正です。

CHANGELOG内のタイポを修正しています。