Class: Inform::Persistence
- Includes:
- DatabaseConnectionHelpers, SequelLoggers, SequelPlugins
- Defined in:
- lib/runtime/persistence.rb
Overview
The Persistence class
Constant Summary
Constants included from SequelLoggers
SequelLoggers::DatabaseLogging
Constants included from DatabaseConnectionHelpers
DatabaseConnectionHelpers::AmpersandString, DatabaseConnectionHelpers::ColonString, DatabaseConnectionHelpers::ConnectionAttempts, DatabaseConnectionHelpers::DatabaseOrRoleDoesNotExistPattern, DatabaseConnectionHelpers::DefaultConnectionOptions, DatabaseConnectionHelpers::DefaultConnectionPoolSize, DatabaseConnectionHelpers::DefaultConnectionValidationTimeoutSeconds, DatabaseConnectionHelpers::EmptyString, DatabaseConnectionHelpers::ForwardSlashString, DatabaseConnectionHelpers::JavaPattern, DatabaseConnectionHelpers::KeyValueTemplate, DatabaseConnectionHelpers::QuestionMarkString, DatabaseConnectionHelpers::URLTemplate
Instance Attribute Summary collapse
-
#config ⇒ Object
readonly
Returns the value of attribute config.
-
#environment ⇒ Object
readonly
Returns the value of attribute environment.
Class Method Summary collapse
Instance Method Summary collapse
- #database_config ⇒ Object
- #database_config_file_path ⇒ Object
- #establish_database_connection ⇒ Object
- #init_database ⇒ Object
-
#initialize(env = nil) ⇒ Persistence
constructor
A new instance of Persistence.
Methods included from SequelPlugins
#enable_plugin, #enable_plugins
Methods included from SequelLoggers
#add_logger, #delete_logger, #disable_query_logging, #enable_query_logging, #set_log_level
Methods included from DatabaseConnectionHelpers
#assemble_url, #connect, #sanitize_url
Constructor Details
#initialize(env = nil) ⇒ Persistence
Returns a new instance of Persistence.
146 147 148 149 150 151 152 153 154 |
# File 'lib/runtime/persistence.rb', line 146 def initialize(env = nil) @environment = env || Inform::Game.environment log.debug "Initializing persistence layer for environment: #{@environment}" caller[0..4].each { |t| log.debug t } @config = database_config.fetch(@environment.to_s, {}) establish_database_connection enable_plugins enable_query_logging if ENV['ENABLE_SQL_LOGGING'] end |
Instance Attribute Details
#config ⇒ Object (readonly)
Returns the value of attribute config.
128 129 130 |
# File 'lib/runtime/persistence.rb', line 128 def config @config end |
#environment ⇒ Object (readonly)
Returns the value of attribute environment.
128 129 130 |
# File 'lib/runtime/persistence.rb', line 128 def environment @environment end |
Class Method Details
.init(env = nil) ⇒ Object
130 131 132 |
# File 'lib/runtime/persistence.rb', line 130 def self.init(env = nil) Inform::Persistence.instance(env) end |
.instance(*args) ⇒ Object
136 137 138 139 140 141 142 |
# File 'lib/runtime/persistence.rb', line 136 def self.instance(*args) return @instance unless @instance.nil? @instance_mutex.synchronize do @instance ||= new(*args) end @instance end |
Instance Method Details
#database_config ⇒ Object
164 165 166 |
# File 'lib/runtime/persistence.rb', line 164 def database_config @database_config ||= YAML.load_file(database_config_file_path) end |
#database_config_file_path ⇒ Object
168 169 170 171 172 |
# File 'lib/runtime/persistence.rb', line 168 def database_config_file_path @database_config_file_path ||= File.( File.join(Inform::Runtime.project_dir_path, 'config', 'database.yml') ) end |
#establish_database_connection ⇒ Object
156 157 158 159 160 161 162 |
# File 'lib/runtime/persistence.rb', line 156 def establish_database_connection connect rescue Sequel::DatabaseConnectionError log.warn "Database requires initialization" init_database retry if ConnectionAttempts.memo < 2 end |
#init_database ⇒ Object
174 175 176 177 178 179 180 181 |
# File 'lib/runtime/persistence.rb', line 174 def init_database @config = database_config.fetch('default') connect @database = Inform::Database.instance(Inform::Game.config[:database_name]) @database.bootstrap.up @config = database_config.fetch(environment.to_s) connect end |