From aeaabc6d2d6f9faaa98057f33c0635d8add54461 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Valim?= Date: Fri, 9 Oct 2009 09:17:08 -0300 Subject: Configure Orchestra on initialization. --- railties/lib/rails/application.rb | 11 +++++++ railties/lib/rails/configuration.rb | 8 +++++ railties/test/application/orchestra_test.rb | 49 +++++++++++++++++++++++++++++ 3 files changed, 68 insertions(+) create mode 100644 railties/test/application/orchestra_test.rb (limited to 'railties') diff --git a/railties/lib/rails/application.rb b/railties/lib/rails/application.rb index a0e5d6a5a5..8e0e28c362 100644 --- a/railties/lib/rails/application.rb +++ b/railties/lib/rails/application.rb @@ -487,5 +487,16 @@ module Rails Rails::Generators.options.deep_merge! config.generators.options end end + + # For each framework, search for instrument file with Orchestra hooks. + # + initializer :load_orchestra_instrumentation do + config.frameworks.each do |framework| + begin + require "#{framework}/instrument" + rescue LoadError => e + end + end + end end end diff --git a/railties/lib/rails/configuration.rb b/railties/lib/rails/configuration.rb index 322590f108..3d9ae46786 100644 --- a/railties/lib/rails/configuration.rb +++ b/railties/lib/rails/configuration.rb @@ -290,6 +290,14 @@ module Rails end end + # Allows Orchestra queue to be modified. + # + # config.orchestra.queue = MyNewQueue.new + # + def orchestra + ActiveSupport::Orchestra + end + class Generators #:nodoc: attr_accessor :aliases, :options, :colorize_logging diff --git a/railties/test/application/orchestra_test.rb b/railties/test/application/orchestra_test.rb new file mode 100644 index 0000000000..38a06be741 --- /dev/null +++ b/railties/test/application/orchestra_test.rb @@ -0,0 +1,49 @@ +require "isolation/abstract_unit" +require "active_support/orchestra" + +module ApplicationTests + class OrchestraTest < Test::Unit::TestCase + + class MyQueue + attr_reader :events, :subscribers + + def initialize + @events = [] + @subscribers = [] + end + + def publish(name, payload=nil) + @events << name + end + + def subscribe(pattern=nil, &block) + @subscribers << pattern + end + end + + def setup + build_app + boot_rails + + Rails::Initializer.run do |c| + c.orchestra.queue = MyQueue.new + c.orchestra.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 + end + + test "frameworks subscribers are loaded" do + assert_equal 1, ActiveSupport::Orchestra.queue.subscribers.count { |s| s == "sql" } + end + + test "configuration subscribers are loaded" do + assert_equal 1, ActiveSupport::Orchestra.queue.subscribers.count { |s| s == /listening/ } + end + end +end -- cgit v1.2.3