なるようになるブログ

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

rails commit log流し読み(2019/09/22)

2019/09/22分のコミットです。

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


Reduce stat(2) calls

actionpack/lib/action_dispatch/middleware/static.rbrailties/lib/rails/commands/dbconsole/dbconsole_command.rbの修正です。

File.file?File.readable?を使用していた箇所を、File.statしてその結果でfile?readable?のチェックを行うよう修正しています。

クラスメソッドのfile?readable?はそれぞれstatシステムコールを実行するので、システムコールの呼び出しを減らす為。

rails commit log流し読み(2019/09/21)

2019/09/21分のコミットです。

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

activesupport/CHANGELOG.md


Don't load environment in rake command

railties/lib/rails/commands/rake/rake_command.rbの修正です。

rakeタスクをrailsコマンド経由で実行する際に、environmentをロードしないよう修正しています。

environmentの設定が不足している場合でもhelpの表示出来るようにするため、かつ、environmentのロードが必要なrake taskはtask側でenvironmentをロードするよう指定がある(はず)の為。


Merge pull request #37178 from pond/fix-boundless-range-extensions

activesupport/lib/active_support/core_ext/range/compare_range.rbの修正です。

selfがstartless / endlessのRangeだった場合に、Range#===, Range#include?, 及び Range#cover? が正しく動作しないバグがあったのを修正しています。


Prefer one liners OS requirement install commands

rails guideのDevelopment Dependencies Installの修正です。

Install Additional Tools and Servicesの項にある必要なパッケージのインストール処理が複数行にわかれていたのを、1行にまとめるよう修正しています。


Merge changelogs about Range support improvements [ci skip]

activesupport/CHANGELOG.mdの修正です。

Rangeのstartless / endlessの対応についてのエントリーを1つにまとめています。


Note ActiveStorage::Blob methods in Attachment docs [ci skip]

activestorage/app/models/active_storage/attachment.rbのdocの修正です。

ActiveStorage::Attachmenのdocに、attachmentsはActiveStorage::Blobにアクセスするメソッドもある旨説明を追加しています。


Update for Time#inspect

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

Active Recordのmodelのオブジェクトに対してpretty printした場合の結果を確認するテストで、timeデータにミリ秒が含まれいてもテストが通るよう修正しています。

Ruby 2.7でTime#inspectの結果にミリ秒が含まれるようになった為。

参考: Feature #15958: Time#inspect with frac

rails commit log流し読み(2019/09/20)

2019/09/20分のコミットです。

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

actionview/CHANGELOG.md


Fix establishing connections for models with custom connection specification names

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

任意のconnection specification nameを指定した場合に、modelからその指定したspecification nameでのDBへの接続が出来なくなるバグがあったのを修正しています。


Merge pull request #34809 from bogdanvlviv/fix-select-with-nil

actionview/lib/action_view/helpers/tags/select.rbの修正です。

ActionView::Helpers::FormOptionsHelper#selectvaluenilの場合に、optionsnilがあってもそのoptionがselectedにならなかったのを、nilの場合もselectedになるよう修正しています。


Fix ignore fixture tests causing random AR failures

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

IgnoreFixturesTestuse_transactional_testsにfalseを指定するよう修正しています。

IgnoreFixturesTestで使用しているother_books fixtureで指定しているignoreの指定がbooks fixtureにも影響を与えてしまって、テストの実行順によってbooks fixtureが正しくロードされない、という問題がある為。


Update test comments: set_model_class is not a thing [ci skip]

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

テスト内の各コメントが古い内容になっていたのを更新しています。


Rollback in after_commit should not rollback state that already been succeeded

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

after_commitでRollbackした際に、既にコミットされている状態まで元に戻ってしまうバグがあったのを修正しています。

rails commit log流し読み(2019/09/19)

2019/09/19分のコミットです。

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

activerecord/CHANGELOG.md


Make DatabaseTasks use DatabaseConfig objects

Active Recordの修正です。

DatabaseTasksで、connections configurationを使用するのにHashではなくDatabaseConfigのオブジェクトを直接使用するよう修正しています。

Active Record全体的にDatabaseConfigを直接使用するようにしており、その一環。


Merge pull request #37230 from eileencodes/deprecate-current_config

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

ActiveRecord::Tasks::DatabaseTasks.current_configActiveRecord::Tasks::DatabaseTasks.current_config=メソッドをdeprecateにしています。

複数DB対応によりRails内部ではもう使われなくなった為。


Merge pull request #37231 from eileencodes/deprecate-to_legacy_hash

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

DatabaseConfigurations#to_hをdeprecateにしています。HashではなくDatabaseConfigオブジェクトを直接使用するよう対応が行われており、Rails内部ではto_hがもう不要になった為。


Add a CHANGELOG entry for to_h deprecation

activerecord/CHANGELOG.mdの修正です。

先のDatabaseConfigurations#to_hをdeprecateにした対応について、CHANGELOGにエントリーを追加しています。


Merge pull request #37240 from dylanahsmith/add-describe-to-mysql-read-queries

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

DESCRIBE queryをread-only queryとして扱うよう修正しています。

rails commit log流し読み(2019/09/18)

2019/09/18分のコミットです。

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


Merge pull request #37223 from seejohnrun/fix-current-config-bug

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

DatabaseTasks#current_configが誤った値を返してしまうバグがあったのを修正しています。


Merge pull request #37214 from mperham/patch-1

activejob/lib/active_job/queue_adapters/sidekiq_adapter.rbの修正です。

sidekiqにオプションを渡す際に、job classをStringにしていたのを、Classのまま渡すよう修正しています。

sidekiq側でjob classに指定されているsidekiq_optionsを取得するようにしており、Classのままの方が都合が良い(Stringだとconstantizeが必要いなる)為。


Fix typo and simplify autoload paths intro

rails guideのAutoloading and Reloading Constants (Zeitwerk Mode)の修正です。

Autoload pathsの項の言い回しを修正しています。


Fix typo in activestorage README [ci skip]

activestorage/README.mdの修正です。

exampleコード内のdocのグラマーの修正を行っています。


Reduce object allocations in Journey

actionpack/lib/action_dispatch/journey/gtg/transition_table.rbの修正です。

Journey::GTG::TransitionTable#moveメソッドでオブジェクト生成数を減らすようリファクタリングしています。


String#force_encoding destructively updates the hash values

actionpack/lib/action_dispatch/journey/router.rbの修正です。

Router#serveで値に対してforce_encodingを行う際に、Hash#transform_valuesを使用していたのをHash#each_valueを使うよう修正しています。force_encodingは値を破壊的に変更するのでeach_valueで十分な為。


Reduce Hash allocations

actionpack/lib/action_dispatch/journey/router.rbの修正です。

Router#serveでHashオブジェクト生成数を減らすようリファクタリングしています。


Reduce Array allocations

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

ParameterFilter::CompiledFilter.compileでArrayオブジェクト生成数を減らすようリファクタリングしています。


Merge pull request #37228 from eugeneius/action_dispatch_response_autoload

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

ActionController::Liveを必ずロードしていたのを、autoload対象に変更して不要な場合はロードしないよう修正しています。


Maintain eager loading joining order as before

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

eager_load + stringのjoinを行った場合に、stringのjoinが先に使用されるようになっていのを、5.2まで同様に指定した順に使用されるよう修正しています。

rails commit log流し読み(2019/09/17)

2019/09/17分のコミットです。

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


Merge pull request #37120 from gmcgibbon/fix_has_one_reflect_check_custom_pk

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

has_one through relation + integerじゃないprimary keyを使用していた場合に、エラーになってしまうバグがあったのを修正しています。


Docs: note removal of render :text option from 5.1 guide [ci skip]

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

Upgrading from Rails 5.0 to Rails 5.1の項にrendertextオプションが削除された対応についての説明を追加しています。


Reduce Array and Hash creations in Journey find_routes

actionpack/lib/action_dispatch/journey/router.rbの修正です。

find_routesメソッドでArray#zip -> Array#each_with_indexを使用するようにしてオブジェクトの生成を減らすよう修正しています。


Use Path::Pattern#match? that uses Regexp#match? where MatchData is not in need

actionpack/lib/action_dispatch/journey/path/pattern.rbactionpack/lib/action_dispatch/journey/router.rbの修正です。

MatchDataが不要な場合にRegexp#match?を使うよう修正しています。


Avoid extra hash creation

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

merge_and_normalize_cache_control!メソッドで不要なHash作成処理を削除しています。


:golf:

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

merge_and_normalize_cache_control!メソッドから不要な変数を削除しています。


return early

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

merge_and_normalize_cache_control!メソッドでオプションの設定が不要な場合アーリーリターンするよう修正しています。


No need to dup temporary strings

actionpack/lib/action_dispatch/journey/router.rbの修正です。

serveメソッドから不要なdup処理を削除しています。


Use Regext#match? where MatchData is not needed

MatchDataが不要な場合にRegexp#match?を使うよう修正しています。


Prefer String#== over String#=== for clarity

actionpack/lib/action_dispatch/journey/route.rbの修正です。

String#===を使う必要が無い箇所で===を使用していたのを、String#==を使うよう修正しています。


Partially revert 4a9ef5e1202cdab1882989eb561b0dc854c9891b

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

Use Regext#match? where MatchData is not neededの対応でテストがコケるようになってしまったので、一部元のコードに戻しています。


Fix typo s/higlights/highlights/ [ci skip]

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

Active Storage assignment behavior changeの項のexampleコードでメソッド名をタイポしていたのを修正しています。


Silence method redefined warnings

activerecord/test/cases/reflection_test.rbの出力です。

メソッド再定義の警告が出ている箇所をsilence_warningsで囲むよう修正しています。


Fix typo in ActionMailbox::InboundEmail::MessageId [ci skip]

actionmailbox/app/models/action_mailbox/inbound_email/message_id.rbのdocの修正です。

ActionMailbox::InboundEmail::MessageId.create_and_extract_message_id!`メソッドのdocのグラマーの修正を行っています。

rails commit log流し読み(2019/09/16)

2019/09/16分のコミットです。

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


Avoid expensive tracking objects for prepared statements

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

Make prepared statement status thread and instance-specificでrace condition対策の為に、prepared statementの状態の管理にConcurrent::ThreadLocalVarを使うようになったのですが、Concurrent::ThreadLocalVarは処理が遅い為、スレッドローカルストレージ + Setで対応するようリファクタリングしています。


Auto-correct rubocop offences

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

rubocopの設定に違反している箇所があったのをまとめて修正しています


Expand on helpers available in Action Mailer

rails guideのAction Mailer Basicsの修正です。

Using Action Mailer Helpersの項に、mailerでmailerのインスタンスを参照出来ること、及び、messageでmessageのインスタンスを参照出来る事についての説明を追加しています。


document how to customize inflections in autoloading [skip ci]

rails guideのAutoloading and Reloading Constants (Zeitwerk Mode)の修正です。

autoload時のinflectionsのカスタマイズ方法について説明したCustomizing Inflectionsの項を追加しています。


renames variable in example [skip ci]

rails guideのAutoloading and Reloading Constants (Zeitwerk Mode)の修正です。

inflectionsをカスタマイズする際のexampleで変数名に誤りがあったのを修正しています。


Fixes #36956 by dup'ing the value and entry object returned from MemoryStore.

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

Cache::MemoryStoreが値を返す際、dupした値を返すよう修正しています。返された値を変更した際に、cacheにある値にもその変更内容が反映されてしまうのを避ける為。


Merge pull request #37199 from seejohnrun/reduce-surface-area-of-connection-specification

Active Recordの修正です。

ConnectionSpecification配下にあったConnectionUrlResolverResolverクラスをそれぞれ別のnamespace配下に移動しています。最終的にConnectionSpecificationは消す方向にしたいらしく、その準備との事です。


Remove Capistrano from asset pipeline guide

rails guideのThe Asset Pipelineの修正です。

Precompiling Assetsの項からCapistranoでデプロイする方法についての説明を削除しています。

Capistrano is no longer a dominant force in the deployment strategy f…でデフォルトのGemfileからCapistranoは削除されており、Capistranoに関する説明をRailsガイド内で行う必要はもうないだろう、との事理由です。