Module: ActiveEvent::EventSourceServer

Defined in:
lib/active_event/event_source_server.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#optionsObject



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

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

Instance Method Details

#config_fileObject



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

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

#default_optionsObject



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

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

#envObject



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

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

#event_channelObject



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

def event_channel
  @event_channel ||= event_connection.create_channel
end

#event_connectionObject



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

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

#event_exchangeObject



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

def event_exchange
  @event_exchange ||= event_channel.fanout "server_side_#{options[:event_exchange]}"
end

#event_queueObject



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

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

#parse_options(args) ⇒ Object



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

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



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

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