basic_config 0.1.0 → 0.1.1

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.
data/README.md CHANGED
@@ -84,11 +84,13 @@ if you're constructing BasicConfig with `new`, then it'll show source code
84
84
  location where BasicConfig is initialized.
85
85
 
86
86
  ```ruby
87
+ # Let's say this is config.rb, line 7:
87
88
  AppConfig = BasicConfig.new({ secret_token: 'something' })
88
- secret_token = AppConfig.secret_toklen # Note a typo here
89
89
 
90
- # Will result in exception:
91
- # BasicConfig::NotFound: Configuration key 'secret_toklen' is missing in BasicConfig constructed at your_file.rb:5 in `new'
90
+ # And this is somewhere in some method in another file:
91
+ secret_token = AppConfig.secret_toklen # Note a typo here
92
+ # Above line will result in BasicConfig::NotFound exception with message:
93
+ # Configuration key 'secret_toklen' is missing in BasicConfig constructed at config.rb:7 in `method'
92
94
  ```
93
95
 
94
96
  *Note:* There is also an `include?` method which you can use to check if
data/Rakefile CHANGED
@@ -1,2 +1,8 @@
1
1
  #!/usr/bin/env rake
2
2
  require "bundler/gem_tasks"
3
+
4
+ require 'rspec/core/rake_task'
5
+ RSpec::Core::RakeTask.new(:spec)
6
+
7
+ task :default => :spec
8
+ task :test => :spec
@@ -3,16 +3,16 @@ require File.expand_path('../lib/basic_config', __FILE__)
3
3
 
4
4
  Gem::Specification.new do |gem|
5
5
  gem.authors = ['Stepan Tubanov']
6
- gem.email = ['stepan773@gmail.com']
6
+ gem.email = ['stepan@tubanov.com']
7
7
  gem.description = 'Makes it easier to use configuration by wrapping it in a struct-like object'
8
8
  gem.summary = 'Friendly configuration wrapper'
9
- gem.homepage = 'https://github.com/stephan778/basic_config'
9
+ gem.homepage = 'https://github.com/stepantubanov/basic_config'
10
10
 
11
11
  gem.files = `git ls-files`.split($\)
12
12
  gem.test_files = gem.files.grep(%r{^(spec)/})
13
13
  gem.name = 'basic_config'
14
14
  gem.require_path = 'lib'
15
- gem.version = '0.1.0'
15
+ gem.version = '0.1.1'
16
16
 
17
17
  gem.add_development_dependency('rspec', '~> 2.10')
18
18
  end
@@ -6,16 +6,22 @@ describe BasicConfig do
6
6
  'one' => 'something',
7
7
  'two' => 'other_value',
8
8
  'three' => {
9
- 'nested' => '123'
9
+ 'nested' => '123',
10
+ 'more' => {
11
+ 'param' => 'value'
12
+ }
10
13
  }
11
14
  }
12
15
  end
13
16
  let(:symbolized_hash) do
14
17
  {
15
- :one => 'something',
16
- :two => 'other_value',
17
- :three => {
18
- :nested => '123'
18
+ one: 'something',
19
+ two: 'other_value',
20
+ three: {
21
+ nested: '123',
22
+ more: {
23
+ param: 'value'
24
+ }
19
25
  }
20
26
  }
21
27
  end
@@ -45,7 +51,7 @@ describe BasicConfig do
45
51
  should respond_to :three
46
52
  should_not respond_to :unknown
47
53
  end
48
-
54
+
49
55
  it 'raises BasicConfig::KeyNotFound for unknown keys' do
50
56
  expect { subject.four }.to raise_error(BasicConfig::NotFound)
51
57
  end
@@ -81,7 +87,7 @@ describe BasicConfig do
81
87
  BasicConfig.load_env('file', environment).to_hash.should == expected_result
82
88
  end
83
89
  end
84
-
90
+
85
91
  describe BasicConfig::NotFound do
86
92
  let(:exception) do
87
93
  begin
@@ -93,6 +99,7 @@ describe BasicConfig do
93
99
  subject { exception.message }
94
100
  let(:original_config) { BasicConfig.new(hash) }
95
101
  let(:original_scoping) { '' }
102
+ let(:scoped_missing_key_name) { original_scoping + missing_key_name }
96
103
 
97
104
  shared_examples_for 'specific failure' do
98
105
  it 'contains the right location' do
@@ -100,15 +107,15 @@ describe BasicConfig do
100
107
  end
101
108
 
102
109
  it 'contains the right key' do
103
- should include "'#{missing_key_name}'"
110
+ should include "'#{scoped_missing_key_name}'"
104
111
  end
105
112
  end
106
113
 
107
114
  shared_examples_for 'construction contexts' do
108
115
  context 'when constructed manually' do
109
116
  let(:original_config) { BasicConfig.new(hash) }
110
- let(:location) { 'spec/basic_config_spec.rb:109' }
111
-
117
+ let(:location) { 'spec/basic_config_spec.rb:116' }
118
+
112
119
  it_behaves_like 'specific failure'
113
120
  end
114
121
 
@@ -116,7 +123,7 @@ describe BasicConfig do
116
123
  let(:content) { hash }
117
124
  let(:filename) { 'example.yml' }
118
125
  let(:location) { filename }
119
-
126
+
120
127
  before do
121
128
  YAML.stub(:load_file).with(filename).and_return(content)
122
129
  end
@@ -143,14 +150,21 @@ describe BasicConfig do
143
150
 
144
151
  context 'top-level' do
145
152
  let(:config) { original_config }
146
- let(:missing_key_name) { "#{original_scoping}missing_key" }
153
+ let(:missing_key_name) { 'missing_key' }
147
154
 
148
155
  it_behaves_like 'construction contexts'
149
156
  end
150
157
 
151
158
  context 'one-level in' do
152
159
  let(:config) { original_config.three }
153
- let(:missing_key_name) { "#{original_scoping}three.missing_key" }
160
+ let(:missing_key_name) { 'three.missing_key' }
161
+
162
+ it_behaves_like 'construction contexts'
163
+ end
164
+
165
+ context 'two-levels in' do
166
+ let(:config) { original_config.three.more }
167
+ let(:missing_key_name) { 'three.more.missing_key' }
154
168
 
155
169
  it_behaves_like 'construction contexts'
156
170
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: basic_config
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-06-21 00:00:00.000000000 Z
12
+ date: 2013-03-07 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec
@@ -30,7 +30,7 @@ dependencies:
30
30
  description: Makes it easier to use configuration by wrapping it in a struct-like
31
31
  object
32
32
  email:
33
- - stepan773@gmail.com
33
+ - stepan@tubanov.com
34
34
  executables: []
35
35
  extensions: []
36
36
  extra_rdoc_files: []
@@ -44,7 +44,7 @@ files:
44
44
  - basic_config.gemspec
45
45
  - lib/basic_config.rb
46
46
  - spec/basic_config_spec.rb
47
- homepage: https://github.com/stephan778/basic_config
47
+ homepage: https://github.com/stepantubanov/basic_config
48
48
  licenses: []
49
49
  post_install_message:
50
50
  rdoc_options: []
@@ -64,7 +64,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
64
64
  version: '0'
65
65
  requirements: []
66
66
  rubyforge_project:
67
- rubygems_version: 1.8.19
67
+ rubygems_version: 1.8.23
68
68
  signing_key:
69
69
  specification_version: 3
70
70
  summary: Friendly configuration wrapper