Renamed Orchestra to Notifications once again [#3321 state:resolved]

This commit is contained in:
José Valim 2009-10-15 18:51:51 -03:00
parent 5988b87c30
commit 2d7abe245e
17 changed files with 73 additions and 70 deletions

3
.gitignore vendored

@ -28,6 +28,9 @@ railties/guides/output
*.swp
*.swo
actionpack/bin
activerecord/bin
vendor/gems/
*/vendor/gems/
railties/tmp
activerecord/vendor
actionpack/vendor

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

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

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

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

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

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

@ -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 }

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

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

@ -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'

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

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

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

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

@ -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:

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