Sha256: 5e57376ec6cbbd25e916b2baa215f3c3a1acadde5ecdeb3ae588bc13ef155e02

Contents?: true

Size: 1.33 KB

Versions: 7

Compression:

Stored size: 1.33 KB

Contents

module Protobuf
  class Lifecycle
    include ::Protobuf::Logging

    def self.register(event_name, &blk)
      raise "Lifecycle register must have a block" unless block_given?
      event_name = normalized_event_name(event_name)

      if ::Protobuf.print_deprecation_warnings?
        $stderr.puts <<-ERROR
            [DEPRECATED] ::Protobuf::Lifecycle has been deprecated and will be removed in a future version.
                         Use ::ActiveSupport::Notifications.subscribe('#{event_name}')
        ERROR
      end

      ::ActiveSupport::Notifications.subscribe(event_name) do |name, start, finish, id, args|
        blk.call(*args)
      end
    end

    def self.trigger( event_name, *args )
      if ::Protobuf.print_deprecation_warnings?
        $stderr.puts <<-ERROR
            [DEPRECATED] ::Protobuf::Lifecycle has been deprecated and will be removed in a future version.
                         Use ::ActiveSupport::Notifications.instrument(...)
        ERROR
      end

      event_name = normalized_event_name( event_name )

      ::ActiveSupport::Notifications.instrument(event_name, args)
    end

    def self.normalized_event_name(event_name)
      return "#{event_name}".downcase
    end

    class << self
      attr_accessor :lifecycle_events

      alias_method :on, :register
    end

    @lifecycle_events ||= {}
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
protobuf-3.3.6 lib/protobuf/lifecycle.rb
protobuf-3.3.5 lib/protobuf/lifecycle.rb
protobuf-3.3.4 lib/protobuf/lifecycle.rb
protobuf-3.3.3 lib/protobuf/lifecycle.rb
protobuf-3.3.2 lib/protobuf/lifecycle.rb
protobuf-3.3.1 lib/protobuf/lifecycle.rb
protobuf-3.3.0 lib/protobuf/lifecycle.rb