Class: Msgr::Route

Inherits:
Object
  • Object
show all
Defined in:
lib/msgr/route.rb

Constant Summary collapse

MATCH_REGEXP =
/\A(?<consumer>\w+)#(?<action>\w+)\z/

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(key, opts = {}) ⇒ Route

rubocop:disable Metrics/AbcSize rubocop:disable Metrics/MethodLength



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/msgr/route.rb', line 10

def initialize(key, opts = {})
  @opts = opts
  raise ArgumentError.new 'Missing `to` options.' unless @opts[:to]

  add key

  result = MATCH_REGEXP.match(opts[:to].strip.to_s)

  unless result
    raise ArgumentError.new \
      "Invalid consumer format: #{opts[:to].strip.to_s.inspect}. " \
      'Must be `consumer_class#action`.'
  end

  @consumer = "#{result[:consumer].camelize}Consumer"
  @action   = result[:action].underscore
end

Instance Attribute Details

#actionObject (readonly)

Returns the value of attribute action.



4
5
6
# File 'lib/msgr/route.rb', line 4

def action
  @action
end

#consumerObject (readonly)

Returns the value of attribute consumer.



4
5
6
# File 'lib/msgr/route.rb', line 4

def consumer
  @consumer
end

#optsObject (readonly)

Returns the value of attribute opts.



4
5
6
# File 'lib/msgr/route.rb', line 4

def opts
  @opts
end

Instance Method Details

#accept?(_key, opts) ⇒ Boolean

Returns:

  • (Boolean)


39
40
41
# File 'lib/msgr/route.rb', line 39

def accept?(_key, opts)
  self.opts == opts
end

#add(key) ⇒ Object



33
34
35
36
37
# File 'lib/msgr/route.rb', line 33

def add(key)
  raise ArgumentError.new 'Routing key required.' unless key.present?

  keys << key
end

#keysObject Also known as: routing_keys



28
29
30
# File 'lib/msgr/route.rb', line 28

def keys
  @keys ||= []
end

#nameObject



43
44
45
# File 'lib/msgr/route.rb', line 43

def name
  "msgr.consumer.#{consumer}.#{action}"
end