class Celluloid::Supervision::Configuration
Constants
- INJECTIONS
- REMOVE_AT_EXPORT
These are applied inside Supervision::Member ################
Attributes
instances[RW]
Public Class Methods
alias!(aliased, original)
click to toggle source
# File lib/celluloid/supervision/constants.rb, line 94 def alias!(aliased, original) @@aliases[aliased] = original end
aliases()
click to toggle source
# File lib/celluloid/supervision/constants.rb, line 90 def aliases @@aliases end
arity()
click to toggle source
# File lib/celluloid/supervision/constants.rb, line 82 def arity @@arity end
arity!(key, value)
click to toggle source
# File lib/celluloid/supervision/constants.rb, line 86 def arity!(key, value) @@arity[key] = value end
define(options = {})
click to toggle source
# File lib/celluloid/supervision/configuration.rb, line 9 def define(options = {}) new(options) end
deploy(options = {})
click to toggle source
# File lib/celluloid/supervision/configuration.rb, line 5 def deploy(options = {}) define(options).deploy end
new(options = {})
click to toggle source
# File lib/celluloid/supervision/configuration.rb, line 28 def initialize(options = {}) @instances = [Instance.new] @branch = :services @i = 0 # incrementer of instances in this branch resync_accessors @configuration = options if options.is_a? Hash options[:configuration] ||= Container::Behavior.configure(options) @configuration = instance_eval(&options[:configuration]) @supervisor ||= @configuration.fetch(:supervisor, :"Celluloid.services") end @supervisor ||= :"Celluloid.services" define(@configuration) if (@configuration.is_a?(Hash) || @configuration.is_a?(Array)) && @configuration.any? end
options(config = {}, options = {})
click to toggle source
# File lib/celluloid/supervision/validation.rb, line 30 def options(config = {}, options = {}) configuration = config.merge(options) return configuration if configuration.is_a? Configuration configuration[:configuration] = Container::Behavior.configure(configuration) valid?(configuration, true) configuration end
parameter!(key, value)
click to toggle source
# File lib/celluloid/supervision/constants.rb, line 78 def parameter!(key, value) @@parameters[key] << value unless @@parameters[key].include? value end
parameters(*args)
click to toggle source
# File lib/celluloid/supervision/constants.rb, line 74 def parameters(*args) args.inject([]) { |parameters, p| parameters += @@parameters[p]; parameters } end
resync_parameters()
click to toggle source
# File lib/celluloid/supervision/constants.rb, line 68 def resync_parameters @@parameters = @@defaults[:parameters].each_with_object({}) { |(k, v), p| p[k] = v.dup; } @@aliases = @@defaults[:aliases].dup @@arity = @@defaults[:arity].dup end
save_defaults()
click to toggle source
# File lib/celluloid/supervision/constants.rb, line 60 def save_defaults @@defaults = { parameters: @@parameters.each_with_object({}) { |(k, v), p| p[k] = v.dup; }, aliases: @@aliases.dup, arity: @@arity.dup } end
valid?(configuration, fails = false)
click to toggle source
# File lib/celluloid/supervision/validation.rb, line 5 def valid?(configuration, fails = false) parameters(:mandatory).each do |k| unless configuration.key? k if fails raise Error::Incomplete, "Missing `:#{k}` in supervision configuration." else return false end end end arity.each do |klass, args| next if configuration[args].is_a? Proc __a = configuration[args] && configuration[args].count || 0 __arity = configuration[klass].allocate.method(:initialize).arity unless (__arity < 0 && __a >= __arity.abs - 1) || __a == __arity.abs if fails raise ArgumentError, "#{__a} vs. #{__arity}" else return false end end end true end
Public Instance Methods
add(options)
click to toggle source
# File lib/celluloid/supervision/configuration.rb, line 149 def add(options) define(options) provider.supervise options if Configuration.valid? options end
count()
click to toggle source
# File lib/celluloid/supervision/configuration.rb, line 68 def count @instances.count end
define(configuration, fail = false)
click to toggle source
# File lib/celluloid/supervision/configuration.rb, line 128 def define(configuration, fail = false) if configuration.is_a? Array configuration.each { |c| define(c, fail) } else unless include? configuration[:as] begin current_instance.define(configuration, fail) rescue Error::AlreadyDefined increment retry end end end self end
deploy(options = {})
click to toggle source
# File lib/celluloid/supervision/configuration.rb, line 60 def deploy(options = {}) define(options) if options.any? @instances.each do |instance| provider.add instance.merge(branch: @branch) end provider end
each(&block)
click to toggle source
# File lib/celluloid/supervision/configuration.rb, line 72 def each(&block) @instances.each(&block) end
export()
click to toggle source
# File lib/celluloid/supervision/configuration.rb, line 119 def export return current_instance.to_hash if @i == 0 @instances.map(&:export) end
include?(name)
click to toggle source
# File lib/celluloid/supervision/configuration.rb, line 124 def include?(name) @instances.map(&:name).include? name end
increment()
click to toggle source
# File lib/celluloid/supervision/configuration.rb, line 144 def increment @i += 1 end
Also aliased as: another
merge(values)
click to toggle source
# File lib/celluloid/supervision/configuration.rb, line 111 def merge(values) if values.is_a?(Configuration) || values.is_a?(Hash) current_instance.merge(values) else raise Error::Invalid end end
merge!(values)
click to toggle source
# File lib/celluloid/supervision/configuration.rb, line 103 def merge!(values) if values.is_a?(Configuration) || values.is_a?(Hash) current_instance.merge!(values) else raise Error::Invalid end end
provider()
click to toggle source
# File lib/celluloid/supervision/configuration.rb, line 45 def provider @provider ||= if @supervisor.is_a? Hash @supervisor[:type].run!(@supervisor) elsif @supervisor.is_a? Symbol @supervisor = Object.module_eval(@supervisor.to_s) provider elsif @supervisor.is_a? Class @supervisor.run! elsif @supervisor.respond_to? :supervise @supervisor else raise Error::InvalidSupervisor end end
resync_accessors()
click to toggle source
# File lib/celluloid/supervision/configuration.rb, line 76 def resync_accessors # methods for setting and getting the usual defaults Configuration.parameters(:mandatory, :optional, :plugins, :meta).each do |key| [:"#{key}!", :"#{key}="].each do |m| self.class.instance_eval do remove_method :"#{m}" rescue nil # avoid warnings in tests define_method(m) { |p| current_instance.send(m, p) } end end [:"#{key}?", :"#{key}"].each do |m| self.class.instance_eval do remove_method :"#{m}" rescue nil # avoid warnings in tests define_method(m) { current_instance.send(m) } end end end Configuration.aliases.each do |_alias, _original| ["!", :"=", :"?", :""]. each do |m| self.class.instance_eval do remove_method :"#{_alias}#{m}" rescue nil # avoid warnings in tests alias_method :"#{_alias}#{m}", :"#{_original}#{m}" end end end end
shutdown()
click to toggle source
# File lib/celluloid/supervision/configuration.rb, line 154 def shutdown @provider.shutdown end
Private Instance Methods
current_instance()
click to toggle source
# File lib/celluloid/supervision/configuration.rb, line 160 def current_instance @instances[@i] ||= Instance.new end
invoke_injection(_point)
click to toggle source
# File lib/celluloid/supervision/configuration.rb, line 164 def invoke_injection(_point) # de puts "injection? #{point}" end