chambermaid 0.5.4 → 0.5.5
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 +6 -0
- data/Gemfile.lock +1 -1
- data/README.md +2 -0
- data/chambermaid.gemspec +2 -0
- data/lib/chambermaid/environment.rb +11 -0
- data/lib/chambermaid/namespace.rb +24 -0
- data/lib/chambermaid/parameter_store.rb +22 -0
- data/lib/chambermaid/version.rb +1 -1
- metadata +3 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bac5b5a18928996ec0eff656de94105639482b427795b54cddf825232ff83667
|
4
|
+
data.tar.gz: 4382e36051f155568e2a77a84a79bdb39d55eb0f9e640941aa6d0b85c1071661
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e28ac0a2b70366e8f60b882ff2e6e62b5261f6d7056f0f95e4ffd2a4c15ba9431ba8ae3610cd7be6faa040207c6edf3a3a9e0ef11d99359c1f597b25250d19bd
|
7
|
+
data.tar.gz: 80f638eb0c1c445c73e37dda7e9c67c08c3009d012cb28ed8e203f5063675b79cac9cd60dc01847630eaa2ddc3c7c160be0bb9a999b5bf15d373530b1312dc25
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,9 @@
|
|
1
|
+
## [0.5.4](https://github.com/mileszim/chambermaid/compare/v0.5.3...v0.5.4) (2020-08-03)
|
2
|
+
|
3
|
+
### Bug Fixes
|
4
|
+
|
5
|
+
- **release:** chmod 0600 ~/.gem/credentials after generating ([ed85d5b](https://github.com/mileszim/chambermaid/commit/ed85d5b1d9b76762bcc50734c806a6e1cd224ad5))
|
6
|
+
|
1
7
|
## [0.5.3](https://github.com/mileszim/chambermaid/compare/v0.5.2...v0.5.3) (2020-08-03)
|
2
8
|
|
3
9
|
### Bug Fixes
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -4,6 +4,8 @@ Companion RubyGem for [chamber](https://github.com/segmentio/chamber).
|
|
4
4
|
|
5
5
|
Chambermaid injects AWS SSM params into your ENV. Plays nice with other ENV gems like dotenv.
|
6
6
|
|
7
|
+
- [RubyDocs](https://rubydoc.info/gems/chambermaid)
|
8
|
+
|
7
9
|
## Installation
|
8
10
|
|
9
11
|
Add this line to your application's Gemfile:
|
data/chambermaid.gemspec
CHANGED
@@ -16,6 +16,8 @@ Gem::Specification.new do |spec|
|
|
16
16
|
spec.metadata["homepage_uri"] = spec.homepage
|
17
17
|
spec.metadata["source_code_uri"] = "https://github.com/mileszim/chambermaid"
|
18
18
|
spec.metadata["changelog_uri"] = "https://github.com/mileszim/chambermaid/blob/master/CHANGELOG.md"
|
19
|
+
spec.metadata["documentation_uri"] = "https://rubydoc.info/gems/chambermaid"
|
20
|
+
spec.metadata["bug_tracker_uri"] = "https://github.com/mileszim/chambermaid/issues"
|
19
21
|
|
20
22
|
# Specify which files should be added to the gem when it is released.
|
21
23
|
# The `git ls-files -z` loads the files in the RubyGem that have been added into git.
|
@@ -1,4 +1,9 @@
|
|
1
1
|
module Chambermaid
|
2
|
+
# Environment keeps a set of params available to load into ENV. It also
|
3
|
+
# maintains a copy of ENV at the time of its initialization, in order to
|
4
|
+
# restore it.
|
5
|
+
#
|
6
|
+
# @attr_reader [Hash] params
|
2
7
|
class Environment < Hash
|
3
8
|
attr_reader :params
|
4
9
|
|
@@ -35,16 +40,22 @@ module Chambermaid
|
|
35
40
|
end
|
36
41
|
|
37
42
|
# Inject into ENV without overwriting duplicates
|
43
|
+
#
|
44
|
+
# @return [Hash]
|
38
45
|
def load!
|
39
46
|
each { |k, v| ENV[k] ||= v }
|
40
47
|
end
|
41
48
|
|
42
49
|
# Inject into ENV and overwrite duplicates
|
50
|
+
#
|
51
|
+
# @return [Hash]
|
43
52
|
def overload!
|
44
53
|
each { |k, v| ENV[k] = v }
|
45
54
|
end
|
46
55
|
|
47
56
|
# Restore to original ENV
|
57
|
+
#
|
58
|
+
# @return [ENV]
|
48
59
|
def unload!
|
49
60
|
ENV.replace(@_original_env)
|
50
61
|
end
|
@@ -1,4 +1,6 @@
|
|
1
1
|
module Chambermaid
|
2
|
+
# Namespaces each contain a ParameterStore and Environment instance,
|
3
|
+
# along with the overload flag
|
2
4
|
class Namespace
|
3
5
|
# @param [String] path
|
4
6
|
# @param [Boolean] overload
|
@@ -10,23 +12,45 @@ module Chambermaid
|
|
10
12
|
@env = Environment.new({})
|
11
13
|
end
|
12
14
|
|
15
|
+
# Create a namespace and immediately fetch and inject params to ENV
|
16
|
+
#
|
17
|
+
# @see Chambermaid::Namespace.load!
|
18
|
+
#
|
19
|
+
# @param [String] path
|
20
|
+
# @param [Boolean] overload
|
21
|
+
#
|
22
|
+
# @return [Chambermaid::Namespace]
|
13
23
|
def self.load!(path:, overload: false)
|
14
24
|
namespace = new(path: path, overload: overload)
|
15
25
|
namespace.load!
|
16
26
|
namespace
|
17
27
|
end
|
18
28
|
|
29
|
+
# Load ParameterStore and inject into ENV
|
30
|
+
#
|
31
|
+
# @see Chambermaid::ParameterStore#load!
|
32
|
+
# @see Chambermaid::Environment#load!
|
33
|
+
# @see Chambermaid::Environment#overload!
|
19
34
|
def load!
|
20
35
|
@store.load!
|
21
36
|
load_env!
|
22
37
|
end
|
23
38
|
|
39
|
+
# Unload params from ENV, reload ParameterStore, and inject into ENV
|
40
|
+
#
|
41
|
+
# @see Chambermaid::Environment#unload!
|
42
|
+
# @see Chambermaid::ParameterStore#reload!
|
43
|
+
# @see Chambermaid::Environment#load!
|
44
|
+
# @see Chambermaid::Environment#overload!
|
24
45
|
def reload!
|
25
46
|
@env.unload!
|
26
47
|
@store.reload!
|
27
48
|
load_env!
|
28
49
|
end
|
29
50
|
|
51
|
+
# Unload params from ENV
|
52
|
+
#
|
53
|
+
# @see Chambermaid::Environment#unload!
|
30
54
|
def unload!
|
31
55
|
@env.unload!
|
32
56
|
Chambermaid.logger.info("unloaded #{@env.size} params from ENV")
|
@@ -1,30 +1,52 @@
|
|
1
1
|
require "aws-sdk-ssm"
|
2
2
|
|
3
3
|
module Chambermaid
|
4
|
+
# ParameterStore instances fetch all parameters under a namespace/path
|
5
|
+
# from AWS SSM
|
6
|
+
#
|
7
|
+
# @note AWS authentication requires configuration via ENV (IAM credentials/STS)
|
4
8
|
class ParameterStore
|
9
|
+
# @param [String] path
|
5
10
|
def initialize(path:)
|
6
11
|
@path = path
|
7
12
|
end
|
8
13
|
|
14
|
+
# Fetch and decrypt all parameters selected by a namespace/path string
|
15
|
+
#
|
16
|
+
# @return [Boolean]
|
9
17
|
def load!
|
10
18
|
fetch_ssm_params!
|
11
19
|
end
|
12
20
|
|
21
|
+
# Clear cached parameters and re-fetch parameters from AWS SSM
|
22
|
+
#
|
23
|
+
# @return [Boolean]
|
13
24
|
def reload!
|
14
25
|
clear_params!
|
15
26
|
fetch_ssm_params!
|
16
27
|
end
|
17
28
|
|
29
|
+
# Returns true if parameters have been fetched from AWS SSM
|
30
|
+
#
|
31
|
+
# @return [Boolean]
|
18
32
|
def loaded?
|
19
33
|
!@params_list.empty?
|
20
34
|
end
|
21
35
|
|
36
|
+
# Create a ParameterStore and fetch from AWS SSM immediately
|
37
|
+
#
|
38
|
+
# @see Chambermaid::ParameterStore#load!
|
39
|
+
#
|
40
|
+
# @return [Chambermaid::ParameterStore]
|
22
41
|
def self.load!(path:)
|
23
42
|
store = new(path: path)
|
24
43
|
store.load!
|
25
44
|
store
|
26
45
|
end
|
27
46
|
|
47
|
+
# ENV formatted Hash of parameters loaded from AWS SSM
|
48
|
+
#
|
49
|
+
# @return [Hash]
|
28
50
|
def params
|
29
51
|
@params ||= @param_list.map { |p|
|
30
52
|
[p.name.split("/").last.upcase, p.value]
|
data/lib/chambermaid/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: chambermaid
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Miles Zimmerman
|
@@ -88,6 +88,8 @@ metadata:
|
|
88
88
|
homepage_uri: https://github.com/mileszim/chambermaid
|
89
89
|
source_code_uri: https://github.com/mileszim/chambermaid
|
90
90
|
changelog_uri: https://github.com/mileszim/chambermaid/blob/master/CHANGELOG.md
|
91
|
+
documentation_uri: https://rubydoc.info/gems/chambermaid
|
92
|
+
bug_tracker_uri: https://github.com/mileszim/chambermaid/issues
|
91
93
|
post_install_message:
|
92
94
|
rdoc_options: []
|
93
95
|
require_paths:
|