lib/character/engine.rb in character-0.1.0 vs lib/character/engine.rb in character-1.0.0

- old
+ new

@@ -1,5 +1,37 @@ module Character + class << self + attr_writer :instances + + def instances + if @instances.blank? + @instances = { Instance::DEFAULT_NAME => Instance.new } + else + @instances + end + end + + def configure(&block) + block.call(self) + end + + def instance(name, &block) + @custom_instance_name_used = true + raise StandardError.new("Please don't mix character instance configuration & default character configuration.") if @default_instance_name_used + + block.call( @instances[name] ||= Instance.new(name) ) + end + + def method_missing(method, *args) + @default_instance_name_used = true + raise StandardError.new("Please don't mix character instance configuration & default character configuration.") if @custom_instance_name_used + + ( @instances[Instance::DEFAULT_NAME] ||= Instance.new ).send method, *args + end + end + class Engine < ::Rails::Engine - isolate_namespace Character + config.before_configuration do + Character.instances = {} + end end end \ No newline at end of file