なるようになるブログ

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

rails commit log流し読み(2018/08/23)

2018/08/23分のコミットです。

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

activestorage/CHANGELOG.md


Partly revert unused accessor

activerecord/lib/active_record/connection_adapters/abstract_adapter.rbの修正です。

使用していないaccessorを削除しています。


Two fewer array allocations on action_methods

actionpack/lib/abstract_controller/base.rbの修正です。

AbstractController::Base.action_methodsメソッドで、メソッドのリストを作成する際にArray#uniq + Array#mapを使用していたのを、Array#uniq! + Array#map!を使用するよう修正しています。不要なArrayを生成しないようにする為。


Merge pull request #33162 from utilum/stop_using_mocha

Active Record、Active Supportの修正です。

mock処理にmochaを使用していたのを、Minietstのmock及びRails内部のヘルパーメソッドを使用するよう修正しています

これでmochaを使用している箇所が全てなくなり、Gemfileからもmochaが削除されています。


Remove rake initializers from rake tasks list

railties/lib/rails/tasks/initializers.rakeの修正です。

deprecateになったinitializersがrakeタスクの一覧に表示されないようにしています。


Merge pull request #33685 from krusty3002/master

rails guideのUpgrading Ruby on Railsの修正です。

Configure Framework Defaultsの項を追加し、default configについての説明(config/initializers/new_framework_defaults.rbファイル、及び、config.load_defaultsメソッドについての説明)を追加しています。


Fix rails initializers --help and rails dev:cache --help

railties/lib/rails/commands/dev/dev_command.rbrailties/lib/rails/commands/initializers/initializers_command.rbの修正です。

rails initializers、及び、rails dev:cacheコマンドのhelpが表示されるよう修正しています。


Update ParameterFilter to yield original parameters

actionpack/lib/action_dispatch/http/parameter_filter.rbの修正です。

ActionDispatch::Http::ParameterFilterにblockを指定した際に、blockの第三引数に元のparametersを渡すよう修正しています。

これにより、元のparametersが特定の値の時だけfilter処理を行う、というような事が出来るようになっています。


Remove extra execution of uniq! on action_methods

actionpack/lib/abstract_controller/base.rbの修正です。

AbstractController::Base.action_methodsメソッドから不要なuniq!メソッドの呼び出しを削除しています。

その後の処理でto_setメソッドを使用している為。


Include form_with in form_helpers rails guide (#33523)

rails guideのAction View Form Helpersの修正です。

formの生成処理のexampleにform_forform_tagを使用していたのを、form_withを使用するようまとめて修正しています。


Merge pull request #33666 from cbothner/fail-gracefully-from-activestorage-file-not-found

Active Storageの修正です。

ActiveStorage::DiskController#showで指定されたファイルが見つからなかった際に、Errno::ENOENTをraiseしていたのを、404 Not Found responseを返すよう修正、及び、ActiveStorage::Blob#downloadActiveStorage::Blob#openで指定されたファイルが無かった場合に、各サービスのエラークラス(e.g. Google::Cloud::NotFoundErrorAws::S3::Errors::NoSuchKey)がraiseされていたのを、ActiveStorage::FileNotFoundErrorをraiseするよう修正しています。


Merge pull request #32647 from eugeneius/lazy_transactions

Active Recordの修正です。

トランザクションの開始(BEGIN)を実際にqueryが実行されるまで遅延するようにして、queryが実行されない場合は不要なトランザクションを実行しないよう修正しています。

元々は、modelのsave処理で実際はqueryが実行されない(元の状態から値が変更されていない時等)場合でもBEGIN / COMMIが実行されていましたが、この対応により、そのような場合はトランザクションが実行されないようになっています。


Use string lengths instead of regexp to extract path

actionpack/lib/action_controller/metal/helpers.rbの修正です。

all_helpers_from_pathメソッドでpathからhelper名を取得する際に、正規表現を使ってpathから_helper.rbを除去していたのを、_helper.rbのsize分Stringを削るよう修正しています。

- extract = /^#{Regexp.quote(_path.to_s)}\/?(.*)_helper.rb$/
- names = Dir["#{_path}/**/*_helper.rb"].map { |file| file.sub(extract, '\1'.freeze) }
+ names = Dir["#{_path}/**/*_helper.rb"].map { |file| file[_path.to_s.size + 1..-"_helper.rb".size - 1] }

最初の正規表現のやり方だと、case-insensitiveファイルシステムで正しくhelper名が取得出来ない為。


Fix typo s/Topic/Tag/

activerecord/test/cases/transaction_isolation_test.rbの修正です。

Transaction Isolationをサポートしていない場合のテストで、テスト内で使用するクラス名をタイポしている箇所があったのを修正しています。


Merge pull request #33703 from bogdanvlviv/follow-up-33659

Action Cableの修正です。

Action Cableテスト用のtest helper、及び、adapterを追加した対応のフォローアップとして、docの修正して、不足していたテストの追加等を行っています。