def initialize(typename)
@typename = typename
end
+
+ def format_titles(titles)
+ "#{@typename}[#{[titles].flatten.compact.join(", ")}]"
+ end
+
+ def setup_context(titles, message = nil)
+ @context = format_titles(titles)
+ @context += ": #{message}: " if message
+ end
+
[:debug, :info, :notice, :warning, :err, :critical, :alert, :emerg].each do |method|
define_method(method) do |*args|
if args.length == 1
- puts "#{method}: #{@typename}: #{args.last}"
+ puts "#{method}: #{@context || @typename}: #{args.last}"
elsif args.length == 2
- titles = args.first
- titles = [titles].flatten.compact
- resources = titles.collect { |t| "#{@typename}[#{t}]" }.join(", ")
+ resources = format_titles(args.first)
puts "#{method}: #{resources}: #{args.last}"
else
puts "#{method}: #{args.map(&inspect).join(", ")}"
end
end
end
+
+ [:creating, :updating, :deleting, :failing].each do |method|
+ define_method(method) do |titles, message: method.to_s.capitalize, &block|
+ setup_context(titles, message)
+ begin
+ debug("Start")
+ yield
+ notice("Finished in x.yz seconds")
+ rescue
+ err("Failed after x.yz seconds")
+ raise
+ ensure
+ @context = nil
+ end
+ end
+ end
+
+ def processing(titles, is, should, message: 'Processing', &block)
+ setup_context(titles, message)
+ begin
+ debug("Changing #{is.inspect} to #{should.inspect}")
+ yield
+ notice("Changed from #{is.inspect} to #{should.inspect} in x.yz seconds")
+ rescue
+ err("Failed changing #{is.inspect} to #{should.inspect} after x.yz seconds")
+ raise
+ ensure
+ @context = nil
+ end
+ end
+
+ def attribute_changed(titles, is, should, message: nil)
+ setup_context(titles, message)
+ notice("Changed from #{is.inspect} to #{should.inspect}")
+ end
end
def register_type(definition)