chamber 2.13.0 → 3.0.0rc1

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.
Files changed (54) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data.tar.gz.sig +0 -0
  4. data/README.md +101 -26
  5. data/lib/chamber.rb +77 -16
  6. data/lib/chamber/adapters/cloud/circle_ci.rb +16 -13
  7. data/lib/chamber/adapters/cloud/heroku.rb +40 -13
  8. data/lib/chamber/binary/circle_ci.rb +28 -14
  9. data/lib/chamber/binary/heroku.rb +34 -14
  10. data/lib/chamber/binary/runner.rb +40 -29
  11. data/lib/chamber/binary/travis.rb +10 -4
  12. data/lib/chamber/commands/base.rb +10 -16
  13. data/lib/chamber/commands/cloud/base.rb +3 -3
  14. data/lib/chamber/commands/cloud/pull.rb +2 -2
  15. data/lib/chamber/commands/cloud/push.rb +7 -7
  16. data/lib/chamber/commands/comparable.rb +2 -2
  17. data/lib/chamber/commands/compare.rb +6 -9
  18. data/lib/chamber/commands/initialize.rb +26 -22
  19. data/lib/chamber/commands/securable.rb +12 -9
  20. data/lib/chamber/commands/secure.rb +2 -2
  21. data/lib/chamber/commands/show.rb +8 -8
  22. data/lib/chamber/commands/sign.rb +2 -2
  23. data/lib/chamber/commands/verify.rb +2 -2
  24. data/lib/chamber/configuration.rb +6 -3
  25. data/lib/chamber/context_resolver.rb +7 -7
  26. data/lib/chamber/encryption_methods/ssl.rb +12 -12
  27. data/lib/chamber/file.rb +20 -15
  28. data/lib/chamber/file_set.rb +18 -8
  29. data/lib/chamber/files/signature.rb +16 -14
  30. data/lib/chamber/filters/decryption_filter.rb +19 -15
  31. data/lib/chamber/filters/encryption_filter.rb +14 -11
  32. data/lib/chamber/filters/environment_filter.rb +21 -20
  33. data/lib/chamber/filters/failed_decryption_filter.rb +9 -6
  34. data/lib/chamber/filters/insecure_filter.rb +4 -5
  35. data/lib/chamber/filters/namespace_filter.rb +13 -9
  36. data/lib/chamber/filters/secure_filter.rb +9 -7
  37. data/lib/chamber/filters/translate_secure_keys_filter.rb +9 -7
  38. data/lib/chamber/instance.rb +48 -31
  39. data/lib/chamber/key_pair.rb +7 -7
  40. data/lib/chamber/keys/base.rb +13 -13
  41. data/lib/chamber/keys/decryption.rb +3 -3
  42. data/lib/chamber/keys/encryption.rb +3 -3
  43. data/lib/chamber/namespace_set.rb +2 -4
  44. data/lib/chamber/refinements/array.rb +20 -0
  45. data/lib/chamber/refinements/deep_dup.rb +58 -0
  46. data/lib/chamber/refinements/enumerable.rb +36 -0
  47. data/lib/chamber/refinements/hash.rb +51 -0
  48. data/lib/chamber/settings.rb +81 -66
  49. data/lib/chamber/types/secured.rb +21 -23
  50. data/lib/chamber/version.rb +1 -1
  51. data/templates/settings.yml +2 -0
  52. metadata +44 -51
  53. metadata.gz.sig +0 -0
  54. data/lib/chamber/core_ext/hash.rb +0 -15
@@ -3,21 +3,19 @@
3
3
  require 'active_support/json'
4
4
  require 'chamber'
5
5
 
6
- # rubocop:disable Lint/HandleExceptions, Layout/EmptyLinesAroundModuleBody
7
6
  module Chamber
8
-
9
7
  begin
10
8
  require 'active_record/type/value'
11
9
 
12
10
  CHAMBER_TYPE_VALUE_SUPERCLASS = ActiveRecord::Type::Value
13
- rescue LoadError
11
+ rescue LoadError # rubocop:disable Lint/SuppressedException
14
12
  end
15
13
 
16
14
  begin
17
15
  require 'active_model/type/value'
18
16
 
19
17
  CHAMBER_TYPE_VALUE_SUPERCLASS = ActiveModel::Type::Value
20
- rescue LoadError
18
+ rescue LoadError # rubocop:disable Lint/SuppressedException
21
19
  end
22
20
 
23
21
  module Types
@@ -25,11 +23,12 @@ class Secured < CHAMBER_TYPE_VALUE_SUPERCLASS
25
23
  attr_accessor :decryption_keys,
26
24
  :encryption_keys
27
25
 
28
- def initialize(options = {})
29
- self.encryption_keys = options.fetch(:encryption_keys,
30
- Chamber.configuration.encryption_keys)
31
- self.decryption_keys = options.fetch(:decryption_keys,
32
- Chamber.configuration.decryption_keys)
26
+ def initialize(decryption_keys: ::Chamber.configuration.decryption_keys,
27
+ encryption_keys: ::Chamber.configuration.encryption_keys)
28
+ self.decryption_keys = decryption_keys
29
+ self.encryption_keys = encryption_keys
30
+
31
+ super()
33
32
  end
34
33
 
35
34
  def type
@@ -38,14 +37,14 @@ class Secured < CHAMBER_TYPE_VALUE_SUPERCLASS
38
37
 
39
38
  def cast(value)
40
39
  case value
41
- when Hash
40
+ when ::Hash
42
41
  value
43
- when String
44
- ::ActiveSupport::JSON.decode(value)
45
- when NilClass
42
+ when ::String
43
+ ::JSON.parse(value)
44
+ when ::NilClass
46
45
  nil
47
46
  else
48
- fail ArgumentError, 'Any attributes encrypted with Chamber must be either a Hash or a valid JSON string'
47
+ fail ::ArgumentError, 'Any attributes encrypted with Chamber must be either a Hash or a valid JSON string'
49
48
  end
50
49
  end
51
50
  alias type_cast_from_user cast
@@ -55,19 +54,19 @@ class Secured < CHAMBER_TYPE_VALUE_SUPERCLASS
55
54
 
56
55
  return if value.nil?
57
56
 
58
- Chamber.decrypt(value,
59
- decryption_keys: decryption_keys,
60
- encryption_keys: encryption_keys)
57
+ ::Chamber.decrypt(value,
58
+ decryption_keys: decryption_keys,
59
+ encryption_keys: encryption_keys)
61
60
  end
62
61
  alias type_cast_from_database deserialize
63
62
 
64
63
  def serialize(value)
65
- fail ArgumentError, 'Any attributes encrypted with Chamber must be a Hash' unless value.is_a?(Hash)
64
+ fail ::ArgumentError, 'Any attributes encrypted with Chamber must be a Hash' unless value.is_a?(::Hash)
66
65
 
67
- ::ActiveSupport::JSON.encode(
68
- Chamber.encrypt(value,
69
- decryption_keys: decryption_keys,
70
- encryption_keys: encryption_keys),
66
+ ::JSON.dump(
67
+ ::Chamber.encrypt(value,
68
+ decryption_keys: decryption_keys,
69
+ encryption_keys: encryption_keys),
71
70
  )
72
71
  end
73
72
  alias type_cast_for_database serialize
@@ -78,4 +77,3 @@ class Secured < CHAMBER_TYPE_VALUE_SUPERCLASS
78
77
  end
79
78
  end
80
79
  end
81
- # rubocop:enable Lint/HandleExceptions, Layout/EmptyLinesAroundModuleBody
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Chamber
4
- VERSION = '2.13.0'
4
+ VERSION = '3.0.0rc1'
5
5
  end
@@ -1,3 +1,5 @@
1
+ ---
2
+
1
3
  development:
2
4
  setting: development_value
3
5
  # The following will become 'secure_setting'
metadata CHANGED
@@ -1,44 +1,42 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: chamber
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.13.0
4
+ version: 3.0.0rc1
5
5
  platform: ruby
6
6
  authors:
7
7
  - thekompanee
8
8
  - jfelchner
9
9
  - stevenhallen
10
10
  - m5rk
11
- autorequire:
11
+ autorequire:
12
12
  bindir: bin
13
13
  cert_chain:
14
14
  - |
15
15
  -----BEGIN CERTIFICATE-----
16
- MIIEdjCCAt6gAwIBAgIBATANBgkqhkiG9w0BAQsFADAyMTAwLgYDVQQDDCdhY2Nv
17
- dW50c19ydWJ5Z2Vtcy9EQz10aGVrb21wYW5lZS9EQz1jb20wHhcNMTgwODAzMjEz
18
- NjUzWhcNMTkwODAzMjEzNjUzWjAyMTAwLgYDVQQDDCdhY2NvdW50c19ydWJ5Z2Vt
16
+ MIIEGDCCAoCgAwIBAgIBAjANBgkqhkiG9w0BAQsFADAyMTAwLgYDVQQDDCdhY2Nv
17
+ dW50c19ydWJ5Z2Vtcy9EQz10aGVrb21wYW5lZS9EQz1jb20wHhcNMjAxMjI2MjIy
18
+ NTE5WhcNMjExMjI2MjIyNTE5WjAyMTAwLgYDVQQDDCdhY2NvdW50c19ydWJ5Z2Vt
19
19
  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
- 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
- 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
- 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
- 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
- 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
- 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
- +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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- RaikE1dUWcVsW29XzO/RINmuMcKU6k0caC7X4kTD657Nf74oGUXHxYPmfUmYmppg
36
- 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
- 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
- 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
- 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
40
38
  -----END CERTIFICATE-----
41
- date: 2019-05-30 00:00:00.000000000 Z
39
+ date: 2020-12-31 00:00:00.000000000 Z
42
40
  dependencies:
43
41
  - !ruby/object:Gem::Dependency
44
42
  name: thor
@@ -46,34 +44,20 @@ dependencies:
46
44
  requirements:
47
45
  - - ">="
48
46
  - !ruby/object:Gem::Version
49
- version: 0.19.1
47
+ version: 0.20.3
50
48
  - - "<"
51
49
  - !ruby/object:Gem::Version
52
- version: '0.21'
50
+ version: '2.0'
53
51
  type: :runtime
54
52
  prerelease: false
55
53
  version_requirements: !ruby/object:Gem::Requirement
56
54
  requirements:
57
55
  - - ">="
58
56
  - !ruby/object:Gem::Version
59
- version: 0.19.1
57
+ version: 0.20.3
60
58
  - - "<"
61
59
  - !ruby/object:Gem::Version
62
- version: '0.21'
63
- - !ruby/object:Gem::Dependency
64
- name: hashie
65
- requirement: !ruby/object:Gem::Requirement
66
- requirements:
67
- - - "~>"
68
- - !ruby/object:Gem::Version
69
- version: '3.3'
70
- type: :runtime
71
- prerelease: false
72
- version_requirements: !ruby/object:Gem::Requirement
73
- requirements:
74
- - - "~>"
75
- - !ruby/object:Gem::Version
76
- version: '3.3'
60
+ version: '2.0'
77
61
  - !ruby/object:Gem::Dependency
78
62
  name: rspec
79
63
  requirement: !ruby/object:Gem::Requirement
@@ -183,7 +167,6 @@ files:
183
167
  - lib/chamber/commands/verify.rb
184
168
  - lib/chamber/configuration.rb
185
169
  - lib/chamber/context_resolver.rb
186
- - lib/chamber/core_ext/hash.rb
187
170
  - lib/chamber/encryption_methods/none.rb
188
171
  - lib/chamber/encryption_methods/public_key.rb
189
172
  - lib/chamber/encryption_methods/ssl.rb
@@ -209,6 +192,10 @@ files:
209
192
  - lib/chamber/keys/encryption.rb
210
193
  - lib/chamber/namespace_set.rb
211
194
  - lib/chamber/rails.rb
195
+ - lib/chamber/refinements/array.rb
196
+ - lib/chamber/refinements/deep_dup.rb
197
+ - lib/chamber/refinements/enumerable.rb
198
+ - lib/chamber/refinements/hash.rb
212
199
  - lib/chamber/rubinius_fix.rb
213
200
  - lib/chamber/settings.rb
214
201
  - lib/chamber/types/secured.rb
@@ -219,7 +206,13 @@ licenses:
219
206
  - MIT
220
207
  metadata:
221
208
  allowed_push_host: https://rubygems.org
222
- post_install_message:
209
+ bug_tracker_uri: https://github.com/thekompanee/chamber/issues
210
+ changelog_uri: https://github.com/thekompanee/chamber/blob/master/CHANGELOG.md
211
+ documentation_uri: https://github.com/thekompanee/chamber/tree/releases/v2.13.0
212
+ homepage_uri: https://github.com/thekompanee/chamber
213
+ source_code_uri: https://github.com/thekompanee/chamber
214
+ wiki_uri: https://github.com/thekompanee/chamber/wiki
215
+ post_install_message:
223
216
  rdoc_options: []
224
217
  require_paths:
225
218
  - lib
@@ -227,15 +220,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
227
220
  requirements:
228
221
  - - ">="
229
222
  - !ruby/object:Gem::Version
230
- version: '0'
223
+ version: 2.1.0
231
224
  required_rubygems_version: !ruby/object:Gem::Requirement
232
225
  requirements:
233
- - - ">="
226
+ - - ">"
234
227
  - !ruby/object:Gem::Version
235
- version: '0'
228
+ version: 1.3.1
236
229
  requirements: []
237
- rubygems_version: 3.0.3
238
- signing_key:
230
+ rubygems_version: 3.2.3
231
+ signing_key:
239
232
  specification_version: 4
240
233
  summary: A surprisingly configurable convention-based approach to managing your application's
241
234
  custom configuration settings.
metadata.gz.sig CHANGED
Binary file
@@ -1,15 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- class Hash
4
- def transform_keys
5
- return enum_for(:transform_keys) { size } unless block_given?
6
-
7
- result = {}
8
-
9
- each_key do |key|
10
- result[yield(key)] = self[key]
11
- end
12
-
13
- result
14
- end
15
- end