なるようになるブログ

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

rails commit log流し読み(2014/06/06)

2014/06/06分のコミットです。

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

activerecord/CHANGELOG.md


Merge pull request #15523 from gregmolnar/doc_fix

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

select_tagメソッド:include_blankについての説明を追加しています。:include_blankオプションって、String指定出来たんですね。

select_tag "people", options_from_collection_for_select(@people, "id", "name"), include_blank: "All"
# => <select id="people" name="people"><option value="">All</option><option value="1">David</option></select>

Merge pull request #15513 from zenspider/remove_flush_output_buffer

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

テストでしか使われていないCaptureHelper#flush_output_bufferメソッドを削除しています。


Avoid misuse of underscore argument

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

permit!メソッドで使用している変数名に_を使用していたのを修正しています。

-        Array.wrap(value).each do |_|
-          _.permit! if _.respond_to? :permit!
+        Array.wrap(value).each do |v|
+          v.permit! if v.respond_to? :permit!

_は"使わないパラメータ"を意図として使う事が多いので、これは確かに紛らわしいですね。


Remove optimization that was required with whiny nils

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

extract_value_from_defaultメソッドでは引数のdefaultnilだった場合に、early returnしていたのですが、そのnilチェック処理を削除しています。

コミットログ見る限り、引数がnilだった場合に、エラーが出てほしいからのように見えます。合ってるかなあ。


Merge pull request #14971 from versioncontrol/#14785

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

単一テーブル継承を使用している場合に、becomes!メソッドで古クラスに変換出来るよう修正しています。

テストコードから抜粋。

class Topic < ActiveRecord::Base
end 

class Reply < Topic
end
assert_instance_of Topic, topics(:first)

reply = topics(:first).becomes!(Reply)
assert_instance_of Reply, reply
reply.save!
assert_instance_of Reply, Reply.find(reply.id)

Topicクラスのインスタンスbecomes!メソッドを呼び出してReplyクラスのインスタンスに変更しています。

慣れないと、ちょっと事故りそうな気もします。


docs, update includes + where example in AR guide. [ci skip]

rails guideのActive Record Query Interfaceページの修正です。

includes + where のexampleを修正しています。

-Article.includes(:comments).where("comments.visible" => true)
+Article.includes(:comments).where(comments: { visible: true }) 

こんな書き方出来るんですね。知らなかった。


bin/rake db:migrate:status works with legacy migration numbers.

activerecord/lib/active_record/migration.rbactiverecord/lib/active_record/railties/databases.rakeの修正です。

00018_xyz.rbのような古いマイグレーションナンバーがあった時に、rake db:migrate:statusが正常に動作するよう修正しています。

assert_equal "118", ActiveRecord::SchemaMigration.normalize_migration_number("0000118")
assert_equal "002", ActiveRecord::SchemaMigration.normalize_migration_number("2")
assert_equal "017", ActiveRecord::SchemaMigration.normalize_migration_number("0017")

3桁に丸めるようにしています。


Merge pull request #15540 from nbibler/http-headers-set

actionpack/lib/action_dispatch/http/headers.rbの修正です。

CGI_VARIABLESfreezeするよう修正しています。CGI_VARIABLESを編集出来ないようにする為ですかね。


Merge pull request #15503 from sgrif/sg-json-hstore-storage

ActiveRecordの修正です。hstore/jsonの取り扱いを修正しています。


test refactor, don't hardcode primary_key_prefix_type default.

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

テストの中で変更していたActiveRecord::Base.primary_key_prefix_typeをテスト終了時に元の値に戻すよう修正しています。


test refactor, don't hardcode default for table_name_prefix.

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

テストの中で変更していたActiveRecord::Base.table_name_prefixをテスト終了時に元の値に戻すよう修正しています。


ActiveRecord::SchemaMigration has no primary key.

activerecord/lib/active_record/schema_migration.rbの修正です・

ActiveRecord::Base.primary_key_prefix_type:table_name_with_underscore等の値を設定しても、ActiveRecord::SchemaMigration.primary_keynilを返すよう修正しています。

primary_key_prefix_typeの設定によって返す値がおかしくなってしまっていたようです。


credit JoseLuis Torres for #15051. [JoseLuis Torres]

activerecord/CHANGELOG.mdの修正です。

creditにJoseLuis Torresを追加。


Add missing test cases for schema dumping defaults

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

dump_table_schemaに関するテストを追加しています。