なるようになるブログ

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

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

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

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

activerecord/CHANGELOG.md

activestorage/CHANGELOG.md


Update arguments.rb [ci skip]

activejob/lib/active_job/arguments.rbのdocの修正です。

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


Merge pull request #33853 from yahonda/use_utf8mb4_only_if_available

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

サポートするMySQLのバージョンを5.1.10以上から5.5.8以上に修正しています。

Use utf8mb4 character set by default for MySQL database (#33608)でdefaultのcharsetがutf8mb4に変更されたのですが、5.1系ではutf8mb4は使用出来ないという問題がありました。その対応として、5.1系が使われた場合の対応を入れる事も検討されたのですが、5.1系は公式のサポートも切れているような古いバージョンなので、Railsも明確にサポートしないようになりました。

合わせて、innodb_large_prefixが有効になっていない古い環境(MySQLだと5.7.8以下)でcharsetが指定されていない場合にエラーをraiseするよう修正しています。indexのkey長の問題がある為。


Revert falsey with example reordered

activesupport/lib/active_support/core_ext/object/blank.rbのdocの修正です。

Object#blank?メソッドのdocの言い回しの修正、exampleの順番の調整等を行っています。


add any? to DatabaseConfigurations

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

ActiveRecord::DatabaseConfigurationsクラスでany?configurationsdelegateするよう修正しています。

Rails 6.0からActiveRecord::Base.configurationsが返す値がHashからActiveRecord::DatabaseConfigurationsクラスのインスタンスに変更になっているのですが、ActiveRecord::Base.configurations.any?という書き方をしている箇所がライブラリ(e.g. Spring)にあり、下位互換性の為にany?を使えるようにしています。


Merge pull request #33378 from numbata/subclass-redefine-autosave-callbacks

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

subclassで、associated recordsのautosave callbackを再定義出来るよう修正しています。

subclassで親に定義されているassociationを再定義 + accepts_nested_attributes_forを使用する、というような場合に正しく動作するようにする為。


SQLite3 adapter supports expression indexes

activerecord/lib/active_record/connection_adapters/sqlite3/schema_statements.rbactiverecord/lib/active_record/connection_adapters/sqlite3_adapter.rbの修正です。

SQLite3 adapterにexpression indexesのサポートを追加しています。

例。

create_table :users do |t|
  t.string :email
end
 add_index :users, 'lower(email)', name: 'index_users_on_email', unique: true

Merge pull request #33569 from eric-hemasystems/conditional-flash-helper

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

Flash.add_flash_typesメソッドでhelper_methodを呼び出す前に、helper_methodが定義されているかチェックするよう修正しています。

helper_methodが無い状態(ActionController::Metalに直接ActionController::Flashをincludeして使う場合)でもエラーにならないようにする為。


Bump MySQL version requirement to 5.5.8 in the template files

railties/lib/rails/generators/rails/app/templates/config/databases/jdbcmysql.yml.ttrailties/lib/rails/generators/rails/app/templates/config/databases/mysql.yml.ttの修正です。

template fileに記載されているサポートしているMySQLのバージョンを5.5.8以上に修正しています。


Enable sudo only in the required build

.travis.ymlの修正です。

全てのbuildでsudoが有効になっていた(Sudo-enabled infrastructureが使われていた)のを、sudoが必要なbuildでだけsudoを有効化するよう修正しています。

Sudo-enabled infrastructureだとPostgresSQLのisolationテストがdiskの問題でエラーになってしまう為。


Make sure the flash method is defined even if helpers are not present

actionpack/lib/action_controller/metal/flash.rbactionpack/test/controller/flash_test.rbの修正です。

Merge pull request #33569 from eric-hemasystems/conditional-flash-helperのfollow upとして、helper_methodが無い状態でもflashのメソッドは呼べるよう対応しています。


Remove mysql2 gem version requirement "< 0.6.0"

activerecord/lib/active_record/connection_adapters/mysql2_adapter.rbrailties/lib/rails/generators/app_base.rbの修正です。

mysql2 gemを指定するのにバージョンロック(gem "mysql2", ">= 0.4.4", "< 0.6.0")を指定していたのを、上限の指定は外すよう修正しています。


SQLite3: Support multiple args function for expression indexes

activerecord/lib/active_record/connection_adapters/sqlite3/schema_statements.rbactiverecord/lib/active_record/connection_adapters/sqlite3_adapter.rbの修正です。

SQLite3 adapterのexpression indexesに指定するfunctionに、引数を複数指定出来るよう修正しています。


Add :redis_cache_store to config.cache_store options [ci skip]

rails guideのConfiguring Rails Applicationsの修正です。

config.cache_store オプションに指定可能な値の一覧に:redis_cache_storeを追加しています。


Configure Active Storage route prefix

Active Storageの修正です。

Active Storageが生成するroutesのprefixが/rails/active_storage固定だったのを、任意のprefixを指定出来るよう修正しています。prefixはconfig.active_storage.routes_prefixで指定出来るようになっています。

config.active_storage.routes_prefix = '/files'
$ ./bin/rails routes -c active_storage
                   Prefix Verb URI Pattern                                                               Controller#Action
       rails_service_blob GET  /files/blobs/:signed_id/*filename(.:format)                               active_storage/blobs#show
rails_blob_representation GET  /files/representations/:signed_blob_id/:variation_key/*filename(.:format) active_storage/representations#show
       rails_disk_service GET  /files/disk/:encoded_key/*filename(.:format)                              active_storage/disk#show
update_rails_disk_service PUT  /files/disk/:encoded_token(.:format)                                      active_storage/disk#update
     rails_direct_uploads POST /files/direct_uploads(.:format)                                           active_storage/direct_uploads#create