chamber 2.7.1 → 2.8.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 +4 -4
- data/README.md +14 -0
- data/lib/chamber/commands/initialize.rb +10 -6
- data/lib/chamber/context_resolver.rb +27 -3
- data/lib/chamber/version.rb +1 -1
- data/spec/lib/chamber/context_resolver_spec.rb +17 -3
- data/spec/lib/chamber_spec.rb +3 -3
- data/spec/rails-engine-test/spec/dummy/config.ru +0 -0
- data/spec/rails-engine-test/spec/dummy/config/application.rb +5 -0
- data/spec/rails-engine-test/spec/dummy/script/rails +0 -0
- data/templates/settings.yml +14 -0
- metadata +13 -21
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4f7dbdffb12b7b5622f0599bd110ce6ff1ff5316
|
4
|
+
data.tar.gz: 16f1879d1d7bafadd27f9e573b420cceeb18abfb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cd5da56e5554973ac39e4615ec410f12e3771069182c65081a90f9a2b41476f06db63c853d373810336ebe097e2cd83a46215972e2f8c808ad5669514391dea4
|
7
|
+
data.tar.gz: cea1cd1f08b84475c92ea6391755f58e0621eccf3dd08d4a54acd9c8125705ee78fc5ff874d508767ddafb2f125281a62b6e6c3cea8e75c7a01947ab4b715cf6
|
data/README.md
CHANGED
@@ -29,3 +29,17 @@ management library.
|
|
29
29
|
## Full Reference
|
30
30
|
|
31
31
|
Visit the [wiki](https://github.com/thekompanee/chamber/wiki)
|
32
|
+
|
33
|
+
## Credits
|
34
|
+
|
35
|
+
Chamber was written by Jeff Felchner and Mark McEahern.
|
36
|
+
|
37
|
+

|
38
|
+
|
39
|
+
Chamber is maintained and funded by [The Kompanee, Ltd.](http://www.thekompanee.com/)
|
40
|
+
|
41
|
+
The names and logos for The Kompanee are trademarks of The Kompanee, Ltd.
|
42
|
+
|
43
|
+
## License
|
44
|
+
|
45
|
+
Chamber is Copyright © 2014 Jeff Felchner and Mark McEahern. It is free software, and may be redistributed under the terms specified in the [LICENSE](https://github.com/thekompanee/chamber/blob/master/LICENSE) file.
|
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'pathname'
|
2
|
+
require 'fileutils'
|
2
3
|
require 'openssl'
|
3
4
|
require 'chamber/configuration'
|
4
5
|
require 'chamber/commands/base'
|
@@ -12,7 +13,7 @@ class Initialize < Chamber::Commands::Base
|
|
12
13
|
self.basepath = Chamber.configuration.basepath
|
13
14
|
end
|
14
15
|
|
15
|
-
# rubocop:disable Metrics/LineLength, Metrics/MethodLength
|
16
|
+
# rubocop:disable Metrics/LineLength, Metrics/MethodLength, Metrics/AbcSize
|
16
17
|
def call
|
17
18
|
shell.create_file private_key_filepath, rsa_private_key.to_pem
|
18
19
|
shell.create_file protected_key_filepath, rsa_protected_key
|
@@ -22,9 +23,12 @@ class Initialize < Chamber::Commands::Base
|
|
22
23
|
`chmod 600 #{protected_key_filepath}`
|
23
24
|
`chmod 644 #{public_key_filepath}`
|
24
25
|
|
26
|
+
::FileUtils.touch gitignore_filepath
|
27
|
+
|
25
28
|
unless ::File.read(gitignore_filepath).match(/^.chamber.pem$/)
|
26
|
-
shell.append_to_file gitignore_filepath,
|
27
|
-
shell.append_to_file gitignore_filepath,
|
29
|
+
shell.append_to_file gitignore_filepath, "\n# Private and protected key files for Chamber\n"
|
30
|
+
shell.append_to_file gitignore_filepath, "#{private_key_filename}\n"
|
31
|
+
shell.append_to_file gitignore_filepath, "#{protected_key_filename}\n"
|
28
32
|
end
|
29
33
|
|
30
34
|
shell.copy_file settings_template_filepath, settings_filepath
|
@@ -41,10 +45,10 @@ class Initialize < Chamber::Commands::Base
|
|
41
45
|
shell.say protected_key_filepath, :green
|
42
46
|
shell.say ''
|
43
47
|
shell.say 'and not have to worry about sending it via a secure medium (such as', :green
|
44
|
-
shell.say 'email), however do not send the passphrase along with it. Give it to'
|
48
|
+
shell.say 'email), however do not send the passphrase along with it. Give it to', :green
|
45
49
|
shell.say 'your team members in person.', :green
|
46
50
|
shell.say ''
|
47
|
-
shell.say 'In order for them to decrypt it (for use with Chamber), they can run:'
|
51
|
+
shell.say 'In order for them to decrypt it (for use with Chamber), they can run:', :green
|
48
52
|
shell.say ''
|
49
53
|
shell.say "$ cp /path/to/{#{protected_key_filename},#{private_key_filename}}", :green
|
50
54
|
shell.say "$ ssh-keygen -p -f /path/to/#{private_key_filename}", :green
|
@@ -52,7 +56,7 @@ class Initialize < Chamber::Commands::Base
|
|
52
56
|
shell.say 'Enter the passphrase when prompted and leave the new passphrase blank.', :green
|
53
57
|
shell.say ''
|
54
58
|
end
|
55
|
-
# rubocop:enable Metrics/LineLength, Metrics/MethodLength
|
59
|
+
# rubocop:enable Metrics/LineLength, Metrics/MethodLength, Metrics/AbcSize
|
56
60
|
|
57
61
|
def self.call(options = {})
|
58
62
|
new(options).call
|
@@ -9,6 +9,8 @@ class ContextResolver
|
|
9
9
|
self.options = Hashie::Mash.new(options)
|
10
10
|
end
|
11
11
|
|
12
|
+
# rubocop:disable Metrics/AbcSize, Metrics/CyclomaticComplexity
|
13
|
+
# rubocop:disable Metrics/PerceivedComplexity, Metrics/MethodLength
|
12
14
|
def resolve
|
13
15
|
options[:rootpath] ||= Pathname.pwd
|
14
16
|
options[:rootpath] = Pathname.new(options[:rootpath])
|
@@ -17,11 +19,22 @@ class ContextResolver
|
|
17
19
|
options[:namespaces] ||= []
|
18
20
|
options[:preset] ||= resolve_preset
|
19
21
|
|
20
|
-
if options[:preset]
|
22
|
+
if %w{rails rails-engine}.include?(options[:preset])
|
23
|
+
if options[:preset] == 'rails-engine'
|
24
|
+
engine_spec_dummy_directory = options[:rootpath] + 'spec' + 'dummy'
|
25
|
+
engine_test_dummy_directory = options[:rootpath] + 'test' + 'dummy'
|
26
|
+
|
27
|
+
options[:rootpath] = if (engine_spec_dummy_directory + 'config.ru').exist?
|
28
|
+
engine_spec_dummy_directory
|
29
|
+
elsif (engine_test_dummy_directory + 'config.ru').exist?
|
30
|
+
engine_test_dummy_directory
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
21
34
|
options[:basepath] ||= options[:rootpath] + 'config'
|
22
35
|
|
23
36
|
if options[:namespaces] == []
|
24
|
-
require options[:rootpath].join('config', 'application')
|
37
|
+
require options[:rootpath].join('config', 'application').to_s
|
25
38
|
|
26
39
|
options[:namespaces] = [
|
27
40
|
::Rails.env,
|
@@ -41,6 +54,8 @@ class ContextResolver
|
|
41
54
|
rescue LoadError
|
42
55
|
options
|
43
56
|
end
|
57
|
+
# rubocop:enable Metrics/AbcSize, Metrics/CyclomaticComplexity
|
58
|
+
# rubocop:enable Metrics/PerceivedComplexity, Metrics/MethodLength
|
44
59
|
|
45
60
|
def self.resolve(options = {})
|
46
61
|
new(options).resolve
|
@@ -51,7 +66,11 @@ class ContextResolver
|
|
51
66
|
attr_accessor :options
|
52
67
|
|
53
68
|
def resolve_preset
|
54
|
-
|
69
|
+
if in_a_rails_project?
|
70
|
+
'rails'
|
71
|
+
elsif in_a_rails_engine?
|
72
|
+
'rails-engine'
|
73
|
+
end
|
55
74
|
end
|
56
75
|
|
57
76
|
def resolve_encryption_key(key)
|
@@ -70,6 +89,11 @@ class ContextResolver
|
|
70
89
|
rails_executable_exists?
|
71
90
|
end
|
72
91
|
|
92
|
+
def in_a_rails_engine?
|
93
|
+
(options[:rootpath] + 'spec' + 'dummy' + 'config.ru').exist? ||
|
94
|
+
(options[:rootpath] + 'test' + 'dummy' + 'config.ru').exist?
|
95
|
+
end
|
96
|
+
|
73
97
|
def rails_executable_exists?
|
74
98
|
options[:rootpath].join('bin', 'rails').exist? ||
|
75
99
|
options[:rootpath].join('script', 'rails').exist? ||
|
data/lib/chamber/version.rb
CHANGED
@@ -4,9 +4,13 @@ require 'chamber/context_resolver'
|
|
4
4
|
module Chamber
|
5
5
|
module Commands
|
6
6
|
describe ContextResolver do
|
7
|
-
let(:rails_2_path)
|
8
|
-
let(:rails_3_path)
|
9
|
-
let(:rails_4_path)
|
7
|
+
let(:rails_2_path) { ::File.expand_path('../../../rails-2-test', __FILE__) }
|
8
|
+
let(:rails_3_path) { ::File.expand_path('../../../rails-3-test', __FILE__) }
|
9
|
+
let(:rails_4_path) { ::File.expand_path('../../../rails-4-test', __FILE__) }
|
10
|
+
let(:rails_engine_path) { ::File.expand_path('../../../rails-engine-test', __FILE__) }
|
11
|
+
|
12
|
+
before(:each) { @old_chamber_key = ENV.delete('CHAMBER_KEY') }
|
13
|
+
after(:each) { ENV['CHAMBER_KEY'] = @old_chamber_key }
|
10
14
|
|
11
15
|
it 'does not attempt to do any resolution if all valid options are passed in' do
|
12
16
|
options = ContextResolver.resolve(basepath: 'my_path',
|
@@ -142,6 +146,16 @@ describe ContextResolver do
|
|
142
146
|
expect(options[:basepath].to_s).to include 'rails-4-test/config'
|
143
147
|
expect(options[:namespaces]).to eql %w{development my_host}
|
144
148
|
end
|
149
|
+
|
150
|
+
it 'sets the basepath if inside a Rails engine' do
|
151
|
+
allow(Socket).to receive(:gethostname).and_return 'my_host'
|
152
|
+
|
153
|
+
options = ContextResolver.resolve(rootpath: rails_engine_path)
|
154
|
+
|
155
|
+
expect(options[:rootpath].to_s).to include 'rails-engine-test/spec/dummy'
|
156
|
+
expect(options[:basepath].to_s).to include 'rails-engine-test/spec/dummy/config'
|
157
|
+
expect(options[:namespaces]).to eql %w{development my_host}
|
158
|
+
end
|
145
159
|
end
|
146
160
|
end
|
147
161
|
end
|
data/spec/lib/chamber_spec.rb
CHANGED
@@ -71,7 +71,7 @@ only_namespaced_sub_settings:
|
|
71
71
|
HEREDOC
|
72
72
|
end
|
73
73
|
|
74
|
-
describe Chamber do
|
74
|
+
describe 'Chamber' do
|
75
75
|
before(:each) { Chamber.load(basepath: '/tmp/chamber') }
|
76
76
|
|
77
77
|
it 'knows how to load itself with a path string' do
|
@@ -280,13 +280,13 @@ describe Chamber do
|
|
280
280
|
end
|
281
281
|
|
282
282
|
it 'can render itself as a string even if it has not been loaded' do
|
283
|
-
Chamber.load
|
283
|
+
Chamber.load basepath: '/'
|
284
284
|
|
285
285
|
expect(Chamber.to_s).to eql ''
|
286
286
|
end
|
287
287
|
|
288
288
|
it 'can determine settings even if it has not been loaded' do
|
289
|
-
Chamber.load
|
289
|
+
Chamber.load basepath: '/'
|
290
290
|
|
291
291
|
expect(Chamber.to_hash).to eql({})
|
292
292
|
end
|
File without changes
|
File without changes
|
@@ -0,0 +1,14 @@
|
|
1
|
+
development:
|
2
|
+
setting: development_value
|
3
|
+
# The following will become 'secure_setting'
|
4
|
+
_secure_secure_setting: secure_development_value
|
5
|
+
|
6
|
+
test:
|
7
|
+
setting: test_value
|
8
|
+
# The following will become 'secure_setting'
|
9
|
+
_secure_secure_setting: secure_test_value
|
10
|
+
|
11
|
+
production:
|
12
|
+
setting: production_value
|
13
|
+
# The following will become 'secure_setting'
|
14
|
+
_secure_secure_setting: secure_production_value
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: chamber
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.8.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- thekompanee
|
@@ -11,7 +11,7 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
|
-
date:
|
14
|
+
date: 2015-03-24 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: thor
|
@@ -69,20 +69,6 @@ dependencies:
|
|
69
69
|
- - "~>"
|
70
70
|
- !ruby/object:Gem::Version
|
71
71
|
version: '0.46'
|
72
|
-
- !ruby/object:Gem::Dependency
|
73
|
-
name: codeclimate-test-reporter
|
74
|
-
requirement: !ruby/object:Gem::Requirement
|
75
|
-
requirements:
|
76
|
-
- - "~>"
|
77
|
-
- !ruby/object:Gem::Version
|
78
|
-
version: 0.3.0
|
79
|
-
type: :development
|
80
|
-
prerelease: false
|
81
|
-
version_requirements: !ruby/object:Gem::Requirement
|
82
|
-
requirements:
|
83
|
-
- - "~>"
|
84
|
-
- !ruby/object:Gem::Version
|
85
|
-
version: 0.3.0
|
86
72
|
description: "\n Chamber lets you source your Settings from
|
87
73
|
an arbitrary number of YAML files and\n provides a simple
|
88
74
|
mechanism for overriding settings from the ENV, which is\n friendly
|
@@ -171,8 +157,12 @@ files:
|
|
171
157
|
- spec/rails-4-test/bin/rails
|
172
158
|
- spec/rails-4-test/config.ru
|
173
159
|
- spec/rails-4-test/config/application.rb
|
160
|
+
- spec/rails-engine-test/spec/dummy/config.ru
|
161
|
+
- spec/rails-engine-test/spec/dummy/config/application.rb
|
162
|
+
- spec/rails-engine-test/spec/dummy/script/rails
|
174
163
|
- spec/spec_key
|
175
164
|
- spec/spec_key.pub
|
165
|
+
- templates/settings.yml
|
176
166
|
homepage: https://github.com/thekompanee/chamber
|
177
167
|
licenses:
|
178
168
|
- MIT
|
@@ -193,7 +183,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
193
183
|
version: '0'
|
194
184
|
requirements: []
|
195
185
|
rubyforge_project:
|
196
|
-
rubygems_version: 2.4.
|
186
|
+
rubygems_version: 2.4.6
|
197
187
|
signing_key:
|
198
188
|
specification_version: 4
|
199
189
|
summary: A surprisingly configurable convention-based approach to managing your application's
|
@@ -222,15 +212,17 @@ test_files:
|
|
222
212
|
- spec/lib/chamber/namespace_set_spec.rb
|
223
213
|
- spec/lib/chamber/settings_spec.rb
|
224
214
|
- spec/lib/chamber_spec.rb
|
225
|
-
- spec/rails-2-test/config/application.rb
|
226
215
|
- spec/rails-2-test/config.ru
|
216
|
+
- spec/rails-2-test/config/application.rb
|
227
217
|
- spec/rails-2-test/script/console
|
228
|
-
- spec/rails-3-test/config/application.rb
|
229
218
|
- spec/rails-3-test/config.ru
|
219
|
+
- spec/rails-3-test/config/application.rb
|
230
220
|
- spec/rails-3-test/script/rails
|
231
221
|
- spec/rails-4-test/bin/rails
|
232
|
-
- spec/rails-4-test/config/application.rb
|
233
222
|
- spec/rails-4-test/config.ru
|
223
|
+
- spec/rails-4-test/config/application.rb
|
224
|
+
- spec/rails-engine-test/spec/dummy/config.ru
|
225
|
+
- spec/rails-engine-test/spec/dummy/config/application.rb
|
226
|
+
- spec/rails-engine-test/spec/dummy/script/rails
|
234
227
|
- spec/spec_key
|
235
228
|
- spec/spec_key.pub
|
236
|
-
has_rdoc:
|