なるようになるブログ

読書感想文か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に指定されるようになっています。

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

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

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

activerecord/CHANGELOG.md


Ensure we always cleanup the databases

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

parallel testsで、test内でexceptionがraiseされた場合等にDB cleaup等の後処理が実行されなかったのを、必ず後処理は実行するよう修正しています。


Upgrade all the gems

Gemfile.lockの修正です。

各gemのバージョンを更新しています。


Unlock ffi version

Gemfileの修正です。

ffiバージョンが1.9.21以下に固定されていたのを、バージョン固定を削除しています。

1.9.24より前のバージョンにはsecurity issueがあった為バージョンを固定していたのですが、最新のバージョン(1.9.25)では問題無い為。


Merge pull request #33799 from kamipo/deprecate_unused_methods_in_database_limits

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

DatabaseLimits moduleの、`column_name_length, table_name_length, columns_per_table, indexes_per_table, columns_per_multicolumn_index, sql_query_length, joins_per_queryメソッドをdeprecateにしています

Rails内部で全く使われていない為。

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

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

CHANGELOGへの追加はありませんでした。


Remove unused block

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

DatabaseConfigurations#configs_forメソッドの引数から使用していないblockを削除しています。


Fix tests in activerecord/test/cases/tasks/database_tasks_test.rb

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

ActiveRecord::Base.configurationsの戻り値が元々はHashだったのをActiveRecord::DatabaseConfigurationsクラスのインスタンスを返すよう修正した、Part 2: Multi-db improvements, Refactor Active Record configurationsの対応の際に、database taskに関するテストの修正が正しく行われず、assertionが実行されない状態になってしまっていたのを修正しています。


Merge pull request #33782 from mikhailov/patch-1

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

ActionController::ConditionalGet#expires_inメソッドのdocにstale_while_revalidateオプション、及び、stale_if_errorオプションについての説明を追加しています。

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

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

CHANGELOGへの追加はありませんでした。


Update link for Rack socket hijacking API

actioncable/README.mdの修正です。

Rack socket hijacking APIへのリンクで、アンカーの指定に誤りがあった(rack側の変更に追随していなかった)のを修正しています。


Respect config setting when output deprecation notice in rake tasks

railtiesの修正です。

deprecateになったrake task(notesdev:cacheinitializers)でenvironmentファイルをロードするよう修正しています。

environmentでdeprecationのbehaviorを指定してた場合に、そのbehaviorに従ってメッセージを出力するようにするため。

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

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

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

railties/CHANGELOG.md


Merge pull request #33773 from mcnelson/null_cache_store_for_test_env

railties/lib/rails/generators/rails/app/templates/config/environments/test.rb.ttの修正です。

test envのdefaultのcache storeにnull_storeを指定するよう修正しています。 Rails guideでtest envでnull storeを使用する事を推奨している箇所があり、ならそもそもdefaultの値もそうなっていて良いのでは、ということで修正されました。


Update changelog with null_store default

railties/CHANGELOG.mdの修正です。

先のcache storeのdefautの変更についてCHANGELOGにエントリーを追加しています。


Fix regression setting children record in parent before_save callback.

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

(09/03 07:55 修正)

親associationのbefore_save blockで子associationを設定、かつ、save処理で子associationでエラーがあった場合に、そのエラーの情報が正しく取得出来ないバグがあったのを修正しています。

親associationのbefore_save(=親associationのvalidationの後)で追加された子associationが、5.2.0までは子のsaveが成功してたのが5.2.1ではassociation.insert_recordで親のidがfillされる前に子のvalidationをするせいで子のsaveに失敗するというリグレッション、ということでした。 kamipoさんにご指摘頂きました。ありがとうございます。

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

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

CHANGELOGへの追加はありませんでした。


[ci skip] Change some comments to conform to the style used in other comments

各docのフォーマットの修正、及び、タイポの修正を行っています。


add mysql and sqlite3 default test

Active Recordのテストの修正です。

columnにdefaultを指定した場合のテストがPostgreSQLAdapterでしか実行されていなかったのを、Mysql2Adapter、SQLite3Adapterでも実行するよう修正しています。


Remove unused splat args in _create_record

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

CounterCache module及びLocking::Optimistic moduleの_create_recordメソッドが任意の引数を受け取れるようになっていたのを、attribute_namesだけ受け取れるよう修正しています。 現状、attribute_namesしか指定される事が無い為。

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

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

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

actionpack/CHANGELOG.md

railties/CHANGELOG.md


Faster permitted_scalar_filter

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

ActionController::Parameters#permitted_scalar_filterメソッドのリファクタリングとして、#keysではなく#each_keyメソッドを使用するよう修正、不要な正規表現のescape処理を削除、等を行っています。

この対応でついでにActionController::Parameters#each_keyメソッドが追加されています。keysや、has_key?メソッド同様に、@parameterseach_keyメソッドがよばれるようになっています。


Merge pull request #33766 from yskkin/warn_plural

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

modelを生成する際に、model nameにRailsデフォルトでは複数形から単数形に戻せない単語(e.g. porsche)が指定された場合に、inflection rulesをinitializerに指定する必要がある旨warningを表示するよう修正しています。


Merge pull request #33743 from steakknife/steakknife/improve-template-generator-actions

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

template actionにgithubメソッドを追加しています。Gemfileでgithub blockを生成するよう。例。

action :github, 'steakknife/elasticsearch-rails' do
  gem 'elasticsearch-model'
  gem 'elasticsearch-persistence'
  gem 'elasticsearch-rails'
end

# =>
# github 'steakknife/elasticsearch-rails' do
#   gem 'elasticsearch-model'
#   gem 'elasticsearch-persistence'
#   gem 'elasticsearch-rails'
# end

Remove needless test order config

railties/test/isolation/abstract_unit.rbの修正です。

不要なtest_orderの指定を削除しています。


Merge pull request #33770 from eileencodes/multi-db-improvements-part-3

Active Recordの修正です。

configuration fileにreplicaオプションを指定出来るよう修正しています。複数DB対応の一環。

# config/database.yml
primary_readonly:
  <<: *default
  database: db/development.sqlite3
  replica: true