Class: StandaloneMigrations::Configurator

Inherits:
Object
  • Object
show all
Defined in:
lib/standalone_migrations/configurator.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) ⇒ Configurator

Returns a new instance of Configurator.



53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
# File 'lib/standalone_migrations/configurator.rb', line 53

def initialize(options = {})
  options = options.dup
  @schema = options.delete('schema')
  @config_overrides = defaults
  c_os['paths'].merge!(options.delete('paths') || {})
  c_os.merge!(options)

  load_from_file

  ENV['SCHEMA'] ||= @schema if @schema
  rac = Rails.application.config

  rac.root = c_os['root']
  c_os['paths'].each do |path, value|
    rac.paths[path] = value
  end

  Configurator.configured!
end

Class Method Details

.configured!Object



33
34
35
# File 'lib/standalone_migrations/configurator.rb', line 33

def self.configured!
  @configured = true
end

.configured?Boolean

Returns:

  • (Boolean)


37
38
39
# File 'lib/standalone_migrations/configurator.rb', line 37

def self.configured?
  !!@configured
end

.database_config_present?Boolean

Returns:

  • (Boolean)


28
29
30
31
# File 'lib/standalone_migrations/configurator.rb', line 28

def self.database_config_present?
  !@env_config.nil? ||
    Rails.application.config.paths["config/database"].existent.any?
end

.environments_config {|proxy| ... } ⇒ Object

Yields:

  • (proxy)


41
42
43
44
45
46
47
48
49
50
51
# File 'lib/standalone_migrations/configurator.rb', line 41

def self.environments_config
  config =
    if database_config_present?
      load_configurations
    else
      warn_called_too_early unless configured?
      {}
    end
  proxy = InternalConfigurationsProxy.new(config)
  yield(proxy) if block_given?
end

.load_configurationsObject



22
23
24
25
26
# File 'lib/standalone_migrations/configurator.rb', line 22

def self.load_configurations
  @env_config ||= Rails.application.config.database_configuration
  ActiveRecord::Base.configurations = @env_config
  @env_config
end

.warn_called_too_earlyObject



125
126
127
128
129
130
# File 'lib/standalone_migrations/configurator.rb', line 125

def self.warn_called_too_early
  warn "StandaloneMigrations::Configurator.environments_config was called " \
       "before StandaloneMigrations::Tasks.load_tasks, so the database " \
       "config had not been located yet and the block was ignored. Move it " \
       "below your StandaloneMigrations::Tasks.load_tasks call."
end

Instance Method Details

#c_o_p_mObject



88
89
90
# File 'lib/standalone_migrations/configurator.rb', line 88

def c_o_p_m
  config_override_path_mappings
end

#c_osObject



81
82
83
# File 'lib/standalone_migrations/configurator.rb', line 81

def c_os
  config_overrides
end

#config_for(environment) ⇒ Object



77
78
79
# File 'lib/standalone_migrations/configurator.rb', line 77

def config_for(environment)
  config_for_all[environment.to_s]
end

#config_for_allObject



73
74
75
# File 'lib/standalone_migrations/configurator.rb', line 73

def config_for_all
  Configurator.load_configurations.dup
end

#config_override_path_mappingsObject



91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
# File 'lib/standalone_migrations/configurator.rb', line 91

def config_override_path_mappings
  {
    'config/database' => {
      'config_key_path' => ['config', 'database'],
              'default' => 'db/config.yml'
    },
                 'db' => {
      'config_key_path' => ['db'    , 'dir'     ],
              'default' => 'db'
    },
         'db/migrate' => {
      'config_key_path' => ['db'    , 'migrate' ],
              'default' => 'db/migrate'
    },
        'db/seeds.rb' => {
      'config_key_path' => ['db'    , 'seeds'   ],
              'default' => 'db/seeds.rb'
    },
  }
end

#config_overridesObject



84
85
86
# File 'lib/standalone_migrations/configurator.rb', line 84

def config_overrides
  @config_overrides
end

#defaultsObject



112
113
114
115
116
117
118
119
# File 'lib/standalone_migrations/configurator.rb', line 112

def defaults
  {
    'paths' => c_o_p_m.map do |path, value|
      [ path, value['default'] ]
    end.to_h,
    'root' => Pathname.pwd,
  }
end

#schemaObject



121
122
123
# File 'lib/standalone_migrations/configurator.rb', line 121

def schema
  @schema
end