Class: PgDice::Configuration
- Inherits:
-
Object
- Object
- PgDice::Configuration
- Defined in:
- lib/pgdice/configuration.rb
Overview
Configuration class which holds all configurable values
Instance Attribute Summary collapse
- #approved_tables(eager_load: false) ⇒ Object
- #batch_size ⇒ Object
-
#config_file ⇒ Object
Returns the value of attribute config_file.
- #config_file_loader ⇒ Object
- #database_url ⇒ Object
- #dry_run ⇒ Object
- #logger ⇒ Object
- #logger_factory ⇒ Object
-
#pg_connection ⇒ Object
Lazily initialized.
Instance Method Summary collapse
- #database_connection ⇒ Object
- #deep_clone ⇒ Object
-
#initialize(existing_config = nil) ⇒ Configuration
constructor
A new instance of Configuration.
- #partition_helper ⇒ Object
- #partition_manager ⇒ Object
- #validate! ⇒ Object
- #validation ⇒ Object
Constructor Details
#initialize(existing_config = nil) ⇒ Configuration
Returns a new instance of Configuration.
33 34 35 36 37 38 39 |
# File 'lib/pgdice/configuration.rb', line 33 def initialize(existing_config = nil) DEFAULT_VALUES.each do |key, value| initialize_value(key, value, existing_config) end @approved_tables = PgDice::ApprovedTables.new(existing_config&.approved_tables(eager_load: true)&.tables) initialize_objects end |
Instance Attribute Details
#approved_tables(eager_load: false) ⇒ Object
62 63 64 65 66 67 68 69 70 71 72 73 74 |
# File 'lib/pgdice/configuration.rb', line 62 def approved_tables(eager_load: false) return @approved_tables if eager_load unless @approved_tables.respond_to?(:empty?) raise PgDice::InvalidConfigurationError, 'approved_tables must be an instance of PgDice::ApprovedTables!' end if !config_file_loader.file_loaded? && config_file.present? config_file_loader.load_file @approved_tables end @approved_tables end |
#batch_size ⇒ Object
84 85 86 87 88 |
# File 'lib/pgdice/configuration.rb', line 84 def batch_size return @batch_size.to_i if @batch_size.to_i >= 0 raise PgDice::InvalidConfigurationError, 'batch_size must be a non-negative Integer!' end |
#config_file ⇒ Object
Returns the value of attribute config_file.
31 32 33 |
# File 'lib/pgdice/configuration.rb', line 31 def config_file @config_file end |
#config_file_loader ⇒ Object
96 97 98 |
# File 'lib/pgdice/configuration.rb', line 96 def config_file_loader @config_file_loader ||= ConfigurationFileLoader.new(self) end |
#database_url ⇒ Object
56 57 58 59 60 |
# File 'lib/pgdice/configuration.rb', line 56 def database_url return @database_url unless @database_url.nil? raise PgDice::InvalidConfigurationError, 'database_url must be present!' end |
#dry_run ⇒ Object
90 91 92 93 94 |
# File 'lib/pgdice/configuration.rb', line 90 def dry_run return @dry_run if [true, false].include?(@dry_run) raise PgDice::InvalidConfigurationError, 'dry_run must be either true or false!' end |
#logger ⇒ Object
100 101 102 |
# File 'lib/pgdice/configuration.rb', line 100 def logger @logger ||= logger_factory.call end |
#logger_factory ⇒ Object
50 51 52 53 54 |
# File 'lib/pgdice/configuration.rb', line 50 def logger_factory return @logger_factory if @logger_factory.respond_to?(:call) raise PgDice::InvalidConfigurationError, 'logger_factory must be present!' end |
#pg_connection ⇒ Object
Lazily initialized
77 78 79 80 81 82 |
# File 'lib/pgdice/configuration.rb', line 77 def pg_connection @pg_connection ||= PG::Connection.new(database_url) return @pg_connection if @pg_connection.respond_to?(:exec) raise PgDice::InvalidConfigurationError, 'pg_connection must be present!' end |
Instance Method Details
#database_connection ⇒ Object
116 117 118 |
# File 'lib/pgdice/configuration.rb', line 116 def database_connection @database_connection_factory.call end |
#deep_clone ⇒ Object
120 121 122 |
# File 'lib/pgdice/configuration.rb', line 120 def deep_clone PgDice::Configuration.new(self) end |
#partition_helper ⇒ Object
108 109 110 |
# File 'lib/pgdice/configuration.rb', line 108 def partition_helper @partition_helper_factory.call end |
#partition_manager ⇒ Object
104 105 106 |
# File 'lib/pgdice/configuration.rb', line 104 def partition_manager @partition_manager_factory.call end |
#validate! ⇒ Object
41 42 43 44 45 46 47 48 |
# File 'lib/pgdice/configuration.rb', line 41 def validate! logger_factory database_url database_connection pg_connection batch_size approved_tables end |
#validation ⇒ Object
112 113 114 |
# File 'lib/pgdice/configuration.rb', line 112 def validation @validation_factory.call end |