module Synapse::Rails::Linker

Attributes

synapse_instance[RW]

Public Instance Methods

add_service_provider(provider) click to toggle source
# File lib/synapse/rails/linker.rb, line 5
def add_service_provider provider
  @services ||= []
  @services << provider
  self.define_singleton_method(provider.service_name.to_sym){provider}
  unless self.respond_to? (provider.service.to_sym)
    self.define_singleton_method(provider.service.to_sym){provider}
  end
end
prepare() click to toggle source
# File lib/synapse/rails/linker.rb, line 25
def prepare
  @synapse_instance ||= Synapse.new synapse
end
services() click to toggle source
# File lib/synapse/rails/linker.rb, line 13
def services
  @services.collect do |service|
    [service.service_name,service.synapse]
  end.to_h.with_indifferent_access
end
start() click to toggle source
# File lib/synapse/rails/linker.rb, line 37
def start
  prepare
  @started = true
  @marshal = Thread.new do
    synapse_instance.run
  end
  at_exit do
    log = ::Rails.logger if defined? ::Rails.logger
    if File.exists? pid_file_path
      pids = File.read(pid_file_path).strip
      cmd  = "kill -9 #{pids}"
      log.info "HAProxy stop #{pids}" if log
      `#{cmd}`
      log.debug "HAProxy unlink #{pid_file_path}" if log
      File.unlink pid_file_path
    end
    if File.exists? socket_file_path
      log.debug  "HAProxy unlink #{socket_file_path}" if log
      File.unlink socket_file_path
    end
    if File.exists? config_file_path
      log.debug  "HAProxy unlink #{config_file_path}" if log
      File.unlink config_file_path
    end
  end
  wait
end
started?() click to toggle source
# File lib/synapse/rails/linker.rb, line 34
def started?
  @started || false
end
synapse() click to toggle source
# File lib/synapse/rails/linker.rb, line 18
def synapse
  @synapse ||= {
    services:services,
    haproxy:haproxy
  }.with_indifferent_access unless @started
  @synapse
end
wait() click to toggle source
# File lib/synapse/rails/linker.rb, line 28
def wait
  loop do
    break unless @synapse_instance.instance_variable_get("@haproxy").instance_variable_get("@restart_required")
    sleep 0.01
  end
end