Class: StoryTeller::Persistence
- Defined in:
- lib/story_teller/persistence.rb
Overview
The Persistence class
Constant Summary collapse
- DEFAULT_DATABASE_NAME =
'default'.freeze
Constants included from SequelLoggers
SequelLoggers::DatabaseLogging
Constants included from DatabaseConnectionHelpers
DatabaseConnectionHelpers::AmpersandString, DatabaseConnectionHelpers::ColonString, 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(database_name) ⇒ Object
-
#initialize(env = nil, database_name = DEFAULT_DATABASE_NAME) ⇒ 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 DatabaseResetHelpers
#concrete_world_model?, #reset!, #without_committing!, #world_object_ids, #world_tables, #world_tree?
Methods included from DatabaseConnectionHelpers
#assemble_url, #connect, connection_attempts, increment_connection_attempts, #sanitize_url
Constructor Details
#initialize(env = nil, database_name = DEFAULT_DATABASE_NAME) ⇒ Persistence
Returns a new instance of Persistence.
188 189 190 191 192 193 194 195 196 197 |
# File 'lib/story_teller/persistence.rb', line 188 def initialize(env = nil, database_name = DEFAULT_DATABASE_NAME) @environment = env @database_name = database_name log.debug "Initializing persistence layer for environment: #{@environment}" caller[0..4].each { |t| log.trace 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.
168 169 170 |
# File 'lib/story_teller/persistence.rb', line 168 def config @config end |
#environment ⇒ Object (readonly)
Returns the value of attribute environment.
168 169 170 |
# File 'lib/story_teller/persistence.rb', line 168 def environment @environment end |
Class Method Details
.init(env = nil, database_name = DEFAULT_DATABASE_NAME) ⇒ Object
172 173 174 |
# File 'lib/story_teller/persistence.rb', line 172 def self.init(env = nil, database_name = DEFAULT_DATABASE_NAME) instance(env, database_name) end |
.instance(*args) ⇒ Object
178 179 180 181 182 183 184 |
# File 'lib/story_teller/persistence.rb', line 178 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
207 208 209 |
# File 'lib/story_teller/persistence.rb', line 207 def database_config @database_config ||= YAML.load_file(database_config_file_path) end |
#database_config_file_path ⇒ Object
211 212 213 214 215 |
# File 'lib/story_teller/persistence.rb', line 211 def database_config_file_path @database_config_file_path ||= File.( File.join(StoryTeller::Runtime.project_dir_path, 'config', 'database.yml') ) end |
#establish_database_connection ⇒ Object
199 200 201 202 203 204 205 |
# File 'lib/story_teller/persistence.rb', line 199 def establish_database_connection connect rescue Sequel::DatabaseConnectionError log.warn "Database requires initialization" init_database(@database_name) retry if DatabaseConnectionHelpers.connection_attempts < 2 end |
#init_database(database_name) ⇒ Object
217 218 219 220 221 222 223 224 |
# File 'lib/story_teller/persistence.rb', line 217 def init_database(database_name) @config = database_config.fetch('default') connect @database = Greenfield::Database.init(database_name) @database.bootstrap.up @config = database_config.fetch(environment.to_s) connect end |