configuration_service 2.0.6 → 2.1.0
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
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a8a12bd4bf52fe773fde0b4306ba47c9d9f33d90
|
4
|
+
data.tar.gz: 64b84d7cf9c08401d56c0c8f4b7c9d9ac40c59c6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 374a86490e8e6d0c42d3c13058a60320f016efae154ba4d370ccf30547ea72df3ebd0cb347aa8f38c8602467c3f4f08f537f601fe8b99902e6fead53d387fe7b
|
7
|
+
data.tar.gz: beb9ea330992004c10fbb7782d808799c48534b9c79681ddb2abdcfce0697f9a30dc1c5c1af0ca30bc8e3d6d58f65d398ed7a1510c1114b9c6d462a146ad5b96
|
data/.gemspec
CHANGED
@@ -19,7 +19,7 @@ Gem::Specification.new do |spec|
|
|
19
19
|
spec.require_paths = ["lib"]
|
20
20
|
|
21
21
|
spec.add_development_dependency "bundler", "~> 1.7"
|
22
|
-
spec.add_development_dependency "rake", "~>
|
22
|
+
spec.add_development_dependency "rake", "~> 11.1"
|
23
23
|
spec.add_development_dependency "cucumber", "~> 2.0"
|
24
24
|
spec.add_development_dependency "rspec", "~> 3.3"
|
25
25
|
spec.add_development_dependency "rspec-expectations", "~> 3.3"
|
@@ -6,8 +6,9 @@ module ConfigurationService
|
|
6
6
|
|
7
7
|
class EnvDict < Hash
|
8
8
|
|
9
|
-
def initialize(
|
10
|
-
@
|
9
|
+
def initialize(sources, *path)
|
10
|
+
@sources = sources.is_a?(Array) ? sources : [ sources ]
|
11
|
+
@env = @sources.inject { |m, e| m.merge(e) }
|
11
12
|
@path = build_path(*path)
|
12
13
|
|
13
14
|
env_keys.each do |k|
|
@@ -58,8 +59,8 @@ module ConfigurationService
|
|
58
59
|
raise KeyError, "missing environment variable #{envar}"
|
59
60
|
end
|
60
61
|
|
61
|
-
def env_keys
|
62
|
-
|
62
|
+
def env_keys(env = @env)
|
63
|
+
env.keys.select { |k| under_path?(k) }
|
63
64
|
end
|
64
65
|
|
65
66
|
def under_path?(k)
|
@@ -96,8 +97,8 @@ module ConfigurationService
|
|
96
97
|
end
|
97
98
|
|
98
99
|
def scrub_env!
|
99
|
-
|
100
|
-
|
100
|
+
@sources.each do |env|
|
101
|
+
env_keys(env).each { |k| env.delete(k) }
|
101
102
|
end
|
102
103
|
end
|
103
104
|
|
@@ -46,8 +46,8 @@ module ConfigurationService
|
|
46
46
|
##
|
47
47
|
# Returns a new factory
|
48
48
|
#
|
49
|
-
# @param [Hash]
|
50
|
-
# the string-keyed
|
49
|
+
# @param [Hash, Array<Hash>] sources
|
50
|
+
# one or a list of the string-keyed environments
|
51
51
|
# @param [String] prefix
|
52
52
|
# the prefix for matching environment variable names
|
53
53
|
#
|
@@ -55,8 +55,8 @@ module ConfigurationService
|
|
55
55
|
# they can use {.create} which instantiates a factory with default +env+ and +prefix+
|
56
56
|
# and uses that internally.
|
57
57
|
#
|
58
|
-
def initialize(
|
59
|
-
@env = EnvDict.new(
|
58
|
+
def initialize(sources = default_sources, prefix = DEFAULT_PREFIX)
|
59
|
+
@env = EnvDict.new(sources, prefix)
|
60
60
|
end
|
61
61
|
|
62
62
|
##
|
@@ -73,6 +73,9 @@ module ConfigurationService
|
|
73
73
|
# [PROVIDER_*] configuration options for the service provider
|
74
74
|
# (see service provider documentation)
|
75
75
|
#
|
76
|
+
# On JRuby, system properties are also scanned. Where a system property and environment variable of the
|
77
|
+
# same name exist, the environment variable is preferred.
|
78
|
+
#
|
76
79
|
# The service provider class is fetched from the {ConfigurationService::ProviderRegistry} using +PROVIDER+.
|
77
80
|
# A service provider instance is then constructed with a dictionary of the +PROVIDER_*+ variables,
|
78
81
|
# in which the keys are the name of the variable without +PROVIDER_+, downcased and intern'd.
|
@@ -80,7 +83,8 @@ module ConfigurationService
|
|
80
83
|
# Then a service {ConfigurationService::Base} is constructed with the +IDENTIFIER+, +TOKEN+ and service provider instance.
|
81
84
|
#
|
82
85
|
# And finally, the environment is scrubbed of the variables used, to protect them from accidental exposure
|
83
|
-
# (e.g. in an exception handler that prints the environment).
|
86
|
+
# (e.g. in an exception handler that prints the environment). On JRuby, system properties are scrubbed of variables used as well,
|
87
|
+
# regardless of whether they were overridden by environment variables.
|
84
88
|
#
|
85
89
|
# @return [ConfigurationService::Base] the configuration service instance created
|
86
90
|
# @raise [ProviderNotFoundError] if no service provider has been registered with the name given by +PROVIDER+
|
@@ -104,6 +108,10 @@ module ConfigurationService
|
|
104
108
|
|
105
109
|
private
|
106
110
|
|
111
|
+
def default_sources
|
112
|
+
(RUBY_PLATFORM == "java" ? [java.lang.System.properties, ENV] : ENV)
|
113
|
+
end
|
114
|
+
|
107
115
|
def provider
|
108
116
|
provider_id = @env[:provider]
|
109
117
|
provider_config = @env.subslice(:provider)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: configuration_service
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0
|
4
|
+
version: 2.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sheldon Hearn
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2016-04-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -30,14 +30,14 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
33
|
+
version: '11.1'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
40
|
+
version: '11.1'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: cucumber
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -144,7 +144,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
144
144
|
version: '0'
|
145
145
|
requirements: []
|
146
146
|
rubyforge_project:
|
147
|
-
rubygems_version: 2.
|
147
|
+
rubygems_version: 2.5.1
|
148
148
|
signing_key:
|
149
149
|
specification_version: 4
|
150
150
|
summary: Configuration service
|