diff --git a/.gitignore b/.gitignore index da296e7e11..ea0d8bbba7 100644 --- a/.gitignore +++ b/.gitignore @@ -28,6 +28,9 @@ railties/guides/output *.swp *.swo actionpack/bin +activerecord/bin vendor/gems/ */vendor/gems/ railties/tmp +activerecord/vendor +actionpack/vendor diff --git a/actionmailer/lib/action_mailer/base.rb b/actionmailer/lib/action_mailer/base.rb index c0c04af51c..df3bfb3620 100644 --- a/actionmailer/lib/action_mailer/base.rb +++ b/actionmailer/lib/action_mailer/base.rb @@ -481,7 +481,7 @@ def initialize(method_name=nil, *parameters) #:nodoc: # Initialize the mailer via the given +method_name+. The body will be # rendered and a new TMail::Mail object created. def create!(method_name, *parameters) #:nodoc: - ActiveSupport::Orchestra.instrument(:create_mail, :name => method_name) do + ActiveSupport::Notifications.instrument(:create_mail, :name => method_name) do initialize_defaults(method_name) __send__(method_name, *parameters) @@ -550,7 +550,7 @@ def deliver!(mail = @mail) logger.debug "\n#{mail.encoded}" end - ActiveSupport::Orchestra.instrument(:deliver_mail, :mail => @mail) do + ActiveSupport::Notifications.instrument(:deliver_mail, :mail => @mail) do begin __send__("perform_delivery_#{delivery_method}", mail) if perform_deliveries rescue Exception => e # Net::SMTP errors or sendmail pipe errors diff --git a/actionpack/lib/abstract_controller/logger.rb b/actionpack/lib/abstract_controller/logger.rb index ebdeab3dfb..27ba5be45f 100644 --- a/actionpack/lib/abstract_controller/logger.rb +++ b/actionpack/lib/abstract_controller/logger.rb @@ -33,7 +33,7 @@ def method_missing(*args, &block) # Override process_action in the AbstractController::Base # to log details about the method. def process_action(action) - result = ActiveSupport::Orchestra.instrument(:process_action, + result = ActiveSupport::Notifications.instrument(:process_action, :controller => self, :action => action) do super end diff --git a/actionpack/lib/action_controller/caching/fragments.rb b/actionpack/lib/action_controller/caching/fragments.rb index 00fb55f843..8c1167d526 100644 --- a/actionpack/lib/action_controller/caching/fragments.rb +++ b/actionpack/lib/action_controller/caching/fragments.rb @@ -53,7 +53,7 @@ def write_fragment(key, content, options = nil) return content unless cache_configured? key = fragment_cache_key(key) - ActiveSupport::Orchestra.instrument(:write_fragment, :key => key) do + ActiveSupport::Notifications.instrument(:write_fragment, :key => key) do cache_store.write(key, content, options) end content @@ -64,7 +64,7 @@ def read_fragment(key, options = nil) return unless cache_configured? key = fragment_cache_key(key) - ActiveSupport::Orchestra.instrument(:read_fragment, :key => key) do + ActiveSupport::Notifications.instrument(:read_fragment, :key => key) do cache_store.read(key, options) end end @@ -74,7 +74,7 @@ def fragment_exist?(key, options = nil) return unless cache_configured? key = fragment_cache_key(key) - ActiveSupport::Orchestra.instrument(:fragment_exist?, :key => key) do + ActiveSupport::Notifications.instrument(:fragment_exist?, :key => key) do cache_store.exist?(key, options) end end @@ -101,7 +101,7 @@ def expire_fragment(key, options = nil) key = fragment_cache_key(key) unless key.is_a?(Regexp) message = nil - ActiveSupport::Orchestra.instrument(:expire_fragment, :key => key) do + ActiveSupport::Notifications.instrument(:expire_fragment, :key => key) do if key.is_a?(Regexp) message = "Expired fragments matching: #{key.source}" cache_store.delete_matched(key, options) diff --git a/actionpack/lib/action_controller/caching/pages.rb b/actionpack/lib/action_controller/caching/pages.rb index 72551d1fd6..d46f528c7e 100644 --- a/actionpack/lib/action_controller/caching/pages.rb +++ b/actionpack/lib/action_controller/caching/pages.rb @@ -64,7 +64,7 @@ def expire_page(path) return unless perform_caching path = page_cache_path(path) - ActiveSupport::Orchestra.instrument(:expire_page, :path => path) do + ActiveSupport::Notifications.instrument(:expire_page, :path => path) do File.delete(path) if File.exist?(path) end end @@ -75,7 +75,7 @@ def cache_page(content, path) return unless perform_caching path = page_cache_path(path) - ActiveSupport::Orchestra.instrument(:cache_page, :path => path) do + ActiveSupport::Notifications.instrument(:cache_page, :path => path) do FileUtils.makedirs(File.dirname(path)) File.open(path, "wb+") { |f| f.write(content) } end diff --git a/actionpack/lib/action_controller/instrument.rb b/actionpack/lib/action_controller/notifications.rb similarity index 52% rename from actionpack/lib/action_controller/instrument.rb rename to actionpack/lib/action_controller/notifications.rb index 2c87ed7391..4ec88193d5 100644 --- a/actionpack/lib/action_controller/instrument.rb +++ b/actionpack/lib/action_controller/notifications.rb @@ -1,6 +1,6 @@ -require 'active_support/orchestra' +require 'active_support/notifications' -ActiveSupport::Orchestra.subscribe(/(read|write|cache|expire|exist)_(fragment|page)\??/) do |event| +ActiveSupport::Notifications.subscribe(/(read|write|cache|expire|exist)_(fragment|page)\??/) do |event| if logger = ActionController::Base.logger human_name = event.name.to_s.humanize logger.info("#{human_name} (%.1fms)" % event.duration) diff --git a/actionpack/lib/action_view/template/template.rb b/actionpack/lib/action_view/template/template.rb index 84105bd05d..d1970ca3c7 100644 --- a/actionpack/lib/action_view/template/template.rb +++ b/actionpack/lib/action_view/template/template.rb @@ -27,7 +27,7 @@ def initialize(source, identifier, handler, details) end def render(view, locals, &block) - ActiveSupport::Orchestra.instrument(:render_template, :identifier => identifier) do + ActiveSupport::Notifications.instrument(:render_template, :identifier => identifier) do method_name = compile(locals, view) view.send(method_name, locals, &block) end diff --git a/actionpack/test/controller/caching_test.rb b/actionpack/test/controller/caching_test.rb index 3408233b66..df2dee8228 100644 --- a/actionpack/test/controller/caching_test.rb +++ b/actionpack/test/controller/caching_test.rb @@ -628,7 +628,7 @@ def test_fragment_for def test_fragment_for_logging fragment_computed = false - ActiveSupport::Orchestra.queue.expects(:publish).times(2) + ActiveSupport::Notifications.queue.expects(:publish).times(2) buffer = 'generated till now -> ' @controller.fragment_for(buffer, 'expensive') { fragment_computed = true } diff --git a/activerecord/lib/active_record/connection_adapters/abstract_adapter.rb b/activerecord/lib/active_record/connection_adapters/abstract_adapter.rb index b411fe7526..8fae26b790 100755 --- a/activerecord/lib/active_record/connection_adapters/abstract_adapter.rb +++ b/activerecord/lib/active_record/connection_adapters/abstract_adapter.rb @@ -200,7 +200,7 @@ def log_info(sql, name, ms) protected def log(sql, name, &block) - ActiveSupport::Orchestra.instrument(:sql, :sql => sql, :name => name, &block) + ActiveSupport::Notifications.instrument(:sql, :sql => sql, :name => name, &block) rescue Exception => e # Log message and raise exception. # Set last_verification to 0, so that connection gets verified diff --git a/activerecord/lib/active_record/instrument.rb b/activerecord/lib/active_record/notifications.rb similarity index 52% rename from activerecord/lib/active_record/instrument.rb rename to activerecord/lib/active_record/notifications.rb index 06d3e40080..a5ce7ac524 100644 --- a/activerecord/lib/active_record/instrument.rb +++ b/activerecord/lib/active_record/notifications.rb @@ -1,5 +1,5 @@ -require 'active_support/orchestra' +require 'active_support/notifications' -ActiveSupport::Orchestra.subscribe("sql") do |event| +ActiveSupport::Notifications.subscribe("sql") do |event| ActiveRecord::Base.connection.log_info(event.payload[:sql], event.payload[:name], event.duration) end diff --git a/activesupport/lib/active_support/autoload.rb b/activesupport/lib/active_support/autoload.rb index fa657ac99a..63f7338a68 100644 --- a/activesupport/lib/active_support/autoload.rb +++ b/activesupport/lib/active_support/autoload.rb @@ -18,9 +18,9 @@ module ActiveSupport autoload :MessageVerifier, 'active_support/message_verifier' autoload :Multibyte, 'active_support/multibyte' autoload :OptionMerger, 'active_support/option_merger' - autoload :Orchestra, 'active_support/orchestra' autoload :OrderedHash, 'active_support/ordered_hash' autoload :OrderedOptions, 'active_support/ordered_options' + autoload :Notifications, 'active_support/notifications' autoload :Rescuable, 'active_support/rescuable' autoload :SecureRandom, 'active_support/secure_random' autoload :StringInquirer, 'active_support/string_inquirer' diff --git a/activesupport/lib/active_support/cache.rb b/activesupport/lib/active_support/cache.rb index a2717499e7..818983fdd6 100644 --- a/activesupport/lib/active_support/cache.rb +++ b/activesupport/lib/active_support/cache.rb @@ -256,7 +256,7 @@ def instrument(operation, key, options, &block) if self.class.instrument payload = { :key => key } payload.merge!(options) if options.is_a?(Hash) - ActiveSupport::Orchestra.instrument(:"cache_#{operation}", payload, &block) + ActiveSupport::Notifications.instrument(:"cache_#{operation}", payload, &block) else yield end diff --git a/activesupport/lib/active_support/orchestra.rb b/activesupport/lib/active_support/notifications.rb similarity index 80% rename from activesupport/lib/active_support/orchestra.rb rename to activesupport/lib/active_support/notifications.rb index 5f57127401..7e9ffca13f 100644 --- a/activesupport/lib/active_support/orchestra.rb +++ b/activesupport/lib/active_support/notifications.rb @@ -3,10 +3,10 @@ require 'active_support/core_ext/module/attribute_accessors' module ActiveSupport - # Orchestra provides an instrumentation API for Ruby. To instrument an action - # in Ruby you just need to do: + # Notifications provides an instrumentation API for Ruby. To instrument an + # action in Ruby you just need to do: # - # ActiveSupport::Orchestra.instrument(:render, :extra => :information) do + # ActiveSupport::Notifications.instrument(:render, :extra => :information) do # render :text => "Foo" # end # @@ -15,39 +15,39 @@ module ActiveSupport # # @events = [] # - # ActiveSupport::Orchestra.subscribe do |event| + # ActiveSupport::Notifications.subscribe do |event| # @events << event # end # - # ActiveSupport::Orchestra.instrument(:render, :extra => :information) do + # ActiveSupport::Notifications.instrument(:render, :extra => :information) do # render :text => "Foo" # end # # event = @events.first - # event.class #=> ActiveSupport::Orchestra::Event + # event.class #=> ActiveSupport::Notifications::Event # event.name #=> :render # event.duration #=> 10 (in miliseconds) # event.result #=> "Foo" # event.payload #=> { :extra => :information } # - # When subscribing to Orchestra, you can pass a pattern, to only consume + # When subscribing to Notifications, you can pass a pattern, to only consume # events that match the pattern: # - # ActiveSupport::Orchestra.subscribe(/render/) do |event| + # ActiveSupport::Notifications.subscribe(/render/) do |event| # @render_events << event # end # - # Orchestra ships with a queue implementation that consumes and publish events + # Notifications ships with a queue implementation that consumes and publish events # to subscribers in a thread. You can use any queue implementation you want. # - module Orchestra + module Notifications mattr_accessor :queue class << self delegate :instrument, :to => :instrumenter def instrumenter - Thread.current[:orchestra_instrumeter] ||= Instrumenter.new(publisher) + Thread.current[:notifications_instrumeter] ||= Instrumenter.new(publisher) end def publisher @@ -119,7 +119,7 @@ def parent_of?(event) end end - # This is a default queue implementation that ships with Orchestra. It + # This is a default queue implementation that ships with Notifications. It # consumes events in a thread and publish them to all registered subscribers. # class LittleFanout @@ -167,5 +167,5 @@ def consume end end - Orchestra.queue = Orchestra::LittleFanout.new + Notifications.queue = Notifications::LittleFanout.new end diff --git a/activesupport/test/orchestra_test.rb b/activesupport/test/notifications_test.rb similarity index 65% rename from activesupport/test/orchestra_test.rb rename to activesupport/test/notifications_test.rb index 1b2f98c7dd..561ee2b0ba 100644 --- a/activesupport/test/orchestra_test.rb +++ b/activesupport/test/notifications_test.rb @@ -1,13 +1,13 @@ require 'abstract_unit' # Allow LittleFanout to be cleaned. -class ActiveSupport::Orchestra::LittleFanout +class ActiveSupport::Notifications::LittleFanout def clear @listeners.clear end end -class OrchestraEventTest < Test::Unit::TestCase +class NotificationsEventTest < Test::Unit::TestCase def test_events_are_initialized_with_name_and_payload event = event(:foo, :payload => :bar) assert_equal :foo, event.name @@ -37,24 +37,24 @@ def test_event_is_parent_based_on_time_frame protected def event(*args) - ActiveSupport::Orchestra::Event.new(*args) + ActiveSupport::Notifications::Event.new(*args) end end -class OrchestraMainTest < Test::Unit::TestCase +class NotificationsMainTest < Test::Unit::TestCase def setup @events = [] Thread.abort_on_exception = true - ActiveSupport::Orchestra.subscribe { |event| @events << event } + ActiveSupport::Notifications.subscribe { |event| @events << event } end def teardown Thread.abort_on_exception = false - ActiveSupport::Orchestra.queue.clear + ActiveSupport::Notifications.queue.clear end - def test_orchestra_returns_action_result - result = ActiveSupport::Orchestra.instrument(:awesome, :payload => "orchestra") do + def test_notifications_returns_action_result + result = ActiveSupport::Notifications.instrument(:awesome, :payload => "notifications") do 1 + 1 end @@ -62,7 +62,7 @@ def test_orchestra_returns_action_result end def test_events_are_published_to_a_listener - ActiveSupport::Orchestra.instrument(:awesome, :payload => "orchestra") do + ActiveSupport::Notifications.instrument(:awesome, :payload => "notifications") do 1 + 1 end @@ -70,12 +70,12 @@ def test_events_are_published_to_a_listener assert_equal 1, @events.size assert_equal :awesome, @events.last.name - assert_equal Hash[:payload => "orchestra"], @events.last.payload + assert_equal Hash[:payload => "notifications"], @events.last.payload end def test_nested_events_can_be_instrumented - ActiveSupport::Orchestra.instrument(:awesome, :payload => "orchestra") do - ActiveSupport::Orchestra.instrument(:wot, :payload => "child") do + ActiveSupport::Notifications.instrument(:awesome, :payload => "notifications") do + ActiveSupport::Notifications.instrument(:wot, :payload => "child") do 1 + 1 end @@ -90,12 +90,12 @@ def test_nested_events_can_be_instrumented assert_equal 2, @events.size assert_equal :awesome, @events.last.name - assert_equal Hash[:payload => "orchestra"], @events.last.payload + assert_equal Hash[:payload => "notifications"], @events.last.payload assert_in_delta 100, @events.last.duration, 70 end def test_event_is_pushed_even_if_block_fails - ActiveSupport::Orchestra.instrument(:awesome, :payload => "orchestra") do + ActiveSupport::Notifications.instrument(:awesome, :payload => "notifications") do raise "OMG" end rescue RuntimeError @@ -103,22 +103,22 @@ def test_event_is_pushed_even_if_block_fails assert_equal 1, @events.size assert_equal :awesome, @events.last.name - assert_equal Hash[:payload => "orchestra"], @events.last.payload + assert_equal Hash[:payload => "notifications"], @events.last.payload end def test_event_is_pushed_even_without_block - ActiveSupport::Orchestra.instrument(:awesome, :payload => "orchestra") + ActiveSupport::Notifications.instrument(:awesome, :payload => "notifications") sleep(0.1) assert_equal 1, @events.size assert_equal :awesome, @events.last.name - assert_equal Hash[:payload => "orchestra"], @events.last.payload + assert_equal Hash[:payload => "notifications"], @events.last.payload end def test_subscriber_with_pattern @another = [] - ActiveSupport::Orchestra.subscribe("cache"){ |event| @another << event } - ActiveSupport::Orchestra.instrument(:cache){ 1 } + ActiveSupport::Notifications.subscribe("cache"){ |event| @another << event } + ActiveSupport::Notifications.instrument(:cache){ 1 } sleep(0.1) @@ -129,10 +129,10 @@ def test_subscriber_with_pattern def test_subscriber_with_pattern_as_regexp @another = [] - ActiveSupport::Orchestra.subscribe(/cache/){ |event| @another << event } + ActiveSupport::Notifications.subscribe(/cache/){ |event| @another << event } - ActiveSupport::Orchestra.instrument(:something){ 0 } - ActiveSupport::Orchestra.instrument(:cache){ 1 } + ActiveSupport::Notifications.instrument(:something){ 0 } + ActiveSupport::Notifications.instrument(:cache){ 1 } sleep(0.1) @@ -143,10 +143,10 @@ def test_subscriber_with_pattern_as_regexp def test_with_several_consumers_and_several_events @another = [] - ActiveSupport::Orchestra.subscribe { |event| @another << event } + ActiveSupport::Notifications.subscribe { |event| @another << event } 1.upto(100) do |i| - ActiveSupport::Orchestra.instrument(:value){ i } + ActiveSupport::Notifications.instrument(:value){ i } end sleep 0.1 diff --git a/railties/lib/rails/application.rb b/railties/lib/rails/application.rb index 8e0e28c362..fe2dc3769e 100644 --- a/railties/lib/rails/application.rb +++ b/railties/lib/rails/application.rb @@ -488,12 +488,12 @@ def new end end - # For each framework, search for instrument file with Orchestra hooks. + # For each framework, search for instrument file with Notifications hooks. # - initializer :load_orchestra_instrumentation do + initializer :load_notifications_hooks do config.frameworks.each do |framework| begin - require "#{framework}/instrument" + require "#{framework}/notifications" rescue LoadError => e end end diff --git a/railties/lib/rails/configuration.rb b/railties/lib/rails/configuration.rb index 3d9ae46786..3cb39245ff 100644 --- a/railties/lib/rails/configuration.rb +++ b/railties/lib/rails/configuration.rb @@ -290,12 +290,12 @@ def generators end end - # Allows Orchestra queue to be modified. + # Allows Notifications queue to be modified. # - # config.orchestra.queue = MyNewQueue.new + # config.notifications.queue = MyNewQueue.new # - def orchestra - ActiveSupport::Orchestra + def notifications + ActiveSupport::Notifications end class Generators #:nodoc: diff --git a/railties/test/application/orchestra_test.rb b/railties/test/application/notifications_test.rb similarity index 58% rename from railties/test/application/orchestra_test.rb rename to railties/test/application/notifications_test.rb index fcf073bd6f..c861d10c35 100644 --- a/railties/test/application/orchestra_test.rb +++ b/railties/test/application/notifications_test.rb @@ -1,7 +1,7 @@ require "isolation/abstract_unit" module ApplicationTests - class OrchestraTest < Test::Unit::TestCase + class NotificationsTest < Test::Unit::TestCase include ActiveSupport::Testing::Isolation class MyQueue @@ -25,26 +25,26 @@ def setup build_app boot_rails - require "active_support/orchestra" + require "active_support/notifications" Rails::Initializer.run do |c| - c.orchestra.queue = MyQueue.new - c.orchestra.subscribe(/listening/) do + c.notifications.queue = MyQueue.new + c.notifications.subscribe(/listening/) do puts "Cool" end end end test "new queue is set" do - ActiveSupport::Orchestra.instrument(:foo) - assert_equal :foo, ActiveSupport::Orchestra.queue.events.first + ActiveSupport::Notifications.instrument(:foo) + assert_equal :foo, ActiveSupport::Notifications.queue.events.first end test "frameworks subscribers are loaded" do - assert_equal 1, ActiveSupport::Orchestra.queue.subscribers.count { |s| s == "sql" } + assert_equal 1, ActiveSupport::Notifications.queue.subscribers.count { |s| s == "sql" } end test "configuration subscribers are loaded" do - assert_equal 1, ActiveSupport::Orchestra.queue.subscribers.count { |s| s == /listening/ } + assert_equal 1, ActiveSupport::Notifications.queue.subscribers.count { |s| s == /listening/ } end end end