Module: Logg::Machine
- Defined in:
- lib/logg/core.rb
Overview
The Er module, when mixed-in a class, instantiates a Dispatcher and performs some simple meta-programming on this receiver to add support for the logger. It thus enable the receiver to use the logger’s default implementation and/or define custom loggers.
Defined Under Namespace
Modules: RedefInit
Constant Summary collapse
- LOGGER =
Logg::Dispatcher.new
- NAME =
NAME = (defined?(::Logg::LOG_METHOD) && ::Logg::LOG_METHOD) || :log
:log
Class Method Summary collapse
Class Method Details
.included(base) ⇒ Object
187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 |
# File 'lib/logg/core.rb', line 187 def self.included(base) if !base.respond_to?(NAME) base.instance_eval do # Memoized logger for the receiver's class. # # TODO: add support for defining the logger under a different name than #log, # this means either defining a constant before mixin, or delaying the metaprog. class << self; self; end.instance_eval do define_method(NAME) do @@_logg_er ||= LOGGER end end end else raise RuntimeError, "Cannot mixin Logg::Er as #{base}#logger, method's already defined." end # Memoized logger for the receiver. base.extend RedefInit end |