config 1.7.1 → 2.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +108 -30
- data/CONTRIBUTING.md +32 -0
- data/README.md +103 -68
- data/config.gemspec +30 -33
- data/lib/config.rb +37 -37
- data/lib/config/configuration.rb +36 -0
- data/lib/config/integrations/rails/railtie.rb +1 -1
- data/lib/config/options.rb +15 -8
- data/lib/config/validation/error.rb +3 -14
- data/lib/config/validation/schema.rb +8 -9
- data/lib/config/validation/validate.rb +13 -8
- data/lib/config/version.rb +1 -1
- data/lib/generators/config/templates/config.rb +6 -1
- metadata +60 -121
- data/lib/config/integrations/rails/engine.rb +0 -9
- data/spec/app/rails_5.1/README.md +0 -24
- data/spec/app/rails_5.2/README.md +0 -24
- data/spec/app/rails_5/README.md +0 -24
data/config.gemspec
CHANGED
@@ -7,51 +7,48 @@ Gem::Specification.new do |s|
|
|
7
7
|
s.version = Config::VERSION
|
8
8
|
s.date = Time.now.strftime '%F'
|
9
9
|
s.authors = ['Piotr Kuczynski', 'Fred Wu', 'Jacques Crocker']
|
10
|
-
s.email = %w
|
10
|
+
s.email = %w[piotr.kuczynski@gmail.com ifredwu@gmail.com railsjedi@gmail.com]
|
11
11
|
s.summary = 'Effortless multi-environment settings in Rails, Sinatra, Pandrino and others'
|
12
12
|
s.description = 'Easiest way to manage multi-environment settings in any ruby project or framework: ' +
|
13
13
|
'Rails, Sinatra, Pandrino and others'
|
14
|
-
s.homepage = 'https://github.com/
|
14
|
+
s.homepage = 'https://github.com/rubyconfig/config'
|
15
15
|
s.license = 'MIT'
|
16
|
-
s.extra_rdoc_files = %w
|
16
|
+
s.extra_rdoc_files = %w[README.md CHANGELOG.md CONTRIBUTING.md LICENSE.md]
|
17
17
|
s.rdoc_options = ['--charset=UTF-8']
|
18
|
+
s.post_install_message = "\n\e[33mThanks for installing Config\e[0m
|
19
|
+
Please consider donating to our open collective to help us maintain this project.
|
20
|
+
\n
|
21
|
+
Donate: \e[34mhttps://opencollective.com/rubyconfig/donate\e[0m\n"
|
18
22
|
|
19
23
|
s.files = `git ls-files`.split($/)
|
20
|
-
s.files.select! { |file| /(^lib
|
21
|
-
s.files += Dir.glob('doc/**/*')
|
24
|
+
s.files.select! { |file| /(^lib\/|^\w+.md$|\.gemspec$)/ =~ file }
|
22
25
|
|
23
26
|
s.require_paths = ['lib']
|
24
|
-
s.required_ruby_version = '>= 2.
|
27
|
+
s.required_ruby_version = '>= 2.4.0'
|
25
28
|
|
26
|
-
s.add_dependency '
|
27
|
-
s.add_dependency '
|
29
|
+
s.add_dependency 'deep_merge', '~> 1.2', '>= 1.2.1'
|
30
|
+
s.add_dependency 'dry-validation', '~> 1.0', '>= 1.0.0'
|
28
31
|
|
29
|
-
s.
|
30
|
-
s.add_dependency 'dry-validation', '>= 0.12.2' if RUBY_VERSION >= '2.2'
|
31
|
-
|
32
|
-
s.add_development_dependency 'bundler', '~> 1.13', '>= 1.13.6'
|
33
|
-
s.add_development_dependency 'rake', '~> 12.0', '>= 12.0.0'
|
32
|
+
s.add_development_dependency 'rake', '~> 12.0', '>= 12.0.0'
|
34
33
|
|
35
34
|
# Testing
|
36
|
-
s.add_development_dependency 'appraisal',
|
37
|
-
s.add_development_dependency '
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
s.add_development_dependency 'codeclimate-test-reporter', '~> 1.0.9'
|
55
|
-
s.add_development_dependency 'simplecov', '~> 0.13.0'
|
35
|
+
s.add_development_dependency 'appraisal', '~> 2.3', '>= 2.3.0'
|
36
|
+
s.add_development_dependency 'rspec', '~> 3.9', '>= 3.9.0'
|
37
|
+
|
38
|
+
# Default RSpec run will test against latest Rails app
|
39
|
+
unless ENV['APPRAISAL_INITIALIZED'] || ENV['GITHUB_ACTIONS']
|
40
|
+
gems_to_install = /gem "(.*?)", "(.*?)"(?!, platform: (?!\[:ruby\]))/
|
41
|
+
File.read(Dir['gemfiles/rails*.gemfile'].sort.last).scan(gems_to_install) do |name, version|
|
42
|
+
s.add_development_dependency name, version
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
if ENV['GITHUB_ACTIONS']
|
47
|
+
# Code coverage is needed only in CI
|
48
|
+
s.add_development_dependency 'simplecov', '~> 0.18.5' if RUBY_ENGINE == 'ruby'
|
49
|
+
else
|
50
|
+
# Static code analysis to be used locally
|
51
|
+
s.add_development_dependency 'mdl', '~> 0.9', '>= 0.9.0'
|
52
|
+
s.add_development_dependency 'rubocop', '~> 0.85.0'
|
56
53
|
end
|
57
54
|
end
|
data/lib/config.rb
CHANGED
@@ -1,39 +1,34 @@
|
|
1
|
-
require 'active_support/core_ext/module/attribute_accessors'
|
2
|
-
|
3
1
|
require 'config/compatibility'
|
4
2
|
require 'config/options'
|
3
|
+
require 'config/configuration'
|
5
4
|
require 'config/version'
|
6
|
-
require 'config/integrations/rails/engine' if defined?(::Rails)
|
7
5
|
require 'config/sources/yaml_source'
|
8
6
|
require 'config/sources/hash_source'
|
9
|
-
require 'config/validation/schema'
|
7
|
+
require 'config/validation/schema'
|
10
8
|
require 'deep_merge'
|
11
9
|
|
12
10
|
module Config
|
13
|
-
extend Config::Validation::Schema
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
@@knockout_prefix = nil
|
31
|
-
@@merge_nil_values = true
|
32
|
-
@@overwrite_arrays = true
|
11
|
+
extend Config::Validation::Schema
|
12
|
+
extend Config::Configuration.new(
|
13
|
+
# general options
|
14
|
+
const_name: 'Settings',
|
15
|
+
use_env: false,
|
16
|
+
env_prefix: 'Settings',
|
17
|
+
env_separator: '.',
|
18
|
+
env_converter: :downcase,
|
19
|
+
env_parse_values: true,
|
20
|
+
fail_on_missing: false,
|
21
|
+
# deep_merge options
|
22
|
+
knockout_prefix: nil,
|
23
|
+
merge_nil_values: true,
|
24
|
+
overwrite_arrays: true,
|
25
|
+
merge_hash_arrays: false,
|
26
|
+
validation_contract: nil
|
27
|
+
)
|
33
28
|
|
34
29
|
def self.setup
|
35
|
-
yield self
|
36
|
-
|
30
|
+
yield self unless @_ran_once
|
31
|
+
@_ran_once = true
|
37
32
|
end
|
38
33
|
|
39
34
|
# Create a populated Options instance from a settings file. If a second file is given, then the sections of that
|
@@ -47,30 +42,35 @@ module Config
|
|
47
42
|
end
|
48
43
|
|
49
44
|
config.load!
|
50
|
-
config.load_env! if @@use_env
|
51
45
|
config
|
52
46
|
end
|
53
47
|
|
54
48
|
# Loads and sets the settings constant!
|
55
49
|
def self.load_and_set_settings(*files)
|
56
|
-
|
57
|
-
|
50
|
+
name = Config.const_name
|
51
|
+
Object.send(:remove_const, name) if Object.const_defined?(name)
|
52
|
+
Object.const_set(name, Config.load_files(files))
|
58
53
|
end
|
59
54
|
|
60
55
|
def self.setting_files(config_root, env)
|
61
56
|
[
|
62
|
-
File.join(config_root,
|
63
|
-
File.join(config_root,
|
64
|
-
File.join(config_root,
|
65
|
-
|
66
|
-
File.join(config_root, "settings.local.yml").to_s,
|
67
|
-
File.join(config_root, "settings", "#{env}.local.yml").to_s,
|
68
|
-
File.join(config_root, "environments", "#{env}.local.yml").to_s
|
57
|
+
File.join(config_root, 'settings.yml').to_s,
|
58
|
+
File.join(config_root, 'settings', "#{env}.yml").to_s,
|
59
|
+
File.join(config_root, 'environments', "#{env}.yml").to_s,
|
60
|
+
*local_setting_files(config_root, env)
|
69
61
|
].freeze
|
70
62
|
end
|
71
63
|
|
64
|
+
def self.local_setting_files(config_root, env)
|
65
|
+
[
|
66
|
+
(File.join(config_root, 'settings.local.yml').to_s if env != 'test'),
|
67
|
+
File.join(config_root, 'settings', "#{env}.local.yml").to_s,
|
68
|
+
File.join(config_root, 'environments', "#{env}.local.yml").to_s
|
69
|
+
].compact
|
70
|
+
end
|
71
|
+
|
72
72
|
def self.reload!
|
73
|
-
|
73
|
+
Object.const_get(Config.const_name).reload!
|
74
74
|
end
|
75
75
|
end
|
76
76
|
|
@@ -0,0 +1,36 @@
|
|
1
|
+
module Config
|
2
|
+
# The main configuration backbone
|
3
|
+
class Configuration < Module
|
4
|
+
# Accepts configuration options,
|
5
|
+
# initializing a module that can be used to extend
|
6
|
+
# the necessary class with the provided config methods
|
7
|
+
def initialize(**attributes)
|
8
|
+
attributes.each do |name, default|
|
9
|
+
define_reader(name, default)
|
10
|
+
define_writer(name)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
private
|
15
|
+
|
16
|
+
def define_reader(name, default)
|
17
|
+
variable = :"@#{name}"
|
18
|
+
|
19
|
+
define_method(name) do
|
20
|
+
if instance_variable_defined?(variable)
|
21
|
+
instance_variable_get(variable)
|
22
|
+
else
|
23
|
+
default
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
def define_writer(name)
|
29
|
+
variable = :"@#{name}"
|
30
|
+
|
31
|
+
define_method("#{name}=") do |value|
|
32
|
+
instance_variable_set(variable, value)
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
@@ -23,7 +23,7 @@ module Config
|
|
23
23
|
# Development environment should reload settings on every request
|
24
24
|
if ::Rails.env.development?
|
25
25
|
initializer :config_reload_on_development do
|
26
|
-
|
26
|
+
ActiveSupport.on_load :action_controller_base do
|
27
27
|
if ::Rails::VERSION::MAJOR >= 4
|
28
28
|
prepend_before_action { ::Config.reload! }
|
29
29
|
else
|
data/lib/config/options.rb
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
require 'ostruct'
|
2
|
-
require 'config/validation/validate'
|
2
|
+
require 'config/validation/validate'
|
3
3
|
|
4
4
|
module Config
|
5
5
|
class Options < OpenStruct
|
6
6
|
include Enumerable
|
7
|
-
include Validation::Validate
|
7
|
+
include Validation::Validate
|
8
8
|
|
9
9
|
def keys
|
10
10
|
marshal_dump.keys
|
@@ -82,7 +82,8 @@ module Config
|
|
82
82
|
preserve_unmergeables: false,
|
83
83
|
knockout_prefix: Config.knockout_prefix,
|
84
84
|
overwrite_arrays: Config.overwrite_arrays,
|
85
|
-
merge_nil_values: Config.merge_nil_values
|
85
|
+
merge_nil_values: Config.merge_nil_values,
|
86
|
+
merge_hash_arrays: Config.merge_hash_arrays
|
86
87
|
)
|
87
88
|
end
|
88
89
|
end
|
@@ -91,7 +92,7 @@ module Config
|
|
91
92
|
marshal_load(__convert(conf).marshal_dump)
|
92
93
|
|
93
94
|
reload_env! if Config.use_env
|
94
|
-
validate!
|
95
|
+
validate!
|
95
96
|
|
96
97
|
self
|
97
98
|
end
|
@@ -117,6 +118,8 @@ module Config
|
|
117
118
|
result
|
118
119
|
end
|
119
120
|
|
121
|
+
alias :to_h :to_hash
|
122
|
+
|
120
123
|
def each(*args, &block)
|
121
124
|
marshal_dump.each(*args, &block)
|
122
125
|
end
|
@@ -126,6 +129,10 @@ module Config
|
|
126
129
|
to_hash.to_json(*args)
|
127
130
|
end
|
128
131
|
|
132
|
+
def as_json(options = nil)
|
133
|
+
to_hash.as_json(options)
|
134
|
+
end
|
135
|
+
|
129
136
|
def merge!(hash)
|
130
137
|
current = to_hash
|
131
138
|
DeepMerge.deep_merge!(
|
@@ -134,14 +141,15 @@ module Config
|
|
134
141
|
preserve_unmergeables: false,
|
135
142
|
knockout_prefix: Config.knockout_prefix,
|
136
143
|
overwrite_arrays: Config.overwrite_arrays,
|
137
|
-
merge_nil_values: Config.merge_nil_values
|
144
|
+
merge_nil_values: Config.merge_nil_values,
|
145
|
+
merge_hash_arrays: Config.merge_hash_arrays
|
138
146
|
)
|
139
147
|
marshal_load(__convert(current).marshal_dump)
|
140
148
|
self
|
141
149
|
end
|
142
150
|
|
143
151
|
# Some keywords that don't play nicely with OpenStruct
|
144
|
-
SETTINGS_RESERVED_NAMES = %w[select collect test count zip].freeze
|
152
|
+
SETTINGS_RESERVED_NAMES = %w[select collect test count zip min max exit!].freeze
|
145
153
|
|
146
154
|
# An alternative mechanism for property access.
|
147
155
|
# This let's you do foo['bar'] along with foo.bar.
|
@@ -199,7 +207,6 @@ module Config
|
|
199
207
|
|
200
208
|
h.each do |k, v|
|
201
209
|
k = k.to_s if !k.respond_to?(:to_sym) && k.respond_to?(:to_s)
|
202
|
-
s.new_ostruct_member(k)
|
203
210
|
|
204
211
|
if v.is_a?(Hash)
|
205
212
|
v = v["type"] == "hash" ? v["contents"] : __convert(v)
|
@@ -207,7 +214,7 @@ module Config
|
|
207
214
|
v = v.collect { |e| e.instance_of?(Hash) ? __convert(e) : e }
|
208
215
|
end
|
209
216
|
|
210
|
-
s
|
217
|
+
s[k] = v
|
211
218
|
end
|
212
219
|
s
|
213
220
|
end
|
@@ -3,20 +3,9 @@ module Config
|
|
3
3
|
class Error < StandardError
|
4
4
|
|
5
5
|
def self.format(v_res)
|
6
|
-
|
7
|
-
"#{' ' * 2}#{
|
8
|
-
end.join(
|
9
|
-
end
|
10
|
-
|
11
|
-
def self.flatten_hash(h, acc={}, pref=[])
|
12
|
-
h.inject(acc) do |a, (k, v)|
|
13
|
-
if v.is_a?(Hash)
|
14
|
-
flatten_hash(v, acc, pref + [k])
|
15
|
-
else
|
16
|
-
acc[(pref + [k]).join('.')] = v
|
17
|
-
acc
|
18
|
-
end
|
19
|
-
end
|
6
|
+
v_res.errors.group_by(&:path).map do |path, messages|
|
7
|
+
"#{' ' * 2}#{path.join('.')}: #{messages.map(&:text).join('; ')}"
|
8
|
+
end.join("\n")
|
20
9
|
end
|
21
10
|
|
22
11
|
end
|
@@ -1,21 +1,20 @@
|
|
1
|
-
require 'dry-validation'
|
2
|
-
require 'config/validation/schema'
|
3
|
-
|
4
1
|
module Config
|
5
2
|
module Validation
|
6
3
|
module Schema
|
7
|
-
|
8
|
-
|
9
|
-
|
4
|
+
# Assigns schema configuration option
|
5
|
+
def schema=(value)
|
6
|
+
@schema = value
|
7
|
+
end
|
10
8
|
|
11
9
|
def schema(&block)
|
12
10
|
if block_given?
|
13
|
-
|
11
|
+
# Delay require until optional schema validation is requested
|
12
|
+
require 'dry-validation'
|
13
|
+
@schema = Dry::Schema.define(&block)
|
14
14
|
else
|
15
|
-
|
15
|
+
@schema
|
16
16
|
end
|
17
17
|
end
|
18
|
-
|
19
18
|
end
|
20
19
|
end
|
21
20
|
end
|
@@ -3,18 +3,23 @@ require 'config/validation/error'
|
|
3
3
|
module Config
|
4
4
|
module Validation
|
5
5
|
module Validate
|
6
|
-
|
7
6
|
def validate!
|
8
|
-
|
9
|
-
|
7
|
+
validate_using!(Config.validation_contract)
|
8
|
+
validate_using!(Config.schema)
|
9
|
+
end
|
10
|
+
|
11
|
+
private
|
10
12
|
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
13
|
+
def validate_using!(validator)
|
14
|
+
if validator
|
15
|
+
result = validator.call(to_hash)
|
16
|
+
|
17
|
+
return if result.success?
|
18
|
+
|
19
|
+
error = Config::Validation::Error.format(result)
|
20
|
+
raise Config::Validation::Error, "Config validation failed:\n\n#{error}"
|
15
21
|
end
|
16
22
|
end
|
17
|
-
|
18
23
|
end
|
19
24
|
end
|
20
25
|
end
|
data/lib/config/version.rb
CHANGED
@@ -21,7 +21,12 @@ Config.setup do |config|
|
|
21
21
|
|
22
22
|
# Define ENV variable prefix deciding which variables to load into config.
|
23
23
|
#
|
24
|
-
#
|
24
|
+
# Reading variables from ENV is case-sensitive. If you define lowercase value below, ensure your ENV variables are
|
25
|
+
# prefixed in the same way.
|
26
|
+
#
|
27
|
+
# When not set it defaults to `config.const_name`.
|
28
|
+
#
|
29
|
+
config.env_prefix = 'SETTINGS'
|
25
30
|
|
26
31
|
# What string to use as level separator for settings loaded from ENV variables. Default value of '.' works well
|
27
32
|
# with Heroku, but you might want to change it for example for '__' to easy override settings from command line, where
|
metadata
CHANGED
@@ -1,36 +1,25 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: config
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.2.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Piotr Kuczynski
|
8
8
|
- Fred Wu
|
9
9
|
- Jacques Crocker
|
10
|
-
autorequire:
|
10
|
+
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date:
|
13
|
+
date: 2020-12-08 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
|
-
- !ruby/object:Gem::Dependency
|
16
|
-
name: activesupport
|
17
|
-
requirement: !ruby/object:Gem::Requirement
|
18
|
-
requirements:
|
19
|
-
- - ">="
|
20
|
-
- !ruby/object:Gem::Version
|
21
|
-
version: '3.0'
|
22
|
-
type: :runtime
|
23
|
-
prerelease: false
|
24
|
-
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
requirements:
|
26
|
-
- - ">="
|
27
|
-
- !ruby/object:Gem::Version
|
28
|
-
version: '3.0'
|
29
15
|
- !ruby/object:Gem::Dependency
|
30
16
|
name: deep_merge
|
31
17
|
requirement: !ruby/object:Gem::Requirement
|
32
18
|
requirements:
|
33
19
|
- - "~>"
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '1.2'
|
22
|
+
- - ">="
|
34
23
|
- !ruby/object:Gem::Version
|
35
24
|
version: 1.2.1
|
36
25
|
type: :runtime
|
@@ -39,215 +28,166 @@ dependencies:
|
|
39
28
|
requirements:
|
40
29
|
- - "~>"
|
41
30
|
- !ruby/object:Gem::Version
|
42
|
-
version: 1.2
|
43
|
-
- !ruby/object:Gem::Dependency
|
44
|
-
name: dry-validation
|
45
|
-
requirement: !ruby/object:Gem::Requirement
|
46
|
-
requirements:
|
47
|
-
- - ">="
|
48
|
-
- !ruby/object:Gem::Version
|
49
|
-
version: 0.12.2
|
50
|
-
type: :runtime
|
51
|
-
prerelease: false
|
52
|
-
version_requirements: !ruby/object:Gem::Requirement
|
53
|
-
requirements:
|
31
|
+
version: '1.2'
|
54
32
|
- - ">="
|
55
33
|
- !ruby/object:Gem::Version
|
56
|
-
version:
|
34
|
+
version: 1.2.1
|
57
35
|
- !ruby/object:Gem::Dependency
|
58
|
-
name:
|
36
|
+
name: dry-validation
|
59
37
|
requirement: !ruby/object:Gem::Requirement
|
60
38
|
requirements:
|
61
39
|
- - "~>"
|
62
40
|
- !ruby/object:Gem::Version
|
63
|
-
version: '1.
|
41
|
+
version: '1.0'
|
64
42
|
- - ">="
|
65
43
|
- !ruby/object:Gem::Version
|
66
|
-
version: 1.
|
67
|
-
type: :
|
44
|
+
version: 1.0.0
|
45
|
+
type: :runtime
|
68
46
|
prerelease: false
|
69
47
|
version_requirements: !ruby/object:Gem::Requirement
|
70
48
|
requirements:
|
71
49
|
- - "~>"
|
72
50
|
- !ruby/object:Gem::Version
|
73
|
-
version: '1.
|
51
|
+
version: '1.0'
|
74
52
|
- - ">="
|
75
53
|
- !ruby/object:Gem::Version
|
76
|
-
version: 1.
|
54
|
+
version: 1.0.0
|
77
55
|
- !ruby/object:Gem::Dependency
|
78
56
|
name: rake
|
79
57
|
requirement: !ruby/object:Gem::Requirement
|
80
58
|
requirements:
|
81
|
-
- - ">="
|
82
|
-
- !ruby/object:Gem::Version
|
83
|
-
version: 12.0.0
|
84
59
|
- - "~>"
|
85
60
|
- !ruby/object:Gem::Version
|
86
61
|
version: '12.0'
|
62
|
+
- - ">="
|
63
|
+
- !ruby/object:Gem::Version
|
64
|
+
version: 12.0.0
|
87
65
|
type: :development
|
88
66
|
prerelease: false
|
89
67
|
version_requirements: !ruby/object:Gem::Requirement
|
90
68
|
requirements:
|
91
|
-
- - ">="
|
92
|
-
- !ruby/object:Gem::Version
|
93
|
-
version: 12.0.0
|
94
69
|
- - "~>"
|
95
70
|
- !ruby/object:Gem::Version
|
96
71
|
version: '12.0'
|
72
|
+
- - ">="
|
73
|
+
- !ruby/object:Gem::Version
|
74
|
+
version: 12.0.0
|
97
75
|
- !ruby/object:Gem::Dependency
|
98
76
|
name: appraisal
|
99
77
|
requirement: !ruby/object:Gem::Requirement
|
100
78
|
requirements:
|
101
|
-
- - ">="
|
102
|
-
- !ruby/object:Gem::Version
|
103
|
-
version: 2.2.0
|
104
79
|
- - "~>"
|
105
80
|
- !ruby/object:Gem::Version
|
106
|
-
version: '2.
|
81
|
+
version: '2.3'
|
82
|
+
- - ">="
|
83
|
+
- !ruby/object:Gem::Version
|
84
|
+
version: 2.3.0
|
107
85
|
type: :development
|
108
86
|
prerelease: false
|
109
87
|
version_requirements: !ruby/object:Gem::Requirement
|
110
88
|
requirements:
|
111
|
-
- - ">="
|
112
|
-
- !ruby/object:Gem::Version
|
113
|
-
version: 2.2.0
|
114
89
|
- - "~>"
|
115
90
|
- !ruby/object:Gem::Version
|
116
|
-
version: '2.
|
91
|
+
version: '2.3'
|
92
|
+
- - ">="
|
93
|
+
- !ruby/object:Gem::Version
|
94
|
+
version: 2.3.0
|
117
95
|
- !ruby/object:Gem::Dependency
|
118
|
-
name:
|
96
|
+
name: rspec
|
119
97
|
requirement: !ruby/object:Gem::Requirement
|
120
98
|
requirements:
|
121
99
|
- - "~>"
|
122
100
|
- !ruby/object:Gem::Version
|
123
|
-
version: '
|
101
|
+
version: '3.9'
|
124
102
|
- - ">="
|
125
103
|
- !ruby/object:Gem::Version
|
126
|
-
version:
|
104
|
+
version: 3.9.0
|
127
105
|
type: :development
|
128
106
|
prerelease: false
|
129
107
|
version_requirements: !ruby/object:Gem::Requirement
|
130
108
|
requirements:
|
131
109
|
- - "~>"
|
132
110
|
- !ruby/object:Gem::Version
|
133
|
-
version: '
|
111
|
+
version: '3.9'
|
134
112
|
- - ">="
|
135
113
|
- !ruby/object:Gem::Version
|
136
|
-
version:
|
114
|
+
version: 3.9.0
|
137
115
|
- !ruby/object:Gem::Dependency
|
138
|
-
name:
|
116
|
+
name: bootsnap
|
139
117
|
requirement: !ruby/object:Gem::Requirement
|
140
118
|
requirements:
|
141
|
-
- - ">="
|
142
|
-
- !ruby/object:Gem::Version
|
143
|
-
version: 3.7.0
|
144
119
|
- - "~>"
|
145
120
|
- !ruby/object:Gem::Version
|
146
|
-
version: '
|
121
|
+
version: '1.4'
|
147
122
|
type: :development
|
148
123
|
prerelease: false
|
149
124
|
version_requirements: !ruby/object:Gem::Requirement
|
150
125
|
requirements:
|
151
|
-
- - ">="
|
152
|
-
- !ruby/object:Gem::Version
|
153
|
-
version: 3.7.0
|
154
126
|
- - "~>"
|
155
127
|
- !ruby/object:Gem::Version
|
156
|
-
version: '
|
128
|
+
version: '1.4'
|
157
129
|
- !ruby/object:Gem::Dependency
|
158
|
-
name:
|
130
|
+
name: rails
|
159
131
|
requirement: !ruby/object:Gem::Requirement
|
160
132
|
requirements:
|
161
|
-
- -
|
162
|
-
- !ruby/object:Gem::Version
|
163
|
-
version: '3.7'
|
164
|
-
- - ">="
|
133
|
+
- - '='
|
165
134
|
- !ruby/object:Gem::Version
|
166
|
-
version: 3.
|
135
|
+
version: 6.0.3.1
|
167
136
|
type: :development
|
168
137
|
prerelease: false
|
169
138
|
version_requirements: !ruby/object:Gem::Requirement
|
170
139
|
requirements:
|
171
|
-
- -
|
140
|
+
- - '='
|
172
141
|
- !ruby/object:Gem::Version
|
173
|
-
version:
|
174
|
-
- - ">="
|
175
|
-
- !ruby/object:Gem::Version
|
176
|
-
version: 3.7.2
|
142
|
+
version: 6.0.3.1
|
177
143
|
- !ruby/object:Gem::Dependency
|
178
|
-
name:
|
144
|
+
name: rspec-rails
|
179
145
|
requirement: !ruby/object:Gem::Requirement
|
180
146
|
requirements:
|
181
147
|
- - "~>"
|
182
148
|
- !ruby/object:Gem::Version
|
183
|
-
version: '3.
|
184
|
-
- - ">="
|
185
|
-
- !ruby/object:Gem::Version
|
186
|
-
version: 3.2.7
|
149
|
+
version: '3.7'
|
187
150
|
type: :development
|
188
151
|
prerelease: false
|
189
152
|
version_requirements: !ruby/object:Gem::Requirement
|
190
153
|
requirements:
|
191
154
|
- - "~>"
|
192
155
|
- !ruby/object:Gem::Version
|
193
|
-
version: '3.
|
194
|
-
- - ">="
|
195
|
-
- !ruby/object:Gem::Version
|
196
|
-
version: 3.2.7
|
156
|
+
version: '3.7'
|
197
157
|
- !ruby/object:Gem::Dependency
|
198
|
-
name:
|
158
|
+
name: mdl
|
199
159
|
requirement: !ruby/object:Gem::Requirement
|
200
160
|
requirements:
|
201
161
|
- - "~>"
|
202
162
|
- !ruby/object:Gem::Version
|
203
|
-
version: '
|
163
|
+
version: '0.9'
|
204
164
|
- - ">="
|
205
165
|
- !ruby/object:Gem::Version
|
206
|
-
version:
|
166
|
+
version: 0.9.0
|
207
167
|
type: :development
|
208
168
|
prerelease: false
|
209
169
|
version_requirements: !ruby/object:Gem::Requirement
|
210
170
|
requirements:
|
211
171
|
- - "~>"
|
212
172
|
- !ruby/object:Gem::Version
|
213
|
-
version: '
|
214
|
-
- - ">="
|
215
|
-
- !ruby/object:Gem::Version
|
216
|
-
version: 1.3.13
|
217
|
-
- !ruby/object:Gem::Dependency
|
218
|
-
name: mdl
|
219
|
-
requirement: !ruby/object:Gem::Requirement
|
220
|
-
requirements:
|
221
|
-
- - ">="
|
222
|
-
- !ruby/object:Gem::Version
|
223
|
-
version: 0.5.0
|
224
|
-
- - "~>"
|
225
|
-
- !ruby/object:Gem::Version
|
226
|
-
version: '0.5'
|
227
|
-
type: :development
|
228
|
-
prerelease: false
|
229
|
-
version_requirements: !ruby/object:Gem::Requirement
|
230
|
-
requirements:
|
173
|
+
version: '0.9'
|
231
174
|
- - ">="
|
232
175
|
- !ruby/object:Gem::Version
|
233
|
-
version: 0.
|
234
|
-
- - "~>"
|
235
|
-
- !ruby/object:Gem::Version
|
236
|
-
version: '0.5'
|
176
|
+
version: 0.9.0
|
237
177
|
- !ruby/object:Gem::Dependency
|
238
178
|
name: rubocop
|
239
179
|
requirement: !ruby/object:Gem::Requirement
|
240
180
|
requirements:
|
241
181
|
- - "~>"
|
242
182
|
- !ruby/object:Gem::Version
|
243
|
-
version:
|
183
|
+
version: 0.85.0
|
244
184
|
type: :development
|
245
185
|
prerelease: false
|
246
186
|
version_requirements: !ruby/object:Gem::Requirement
|
247
187
|
requirements:
|
248
188
|
- - "~>"
|
249
189
|
- !ruby/object:Gem::Version
|
250
|
-
version:
|
190
|
+
version: 0.85.0
|
251
191
|
description: 'Easiest way to manage multi-environment settings in any ruby project
|
252
192
|
or framework: Rails, Sinatra, Pandrino and others'
|
253
193
|
email:
|
@@ -259,16 +199,18 @@ extensions: []
|
|
259
199
|
extra_rdoc_files:
|
260
200
|
- README.md
|
261
201
|
- CHANGELOG.md
|
202
|
+
- CONTRIBUTING.md
|
262
203
|
- LICENSE.md
|
263
204
|
files:
|
264
205
|
- CHANGELOG.md
|
206
|
+
- CONTRIBUTING.md
|
265
207
|
- LICENSE.md
|
266
208
|
- README.md
|
267
209
|
- config.gemspec
|
268
210
|
- lib/config.rb
|
269
211
|
- lib/config/compatibility.rb
|
212
|
+
- lib/config/configuration.rb
|
270
213
|
- lib/config/integrations/heroku.rb
|
271
|
-
- lib/config/integrations/rails/engine.rb
|
272
214
|
- lib/config/integrations/rails/railtie.rb
|
273
215
|
- lib/config/integrations/sinatra.rb
|
274
216
|
- lib/config/options.rb
|
@@ -287,14 +229,12 @@ files:
|
|
287
229
|
- lib/generators/config/templates/settings/development.yml
|
288
230
|
- lib/generators/config/templates/settings/production.yml
|
289
231
|
- lib/generators/config/templates/settings/test.yml
|
290
|
-
|
291
|
-
- spec/app/rails_5.2/README.md
|
292
|
-
- spec/app/rails_5/README.md
|
293
|
-
homepage: https://github.com/railsconfig/config
|
232
|
+
homepage: https://github.com/rubyconfig/config
|
294
233
|
licenses:
|
295
234
|
- MIT
|
296
235
|
metadata: {}
|
297
|
-
post_install_message:
|
236
|
+
post_install_message: "\n\e[33mThanks for installing Config\e[0m\nPlease consider
|
237
|
+
donating to our open collective to help us maintain this project.\n\n\nDonate: \e[34mhttps://opencollective.com/rubyconfig/donate\e[0m\n"
|
298
238
|
rdoc_options:
|
299
239
|
- "--charset=UTF-8"
|
300
240
|
require_paths:
|
@@ -303,16 +243,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
303
243
|
requirements:
|
304
244
|
- - ">="
|
305
245
|
- !ruby/object:Gem::Version
|
306
|
-
version: 2.
|
246
|
+
version: 2.4.0
|
307
247
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
308
248
|
requirements:
|
309
249
|
- - ">="
|
310
250
|
- !ruby/object:Gem::Version
|
311
251
|
version: '0'
|
312
252
|
requirements: []
|
313
|
-
|
314
|
-
|
315
|
-
signing_key:
|
253
|
+
rubygems_version: 3.1.2
|
254
|
+
signing_key:
|
316
255
|
specification_version: 4
|
317
256
|
summary: Effortless multi-environment settings in Rails, Sinatra, Pandrino and others
|
318
257
|
test_files: []
|