2016/08/08分のコミットです。
CHANGELOGにのったコミットは以下の通りです。
- Fix Accept header overridden when "xhr: true" in integration test
- Show cache hits and misses when rendering partials.
Defer requiring Rake until it's needed.
railties/lib/rails/commands/rake_proxy.rbの修正です。
ファイルの先頭でrequire "rake"をしていたのを、実際にrakeが必要になってからrakeのrequireを行うよう修正しています。
rakeのrequire処理は大変遅く、rails helpのようなrakeが不要な処理の実行が遅くなってしまうのを防ぐ為、との事です。
Merge pull request #24260 from y-yagi/show_error_message_when_error_raised_in_rails_runner
railties/lib/rails/commands/runner.rbの修正です。
rails runner実行時にSyntaxError、NameErrorが発生した場合に、Rails 5.0.0でエラーの詳細が表示されなくなっていたのを、再度詳細が表示されるよう修正しています。
Merge pull request #26076 from yui-knk/privatize_expand
activerecord/lib/active_record/relation/predicate_builder.rbの修正です。
内部用のメソッドであるActiveRecord::PredicateBuilder#expandの可視性をprivateに変更しています。
Fix Accept header overridden when "xhr: true" in integration test
actionpack/lib/action_dispatch/testing/integration.rbの修正です。
integration testのHTTP処理用メソッドにxhr: trueオプションを指定した場合に、Accept headerに指定した値がRails側で強制的に上書きされてしまうバグがあったのを修正しています。
get '/page', headers: { 'Accept' => 'application/json' }, xhr: true request.accept # => `application/json`になるはずが、`text/javascript, text/html, application/xml, text/xml, */*`になってしまっていた
Modify LogSubscriber for single partial's cache message.
Action Pack、Action Viewの修正です。
cacheを使用しているpartial templateのrenderを行う際に、ログにcache hitかcache missかを表示するよう修正しています。
Rendered messages/_message.html.erb in 1.2 ms [cache hit] Rendered recordings/threads/_thread.html.erb in 1.5 ms [cache miss]
合わせて、元々表示していたfragment cacheのログはデフォルトでは表示しないようになりました。fragment cacheのログを表示したい場合は、config.action_controller.enable_fragment_cache_loggingにtrueを設定すれば表示されるようになります。
Add back unintentionally removed newline.
actionpack/lib/action_controller/log_subscriber.rbの修正です。
メソッド定義の前に空行を追加しています。
Move CHANGELOG entry to the top.
actionview/CHANGELOG.mdの修正です。
先ほどコミットされたpartialsのrender時のログの修正の対応のエントリーを、ファイルの先頭に移動しています。
Add changelog entry to Action Pack as well.
actionpack/CHANGELOG.mdの修正です。
先ほどコミットされたpartialsのrender時のログの修正の対応について、CHANGELOGにエントリーを追加しています。
Action View、Action Controller両方に関係ある対応である為、Action Packの方にもエントリーを追加しています。
Extract common view cache dependency setup.
actionview/test/template/log_subscriber_test.rbの修正です。
各テストそれぞれで行われていた view cache dependencyのセットアップ処理をメソッドに切り出していいます。
Assign config on base instead of on @controller.
actionpack/test/controller/log_subscriber_test.rbの修正です。
enable_fragment_cache_loggingの設定を@controllerインスタンス経由で行っていたのを、ActionController::Baseを直接参照するよう修正しています。
- @controller.enable_fragment_cache_logging = true + ActionController::Base.enable_fragment_cache_logging = true
テストの実行順によっては、@controllerとActionController::Baseが一致しないケースがある為。
copy-edits an exception message
actioncable/lib/action_cable/subscription_adapter/postgresql.rbの修正です。
Action CableのadapterにPostgreSQLを使用、かつ、Active Recordの接続先がPostgreSQLじゃなかった場合のエラーメッセージの、Postgres -> PostgreSQLに修正、及びRailsのコンポーネント名の区切りにスペースを追加しています。
adds missing comma in assert call
actionpack/test/controller/resources_test.rbの修正です。
assertメソッドの引数指定にカンマが不足している箇所があったのを修正しています。
applies project convention for string literals
railties/test/application/runner_test.rbの修正です。
Stringを作成するのにシングルクォートを使用していたのを、ダブルクォートを使用するよう修正しています。
revises most Lint/EndAlignment offenses
コード全体でEndAlignmentのスペースの調整を行っています。
例。
dependent = if dependent
dependent
- elsif options[:dependent] == :destroy
- :delete_all
- else
- options[:dependent]
- end
+ elsif options[:dependent] == :destroy
+ :delete_all
+ else
+ options[:dependent]
+ end
上記のような場合に、elseの位置をどこに合わせるかなのですが、元々はifの位置に揃えてあったのを、左端に揃えるよう修正しています。
code gardening: removes redundant selfs
コード全体から不要なselfを削除しています。
explain why aliasing uses explicit selfs [ci skip]
activesupport/lib/active_support/core_ext/module/aliasing.rbのdocの修正です。
Module#alias_attributeメソッド内のdocに、何故selfを使用しているのかについての説明を追加しています。
activesupport/lib/active_support/core_ext/module/aliasing.rbのdocの修正です。
orderをotderにタイポしていたのを修正しています。
Merge pull request #25681 from willnet/fix-thread_mattr_accessor
activesupport/lib/active_support/core_ext/module/attribute_accessors_per_thread.rbの修正です。
thread_mattr_accessorを定義しているクラスのサブクラスで値を設定した場合に、親クラスの値も更新してしまうバグがあったのを修正しています。
class Account thread_mattr_accessor :user end class Customer < Account end Account.user = "DHH" Customer.user = "Rafael"
# before Account.user # => "Rafael" # after Account.user # => "DHH"
let instance thread_mattr_* methods delegate to the class-level ones
activesupport/lib/active_support/core_ext/module/attribute_accessors_per_thread.rbの修正です。
インスタンスのthread_mattr_*メソッドの処理をclassのthread_mattr_*メソッドにdelegateするよう修正しています。
class_eval(<<-EOS, __FILE__, __LINE__ + 1)
def #{sym}
- Thread.current["attr_"+ self.class.name + "_#{sym}"]
+ self.class.#{sym}
end
EOS
クラスメソッドとインスタンスメソッドで同じ内容を行っている為、との事です。
Use FETCH FIRST for Oracle12 database and Arel Oracle12 visitor
activerecord/test/cases/finder_test.rb、
activerecord/test/cases/scoping/relation_scoping_test.rbの修正です。
limitを使用した場合に生成されるSQLを確認するテストで、生成されるSQLの一覧にFETCH FIRSTを追加しています。
- assert_sql(/LIMIT|ROWNUM <=/) { Topic.take(3).entries } - assert_sql(/LIMIT|ROWNUM <=/) { Topic.first(2).entries } - assert_sql(/LIMIT|ROWNUM <=/) { Topic.last(5).entries } + assert_sql(/LIMIT|ROWNUM <=|FETCH FIRST/) { Topic.take(3).entries } + assert_sql(/LIMIT|ROWNUM <=|FETCH FIRST/) { Topic.first(2).entries } + assert_sql(/LIMIT|ROWNUM <=|FETCH FIRST/) { Topic.last(5).entries }
Oracle12 ではFETCH FIRSTが使われる為、との事です。へー。