Sha256: a6cb806de862bc585a87b15e338d349fbaf54c2f9da0d1f5f6c07be9556eb5f9

Contents?: true

Size: 1.49 KB

Versions: 2

Compression:

Stored size: 1.49 KB

Contents

module SalesforceStreamer
  # Manages server configuration.
  class Configuration
    attr_accessor :environment, :logger, :require_path, :config_file,
      :manage_topics, :exception_adapter, :replay_adapter
    attr_reader :middleware

    class << self
      attr_writer :instance

      def configure
        yield instance
      end

      def instance
        @instance ||= new
      end
    end

    def initialize
      @environment = ENV['RACK_ENV'] || :development
      @logger = Logger.new(IO::NULL)
      @exception_adapter = proc { |exc| fail(exc) }
      @replay_adapter = proc { |topic| topic.id || topic.replay }
      @manage_topics = false
      @config_file = './config/streamer.yml'
      @require_path = './config/environment'
      @middleware = []
    end

    def manage_topics?
      @manage_topics
    end

    # adds a setup proc to the middleware array
    def use_middleware(klass, *args, &block)
      @middleware << [klass, args, block]
    end

    # returns a ready to use chain of middleware
    def middleware_runner(last_handler)
      @middleware.reduce(last_handler) do |next_handler, current_handler|
        klass, args, block = current_handler
        klass.new(next_handler, *args, &block)
      end
    end

    def push_topic_data
      return @push_topic_data if @push_topic_data

      data = YAML.safe_load(File.read(config_file), [], [], true)
      @push_topic_data = data[environment.to_s]
    end

    def restforce_logger!
      Restforce.log = true
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
salesforce_streamer-2.0.0 lib/salesforce_streamer/configuration.rb
salesforce_streamer-2.0.0.rc2 lib/salesforce_streamer/configuration.rb