なるようになるブログ

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

rails commit log流し読み(2017/01/05)

2017/01/05分のコミットです。

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

actionview/CHANGELOG.md


No need to :doc: a public method

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

ActionController::Redirecting#redirect_toメソッドから:doc:を削除しています。redirect_toメソッドはpublicメソッドであり、:doc:は不要な為。


There's no such module

activesupport/lib/active_support/core_ext/string/inflections.rbactivesupport/lib/active_support/inflector/methods.rbのdocの修正です。

ActiveSupport::Inflector::Inflectionsのmodule名が誤っていた箇所を修正しています。


String#end_with? should be faster than Regexp here

actionpack/lib/action_dispatch/testing/assertions.rbの修正です。

ActionDispatch::Assertions#html_documentメソッドでcontent typeの最後がxmlで終わっているかどうか確認するのに正規表現を使用していたのを、String#end_with?メソッドを使用するよう修正しています。String#end_with?の方が早い為。


Merge pull request #27446 from zachahn/asset-hash-md5-to-sha256

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

Sprockets 3系ではdigestの生成にMD5ではなくSHA256を使用するようになったのですが、guide内の説明がMD5を使用している、という内容のままになっていたので、SHA256を使用している旨説明及びexampleを修正しています。


Require "models/post" before "models/comment"

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

テスト用modelファイルの読み込み順を調整(models/postmodels/commentより先に読み込むよう対応)しています。

テストの読み込み順によりfailになってしまうテストがある為、との事です。Postクラスの方が先に読み込まれてないと、associationが正しく認識されないからですかねえ。


Fix typo in asset_pipeline.md [ci skip]

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

sprockets -> Sprocketsに修正及びグラマーの修正を行っています。


Merge pull request #27549 from mpugach/consider_params_in_current_page

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

current_page?メソッドにparameterのチェックまで行うかどうかを指定する為のcheck_parametersオプションを追加しています。名前の通りで、trueを指定した場合parameterまで一致しているかどうかチェックを行うようになっています。

# 現在のページが`http://www.example.com/shop/checkout?order=desc&page=1`だった場合

current_page?('http://www.example.com/shop/checkout')
# => true

current_page?(
  'http://www.example.com/shop/checkout',
  check_parameters: true
)
# => false

Merge pull request #26480 from tbrisker/fix-26461

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

mattr_readermattr_writermattr_accessorメソッドのdocに、mattr_xxxメソッドで作成されるメソッドの可視性はpublicになる旨説明を追加しています。


Make sure we generate keys that can be used with the cipher

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

ActiveSupport::MessageEncryptorクラスのdocにあるexampleの#generate_keyメソッドを使用している箇所で、key sizeを指定するよう修正しています。

-  #   key   = ActiveSupport::KeyGenerator.new('password').generate_key(salt) # => "\x89\xE0\x156\xAC..."
+  #   key   = ActiveSupport::KeyGenerator.new('password').generate_key(salt, 32) # => "\x89\xE0\x156\xAC..."

Railsのverification/signingはデフォルトではaes-256-cbcが使われている、かつ、Ruby 2.4からkey sizeを厳密に見るようになり、必要なkey sizeより大きい値を指定するとエラーになるようになった為。


Optimizing information_schema query for foreign_keys

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

information_schema.referential_constraintsから情報を取得する際に、テーブル名を指定するよう修正しています。

          WHERE fk.referenced_column_name IS NOT NULL
             AND fk.table_schema = #{quote(schema)}
             AND fk.table_name = #{quote(name)}
+            AND rc.table_name = #{quote(name)}

テーブル名の指定が無い場合、database全てのscanが発生してしまう為、との事です。

参考:MySQL :: MySQL 5.7 Reference Manual :: 9.2.4 Optimizing INFORMATION_SCHEMA Queries


Fix style guide violations

各テストファイルでrubocopのstyle指定に違反している箇所があったのを修正しています(シングルクォート->ダブルクォートに修正、不要なスペースの削除等)。


bundle u sqlite3

Gemfile.lockの修正です。

sqlite3のバージョンを1.3.12から1.3.13に更新しています。


This method is never called since 8e633e505880755e7e366ccec2210bbe2b5436e7

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

使用していないclone_attribute_valueメソッドを削除しています。k


CI against jruby-9.1.6.0

.travis.ymlの修正です。

CIで使用するJRubyのバージョンを9.1.6.0に更新しています。


self. is not needed when calling its own instance method

インスタンスメソッドを呼び出すのに不要なselfを指定してる箇所があったのをまとめて削除しています。


Privatize unneededly protected methods in Active Record

Active Recordで、protectedを使用しているが、protectedである必要が無いメソッドの可視性をprivateに変更しています。