Sha256: 1eeff168dc2f4216a35c1c363e4d07ec03ed5600705284d2ec77c21a18c088dc

Contents?: true

Size: 1.03 KB

Versions: 22

Compression:

Stored size: 1.03 KB

Contents

module EbDeployer
  class EventPoller
    def initialize(app, env, beanstalk)
      @app, @env, @beanstalk = app, env, beanstalk
    end

    def poll(start_time = Time.now, &block)
      handled = Set.new
      loop do
        fetch_events(start_time) do |events|
          new_events = events.reject { |e| handled.include?(digest(e)) }
          handle(new_events, &block)
          handled += new_events.map { |e| digest(e) }
        end
        sleep 15
      end
    end


    private

    def digest(event)
      JSON.dump(event)
    end

    def handle(events, &block)
      events.reverse.each(&block)
    end

    def fetch_events(start_time, &block)
      events, next_token = @beanstalk.fetch_events(@app, @env, :start_time => start_time.iso8601)
      yield(events)
      fetch_next(next_token, &block) if next_token
    end

    def fetch_next(next_token, &block)
      events, next_token = @beanstalk.fetch_events(@app, @env, :next_token => next_token)
      yield(events)
      fetch_next(next_token, &block) if next_token
    end
  end
end

Version data entries

22 entries across 22 versions & 1 rubygems

Version Path
eb_deployer-0.4.2 lib/eb_deployer/event_poller.rb
eb_deployer-0.4.1 lib/eb_deployer/event_poller.rb
eb_deployer-0.3.8 lib/eb_deployer/event_poller.rb
eb_deployer-0.3.7 lib/eb_deployer/event_poller.rb
eb_deployer-0.3.6 lib/eb_deployer/event_poller.rb
eb_deployer-0.3.5 lib/eb_deployer/event_poller.rb
eb_deployer-0.3.4 lib/eb_deployer/event_poller.rb
eb_deployer-0.3.3 lib/eb_deployer/event_poller.rb
eb_deployer-0.3.2 lib/eb_deployer/event_poller.rb
eb_deployer-0.3.1 lib/eb_deployer/event_poller.rb
eb_deployer-0.3.0 lib/eb_deployer/event_poller.rb
eb_deployer-0.2.9 lib/eb_deployer/event_poller.rb
eb_deployer-0.2.8 lib/eb_deployer/event_poller.rb
eb_deployer-0.2.7 lib/eb_deployer/event_poller.rb
eb_deployer-0.2.6 lib/eb_deployer/event_poller.rb
eb_deployer-0.2.5 lib/eb_deployer/event_poller.rb
eb_deployer-0.2.4 lib/eb_deployer/event_poller.rb
eb_deployer-0.2.3 lib/eb_deployer/event_poller.rb
eb_deployer-0.2.2 lib/eb_deployer/event_poller.rb
eb_deployer-0.2.1 lib/eb_deployer/event_poller.rb