lib/dim.rb in dim-1.2.4 vs lib/dim.rb in dim-1.2.5
- old
+ new
@@ -55,18 +55,22 @@
end
# Register a service named +name+. The +block+ will be used to
# create the service on demand. It is recommended that symbols be
# used as the name of a service.
- def register(name, &block)
- if @services[name]
+ def register(name,raise_error_on_duplicate = true,&block)
+ if @services[name] && raise_error_on_duplicate
fail DuplicateServiceError, "Duplicate Service Name '#{name}'"
end
@services[name] = block
self.class.send(:define_method, name) do
self[name]
end
+ end
+
+ def override(name,&block)
+ register(name,false,&block)
end
# Lookup a service from ENV variables, or use a default if given; fall back to searching the container and its parents for a default value
def register_env(name,default = nil)
if value = ENV[name.to_s.upcase]