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" if (@configuration.is_a?(Hash) || @configuration.is_a?(Array)) && @configuration.any? define(@configuration) end end
options(args, options={})
click to toggle source
# File lib/celluloid/supervision/deprecate/validation.rb, line 40 def options(args, options={}) return args.merge!(options) if args.is_a? Configuration::Instance # Not a Supervision:Configuration? # Try to guess its structure and build one: options = parse(args).merge(options) options[:configuration] = Container::Behavior.configure(options) options[:args].compact! if options[:args].is_a? Array options.select! { |k, v| !v.nil? } Configuration.valid? options, true options 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
parse(args)
click to toggle source
# File lib/celluloid/supervision/deprecate/validation.rb, line 12 def parse(args) return args if args.is_a? Configuration::Instance options = {args: []} return {type: args} if args.is_a? Class if args.is_a? Hash return args elsif args.is_a? Array if args.length == 1 return args[0] if args.first.is_a? Configuration::Instance return {type: args.first} if args.first.is_a? Class if args.first.is_a?(Hash) && args = args.pop return args end options[:args] = args if args.any? elsif args.length > 1 # TODO: don't use each options.merge! args.pop if args.last.is_a? Hash options[:type] = args.shift if args.first.is_a? Class options[:args] += args if args.any? end end options end
resync_parameters()
click to toggle source
# File lib/celluloid/supervision/constants.rb, line 68 def resync_parameters @@parameters = @@defaults[:parameters].inject({}) { |p, (k, v)| p[k] = v.dup; p } @@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.inject({}) { |p, (k, v)| p[k] = v.dup; p }, 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 fail Error::Incomplete, "Missing `:#{k}` in supervision configuration." else return false end end end arity.each do |klass, args| unless 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 fail ArgumentError.new("#{__a} vs. #{__arity}") else return false end end end end true end
Public Instance Methods
add(options)
click to toggle source
# File lib/celluloid/supervision/configuration.rb, line 151 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 70 def count @instances.count end
define(configuration, fail=false)
click to toggle source
# File lib/celluloid/supervision/configuration.rb, line 130 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 62 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 74 def each(&block) @instances.each(&block) end
export()
click to toggle source
# File lib/celluloid/supervision/configuration.rb, line 121 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 126 def include?(name) @instances.map(&:name).include? name end
increment()
click to toggle source
# File lib/celluloid/supervision/configuration.rb, line 146 def increment @i += 1 end
Also aliased as: another
merge(values)
click to toggle source
# File lib/celluloid/supervision/configuration.rb, line 113 def merge(values) if values.is_a?(Configuration) || values.is_a?(Hash) current_instance.merge(values) else fail Error::Invalid end end
merge!(values)
click to toggle source
# File lib/celluloid/supervision/configuration.rb, line 105 def merge!(values) if values.is_a?(Configuration) || values.is_a?(Hash) current_instance.merge!(values) else fail Error::Invalid end end
provider()
click to toggle source
# File lib/celluloid/supervision/configuration.rb, line 47 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 fail Error::InvalidSupervisor end end
resync_accessors()
click to toggle source
# File lib/celluloid/supervision/configuration.rb, line 78 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 156 def shutdown @provider.shutdown end
Private Instance Methods
current_instance()
click to toggle source
# File lib/celluloid/supervision/configuration.rb, line 162 def current_instance @instances[@i] ||= Instance.new end
invoke_injection(_point)
click to toggle source
# File lib/celluloid/supervision/configuration.rb, line 166 def invoke_injection(_point) # de puts "injection? #{point}" end