なるようになるブログ

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

rails commit log流し読み(2017/11/26)

2017/11/26分のコミットです。

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

activesupport/CHANGELOG.md

actionview/CHANGELOG.md


Merge pull request #31006 from rails/kamipo/ordinal_methods_should_respect_loaded_records

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

Active Recordのordinal methods(firstsecond等)で、recordsがロード済みの場合、ロード済みの値を使用するよう修正しています。

が、懸念がある(別のPRで進めている内容と矛盾しているらしい)為、後ほどrevertされています。


Merge pull request #30510 from yhirano55/add_nodoc_to_activerecord

Active Recordのdocの修正です。

Active Record内部でだけで使用するclass、moduleに:nodoc:を指定しています。


Merge pull request #24510 from vipulnsward/make-variable_size_secure_compare-public

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

ActiveSupport::SecurityUtils.secure_compareメソッドが、値の比較をする前にSHA256でハッシュ値に変換してから比較するよう修正しています。timing attacksにより値の長さが漏れてしまうのを防ぐ為。

ハッシュ値に変換せずに値を比較する処理としてActiveSupport::SecurityUtils.fixed_length_secure_compareメソッドが追加されている為、元のsecure_compareと同じ事をしたい場合は、左記メソッドを使用すればOKです。


Compare the actual string after comparing the HMAC proccessed strings

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

ActiveSupport::SecurityUtils.secure_compareメソッドで、ハッシュ値に変換した値の比較処理の後に、元の値の比較処理を行うよう修正しています。


Merge pull request #30879 from toptal/add_better_logging_to_delayed_job

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

jobのadapterにDelayed::Jobを使用している場合に、ログにjob class、job id、jobの引数等の詳細な情報を出力するよう修正しています。


Merge pull request #29439 from npezza93/set-skip-default-ids

Action Viewの修正です。

form_with配下のタグで、デフォルトでid属性を生成するよう修正しています。

form_withが最初に実装された時は、頻繁に重複したIDを生成してしまいそんなに使われる情報では無いだろう、という事でidは生成しないようにしていた(form_with/fields: Don't output ids by default)のですが、Capybaraでテストをする際等にidは必要だろう、という事で、デフォルトで生成する事になりました。

idを生成したく無い場合(5.1と同じ挙動)はconfig.action_view.form_with_generates_idsにfalseを指定すればOKです。


Provide arguments to RecordNotFound

Active Recordの修正です。

ActiveRecord::RecordNotFoundをraiseする際、引数にmodel名、primary key、及び、idを指定するよう修正しています(値が指定出来る場合のみ)。

元々RecordNotFoundクラスの引数に上記パラメータはあったのですが、コードによって引数を渡したり渡さなかったり、という状態になっていた為、可能な限り引数を渡すよう統一しています。


Use parentheses for multi-line method calls

railties/lib/rails/application.rbrailties/lib/rails/generators/rails/credentials/credentials_generator.rbの修正です。

複数行に渡るメソッド呼び出しを行う場合に、"/"で改行していたのを、中括弧を使用するよう修正しています。

-          ActiveSupport::CachingKeyGenerator.new \
+          ActiveSupport::CachingKeyGenerator.new(
             ActiveSupport::KeyGenerator.new(secret_key_base, iterations: 1000)
+          )

スタイルガイドに合わせる為。


Make sure that form_with_generates_ids only affects form_with

Action Viewの修正です。

config.form_with_generates_idsの設定がform_with、及び、fieldsメソッドでのみ参照するようにし、他のタグ生成メソッドでは直接form_with_generates_idsを参照しないよう修正しています。


Add test to make sure form_for is not affected by

actionview/test/template/form_helper_test.rbの修正です。

ActionView::Helpers::FormHelper.form_with_generates_idsfalseを指定した場合のテストを追加しています。


Renove duplicated and wrong test

activesupport/test/security_utils_test.rbの修正です。

重複してあったvariable_size_secure_compareメソッドのテストを削除しています。


Merge pull request #31181 from tenshilg/fix-api-guides

rails guideのUsing Rails for API-only Applicationsの修正です。

Adding Other Modulesの項、basicdigest等のauthenticationを使用したい場合に追加するmodule名が誤っていたのを修正しています。


Remove duplicated form_with_generates_remote_forms setting

railties/lib/rails/application/configuration.rbの修正です。

action_view.form_with_generates_remote_formsへの値の設定処理が複数回行われていたのを修正しています。


Flush idle database connections

Active Recordの修正です。

idle状態のコネクションを自動で切断するよう修正しています。デフォルトでは300秒以上使われていないコネクションが自動で切断されるようになっています。切断までの時間はconfig(idle_timeout)で変更可能になっています。


Let rubygems handle our objection to mysql2 0.4.3

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

Mysql2::VERSIONが0.4.3だった場合にエラーをraiseしていたのを、gemロード時に0.4.3をロードしないよう修正しています。

-gem "mysql2", ">= 0.3.18", "< 0.5"
+gem "mysql2", ">= 0.3.18", "< 0.5", "!= 0.4.3"
 require "mysql2"
-raise "mysql2 0.4.3 is not supported. Please upgrade to 0.4.4+" if Mysql2::VERSION == "0.4.3"

Merge pull request #31232 from weedySeaDragon/engines-guide-copyediting--neutral-copyediting-171126

rails guideのGetting Started with Enginesの修正です。

各項のグラマーの修正を行っています。


Revert "Remove stopgap_13632 entirely for now: it doesn't support 2.2.8"

Gemfileの修正です。

Gemfilestopgap_13632を追加しています。stopgap_13632Ruby 2.2.8をサポートし、再度使用出来る状態になった為。