なるようになるブログ

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

rails commit log流し読み(2016/04/06)

2016/04/06分のコミットです。

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

actionmailer/CHANGELOG.md

guides/CHANGELOG.md


quick edits on the AC::API RDoc [ci skip]

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

ActionController::Apiクラスのdocの、グラマーの修正、言い回しの修正、メソッド名をタイポしている箇所があったのを修正、等をまとめて行っています。


Sendmail default arguments match Mail::SendMail

actionmailer/lib/action_mailer/delivery_methods.rbの修正です。

sendmailのデフォルトの引数から-tを削除しています。

Mail::SendMailクラスからは既に削除されており、それに合わせる為との事です。

参考: Error when using Exim "sendmail" · Issue #70 · mikel/mail


Use SQLite3 3.7.15 which supports multiple values insert

.travis.ymlの修正です。

travisでのテストでSQLite3 3.7.15が使用されるよう、sqlite3 packageの更新処理を追加しています。

SQLite3 3.7.11から、1ステートメントでの複数値のinsertをサポートしており、そのテストを行えるようにする為のようです。

が、テストが壊れてしまった為、後ほどrevertされています。


Remove hard-coded backticks in SQL statements

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

SQL内でのクォート処理にbacktick("")がハードコードされていたのを、メソッド(quote_table_name`)を使用するよう修正しています。


Merge pull request #24433 from kamipo/avoid_unused_capture

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

ActiveSupport::MarshalWithAutoloading#loadメソッド内のnested class/moduleを判定する為の正規表現で、使用しないグループをキャプチャしないよう修正しています。

-      if exc.message.match(%r|undefined class/module (.+?)(::)?\z|)
+      if exc.message.match(%r|undefined class/module (.+?)(?:::)?\z|)

Fix undefined method `owners' for NullPreloader:Class

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

NullPreloaderクラスに、.ownersメソッドを追加しています。

through + polymorphic + sourceを指定したassocitaionがemptyだった場合に、preload処理でエラーになるのを防ぐ為、との事です。ややこしい…。


Fix Active Model basics introduction to indicate it only introduces us to integration and not complete i18n framework.

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

guideで説明している事の一覧に、Railsi18nフレームワークについて、という一行があったのでですが、実際は、Active ModelがどのようにしてRailsi18nフレームワークとインテグレートしているか、についてだったので、その旨説明を修正しています。


Update example of passing a proc to :message option for validating records [ci skip]

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

Common Validation Optionsの項の:messageオプションについて説明している箇所に、ActiveModel::Errors::generate_messageメソッドでエラーメッセージを組み立てる際に、I18n.translateメソッドobjectを渡すよう修正した対応(Allow passing record being validated to error message generator)の変更内容を反映しています。

  validates :username,
     uniqueness: {
-      # key = "activerecord.errors.models.person.attributes.username.taken"
+      # object = person object being validated
       # data = { model: "Person", attribute: "Username", value: <username> }
-      message: ->(key, data) do
-        "#{data[:value]} taken! Try again #{Time.zone.tomorrow}"
+      message: ->(object, data) do
+        "Hey #{object.name}!, #{data[:value]} is taken already! Try again #{Time.zone.tomorrow}"
       end
     }

procに渡される引数がi18n用のkeyだったのがvalidation処理が行われたobjectに変わっているから、CHANGELOGを追記したのか。


Merge pull request #24431 from vipulnsward/24119-followup

activemodel/test/cases/validations_test.rbの修正です。

message生成用のprocにvalidation処理が行われたobjectと、処理が行われたattributesのdataが渡される事を確認するテストを追加しています。


Revert "Merge pull request #24440 from yahonda/use_newer_version_of_sqlite3_at_travis_ci"

travisでのテストでSQLite3 3.7.15が使用されるよう、sqlite3 packageの更新処理を追加した、Use SQLite3 3.7.15 which supports multiple values insertをrevertしています。テストが壊れてしまった為。


Cable typo: isSupportedProtocol -> isProtocolSupported

actioncable/app/assets/javascripts/action_cable/connection.coffeeの修正です。

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


Merge pull request #24374 from kamipo/move_quoting_methods_to_quoting_module

Active Recordの修正です。

各adapterクラスに定義されていたquote処理用のメソッドを、Quoting module内に移動しています。


Merge pull request #24078 from kamipo/show_variables

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

show_variableメソッドselect_valueメソッドを使用するよう修正しています。

-        variables = select_all("select @@#{name} as 'Value'", 'SCHEMA')
-        variables.first['Value'] unless variables.empty?
+        select_value("SELECT @@#{name}", 'SCHEMA')