Class: IronNails::Initializer
- Inherits:
-
Object
- Object
- IronNails::Initializer
- Defined in:
- lib/ironnails/config/initializer.rb
Overview
This structure has been heavily inspired by the rails framework. The Configuration class holds all the parameters for the Initializer Usually, you’ll create a Configuration file implicitly through the block running on the Initializer, but it’s also possible to create the Configuration instance in advance and pass it in like this:
config = IronNails::Configuration.new
IronNails::Initializer.run(config)
Class Method Summary collapse
Instance Method Summary collapse
- #configuration ⇒ Object
- #include_namespaces ⇒ Object
-
#initialize(configuration) ⇒ Initializer
constructor
A new instance of Initializer.
-
#initialize_logger ⇒ Object
If the IRONNAILS_DEFAULT_LOGGER constant is already set, this initialization routine does nothing.
- #logger ⇒ Object
- #require_application_files ⇒ Object
- #require_binaries ⇒ Object
- #require_files(path, extension) ⇒ Object
- #set_constants ⇒ Object
Constructor Details
#initialize(configuration) ⇒ Initializer
Returns a new instance of Initializer.
50 51 52 53 54 55 56 57 58 59 |
# File 'lib/ironnails/config/initializer.rb', line 50 def initialize(configuration) IronNails.configuration = configuration initialize_logger set_constants require_binaries include_namespaces require_application_files end |
Class Method Details
.run(configuration = Configuration.new) {|configuration| ... } ⇒ Object
61 62 63 64 65 |
# File 'lib/ironnails/config/initializer.rb', line 61 def self.run(configuration = Configuration.new) yield configuration if block_given? initializer = new configuration initializer end |
Instance Method Details
#configuration ⇒ Object
67 68 69 |
# File 'lib/ironnails/config/initializer.rb', line 67 def configuration IronNails.configuration end |
#include_namespaces ⇒ Object
122 123 124 125 126 |
# File 'lib/ironnails/config/initializer.rb', line 122 def include_namespaces logger.debug "Including namespaces", IRONNAILS_FRAMEWORKNAME #include_global_namespaces configuration.namespaces configuration.namespaces.each { |namespace| Object.send :include, eval(namespace) } end |
#initialize_logger ⇒ Object
If the IRONNAILS_DEFAULT_LOGGER constant is already set, this initialization routine does nothing. If the constant is not set, and Configuration#logger is not nil
, this also does nothing. Otherwise, a new logger instance is created at Configuration#log_path, with a default log level of Configuration#log_level.
If the log could not be created, the log will be set to output to STDERR
, with a log level of WARN
.
83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 |
# File 'lib/ironnails/config/initializer.rb', line 83 def initialize_logger # if the environment has explicitly defined a logger, use it return if defined?(IRONNAILS_DEFAULT_LOGGER) unless logr = configuration.logger begin logr = IronNails::Logging::BufferedLogger.new(configuration.log_path) logr.level = IronNails::Logging::BufferedLogger.const_get(configuration.log_level.to_s.upcase) if configuration.environment == "production" logr.auto_flushing = false logr.set_non_blocking_io end rescue StandardError => e logr = IronNails::Logging::BufferedLogger.new(STDERR) logr.level = IronNails::Logging::BufferedLogger::WARN logr.warn( "IronNails Error: Unable to access log file. Please ensure that #{configuration.log_path} exists and is chmod 0666. " + "The log level has been raised to WARN and the output directed to STDERR until the problem is fixed. #{e}" ) end logr.debug "initializing logger", IRONNAILS_FRAMEWORKNAME end silence_warnings { Object.const_set "IRONNAILS_DEFAULT_LOGGER", logr } end |
#logger ⇒ Object
109 110 111 |
# File 'lib/ironnails/config/initializer.rb', line 109 def logger IRONNAILS_DEFAULT_LOGGER end |
#require_application_files ⇒ Object
128 129 130 131 132 133 |
# File 'lib/ironnails/config/initializer.rb', line 128 def require_application_files logger.debug "requiring application files", IRONNAILS_FRAMEWORKNAME configuration.application_paths.each do |path| require_files path, :rb end end |
#require_binaries ⇒ Object
114 115 116 117 118 119 |
# File 'lib/ironnails/config/initializer.rb', line 114 def require_binaries logger.debug "requiring binaries from bin", IRONNAILS_FRAMEWORKNAME configuration.assembly_paths.each do |path| require_files path, :dll end end |
#require_files(path, extension) ⇒ Object
135 136 137 138 139 140 |
# File 'lib/ironnails/config/initializer.rb', line 135 def require_files(path, extension) Dir.glob("#{File.(path)}/*.#{extension}").each do |file| # puts "#{file}" require "#{file}" unless configuration.excluded_file? file end end |
#set_constants ⇒ Object
71 72 73 |
# File 'lib/ironnails/config/initializer.rb', line 71 def set_constants logger.debug "setting application constants", IRONNAILS_FRAMEWORKNAME end |