lib/whirled_peas/config.rb in whirled_peas-0.7.1 vs lib/whirled_peas/config.rb in whirled_peas-0.8.0
- old
+ new
@@ -1,21 +1,71 @@
+require 'logger'
+
module WhirledPeas
class Config
- attr_writer :driver, :template_factory
- attr_accessor :loading_template_factory
+ # Refreshed rate measured in frames per second
+ DEFAULT_REFRESH_RATE = 30
- def driver
- unless @driver
- raise ConfigurationError, 'driver must be configured'
+ DEFAULT_LOG_LEVEL = Logger::INFO
+ DEFAULT_LOG_FILE = 'whirled_peas.log'
+
+ # This formatter expects a loggers to send `progname` in each log call. This value
+ # should be an all uppercase version of the module or class that is invoking the
+ # logger. Ruby's logger supports setting this value on a per-log statement basis
+ # when the log message is passed in through a block:
+ #
+ # logger.<level>(progname, &block)
+ #
+ # E.g.
+ #
+ # class Foo
+ # def bar
+ # logger.warn('FOO') { 'Something fishy happened in #bar' }
+ # end
+ # end
+ #
+ # The block format also has the advantage that the evaluation of the block only
+ # occurs if the message gets logged. So expensive to calculate debug statements
+ # will not impact the performance of the application if the log level is INFO or
+ # higher.
+ DEFAULT_FORMATTER = proc do |severity, datetime, progname, msg|
+ # Convert an instance of an exception into a nicely formatted message string
+ if msg.is_a?(Exception)
+ msg = %Q(#{msg.class}: #{msg.to_s}\n #{msg.backtrace.join("\n ")})
end
- @driver
+ "[#{severity}] #{datetime.strftime('%Y-%m-%dT%H:%M:%S.%L')} (#{progname}) - #{msg}\n"
end
+ attr_writer :application, :template_factory, :refresh_rate, :log_level, :log_formatter, :log_file
+
+ def application
+ unless @application
+ raise ConfigurationError, 'application must be configured'
+ end
+ @application
+ end
+
def template_factory
unless @template_factory
raise ConfigurationError, 'template_factory must be configured'
end
@template_factory
+ end
+
+ def refresh_rate
+ @refresh_rate || DEFAULT_REFRESH_RATE
+ end
+
+ def log_level
+ @log_level || DEFAULT_LOG_LEVEL
+ end
+
+ def log_formatter
+ @log_formatter || DEFAULT_FORMATTER
+ end
+
+ def log_file
+ @log_file || DEFAULT_LOG_FILE
end
end
private_constant :Config
end