Sha256: 47bc8b507708e09c5937e075a9d8775416cf3c63c3d624a977a7d89118e03c4c

Contents?: true

Size: 769 Bytes

Versions: 2

Compression:

Stored size: 769 Bytes

Contents

module Soybean
  class Interface
    include ActiveSupport::Callbacks
    NO_ACTIONS = [:endpoint]

    class_attribute :interfaces, :instance_reader => false, :instance_writer => false

    def self.inherited(subclass)
      self.interfaces ||= []
      self.interfaces << subclass if subclass.superclass == Soybean::Interface
      Soybean.services << subclass if subclass.superclass < Soybean::Interface
    end

    def self.actions(implemented=true)
      if implemented
        self.public_instance_methods(false) - NO_ACTIONS
      else
        self::Methods.map(&:second).map(&:to_sym)
      end
    end

    attr_reader :logger

    def initialize(logger=Soybean.logger)
      @logger = logger
    end

    def endpoint
      self.class.name
    end

  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
soybean-2.5.5 lib/soybean/interface.rb
soybean-2.5.4 lib/soybean/interface.rb