なるようになるブログ

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

rails commit log流し読み(2014/12/09)

2014/12/09分のコミットです。

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


Merge pull request #17953 from kirs/test-activejob-generator

railties/test/generators/job_generator_test.rbの追加です。

Active Jobのgeneratorのテストを追加しています。


Fix type case of "validations" and word-wrap from #17954 [ci skip]

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

#17594で行われたstore_accessorについての修正に対して、大文字小文字の修正及び適切な位置への改行追加を行っています。


add brackets around attribute_name

activemodel/lib/active_model/dirty.rbのdocの修正です。

-  # * Call <tt>attr_name_will_change!</tt> before each change to the tracked
+  # * Call <tt>[attr_name]_will_change!</tt> before each change to the tracked

attr_name_will_change!というメソッドがある訳ではなく、attr_nameの箇所は実際のattributeの値に置き換える必要があるため、それを明確にする為に、ブラケットを追加しています。


Merge pull request #17896 from GBH/globbing_route_mailer_preview

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

mailer previewのURLの追加をappendメソッドで行っていたのをprependメソッドで行うよう修正しています。

"get '*foo', to: 'foo#index'"のような、global routeをroutingに定義された場合に、影響無くmailのpreviewが出来るにの事です。


Only check that it is a Rails application once

actionpack/lib/action_dispatch/routing/mapper.rbの修正です。

mountメソッド内で行っている引数がRails applicationかどうかのチェック処理を、一度だけで済むようにリファクタリングしています。


Revert to 4.1 behavior for casting PG arrays

activerecord/lib/active_record/connection_adapters/postgresql/oid/array.rbの修正です。

PostgreSQLのArray型のカラムに空のStringを指定した場合の挙動を、4.1の時の同等の挙動をするよう修正しています。

# 4.2.0.rc2
Post.create(author_names: '')
# ActiveRecord::StatementInvalid: PG::InvalidTextRepresentation: ERROR:  array value must start with "{" or dimension information : INSERT INTO "posts" ("author_names") VALUES ($1) RETURNING "id"

# 4.1
Post.create(author_names: '')  # エラー無し

下位互換を考慮して、戻したようです。因みに、5.0でこの挙動はdeprecateにした方が良いのでは、とも書いてあるので、今後は避けた方が良いかもですねえ。


Don't error when attributes is called on a frozen AR model

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

freeze済みのActiveRecordのmodelのattributesメソッドを呼び出した際に、エラーが発生していたのを対応しています。

materializeメソッドで frozen?のチェック処理が漏れていたのが問題だったようです。


Remove unused "Developer" fixtures from tests

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

使用していないテスト用のRecursiveCallbackDeveloperImmutableMethodDeveloperクラスを削除しています。


Allow custom handling of non-standard types in time_zone_conversion

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

PostgreSQLのdatetime型のカラムにinfinityを指定した際に、正しく値が反映されてないバグがあったのを修正しています。

issueより。

ActiveRecord::Schema.define do
  create_table :sponsors do |t|
    t.datetime :ends_at
  end
end

class Sponsor < ActiveRecord::Base
end

sponsor = Sponsor.new(ends_at: 'infinity')
sponsor.ends_at # => nil

PostgreSQLのマニュアルご参考。epochなんてのもあるんですねえ。


Update test case for TZ aware attributes

activerecord/test/cases/adapters/postgresql/infinity_test.rbの修正です。

先のコミットで行ったinfinityの対応について、テストを追加しています。


[ci skip] Fix typo

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

"MYSQL" -> "MySQL"に修正しています。


Unused csv fixture file

使用していないactiverecord/test/fixtures/naked/csv/accounts.csvを削除しています。


Fix options overwritten by super

actionview/lib/action_view/helpers/tags/search_field.rbactionview/lib/action_view/helpers/tags/text_field.rbの修正です。

SearchField#renderメソッドでオプションを上書きするよう修正しています。

# before
search_field("contact", "notes_query", onsearch: true)
# => "<input onsearch=\"true\" type=\"search\" name=\"contact[notes_query]\" id=\"contact_notes_query\" />"

# after
search_field("contact", "notes_query", onsearch: true)
# => "<input onsearch=\"true\" type=\"search\" incremental=\"true\" name=\"contact[notes_query]\" id=\"contact_notes_query\" />"

オプションが正しく設定されなかったバグがあった為対応したようです。