2015/02/25分のコミットです。
CHANGELOGにのったコミットは以下の通りです。
- PostgreSQL, no longer disables user triggers if system triggers can't be disabled.
- Restore aborted transaction state when
disable_referential_integrity
fails due to missing permissions. - PostgreSQL, print warning message if
disable_referential_integrity
fails due to missing permissions.
Move back new_column_definition
into TableDefinition
activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb
の修正です。
Allow limit option for MySQL bigint primary key support.で追加されたnew_column_definition
メソッドもTableDefinition
クラス配下に移動しています。
activerecord/test/schema/postgresql_specific_schema.rb
の修正です。
使用していないpostgresql_xml_data_type
tableの作成処理を削除しています。
rework disable_referential_integrity
for PostgreSQL.
https://github.com/rails/rails/commit/72c1557254aef2bca8a72f16a4f67862c9cca5cb
activerecord/lib/active_record/connection_adapters/postgresql/referential_integrity.rb
の修正です。
disable_referential_integrity
が設定されていた場合の処理を修正しています。
DISABLE TRIGGER ALL
が失敗した場合に、DISABLE TRIGGER USER
は実行しないよう修正- ブロック実行中に
ActiveRecord::InvalidForeignKey
が発生した場合に、warningメッセージを表示するよう修正 DISABLE TRIGGER ALL
が失敗した場合に、元のトランザクションを復元するよう修正
という対応のようです。
Make TestController available to all test classes
actionpack/test/controller/filters_test.rb
の修正です。
FilterTest
クラス配下にあったTestController
クラスを外だしして、他のテストクラスからも使用出来るよう対応しています。
Use other controller instead of sharing the controller
actionpack/test/controller/filters_test.rb
の修正です。
……と思ったら、TestController
クラスをFilterTest
クラス配下に戻しています。あれー。
activemodel: make .model_name json encodable
activemodel/lib/active_model/naming.rb
の修正です。
as_json
メソッドをname
メソッドにdelegateするよう対応しています。Class.model_name
をjsonエンコード出来るように、との事。
Fix mysql's schema.rb dumper so it does not include limit on emulated boolean tinyint(1) fields
activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb
の修正です。
schema.rbを出力する際、boolean
型については、limit: 1
オプションを設定するよう修正しています。
Merge pull request #18744 from mfazekas/no-table-name-with-from
activerecord/lib/active_record/relation/query_methods.rb
の修正です。
from
メソッドの引数にサブクエリーを指定し、かつ、そのサブクエリー内にgroup
が指定されていた場合に、結果がおかしくなるバグがあったのを修正しています。
issueより。
avg_by_users = Score. group(:user_id). select('AVG(scores.score) as avg_score', 'scores.user_id AS user_id') avg = Score. from(avg_by_users,'avg_by_user'). group('user_id'). select('AVG(avg_score) AS avg_score') avg.to_a # => no such column: scores.user_id: SELECT AVG(avg_score) AS avg_score FROM (SELECT AVG(scores.score) as avg_score, scores.user_id AS user_id FROM "scores" GROUP BY "scores"."user_id") avg_by_user GROUP BY "scores"."user_id"
activerecord/lib/active_record/relation/query_methods.rb
の修正です。
arel_columns
メソッド内で参照する値に誤りがあったのを修正しています。(from_value
-> from_clause.value
)。直ぐ先のコミットで誤ってしまっていたのを修正しています。
Call attributes_for_update
in _update_record
w/ optimistic locking
activerecord/lib/active_record/locking/optimistic.rb
の修正です。
Optimistic#_update_record
メソッドで、updateの処理を行う際、attributes_for_update
でreadonly
のattributesを対象にしないよう修正しています。
Tiny documentation edits [ci skip]
activerecord/lib/active_record/associations.rb
、
activerecord/lib/active_record/connection_adapters/abstract/schema_statements.rb
guides/source/association_basics.md
の修正です。
不要な空行の削除、1行80文字で収まるよう改行の追加、等を行っています。
Add a failing test demonstrating regression with HEAD requests to Rack apps, re #18764
actionpack/test/dispatch/routing_test.rb
の修正です。
先日、HEADリクエストのroutesを検索する際、routesのverbが//
になっているものを削除するよう修正されたのですが、HEAD
メソッドを使用した場合にせ正常な値を返す事を確認するテストが漏れていたので、追加しています。
AR: translate_exception_class() no longer logs error.
activerecord/lib/active_record/connection_adapters/abstract_adapter.rb
の修正です。
AbstractAdapter#translate_exception_class
メソッドからログ出力処理を削除しています。
translate_exception_class
メソッド自体が、ログ等の為にエラーの情報を整形する為のメソッドなので、そのメソッド内で更にログを出力する必要は無いのでは、という事で削除しています。
Add transaction callbacks that wont enroll to the transaction.
ActiveRecordの修正です。
ActiveRecord::Callbacks
にafter_commit_without_transaction_enrollment
、after_rollback_without_transaction_enrollment
を追加しています。
明示的にadd_transaction_record
が呼ばれないと実行されないcallback
のようです。
テストから抜粋。
class TopicWithoutTransactionalEnrollmentCallbacks < ActiveRecord::Base self.table_name = :topics after_commit_without_transaction_enrollment { |r| r.history << :commit } after_rollback_without_transaction_enrollment { |r| r.history << :rollback } def history @history ||= [] end end
@topic = TopicWithoutTransactionalEnrollmentCallbacks.create! @topic.transaction do @topic.content = 'foo' @topic.save! end @topic.history #=> [] end
@topic = TopicWithoutTransactionalEnrollmentCallbacks.create! @topic.transaction do 2.times do @topic.content = 'foo' @topic.save! end @topic.class.connection.add_transaction_record(@topic) end @topic.history # => [:commit]
ActiveRecordの修正です。
ActiveRecord::Callbacks
にbefore_commit
を追加しています。after_commit
は前からあったのですが、before_commit
は無かったんですねえ。
activerecord/test/cases/transaction_callbacks_test.rb
の修正です。
transaction callbackに関するテストのテスト名を、テスト内容に則した名前に修正しています。
Merge pull request #17426 from jpcody/fixture_associations_fix
activerecord/lib/active_record/fixtures.rb
の修正です。
has_many
メソッドにthrough
オプションを指定した場合に、fixturesが検索するテーブル名に、through先のテーブル名を使用するよう修正しています。
cache quoted column names in SQLite3
activerecord/lib/active_record/connection_adapters/sqlite3_adapter.rb
の修正です。
クオート処理をしたカラム名をキャッシュするよう修正しています。性能改善。
railties/lib/rails/paths.rb
のdocの修正です。
Paths
moduleのdoc内のタイポ(add
-> adds
)に修正しています。
update docs to reflect that mailer generator add suffix to generated classes [ci skip]
actionmailer/lib/action_mailer/base.rb
のdocの修正です。
Rails 5では、mailer generatorが生成するクラスのサフィックスにMailer
を付与するようになっているのですが、doc内のexampleにその内容が反映されてなかったので、クラス名のサフィックスにMailer
を追加しています。
actionview/lib/action_view/dependency_tracker.rb
の修正です。
render
にpartial
とlayout
両方を指定した場合に、dependency trackerが正しく動作していなかったバグがあったのを修正しています。
Merge pull request #18948 from kaspth/automatic-collection-caching
multi_fetch_fragmentsという、部分テンプレートで使用しているコレクションの表示とキャッシュを高速に行う事が出来るようになるgemがあるのですが、そのgemの実装をrails本体にマージしています。
<%= render @notifications %> # notifications/_notification <% cache notification do %> <%= notification.name %> <% end %>
上記のような使い方をしている場合に、自動で@notifications
をキャッシュしてくれるようです。
キャッシュしたく無い場合は、
<%= render @notifications, cache: false %>
上記のようにcache: false
オプションを設定すればOKとの事です。