なるようになるブログ

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

rails commit log流し読み(2017/12/23)

2017/12/23分のコミットです。

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


Add support for combined MiniMagick transformations

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

Active Storageのvariant処理で、gravityオプションを指定しても反映されないバグがあったのを修正しています。

元々MiniMagickを使っての変換処理では変換処理を単体で指定するようになっていたのですが、gravityについてはcombine_optionsメソッドを使用して他の値と一緒に指定する必要があった為、variantcombine_optionsが指定された際は、値をマージして使用するよう修正しています。


Revert "Remove code duplication in ActiveSupport::Cache"

Cache::Store#expanded_keyメソッドとCache.expanded_keyメソッドの実装が重複していたのを削除した、Remove code duplication in ActiveSupport::Cacheをrevertしています。

Rails 5.2でcache keyにversion timestampsが含まれるようになり、実装が完全に一致しているわけではなくなった為。


Test that cache stores build unversioned keys

activesupport/test/cache/behaviors/cache_store_behavior.rbの修正です。

バージョン管理されていないcache keyを使用した場合のテストを追加しています。


Merge pull request #31538 from yhirano55/add_cloud_service_links_to_readme_in_active_storage

activestorage/README.mdの修正です。

Amazon S3Google Cloud Storage、及び、Microsoft Azure Storageについて説明している箇所に、それぞれのdocへのリンクを追加しています。


[docs] Add mention of removal of HWIA interface from AC:Parameters

rails guideのRuby on Rails 5.1 Release Notesの修正です。

Action PackRemovalsの項に、ActionController::Parametersクラスからdeprecatedになっていた各種メソッド(ActionController::ParametersHashを継承した事により使えたメソッド)を削除した対応についてのエントリーを追加しています。


Use delayed_job master

Gemfileの修正です。

delayed_job gem を使用するのにGitHubのmaterブランチを指定するよう修正しています。

Ruby 2.5でテストを通るようにする為。

rails commit log流し読み(2017/12/22)

2017/12/22分のコミットです。

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


[ci skip] Remove needless from doc for ActiveStorage::Variant

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

ActiveStorage::Variantのdoc内variantメソッドのexampleから不要なurl_forメソッドの呼び出しを削除しています。


Pass options to rails_blob_url

activestorage/config/routes.rbの修正です。

rails_blob_urlメソッドの引数に指定されたoptionsroute_forに渡せれていなかったのを、渡すよう修正しています。


Temporary disabled using rubygems 2.7.

.travis.ymlの修正です。

CIでrubygems 2.7を使用するのを避けるよう修正しています。

rubygems 2.7を使用するとbundler 1.6が強制的にデフォルトgemとして扱われてしまい、ユーザがインストールされたbundlerが使用されない、という問題がある為。

参考;RG 2.7 Updater broke Travis CI environment.


Add test case for using sanitize method in the scope definition

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

scopeの中でsanitizeメソッドを使用する場合のテストを追加しています。


Merge pull request #31543 from hsbt/update-bundler-1-16

.travis.yml、及び、bug report templatesの修正です。

Travis CIで最新のbundlerを使用するよう修正、及び、bug report templatesから不要になったbundlerのバージョン固定を削除しています。

Bundler 1.16.1がリリースされたおかげで、bug report templatesが最新のbundlerで動作するようになった為。

rails commit log流し読み(2017/12/21)

2017/12/21分のコミットです。

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


Removes OS specific directory separator

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

ディレクトリの区切り文字に/を直接指定していたのを、指定せずjoinメソッドを使って結合するよう修正しています。

rails commit log流し読み(2017/12/20)

2017/12/20分のコミットです。

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

activemodel/CHANGELOG.md

activerecord/CHANGELOG.md


Fix validation callbacks on multiple context

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

before_validation / after_validationに複数のcontextを指定した場合に、正しく動作しないバグがあったのを修正しています。


Fix count(:all) to correctly work distinct with custom SELECT list

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

count(:all) + distinct + SELECTに任意のリストを指定した場合に、正しく値が取得出来ないバグがあったのを修正しています。


Merge pull request #31177 from albertoalmagro/remove-default-mysql-engine-from-ar-5-2

activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rbactiverecord/lib/active_record/migration/compatibility.rbの修正です。

MySQL adapterでtableをcreateする際に、ENGINE=InnoDBを明示的に指定していたのを、指定しないよう修正しています。

MySQL 5.5以上やMariaDBではInnoDBがデフォルトになっており、明示的に指定する必要はもう無いだろうという事で削除されました。


Remove verbose_query_logs from new_framework_defaults_5_2.rb

activerecord/lib/active_record/log_subscriber.rbrailties/lib/rails/generators/rails/app/templates/config/initializers/new_framework_defaults_5_2.rb.ttの修正です。

使用していない値の削除、及び、config.active_record.verbose_query_logsの指定をnew_framework_defaults_5_2.rb.ttから削除しています。

app:updateでアプリを更新した場合、config/environments/development.rb上記configは指定されるようになっており、new_framework_defaults_5_2.rbのほうには不要な為。


Place args normalization from left_outer_joins to left_outer_joins!

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

left_outer_joinsメソッドで行っていたargumentのノーマライゼーションを、left_outer_joins!メソッドでやるよう修正しています。

他のメソッドではbangメソッドでノーマライゼーションを行っており、処理を合わせる為。


Remove passing needless empty string options in create_table

activerecord/lib/active_record/connection_adapters/abstract/schema_creation.rbactiverecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rbの修正です。

CREATE TABLEのオプションに不要なスペースが含まれてしまっていたのを削除しています。


Fix Illegal parameter data type bigint for operation 'get_lock' error

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

get_advisory_lockrelease_advisory_lockメソッドでGET_LOCK / RELEASE_LOCKを実行する前に、lock_nameto_sでStringに変換してから使用するよう修正しています。

      def get_advisory_lock(lock_name, timeout = 0) # :nodoc:
-        query_value("SELECT GET_LOCK(#{quote(lock_name)}, #{timeout})") == 1
+        query_value("SELECT GET_LOCK(#{quote(lock_name.to_s)}, #{timeout})") == 1
       end

lock_nameにはintegerが渡されていたのですが、MariaDBではGET_LOCKを渡すとエラーになってしまう為、Stringに変換するようにしたとの事です。


Add test case that configure config.active_support.hash_digest_class

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

config.active_support.hash_digest_classを指定した場合のテストを追加しています。


Handle FrozenError if it is available

テストの修正です。

Ruby 2.5からfreeze されたオブジェクトの変更で発生する例外がRuntimeErrorからFrozenErrorに変更になった為、オブジェクトを変更した際に例外が発生する事を確認するテストで、RuntimeErrorではなくFrozenErrorがraiseされる事を確認するよう修正しています。

rails commit log流し読み(2017/12/19)

2017/12/19分のコミットです。

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

activerecord/CHANGELOG.md


Merge pull request #31479 from iamvery/reword-delegate-allow-nil-paragraph

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

Module#delegateメソッドの:allow_nilオプションについて説明している箇所に、何故このオプションが必要かみたいなコメントが色々と記載されていたのを削除し、シンプルにオプションを指定した場合の挙動についての説明だけを記載するよう修正しています。


Merge pull request #31485 from y-yagi/skip_bootsnap_option

railtiesの修正です。

rails newコマンドにbootsnap gemをスキップする為のskip_bootsnapオプションを追加しています。


Add headless browser support in api docs [ci skip]

actionpack/lib/action_dispatch/system_test_case.rbのdocの修正です。

ActionDispatch::SystemTestCaseクラスのdocにheadless browserの指定方法についての説明を追加しています。


Update new_framework_defaults_5_2.rb.tt

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

AES 256 GCMAES-256-GCMに修正しています。


Ensure MiniMagick tempfiles are properly unlinked after image transformation

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

variantでMiniMagickを使って変換処理を行った際に、MiniMagickのtempfilesがそのまま残ってしまっていたのを、削除するよう修正しています。


Merge pull request #31348 from y-yagi/fix_31283

activesupportrailtiesの修正です。

require_master_keyが指定されていない、かつ、master keyが存在しない場合に、credentialsを参照するとエラー(MissingKeyError)がraiseされてしまっていたのを、エラーがraiseされないよう修正しています。

エラーがraiseされるのはrequire_master_keytrueが指定されている場合のみで、それ以外の場合はスルー(nilが変える)するようになっています。


Implicitly skip bootsnap for rails new --dev

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

rails new--devオプションを指定した場合、bootsnapを使用しないよう修正しています。

--devオプションを指定してアプリを作成する場合は、頻繁にコードを修正するときが多く、キャッシュはむしろして欲しく無い為。


Merge pull request #31475 from shioyama/reset_column_information_redefine_child_attribute_methods

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

reset_column_informationメソッドを呼び出した際、子クラスのattribute methodsがそのままになってしまっていたのを、親クラス同様にundefするよう修正しています。


Delete MiniMagick tempfile when transformation fails

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

transformに失敗した場合に、MiniMagickのtempfileがそのままになってしまっていたのを削除するよう修正しています。


[ci skip] Added Object Relational Mapping wiki link

rails guideのActive Record Basicsの修正です。

Object Relational Mappingについて記載している箇所にwiki(https://en.wikipedia.org/wiki/Object-relational_mapping)へのリンクを追加しています。


assert_nothing_raised not required here, we can assert directly for the actual result

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

test_exists_should_reference_correct_aliases_while_joining_tables_of_has_many_through_associationでエラーがでない事だけを確認していたのを、正しい値を取得出来る事を確認するよう修正しています。


Using subselect generated by the connection adapter for update_all with offset

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

offset + update_allを実行した場合にエラーになってしまうバグがあったのを修正しています。

OFFSET + UPDATEを実行する場合、subselectを指定する必要がある(SQLite以外)のですが、ArelではまだMySQLのupdate用のsubselectの生成をサポートしていない為、connectionで生成したsubselectを使用するよう修正しています。


Using subselect for delete_all with limit or offset

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

delete_alllimit、または、offsetを指定した場合にエラーになっていたのを、connection adapterが生成したsubselectを使用して動作するよう修正しています。


Quote primary key in the subselect generated by mysql2 adapter

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

mysql2 adapterで生成されたsubselectでprimary keyをクォートするよう修正しています。


Remove outdated comments [ci skip]

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

find_allのテストから、内容が古くなってしまっているコメントを削除しています。

rails commit log流し読み(2017/12/18)

2017/12/18分のコミットです。

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


Using table name qualified column names unless having SELECT list explicitly

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

ignored_columnsを使用している場合に、明示的にカラム名を指定しない場合のSELECTカラム名にテーブル名が指定され無いケースがあったのを、指定するよう修正しています。テーブル名の指定が無いとjoinした場合にエラーになってしまう為。


Fix test_counter_cache_with_touch_and_lock_version failure

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

counter_cache + lock versionのテストで時間を移動する際、1秒しか移動していなかったのを2秒に調整しています。

1秒だと実行タイミングにより期待動作の挙動にならない(同じ秒数内で処理が終わってしまう)為。


Convert non-web image (e.g. PSD) variants to PNG

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

blobにPSDのようなそのままでは表示出来ないimageが指定されていた場合に、variants実行時にPNGに変換するよう修正しています。ブラウザで表示出来るようにする為、ですかねえ。


Merge pull request #31490 from eugeneius/hash_digest_class_truncate

activesupport/lib/active_support/digest.rbactivesupport/lib/active_support/railtie.rbの修正です。

hexdigestを切り詰めるのにString#truncateメソッドを使用していたのを、String#[]メソッドを使用するよう修正しています。

truncateだと不要な省略記号が含まれてしまう為。合わせて、hash_digest_classを指定する為のconfigオプションをuse_hash_digest_classからhash_digest_classにリネームしています。

rails commit log流し読み(2017/12/17)

2017/12/17分のコミットです。

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


Add test case that active_storage:install task works within engine

railties/test/railties/engine_test.rbの修正です。

rails engineでactive_storage:install taskが動作する事を確認するテストを追加しています。


Update ActiveStorage::Blob#transformation docs [ci skip]

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

ActiveStorage::Blob#transformationメソッドのdocのグラマー、言い回し等を修正しています。


Added reference to default value of allow_other_host [ci skip]

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

redirect_backメソッドのdoc内のallow_other_hostオプションについて説明している箇所に、デフォルト値についての説明を追加しています。


Minor cleanup of CHANGELOG of PR #30850 [ci skip]

actionpack/CHANGELOG.mdの修正です。

redirect_backメソッドにallow_other_hostオプションを追加した対応のエントリーのグラマーの修正を行っています。


emphasize working on existing issues/patches for newcomers [ci skip]

rails guideのContributing to Ruby on Railsの修正です。

Helping to Resolve Existing Issuesの項に、issueを対応するのはコードを理解するのに役立つ旨説明を追加しています。