なるようになるブログ

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

rails commit log流し読み(2018/03/05)

2018/03/05分のコミットです。

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

railties/CHANGELOG.md


Fix actionview tests execution

actionview/test/actionpack/controller/render_test.rbの修正です。

テスト内で使用しているcontrollerの親クラスをActionController::Baseに統一しています。

元々はテスト内で定義していたApplicationControllerを親クラスにしていました(ApplicationControllerの親クラスがActionController::Baseになっていた)。

が、他のテスト内で定義されているcontrollerではActionController::Baseが親になっており、合わせないとbin/testでテストを実行した際にTypeError(superclass mismatch for class TestController (TypeError))になってしまう為、合わせるよう修正しています。


Fix occurrences Fixnum|Bignum

Fixnum / Bignumについて参照している箇所をIntegerに修正しています。


Fix routes command tests broken in e137831726.

railties/test/commands/routes_test.rbの修正です。

Merge Previews/Variants controller into one Representations controller.の対応の影響でroutesのテストがエラーになっていたのを修正しています。


Merge pull request #32058 from gsamokovarov/rails-server-x-option

railtiesの修正です。

rails serverコマンドにRack server nameをオプションなしで渡すのがdeprecateになりました。今後は-uオプションを指定する必要があります。

$ ./bin/rails s puma
DEPRECATION WARNING: Passing the Rack server name as a regular argument is deprecated and will be removed in the next Rails version. Please, use the -u option instead. (called from new at /home/yaginuma/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/thor-0.20.0/lib/thor.rb:383)

オプション無しの場合、Rack serverではなくenvironmentを渡せる、と勘違いしてエラーになってしまう事があったらしく、紛らわしいのでオプション指定を必須にしよう、という事で修正されました。

合わせて、Rack server nameをタイポした場合にサジェストがされるようになりました。

$ ./bin/rails s -u pum
Could not find server "pum". Maybe you meant "puma" or "cgi"?
Run `rails server --help` for more options.

[ci skip] Fix grammar in delegate, private: true docs.

activesupport/lib/active_support/core_ext/module/delegation.rbのdocの修正です。

delegateメソッド内のprivateオプションについて説明している箇所のグラマーの修正、及び、不要なexampleの削除等を行っています。


Avoid purging attached blob when replacing it with itself

activestorage/lib/active_storage/attached/one.rbの修正です。

blobのreplace処理で、replaceするアタッチメントが元々保持していたblobと同じだった場合に、そのblobのpurge処理が行われないよう修正しています。


Fix "NameError: undefined local variable or method `host'"

railties/lib/rails/commands/server/server_command.rbの修正です。

Rails::Server#served_urlメソッドで存在しないメソッドを参照していたのを修正しています。


Handle another case where a blob might be erroneously purged

activestorage/lib/active_storage/attached/one.rbの修正です。

blobのreplace処理で、アタッチメントをblobに変換してから元のblobと同じか比較するよう修正しています。アタッチメントがStringの場合等に正しくreplace処理が行われるようにする為。


id_in_database should be respected as primary key value for persisted records

activerecord/lib/active_record/locking/optimistic.rbactiverecord/lib/active_record/persistence.rbの修正です。

Locking::Optimistic moduleのrecord更新処理で使用するprimary keyの値に、オブジェクトで保持していた値を使用していたのを、DBで保持している値を使用するよう修正しています。primary keyの値を意図的に書き換えた場合に、オブジェクトで保持している値を使用すると意図しない動作になるため。


Refactor _substitute_values to be passed attribute names and values

Active Recordの修正です。

_substitute_valuesメソッドにattributeのnameとvalueを渡せるようリファクタリングしていいます。後々のコミットで必要な為、のようです。


Prefer _update_record than update_all for updating a record

activerecord/lib/active_record/locking/optimistic.rbactiverecord/lib/active_record/persistence.rbの修正です。

recordの更新処理にupdate_allメソッドを使っている箇所があったのを、_update_recordメソッドを使用するよう修正しています。


Introduce _delete_record and use it for deleting a record

activerecord/lib/active_record/locking/optimistic.rbactiverecord/lib/active_record/persistence.rbの修正です。

際にrecordの削除処理を行う為の_delete_recordメソッドを追加し、各moduleで左記メソッドを使うよう修正しています


Introduce _update_row to decouple optimistic locking concern from Persistence module

activerecord/lib/active_record/locking/optimistic.rbactiverecord/lib/active_record/persistence.rbの修正です。

レコード更新の為の_update_rowメソッドを追加し、各moduleで左記メソッドを使うよう修正しています。

元々Persistence moduleの更新処理でOptimistic Lockingが使用されている場合の考慮まで行っていたのですが、メソッドを切り出す事により、Optimistic Lockingを使用している場合の処理をLocking moduleで定義出来るようにしています。


Deprecate safe_level of ERB.new in Ruby 2.6

railties/lib/rails/generators/migration.rbtasks/release.rbの修正です。

ERB.newの引数に非キーワード引数を使用するのがRuby 2.6でdeprecateになった為、Ruby 2.6以上ではERB.newの引数にキーワード引数を使用するよう修正しています。

参考:ruby/NEWS

Merge pull request #32170 from koic/deprecate_safe_level_of_erb_new_in_ruby_2_6


Remove extra arg passed to Rails::Command::RoutesTest#run_routes_command

railties/test/commands/routes_test.rbの修正です。

routesコマンドのテストでコマンドに不要な引数を渡していた箇所があったのを修正しています。