chamber 2.13.0 → 3.0.0rc1

Sign up to get free protection for your applications and to get access to all the features.
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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
- AumxK9WPjr7WFDk5o71NX4SZft99Ey5XBeZ1+I2v4+ozio/cqOFz9UTarQryCf0e
28
- 2uJLFPBPkzcCAwEAAaOBljCBkzAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNV
29
- 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
- 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
- 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
- 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
- h7ylKO7u6vKJl9p9IV2YR0uOnXbSApYr5olDDlEz7HNGL3xUCJJhJBf09C4AkaAn
34
- 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
- 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
- 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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