runger_config 3.0.0 → 4.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +45 -36
- data/README.md +83 -83
- data/lib/generators/{anyway → runger}/app_config/app_config_generator.rb +2 -2
- data/lib/generators/{anyway → runger}/config/config_generator.rb +3 -8
- data/lib/generators/{anyway → runger}/config/templates/config.rb.tt +0 -3
- data/lib/generators/{anyway → runger}/install/install_generator.rb +4 -4
- data/lib/generators/{anyway → runger}/install/templates/application_config.rb.tt +1 -1
- data/lib/{anyway → runger}/auto_cast.rb +1 -1
- data/lib/{anyway → runger}/config.rb +22 -22
- data/lib/{anyway → runger}/dynamic_config.rb +2 -2
- data/lib/{anyway → runger}/ejson_parser.rb +3 -3
- data/lib/{anyway → runger}/env.rb +3 -3
- data/lib/{anyway → runger}/ext/deep_dup.rb +1 -1
- data/lib/{anyway → runger}/ext/deep_freeze.rb +1 -1
- data/lib/{anyway → runger}/ext/flatten_names.rb +1 -1
- data/lib/{anyway → runger}/ext/hash.rb +1 -1
- data/lib/{anyway → runger}/ext/string_constantize.rb +1 -1
- data/lib/{anyway → runger}/loaders/base.rb +2 -2
- data/lib/{anyway → runger}/loaders/doppler.rb +2 -2
- data/lib/{anyway → runger}/loaders/ejson.rb +3 -3
- data/lib/{anyway → runger}/loaders/env.rb +2 -2
- data/lib/{anyway → runger}/loaders/yaml.rb +3 -3
- data/lib/{anyway → runger}/loaders.rb +6 -6
- data/lib/{anyway → runger}/option_parser_builder.rb +1 -1
- data/lib/{anyway → runger}/optparse_config.rb +6 -6
- data/lib/{anyway → runger}/rails/autoload.rb +5 -5
- data/lib/{anyway → runger}/rails/config.rb +3 -3
- data/lib/{anyway → runger}/rails/loaders/credentials.rb +2 -2
- data/lib/{anyway → runger}/rails/loaders/secrets.rb +3 -3
- data/lib/{anyway → runger}/rails/loaders/yaml.rb +2 -2
- data/lib/runger/rails/loaders.rb +5 -0
- data/lib/{anyway → runger}/rails/settings.rb +2 -2
- data/lib/runger/rails.rb +24 -0
- data/lib/{anyway → runger}/railtie.rb +7 -7
- data/lib/{anyway → runger}/rbs.rb +1 -1
- data/lib/{anyway → runger}/settings.rb +4 -4
- data/lib/{anyway → runger}/testing/helpers.rb +4 -4
- data/lib/{anyway → runger}/testing.rb +2 -2
- data/lib/{anyway → runger}/tracing.rb +4 -4
- data/lib/{anyway → runger}/type_casting.rb +4 -4
- data/lib/{anyway → runger}/utils/deep_merge.rb +2 -2
- data/lib/{anyway → runger}/utils/which.rb +1 -1
- data/lib/runger/version.rb +5 -0
- data/lib/{anyway.rb → runger.rb} +1 -1
- data/lib/runger_config.rb +49 -0
- data/sig/{anyway_config.rbs → runger_config.rbs} +1 -1
- metadata +51 -51
- data/lib/anyway/rails/loaders.rb +0 -5
- data/lib/anyway/rails.rb +0 -24
- data/lib/anyway/version.rb +0 -5
- data/lib/anyway_config.rb +0 -49
- /data/lib/generators/{anyway → runger}/app_config/USAGE +0 -0
- /data/lib/generators/{anyway → runger}/config/USAGE +0 -0
- /data/lib/generators/{anyway → runger}/config/templates/config.yml.tt +0 -0
- /data/lib/generators/{anyway → runger}/install/USAGE +0 -0
@@ -1,14 +1,14 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require "active_support/all"
|
4
|
-
require "
|
5
|
-
require "
|
4
|
+
require "runger/optparse_config"
|
5
|
+
require "runger/dynamic_config"
|
6
6
|
|
7
|
-
module
|
8
|
-
using
|
9
|
-
using
|
10
|
-
using
|
11
|
-
using
|
7
|
+
module Runger # :nodoc:
|
8
|
+
using Runger::Ext::DeepDup
|
9
|
+
using Runger::Ext::DeepFreeze
|
10
|
+
using Runger::Ext::Hash
|
11
|
+
using Runger::Ext::FlattenNames
|
12
12
|
|
13
13
|
using(Module.new do
|
14
14
|
refine Object do
|
@@ -111,7 +111,7 @@ module Anyway # :nodoc:
|
|
111
111
|
def defaults
|
112
112
|
return @defaults if instance_variable_defined?(:@defaults)
|
113
113
|
|
114
|
-
@defaults = if superclass <
|
114
|
+
@defaults = if superclass < Runger::Config
|
115
115
|
superclass.defaults.deep_dup
|
116
116
|
else
|
117
117
|
new_empty_config
|
@@ -121,7 +121,7 @@ module Anyway # :nodoc:
|
|
121
121
|
def config_attributes
|
122
122
|
return @config_attributes if instance_variable_defined?(:@config_attributes)
|
123
123
|
|
124
|
-
@config_attributes = if superclass <
|
124
|
+
@config_attributes = if superclass < Runger::Config
|
125
125
|
superclass.config_attributes.dup
|
126
126
|
else
|
127
127
|
[]
|
@@ -141,7 +141,7 @@ module Anyway # :nodoc:
|
|
141
141
|
def required_attributes
|
142
142
|
return @required_attributes if instance_variable_defined?(:@required_attributes)
|
143
143
|
|
144
|
-
@required_attributes = if superclass <
|
144
|
+
@required_attributes = if superclass < Runger::Config
|
145
145
|
superclass.required_attributes.dup
|
146
146
|
else
|
147
147
|
[]
|
@@ -161,7 +161,7 @@ module Anyway # :nodoc:
|
|
161
161
|
def load_callbacks
|
162
162
|
return @load_callbacks if instance_variable_defined?(:@load_callbacks)
|
163
163
|
|
164
|
-
@load_callbacks = if superclass <=
|
164
|
+
@load_callbacks = if superclass <= Runger::Config
|
165
165
|
superclass.load_callbacks.dup
|
166
166
|
else
|
167
167
|
[]
|
@@ -192,7 +192,7 @@ module Anyway # :nodoc:
|
|
192
192
|
|
193
193
|
return @env_prefix if instance_variable_defined?(:@env_prefix)
|
194
194
|
|
195
|
-
@env_prefix = if superclass <
|
195
|
+
@env_prefix = if superclass < Runger::Config && superclass.explicit_config_name?
|
196
196
|
superclass.env_prefix
|
197
197
|
else
|
198
198
|
config_name.upcase
|
@@ -204,7 +204,7 @@ module Anyway # :nodoc:
|
|
204
204
|
|
205
205
|
return @loader_options if instance_variable_defined?(:@loader_options)
|
206
206
|
|
207
|
-
@loader_options = if superclass <
|
207
|
+
@loader_options = if superclass < Runger::Config
|
208
208
|
superclass.loader_options
|
209
209
|
else
|
210
210
|
{}
|
@@ -227,7 +227,7 @@ module Anyway # :nodoc:
|
|
227
227
|
def coercion_mapping
|
228
228
|
return @coercion_mapping if instance_variable_defined?(:@coercion_mapping)
|
229
229
|
|
230
|
-
@coercion_mapping = if superclass <
|
230
|
+
@coercion_mapping = if superclass < Runger::Config
|
231
231
|
superclass.coercion_mapping.deep_dup
|
232
232
|
else
|
233
233
|
{}
|
@@ -241,7 +241,7 @@ module Anyway # :nodoc:
|
|
241
241
|
if coercion_mapping.empty?
|
242
242
|
fallback_type_caster
|
243
243
|
else
|
244
|
-
::
|
244
|
+
::Runger::TypeCaster.new(coercion_mapping, fallback: fallback_type_caster)
|
245
245
|
end
|
246
246
|
end
|
247
247
|
|
@@ -250,15 +250,15 @@ module Anyway # :nodoc:
|
|
250
250
|
|
251
251
|
return @fallback_type_caster if instance_variable_defined?(:@fallback_type_caster)
|
252
252
|
|
253
|
-
@fallback_type_caster = if superclass <
|
253
|
+
@fallback_type_caster = if superclass < Runger::Config
|
254
254
|
superclass.fallback_type_caster.deep_dup
|
255
255
|
else
|
256
|
-
::
|
256
|
+
::Runger::AutoCast
|
257
257
|
end
|
258
258
|
end
|
259
259
|
|
260
260
|
def disable_auto_cast!
|
261
|
-
@fallback_type_caster = ::
|
261
|
+
@fallback_type_caster = ::Runger::NoCast
|
262
262
|
end
|
263
263
|
|
264
264
|
private
|
@@ -317,10 +317,10 @@ module Anyway # :nodoc:
|
|
317
317
|
#
|
318
318
|
# Example:
|
319
319
|
#
|
320
|
-
# my_config =
|
320
|
+
# my_config = Runger::Config.new()
|
321
321
|
#
|
322
322
|
# # provide some values explicitly
|
323
|
-
# my_config =
|
323
|
+
# my_config = Runger::Config.new({some: :value})
|
324
324
|
#
|
325
325
|
def initialize(overrides = nil)
|
326
326
|
@config_name = self.class.config_name
|
@@ -386,7 +386,7 @@ module Anyway # :nodoc:
|
|
386
386
|
end
|
387
387
|
|
388
388
|
def load_from_sources(base_config, **)
|
389
|
-
|
389
|
+
Runger.loaders.each do |(_id, loader)|
|
390
390
|
Utils.deep_merge!(base_config, loader.call(**))
|
391
391
|
end
|
392
392
|
base_config
|
@@ -406,7 +406,7 @@ module Anyway # :nodoc:
|
|
406
406
|
end
|
407
407
|
|
408
408
|
def resolve_config_path(name, env_prefix)
|
409
|
-
|
409
|
+
Runger.env.fetch(env_prefix).delete("conf") || Settings.default_config_path.call(name)
|
410
410
|
end
|
411
411
|
|
412
412
|
def deconstruct_keys(keys) = values.deconstruct_keys(keys)
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
module
|
3
|
+
module Runger
|
4
4
|
# Adds ability to generate anonymous (class-less) config dynamicly
|
5
5
|
# (like Rails.application.config_for but using more data sources).
|
6
6
|
module DynamicConfig
|
@@ -9,7 +9,7 @@ module Anyway
|
|
9
9
|
#
|
10
10
|
# Example:
|
11
11
|
#
|
12
|
-
# my_config =
|
12
|
+
# my_config = Runger::Config.for(:my_app)
|
13
13
|
# # will load data from config/my_app.yml, secrets.my_app, ENV["MY_APP_*"]
|
14
14
|
#
|
15
15
|
def for(name, auto_cast: true, **options)
|
@@ -1,11 +1,11 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
module
|
3
|
+
module Runger
|
4
4
|
# Parses environment variables and provides
|
5
5
|
# method-like access
|
6
6
|
class Env
|
7
|
-
using
|
8
|
-
using
|
7
|
+
using Runger::Ext::DeepDup
|
8
|
+
using Runger::Ext::Hash
|
9
9
|
|
10
10
|
class << self
|
11
11
|
def from_hash(hash, prefix: nil, memo: {})
|
@@ -1,12 +1,12 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
module
|
3
|
+
module Runger
|
4
4
|
module Loaders
|
5
5
|
class Base
|
6
6
|
include Tracing
|
7
7
|
|
8
8
|
class << self
|
9
|
-
def call(local:
|
9
|
+
def call(local: Runger::Settings.use_local_files, **)
|
10
10
|
new(local:).call(**)
|
11
11
|
end
|
12
12
|
end
|
@@ -4,7 +4,7 @@ require "uri"
|
|
4
4
|
require "net/http"
|
5
5
|
require "json"
|
6
6
|
|
7
|
-
module
|
7
|
+
module Runger
|
8
8
|
module Loaders
|
9
9
|
class Doppler < Base
|
10
10
|
class RequestError < StandardError; end
|
@@ -23,7 +23,7 @@ module Anyway
|
|
23
23
|
def call(env_prefix:, **_options)
|
24
24
|
env_payload = parse_doppler_response(url: Doppler.download_url, token: Doppler.token)
|
25
25
|
|
26
|
-
env = ::
|
26
|
+
env = ::Runger::Env.new(type_cast: ::Runger::NoCast, env_container: env_payload)
|
27
27
|
|
28
28
|
env.fetch_with_trace(env_prefix).then do |(conf, trace)|
|
29
29
|
Tracing.current_trace&.merge!(trace)
|
@@ -1,8 +1,8 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require "
|
3
|
+
require "runger/ejson_parser"
|
4
4
|
|
5
|
-
module
|
5
|
+
module Runger
|
6
6
|
module Loaders
|
7
7
|
class EJSON < Base
|
8
8
|
class << self
|
@@ -11,7 +11,7 @@ module Anyway
|
|
11
11
|
|
12
12
|
self.bin_path = "ejson"
|
13
13
|
|
14
|
-
def call(name:, ejson_namespace: name, ejson_parser:
|
14
|
+
def call(name:, ejson_namespace: name, ejson_parser: Runger::EJSONParser.new(EJSON.bin_path), **_options)
|
15
15
|
configs = []
|
16
16
|
|
17
17
|
rel_config_paths.each do |rel_config_path|
|
@@ -1,10 +1,10 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
module
|
3
|
+
module Runger
|
4
4
|
module Loaders
|
5
5
|
class Env < Base
|
6
6
|
def call(env_prefix:, **_options)
|
7
|
-
env = ::
|
7
|
+
env = ::Runger::Env.new(type_cast: ::Runger::NoCast)
|
8
8
|
|
9
9
|
env.fetch_with_trace(env_prefix).then do |(conf, trace)|
|
10
10
|
Tracing.current_trace&.merge!(trace)
|
@@ -1,11 +1,11 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require "pathname"
|
4
|
-
require "
|
4
|
+
require "runger/ext/hash"
|
5
5
|
|
6
|
-
using
|
6
|
+
using Runger::Ext::Hash
|
7
7
|
|
8
|
-
module
|
8
|
+
module Runger
|
9
9
|
module Loaders
|
10
10
|
class YAML < Base
|
11
11
|
def call(config_path:, **_options)
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
module
|
3
|
+
module Runger
|
4
4
|
module Loaders
|
5
5
|
class Registry
|
6
6
|
attr_reader :registry
|
@@ -70,8 +70,8 @@ module Anyway
|
|
70
70
|
end
|
71
71
|
end
|
72
72
|
|
73
|
-
require "
|
74
|
-
require "
|
75
|
-
require "
|
76
|
-
require "
|
77
|
-
require "
|
73
|
+
require "runger/loaders/base"
|
74
|
+
require "runger/loaders/yaml"
|
75
|
+
require "runger/loaders/env"
|
76
|
+
require "runger/loaders/doppler"
|
77
|
+
require "runger/loaders/ejson"
|
@@ -1,11 +1,11 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require "
|
3
|
+
require "runger/option_parser_builder"
|
4
4
|
|
5
|
-
require "
|
5
|
+
require "runger/ext/deep_dup"
|
6
6
|
|
7
|
-
module
|
8
|
-
using
|
7
|
+
module Runger
|
8
|
+
using Runger::Ext::DeepDup
|
9
9
|
|
10
10
|
# Adds ability to use script options as the source
|
11
11
|
# of configuration (via optparse)
|
@@ -50,7 +50,7 @@ module Anyway
|
|
50
50
|
return @option_parser_extensions if instance_variable_defined?(:@option_parser_extensions)
|
51
51
|
|
52
52
|
@option_parser_extensions =
|
53
|
-
if superclass <
|
53
|
+
if superclass < Runger::Config
|
54
54
|
superclass.option_parser_extensions.dup
|
55
55
|
else
|
56
56
|
[]
|
@@ -61,7 +61,7 @@ module Anyway
|
|
61
61
|
return @option_parser_descriptors if instance_variable_defined?(:@option_parser_descriptors)
|
62
62
|
|
63
63
|
@option_parser_descriptors =
|
64
|
-
if superclass <
|
64
|
+
if superclass < Runger::Config
|
65
65
|
superclass.option_parser_descriptors.deep_dup
|
66
66
|
else
|
67
67
|
Hash.new { |h, k| h[k] = {} }
|
@@ -1,8 +1,8 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
# This module is used to detect a Rails application and activate the corresponding plugins
|
4
|
-
# when
|
5
|
-
module
|
4
|
+
# when Runger Config is loaded before Rails (e.g., in config/puma.rb).
|
5
|
+
module Runger
|
6
6
|
module Rails
|
7
7
|
class << self
|
8
8
|
attr_reader :tracer, :name_method
|
@@ -15,17 +15,17 @@ module Anyway
|
|
15
15
|
return if event.self.singleton_class?
|
16
16
|
|
17
17
|
# We wait till `rails/application/configuration.rb` has been loaded, since we rely on it
|
18
|
-
# See https://github.com/palkan/
|
18
|
+
# See https://github.com/palkan/runger_config/issues/134
|
19
19
|
return unless name_method.bind_call(event.self) == "Rails::Application::Configuration"
|
20
20
|
|
21
21
|
tracer.disable
|
22
22
|
|
23
23
|
unless disable_postponed_load_warning
|
24
|
-
warn "
|
24
|
+
warn "Runger Config was loaded before Rails. Activating Runger Config Rails plugins now.\n" \
|
25
25
|
"NOTE: Already loaded configs were provisioned without Rails-specific sources."
|
26
26
|
end
|
27
27
|
|
28
|
-
require "
|
28
|
+
require "runger/rails"
|
29
29
|
end
|
30
30
|
end
|
31
31
|
|
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
require "active_support/core_ext/hash/indifferent_access"
|
4
4
|
|
5
|
-
module
|
5
|
+
module Runger
|
6
6
|
module Rails
|
7
7
|
# Enhance config to be more Railsy-like:
|
8
8
|
# – accept hashes with indeferent access
|
@@ -19,5 +19,5 @@ module Anyway
|
|
19
19
|
end
|
20
20
|
end
|
21
21
|
|
22
|
-
|
23
|
-
|
22
|
+
Runger::Config.prepend Runger::Rails::Config
|
23
|
+
Runger::Config.singleton_class.prepend Runger::Rails::Config::ClassMethods
|
@@ -1,9 +1,9 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
module
|
3
|
+
module Runger
|
4
4
|
module Rails
|
5
5
|
module Loaders
|
6
|
-
class Credentials <
|
6
|
+
class Credentials < Runger::Loaders::Base
|
7
7
|
LOCAL_CONTENT_PATH = "config/credentials/local.yml.enc"
|
8
8
|
|
9
9
|
def call(name:, **_options)
|
@@ -1,9 +1,9 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
module
|
3
|
+
module Runger
|
4
4
|
module Rails
|
5
5
|
module Loaders
|
6
|
-
class Secrets <
|
6
|
+
class Secrets < Runger::Loaders::Base
|
7
7
|
def call(name:, **_options)
|
8
8
|
return {} unless ::Rails.application.respond_to?(:secrets)
|
9
9
|
|
@@ -24,7 +24,7 @@ module Anyway
|
|
24
24
|
def secrets
|
25
25
|
@secrets ||= ::Rails.application.secrets.tap do |_|
|
26
26
|
# Reset secrets state if the app hasn't been initialized
|
27
|
-
# See https://github.com/palkan/
|
27
|
+
# See https://github.com/palkan/runger_config/issues/14
|
28
28
|
next if ::Rails.application.initialized?
|
29
29
|
::Rails.application.remove_instance_variable(:@secrets)
|
30
30
|
end
|
@@ -7,7 +7,7 @@ begin
|
|
7
7
|
rescue LoadError
|
8
8
|
end
|
9
9
|
|
10
|
-
module
|
10
|
+
module Runger
|
11
11
|
class Settings
|
12
12
|
class << self
|
13
13
|
attr_reader :autoload_static_config_path, :autoloader
|
@@ -28,7 +28,7 @@ module Anyway
|
|
28
28
|
# See Rails 6 https://github.com/rails/rails/blob/8ab4fd12f18203b83d0f252db96d10731485ff6a/railties/lib/rails/autoloaders.rb#L10
|
29
29
|
# and Rails 7 https://github.com/rails/rails/blob/5462fbd5de1900c1b1ce1c9dc11c1a2d8cdcd809/railties/lib/rails/autoloaders.rb#L15
|
30
30
|
@autoloader = Zeitwerk::Loader.new.tap do |loader|
|
31
|
-
loader.tag = "
|
31
|
+
loader.tag = "runger.config"
|
32
32
|
|
33
33
|
if defined?(ActiveSupport::Dependencies::ZeitwerkIntegration::Inflector)
|
34
34
|
loader.inflector = ActiveSupport::Dependencies::ZeitwerkIntegration::Inflector
|
data/lib/runger/rails.rb
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Runger
|
4
|
+
module Rails
|
5
|
+
end
|
6
|
+
end
|
7
|
+
|
8
|
+
require "runger/rails/settings"
|
9
|
+
require "runger/rails/config"
|
10
|
+
require "runger/rails/loaders"
|
11
|
+
|
12
|
+
# Configure Rails loaders
|
13
|
+
Runger.loaders.override :yml, Runger::Rails::Loaders::YAML
|
14
|
+
|
15
|
+
if Rails::VERSION::MAJOR >= 7 && Rails::VERSION::MINOR >= 1
|
16
|
+
Runger.loaders.insert_after :yml, :credentials, Runger::Rails::Loaders::Credentials
|
17
|
+
else
|
18
|
+
Runger.loaders.insert_after :yml, :secrets, Runger::Rails::Loaders::Secrets
|
19
|
+
Runger.loaders.insert_after :secrets, :credentials, Runger::Rails::Loaders::Credentials
|
20
|
+
end
|
21
|
+
|
22
|
+
# Load Railties after configuring loaders.
|
23
|
+
# The application could be already initialized, and that would make `Runger.loaders` frozen
|
24
|
+
require "runger/railtie"
|
@@ -1,28 +1,28 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
module
|
3
|
+
module Runger # :nodoc:
|
4
4
|
DEFAULT_CONFIGS_PATH = "config/configs"
|
5
5
|
|
6
6
|
class Railtie < ::Rails::Railtie # :nodoc:
|
7
7
|
# Add settings to Rails config
|
8
|
-
config.
|
8
|
+
config.runger_config = Runger::Settings
|
9
9
|
|
10
10
|
config.before_configuration do
|
11
11
|
next if ::Rails.application.initialized?
|
12
|
-
config.
|
12
|
+
config.runger_config.autoload_static_config_path = DEFAULT_CONFIGS_PATH
|
13
13
|
end
|
14
14
|
|
15
15
|
config.before_eager_load do
|
16
|
-
|
16
|
+
Runger::Settings.autoloader&.eager_load
|
17
17
|
end
|
18
18
|
|
19
19
|
# Remove `autoload_static_config_path` from Rails `autoload_paths`
|
20
20
|
# since we use our own autoloading mechanism
|
21
|
-
initializer "
|
22
|
-
|
21
|
+
initializer "runger_config.cleanup_autoload" do
|
22
|
+
Runger::Settings.cleanup_autoload_paths
|
23
23
|
end
|
24
24
|
|
25
25
|
# Make sure loaders are not changed in runtime
|
26
|
-
config.after_initialize {
|
26
|
+
config.after_initialize { Runger.loaders.freeze }
|
27
27
|
end
|
28
28
|
end
|
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
require "pathname"
|
4
4
|
|
5
|
-
module
|
5
|
+
module Runger
|
6
6
|
# Use Settings name to not confuse with Config.
|
7
7
|
#
|
8
8
|
# Settings contain the library-wide configuration.
|
@@ -96,11 +96,11 @@ module Anyway
|
|
96
96
|
end
|
97
97
|
end
|
98
98
|
|
99
|
-
# By default, use
|
100
|
-
self.current_environment = ENV["
|
99
|
+
# By default, use RUNGER_ENV
|
100
|
+
self.current_environment = ENV["RUNGER_ENV"]
|
101
101
|
|
102
102
|
# By default, use local files only in development (that's the purpose if the local files)
|
103
|
-
self.use_local_files = (ENV["
|
103
|
+
self.use_local_files = (ENV["RUNGER_ENV"] == "development" || ENV["RACK_ENV"] == "development" || ENV["RAILS_ENV"] == "development" || (defined?(Rails) && Rails.env.development?))
|
104
104
|
|
105
105
|
# By default, consider configs are stored in the ./config folder
|
106
106
|
self.default_config_path = ->(name) { "./config/#{name}.yml" }
|
@@ -1,12 +1,12 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
module
|
3
|
+
module Runger
|
4
4
|
module Testing
|
5
5
|
module Helpers
|
6
6
|
# Sets the ENV variables to the provided
|
7
7
|
# values and restore outside the block
|
8
8
|
#
|
9
|
-
# Also resets
|
9
|
+
# Also resets Runger.env before and after calling the block
|
10
10
|
# to make sure that the values are not cached.
|
11
11
|
#
|
12
12
|
# NOTE: to remove the env value, pass `nil` as the value
|
@@ -20,7 +20,7 @@ module Anyway
|
|
20
20
|
end
|
21
21
|
|
22
22
|
# clear cached env values
|
23
|
-
|
23
|
+
Runger.env.clear
|
24
24
|
yield
|
25
25
|
ensure
|
26
26
|
was_values.each do |(key, val)|
|
@@ -29,7 +29,7 @@ module Anyway
|
|
29
29
|
end
|
30
30
|
|
31
31
|
# clear cache again
|
32
|
-
|
32
|
+
Runger.env.clear
|
33
33
|
end
|
34
34
|
end
|
35
35
|
end
|
@@ -1,11 +1,11 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require "
|
3
|
+
require "runger/testing/helpers"
|
4
4
|
|
5
5
|
if defined?(RSpec::Core) && RSpec.respond_to?(:configure)
|
6
6
|
RSpec.configure do |config|
|
7
7
|
config.include(
|
8
|
-
|
8
|
+
Runger::Testing::Helpers,
|
9
9
|
type: :config,
|
10
10
|
file_path: %r{spec/configs}
|
11
11
|
)
|