Module: ActiveEvent::EventSourceServer

Defined in:
lib/active_event/event_source_server.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#optionsObject



46
47
48
# File 'lib/active_event/event_source_server.rb', line 46

def options
  @options ||= parse_options(ARGV)
end

Instance Method Details

#config_fileObject



42
43
44
# File 'lib/active_event/event_source_server.rb', line 42

def config_file
  File.expand_path('config/disco.yml', Rails.root)
end

#default_optionsObject



25
26
27
28
29
30
31
32
33
34
35
# File 'lib/active_event/event_source_server.rb', line 25

def default_options
  {
      event_connection: {
          scheme: 'amqp',
          userinfo: nil,
          host: '127.0.0.1',
          port: 9797,
      },
      event_exchange: 'events'
  }
end

#envObject



50
51
52
# File 'lib/active_event/event_source_server.rb', line 50

def env
  @env = ENV['PROJECTION_ENV'] || ENV['RAILS_ENV'] || ENV['RACK_ENV'] || 'development'
end

#event_channelObject



17
18
19
# File 'lib/active_event/event_source_server.rb', line 17

def event_channel
  @event_channel ||= event_connection.create_channel
end

#event_connectionObject



13
14
15
# File 'lib/active_event/event_source_server.rb', line 13

def event_connection
  @event_server ||= Bunny.new URI::Generic.build(options[:event_connection]).to_s
end

#event_exchangeObject



21
22
23
# File 'lib/active_event/event_source_server.rb', line 21

def event_exchange
  @event_exchange ||= event_channel.fanout options[:event_exchange]
end

#event_queueObject



9
10
11
# File 'lib/active_event/event_source_server.rb', line 9

def event_queue
  @event_queue ||= event_channel.queue('', auto_delete: true).bind(event_exchange)
end

#parse_options(args) ⇒ Object



37
38
39
40
# File 'lib/active_event/event_source_server.rb', line 37

def parse_options(args)
  options = default_options
  options.merge! YAML.load_file(config_file)[env].deep_symbolize_keys! unless config_file.blank?
end

#subscribe_to(queue, &block) ⇒ Object



5
6
7
# File 'lib/active_event/event_source_server.rb', line 5

def subscribe_to(queue, &block)
  queue.subscribe(block: true, &block)
end