なるようになるブログ

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

rails commit log流し読み(2018/09/07)

2018/09/07分のコミットです。

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

actioncable/CHANGELOG.md

activesupport/CHANGELOG.md

activerecord/CHANGELOG.md


Merge pull request #32405 from yhirano55/use_turbolinks_in_guide

rails guideの修正です。

rails guideでTurbolinksを使用するよう修正しています。


Faster File Store

activesupport/lib/active_support/cache/file_store.rbの修正です。

Cache::FileStore#normalize_keyメソッドのリファクタリングです。

cache keyが制限(FILENAME_MAX_SIZE)より小さい場合に、不要な配列を生成しないよう修正しています。


Merge pull request #33798 from got2be/actioncable-redis-client-name

actioncable/lib/action_cable/subscription_adapter/redis.rbの修正です。

redis adapterでidオプションを指定出来るよう修正しています。

:host:port同様、configファイル経由で指定出来るようになっています。configで指定されていない場合、Rails側でデフォルト値("ActionCable-PID-#{$$}")を指定するようになっています。


Merge pull request #33574 from lsylvester/change-i18n-defaults-behaviour-to-match-i18n-1.1.0

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

i18nのfallback対象にdefaut localeを追加するよう修正しています。

元々は、fallback対象のlocaleが空だった場合、i18n gemでdefault localeにfallbackするようになっていました。

が、i18n gemでこの挙動が変更され、default localeへのfallbackは行われなくなりました。Fallbacks to exclude default locale

で、Railsとして元の挙動を維持する為、明示的にdefault localeを指定するようにしています。trueを指定した場合にdefault localeは追加される挙動は変わらないですが、i18n.fallbacksが空だった場合にdefault localeを追加する挙動はdeprecateになり、6.1で変更される予定です。


Generate a gem that can't be pushed to Rubygems.org by default

railties/lib/rails/generators/rails/plugin/templates/%name%.gemspec.ttの修正です。

rails pluginで生成されるデフォルトのgemspecにallowed_push_hostを指定している場合の処理を追加しています。


Fix test case to ensure default connection id is filled

actioncable/test/subscription_adapter/redis_test.rbの修正です。

redis adapterでidのデフォルト値を確認するテストが正しくテスト出来ていなかった(configでidを指定していて、デフォルト値が生成されなかった)のを修正しています。


[ci skip] Improve remove_column documentation

activerecord/lib/active_record/connection_adapters/abstract/schema_statements.rbのdocの修正です。

remove_columnメソッドのdocにcolumnにあるindexは自動で削除される旨説明を追加しています。


Fix typo in i18n_railtie.rb

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

localelocalにタイポしている箇所があったのを修正しています。


Merge pull request #33810 from schneems/schneems/doc-output-buffer

actionview/lib/action_view/buffers.rbactionview/lib/action_view/helpers/capture_helper.rbのdocの修正です。

ActionView::OutputBufferクラスにdocを追加、及び、CaptureHelper#captureメソッドのdocにcaptureの出力はレンダリングされたStringである旨説明を追加しています。


Merge pull request #33808 from itsbagpack/fix-access-safety-buffer-slice

activesupport/lib/active_support/core_ext/string/output_safety.rbの修正です。

html safeなStringをsliceした場合に、Stringがunsafeになってしまっていたのを、html safeな状態を維持するよう修正しています。

# before
string = "<div>test</div>".html_safe
string[-1..1].html_safe? # => nil


# after
string = "<div>test</div>".html_safe
string[-1..1].html_safe? # => true

Use canonical name for block local

railties/lib/rails/generators/rails/plugin/templates/%name%.gemspec.ttの修正です。

rails pluginで生成されるデフォルトのgemspec内、Gem::Specificationインスタンスを保持する変数の変数名をsからspecに変更しています。

bundlerが生成するgemspecと合わせる為と、Generate a gem that can't be pushed to Rubygems.org by defaultで既にspecを使用していた為。


Formatting CHANGELOGs [ci skip]

CHANGELOGのエントリーのフォーマットを修正しています。


Merge pull request #33756 from piecehealth/pr

activerecord/lib/active_record/core.rbactiverecord/lib/active_record/railtie.rbの修正です。

ActiveRecord::Core moduleの#inspect及び#pretty_printメソッドでattributesを出力する際に、特定のattributeの値をfilter出来るよう修正しています。filterしたい値はfilter_attributesに指定する事が出来るようになっています。

User.first.inspect
#=> "#<User id: 1, name: \"Taro\", secret: \"secret\", created_at: \"2018-09-07 13:01:28\", updated_at: \"2018-09-07 13:01:28\">"

ActiveRecord::Base.filter_attributes = [:secret]
# => [:secret]

User.first.inspect
#=> "#<User id: 1, name: \"Taro\", secret: [FILTERED], created_at: \"2018-09-07 13:01:28\", updated_at: \"2018-09-07 13:01:28\">"

デフォルトでRails.application.config.filter_parametersに指定されているattributesがそのままfilter_attributesに指定されるようになっています。