なるようになるブログ

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

rails commit log流し読み(2017/03/28)

2017/03/28分のコミットです。

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

activemodel/CHANGELOG.md

railties/CHANGELOG.md

activesupport/CHANGELOG.md


Merge pull request #28367 from ptoomey3/ignore-disabled-buttons

actionview/app/assets/javascripts/features/disable.coffeeactionview/app/assets/javascripts/rails-ujs.coffeeの修正です。

elementにdisabledが設定されている場合に、rail-ujsのeventを実行しないよう修正しています。

通常、対象となるelementにdisabledが設定されていれば当然eventは発火しないのですが、

<button type="submit" disabled="disabled" data-confirm="Confirm"><strong>Click me</strong></button>

上記のようなhtmlがあった場合に、strongタグのテキストをクリックした場合の挙動はブラウザによって異なる為、上記のような場合にもeventが発生しないようujs側でガード処理を入れた、との事です。へー。


Add probot/stale configuration

Integrations - probot-staleの設定をrails/railsリポジトリに追加しています。


Use the stale branch

.github/stale.ymlの修正です。

probotが設定するlabelをstaleに修正しています。


Merge pull request #27636 from mtsmfm/disable-referential-integrity-without-superuser-privilege-take-2

activerecord/lib/active_record/connection_adapters/postgresql/referential_integrity.rbactiverecord/lib/active_record/connection_adapters/postgresql_adapter.rbの修正です。

fixturesのインサート処理等のように、一時的に外部キー制約を無効にしたい場合、PostgreSQLではDISABLE TRIGGER ALLを使用するようになっていたのを、SET CONSTRAINTS ALL DEFERREDが使用出来る場合(9.4.2以上)の場合、そちらを使用するよう修正しています。

SET CONSTRAINTS ALL DEFERREDDISABLE TRIGGER ALLと異なりsuperuser権限は不要です。


Merge pull request #28488 from kamipo/preprocess_association_query_handling

activerecord/lib/active_record/relation/predicate_builder.rbの修正です。

predicate builderでassociation queryの処理が後処理で行われていたのを、処理の最初に行うよう修正しています。

これにより、不要なskip処理やガード句を減らせる為、との事です。


Merge pull request #28050 from namusyaka/avoid-converting-int-into-float

activemodel/lib/active_model/validations/numericality.rbの修正です。

Numericality Validatorが、validateする値にStringを指定された場合、validation処理実行時に値をFloatに変更して処理を行っていたのを、値がIntegerと思われる場合Integerとして処理を実行するよう修正しています。

Floatに変換してしまうと、less_than_or_equal_to等のチェックが正しく行われない為。


Apply the log_level default

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

log_levelのデフォルトを全ての環境で:debugになるよう修正しています。

元々Rails 5.0で:debugにするよう、deprecateメッセージも出していた(Remove deprecation warning when log_level is not explicit set on prod…)のですが、値の変更が漏れていた為、こんかい対応したとの事です。


Merge pull request #28546 from claudiob/drop-j-option

railties/lib/rails/generators/app_base.rbの修正です。

rails newコマンドから-j (--javascript) オプションを削除しています。

元々prototype-railsjquery-railsのようにJSをラップしたgemを指定する為のオプションだったのですが、prototypeはもう使われなくなり、jqueryももうデフォルトでは無くなった為、オプション自体もう不要だろうという事で削除されています。


Merge pull request #28557 from y-yagi/remove_unnecessary_files_to_api_applications_when_app_task_task_executed

railtiesの修正です。

API-only Applicationsでapp:updateタスクを実行した場合に、API-only Applicationsに不要なファイル(config/initializers/assets.rbbin/yarn等)が生成されてしまっていたのを、削除するよう修正しています。


Make sure that ActionController::Api can include helpers

actionpack/test/controller/api/with_helpers_test.rbの修正です。

ActionController::APIがhelpersをinclude出来る事を確認するテストを追加しています。


Fix the tests to test what they should be testing

railties/test/application/middleware/cache_test.rbの修正です。

cacheのテストで、headerの指定方法に誤りがあったのを修正しています。 Rack::Testを使用している場合、HTTP_にマッチするフォーマットを指定する必要があるんですねえ。


No need to duplicate 5-1-stable CHANGELOG. [ci skip]

railties/CHANGELOG.mdの修正です。

scaffoldで生成するform用のhtmlで、field idを出力するよう修正した対応(Use short-form for the scaffold render calls and drop the needless test)のエントリーを削除しています。

Rails 5.1にバックポートされた対応であり、Rails 5.2の新機能では無い為。


Return unmapped timezones from country_zones

activesupport/lib/active_support/values/time_zone.rbの修正です。

ActiveSupport::TimeZone.country_zonesメソッドに、ActiveSupport::TimeZone::MAPPINGに定義されていないコードを指定した場合、空配列が返されていたのを、正しいtime zoneの値を返すよう修正しています。

# before
ActiveSupport::TimeZone.country_zones('GT')
# => [#<ActiveSupport::TimeZone:0x007ff9f0c61c08 @name="Central America", @utc_offset=nil, @tzinfo=#<TZInfo::DataTimezone: America/Guatemala>>]
ActiveSupport::TimeZone.country_zones('SV')
# => []

# after
ActiveSupport::TimeZone.country_zones('GT')
# => [#<ActiveSupport::TimeZone:0x007ff9f0c61c08 @name="Central America", @utc_offset=nil, @tzinfo=#<TZInfo::DataTimezone: America/Guatemala>>]
ActiveSupport::TimeZone.country_zones('SV')
# => [#<ActiveSupport::TimeZone:0x00555b99229288 @name="America/El_Salvador", @utc_offset=nil, @tzinfo=#<TZInfo::DataTimezone: America/El_Salvador>>]

MAPPINGに定義されていない値については、TZInfo::Country#zone_identifiersから値を取得するようになっています。