Skip to content

Commit

Permalink
Renamed Orchestra to Notifications once again [#3321 state:resolved]
Browse files Browse the repository at this point in the history
  • Loading branch information
josevalim committed Oct 15, 2009
1 parent 5988b87 commit 2d7abe2
Show file tree
Hide file tree
Showing 17 changed files with 73 additions and 70 deletions.
3 changes: 3 additions & 0 deletions .gitignore
Expand Up @@ -28,6 +28,9 @@ railties/guides/output
*.swp
*.swo
actionpack/bin
activerecord/bin
vendor/gems/
*/vendor/gems/
railties/tmp
activerecord/vendor
actionpack/vendor
4 changes: 2 additions & 2 deletions actionmailer/lib/action_mailer/base.rb
Expand Up @@ -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)

Expand Down Expand Up @@ -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
Expand Down
2 changes: 1 addition & 1 deletion actionpack/lib/abstract_controller/logger.rb
Expand Up @@ -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
Expand Down
8 changes: 4 additions & 4 deletions actionpack/lib/action_controller/caching/fragments.rb
Expand Up @@ -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
Expand All @@ -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
Expand All @@ -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
Expand All @@ -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)
Expand Down
4 changes: 2 additions & 2 deletions actionpack/lib/action_controller/caching/pages.rb
Expand Up @@ -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
Expand All @@ -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
Expand Down
@@ -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)
Expand Down
2 changes: 1 addition & 1 deletion actionpack/lib/action_view/template/template.rb
Expand Up @@ -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
Expand Down
2 changes: 1 addition & 1 deletion actionpack/test/controller/caching_test.rb
Expand Up @@ -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 }
Expand Down
Expand Up @@ -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
Expand Down
@@ -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
2 changes: 1 addition & 1 deletion activesupport/lib/active_support/autoload.rb
Expand Up @@ -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'
Expand Down
2 changes: 1 addition & 1 deletion activesupport/lib/active_support/cache.rb
Expand Up @@ -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
Expand Down
Expand Up @@ -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
#
Expand All @@ -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
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -167,5 +167,5 @@ def consume
end
end

Orchestra.queue = Orchestra::LittleFanout.new
Notifications.queue = Notifications::LittleFanout.new
end
@@ -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
Expand Down Expand Up @@ -37,45 +37,45 @@ 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

assert_equal 2, 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

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_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

Expand All @@ -90,35 +90,35 @@ 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

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_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)

Expand All @@ -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)

Expand All @@ -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
Expand Down
6 changes: 3 additions & 3 deletions railties/lib/rails/application.rb
Expand Up @@ -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
Expand Down

0 comments on commit 2d7abe2

Please sign in to comment.