2016/02/19分のコミットです。
CHANGELOGへの追加はありませんでした。
actionview/lib/action_view/lookup_context.rb
の修正です。
DetailsKey
クラスからobject hashのcacheを削除しています。
class DetailsKey #:nodoc: alias :eql? :equal? - alias :object_hash :hash - attr_reader :hash @details_keys = Concurrent::Map.new def self.get(details) @@ -71,10 +69,6 @@ def self.get(details) def self.clear @details_keys.clear end - - def initialize - @hash = object_hash - end end
cacheしていても性能向上には繋がらない為、との事です。
コメントに記載されていたベンチマークは以下の通り。
require 'benchmark/ips' class Foo alias :object_hash :hash attr_reader :hash def initialize @hash = object_hash end end class Bar end hash = {} foo = Foo.new bar = Bar.new Benchmark.ips do |x| x.report("foo") { hash[foo] } x.report("bar") { hash[bar] } x.report("foo.hash") { foo.hash } x.report("bar.hash") { bar.hash } end __END__ [aaron@TC ruby (trunk)]$ ruby test.rb Warming up -------------------------------------- foo 118.361k i/100ms bar 118.637k i/100ms Calculating ------------------------------------- foo 7.944M (± 3.1%) i/s - 39.769M bar 7.931M (± 3.4%) i/s - 39.625M [aaron@TC ruby (trunk)]$ ruby test.rb Warming up -------------------------------------- foo 122.180k i/100ms bar 120.492k i/100ms foo.hash 123.397k i/100ms bar.hash 119.312k i/100ms Calculating ------------------------------------- foo 8.002M (± 4.2%) i/s - 39.953M bar 8.037M (± 4.5%) i/s - 40.124M foo.hash 8.819M (± 3.9%) i/s - 44.053M bar.hash 7.856M (± 4.1%) i/s - 39.254M
move digest cache on to the DetailsKey object
actionview/lib/action_view/digestor.rb
、
actionview/lib/action_view/lookup_context.rb
の修正です。
ActionView::Digestor
クラスで保持していた digest cacheをActionView::LookupContext::DetailsKey
クラスで保持するよう修正しています。
元々はActionView::Digestor
クラスのクラス変数で保持していたのですが、その際DetailsKey
クラスのobjectのhash値をkeyとして利用していました。
ただ、objectのhash値はユニークではなく、keyが衝突した場合に解決する方法がありませんでした。
で、これをdigest cacheの値をActionView::LookupContext::DetailsKey
自身で保持するようにし、確実にユニークになるよう対応したとの事です。
Remove github gems from the master bug report templates
bug report templatesの修正です。
Gemfileで、arel
やrack
等のgemの指定にgithubのmasterブランチを使用していたのを、リリース済みのgemを使用するよう修正しています。
actionpack/test/controller/render_test.rb
の修正です。
move digest cache on to the DetailsKey objectでクラス名の変更があったのですが、修正が漏れている箇所があったのを修正しています。
Use a semaphore to signal message availability
actioncable/test/client_test.rb
の修正です。
messageを取得済みかどうか管理する変数にConcurrent::Event
を使用していたのをConcurrent::Semaphore
を使用するよう修正しています。
競合状態の管理の為にはそちらの方が楽なため、のようです。
partial pass over the API guide [ci skip]
rails guideのUsing Rails for API-only Applications
の修正です。
guide全体の言い回し、グラマーの修正等をまとめて行っています。
Merge pull request #23525 from kamipo/remove_unused_require
activerecord/lib/active_record/connection_adapters/abstract_adapter.rb
の修正です。
使用していないactive_support/core_ext/benchmark
のrequireを削除しています。
remove needless debug_exception_response_format
config [ci skip]
rails guideのUsing Rails for API-only Applications
の修正です。
設定する必要が無いdebug_exception_response_format
についての説明を削除しています。
config.api_only
にtrue
を設定した場合に、内部で自動的でdebug_exception_response_format
にapi
が設定され、明示的にconfigに指定する必要は無い為。
better docs for ActiveSupport::TestCase#assert_nothing_raised
activesupport/lib/active_support/test_case.rb
のdocの修正です。
assert_nothing_raised
メソッドのdocのメソッドについての説明をよりわかりやすい内容に修正しています。
activesupport/lib/active_support/dependencies.rb
、
activesupport/test/dependencies_test.rb
の修正です。
ActiveSupport::Dependencies::WatchStack#new_constants
メソッド内のdocで、説明している変数名に誤りがあったのを修正、不要なnamespaceの指定を削除、不要なテストを削除等をまとめて行っています。