Sha256: eb1aebf9d44896e8d982fc17b2a7487c44285c84803cf7313b79d45d355cbaa9

Contents?: true

Size: 1.31 KB

Versions: 63

Compression:

Stored size: 1.31 KB

Contents

module Skylight
  # Ensure the version of AS:N being used is recent enough
  begin
    # Attempt to reference an internal class only present in the new AS::Notifications
    ActiveSupport::Notifications::Fanout::Subscribers
  rescue NameError

    # The things we do...
    class ::ActiveSupport::Notifications::Fanout
      attr_reader :subscribers

      class Subscriber
        attr_reader :pattern, :delegate
      end
    end

    notifier = ActiveSupport::Notifications.notifier

    # If the class is missing, require our vendored AS::N
    require 'skylight/vendor/active_support/notifications'

    if notifier.subscribers.respond_to?(:each)
      notifier.subscribers.each do |sub|
        pattern  = sub.respond_to?(:pattern)  && sub.pattern
        delegate = sub.respond_to?(:delegate) && sub.delegate

        if pattern && delegate
          ActiveSupport::Notifications.subscribe(pattern, delegate)
        end
      end
    end
  end
end

if defined?(ActiveSupport::Notifications::Fanout::Subscribers::Evented)
  # Handle early RCs of rails 4.0
  # @api private
  class ActiveSupport::Notifications::Fanout::Subscribers::Evented
    unless method_defined?(:publish)
      def publish(name, *args)
        if @delegate.respond_to?(:publish)
          @delegate.publish name, *args
        end
      end
    end
  end
end

Version data entries

63 entries across 63 versions & 2 rubygems

Version Path
skylight-1.4.4 lib/skylight/compat.rb
skylight-1.4.3 lib/skylight/compat.rb
skylight-1.4.2 lib/skylight/compat.rb
skylight-1.4.1 lib/skylight/compat.rb
skylight-1.4.0 lib/skylight/compat.rb
skylight-1.4.0.beta.2 lib/skylight/compat.rb
skylight-1.4.0.beta lib/skylight/compat.rb
skylight-1.3.1 lib/skylight/compat.rb
skylight-1.3.0 lib/skylight/compat.rb
skylight-1.2.2 lib/skylight/compat.rb
skylight-1.2.1 lib/skylight/compat.rb
skylight-1.2.0 lib/skylight/compat.rb
skylight-1.1.0 lib/skylight/compat.rb
skylight-1.0.1 lib/skylight/compat.rb
skylight-1.0.0 lib/skylight/compat.rb
skylight-0.10.6 lib/skylight/compat.rb
skylight-1.0.0.beta5 lib/skylight/compat.rb
skylight-0.10.5 lib/skylight/compat.rb
skylight-0.10.4 lib/skylight/compat.rb
skylight-1.0.0.beta4 lib/skylight/compat.rb