Sha256: b8dbfc39210e64e3f5d56767dd8013bd97e37f02c79bb7af9f2db4dcce3a09f2
Contents?: true
Size: 1.94 KB
Versions: 3
Compression:
Stored size: 1.94 KB
Contents
require "mcrain/version" require 'timeout' require 'logger' require 'logger_pipe' require 'active_support/inflector/inflections' require 'active_support/core_ext/class/subclasses' require 'active_support/core_ext/object/blank' module Mcrain class << self def [](name) lookup(name) end def lookup(name, options = {}) klass = class_for(name.to_sym) r = instances[name] ||= klass.new options.each{|k,v| r.send("#{k}=", v)} r end def class_names @class_names ||= {} end def class_for(name) if class_name = class_names[name] class_name.constantize else if klass = Mcrain::Base.descendants.detect{|c| c.server_name == name} class_names[name] = klass.name end klass end end def register(name, class_name) class_names[name] = class_name end def instances @instances ||= {} end def pull_images Mcrain::Base.descendants.each do |klass| Timeout.timeout(10.minutes) do LoggerPipe.run(logger, "docker pull #{klass.container_image}") end end end attr_writer :logger def logger @logger ||= Logger.new($stderr) end def wait_port_opened(host, port, options = {}) logger.debug("wait_port_opened(#{host.inspect}, #{port.inspect}, #{options.inspect})") interval = options[:interval] || 10 # second Timeout.timeout(options[:timeout] || 60) do begin s = TCPSocket.open(host, port) s.close return true rescue Errno::ECONNREFUSED sleep(interval) retry end end end end autoload :Base, 'mcrain/base' autoload :Boot2docker, 'mcrain/boot2docker' autoload :Riak, 'mcrain/riak' autoload :Redis, 'mcrain/redis' autoload :Rabbitmq, 'mcrain/rabbitmq' register :riak, "Mcrain::Riak" register :redis, "Mcrain::Redis" register :rabbitmq, "Mcrain::Rabbitmq" end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
mcrain-0.1.2 | lib/mcrain.rb |
mcrain-0.1.1 | lib/mcrain.rb |
mcrain-0.1.0 | lib/mcrain.rb |