class Synapses::Contract
@author Alexander Semyonov <al@semyonov.us>
Attributes
exchanges[R]
@return [Hash]
queues[R]
@return [Hash]
Public Class Methods
default_contract_path()
click to toggle source
@return [String]
# File lib/synapses/contract.rb, line 15 def self.default_contract_path File.expand_path('../contract/synapses.yml', __FILE__) end
load_defaults(root = './')
click to toggle source
@param [String] root root directory
# File lib/synapses/contract.rb, line 27 def self.load_defaults(root = './') contract = new(YAML.load_file(default_contract_path), root: root) ([File.join(root, 'config/synapses.yml')] + Dir[File.join(root, 'config/synapses/*.yml')]).each do |file_name| if File.exists?(file_name) hash = YAML.load_file(file_name) contract.add_contract(hash) end end contract end
load_file(file_name)
click to toggle source
@param [String] file_name @return [Synapse::Contract]
# File lib/synapses/contract.rb, line 21 def self.load_file(file_name) hash = YAML.load_file(file_name) new(hash) end
new(hash, options = {})
click to toggle source
@param [Hash] hash
# File lib/synapses/contract.rb, line 42 def initialize(hash, options = {}) @exchanges = Hash.new do |hash, name| raise "Unknown Exchange #{name.inspect}. Known are: #{hash.keys.inspect}" end @queues = Hash.new do |hash, name| raise "Unknown Queue #{name.inspect}. Known are: #{hash.keys.inspect}" end @options = options add_contract(hash) end
Public Instance Methods
add_contract(contract_hash)
click to toggle source
@param [Hash] contract_hash
# File lib/synapses/contract.rb, line 54 def add_contract(contract_hash) contract_hash.each do |ns, hash| ns = hash['ns'] if hash.key?('ns') name = hash.delete('name') prefix = [ns, name].compact.join('.') if hash['exchanges'] hash.delete('exchanges').each do |name, attributes| name = [prefix, name].join('.').to_s exchanges[name] = Exchange.new(name, attributes || {}) end end if hash['queues'] hash.delete('queues').each do |name, attributes| name = [prefix, name].join('.').to_s queues[name.to_s] = Queue.new(name, attributes || {}) end end end end
exchange(name, channel=Synapses.default_channel)
click to toggle source
@param [String] name @return [AMQP::Exchange]
# File lib/synapses/contract.rb, line 95 def exchange(name, channel=Synapses.default_channel) exchange_definition(name).exchange(channel) end
exchange_definition(name)
click to toggle source
@param [Synapses::Contract::Exchange] name
# File lib/synapses/contract.rb, line 84 def exchange_definition(name) exchanges[name.to_s] end
queue(name, channel=Synapses.default_channel)
click to toggle source
@param [String] name @param [AMQP::Channel] channel @return [AMQP::Queue]
# File lib/synapses/contract.rb, line 102 def queue(name, channel=Synapses.default_channel) queue_definition(name).queue(channel) end
queue_definition(name)
click to toggle source
@param [Synapses::Contract::Queue] name
# File lib/synapses/contract.rb, line 89 def queue_definition(name) queues[name.to_s] end
setup!(channel = Synapses.default_channel)
click to toggle source
@param [AMQP::Channel] channel
# File lib/synapses/contract.rb, line 78 def setup!(channel = Synapses.default_channel) exchanges.values.each { |exchange| exchange.exchange(channel) } queues.values.each { |queue| queue.queue(channel) } end