nenv 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d917265f8d1d8e39066ac71d48d6b3f5893b1d55
4
- data.tar.gz: 97282240ee65114e25585c6c69d2049c10de1b65
3
+ metadata.gz: d06558bd1f60f7df4ca005879f7edf5766d39f43
4
+ data.tar.gz: b799514f85b409d39b5cc00ed89a75ac40128a2e
5
5
  SHA512:
6
- metadata.gz: aa347c7f19065e60988782362dff2b8b219f48fd5bf0baba29851f6f73b80c1f66fb42ea3f38a90d8afc41f084790367a36f0b19fde2bfd35b47ef35ad2bdde8
7
- data.tar.gz: 921f77d78cb85ecaca8d2c4e073e8033bb24385b11ef00f936ea978c71489a83a88a597321d46c332089e7046303ba27abfdcb22fc4eacf3343625a3d59d35d0
6
+ metadata.gz: 34f8b3b1ba84e8cefded199b13f7aa36bba820455191dcedbb2a6811e2f06f49c39ccaccc8b6e25b20cb10c26bf594db4ccb76a7530cb53d70d27b2fe51e389e
7
+ data.tar.gz: 541451121f650f2d099632b0c8d900d5f8d630a78c19aa9245127606f71fb20986f77883532a3d14882b1195d4651fd666e93cb6170b056f5a08eddb700488ba
data/README.md CHANGED
@@ -54,7 +54,7 @@ You no longer have to care whether the value is "0" or "false" or "no" or "FALSE
54
54
  ```ruby
55
55
  # Without Nenv
56
56
  t.verbose = (ENV['CI'] == 'true')
57
- ok = ENV['RUBYGEMS_GEMDEPS'] == "1" || ENV.key?('BUNDLE_GEMFILE']
57
+ ok = ENV['RUBYGEMS_GEMDEPS'] == "1" || ENV.key?('BUNDLE_GEMFILE')
58
58
  ENV['DEBUG'] = "true"
59
59
 
60
60
  ```
@@ -1,3 +1,3 @@
1
1
  module Nenv
2
- VERSION = '0.1.0'
2
+ VERSION = '0.1.1'
3
3
  end
@@ -9,13 +9,16 @@ Gem::Specification.new do |spec|
9
9
  spec.authors = ['Cezary Baginski']
10
10
  spec.email = ['cezary@chronomantic.net']
11
11
  spec.summary = "Convenience wrapper for Ruby's ENV"
12
- spec.description = 'Using ENV is like using raw SQL statements in your code. Well all know how that ends...'
12
+ spec.description = 'Using ENV is like using raw SQL statements in your code. We all know how that ends...'
13
13
  spec.homepage = 'https://github.com/e2/nenv'
14
14
  spec.license = 'MIT'
15
15
 
16
- spec.files = `git ls-files -z`.split("\x0")
16
+ spec.files = `git ls-files -z`.split("\x0").reject do |f|
17
+ /^(?:\.rspec|\.rubocop.*\.yml|\.travis\.yml|Rakefile|Guardfile|Gemfile|spec\/.*)$/.match(f)
18
+ end
19
+
17
20
  spec.executables = spec.files.grep(/^bin\//) { |f| File.basename(f) }
18
- spec.test_files = spec.files.grep(/^(test|spec|features)\//)
21
+ spec.test_files = []
19
22
  spec.require_paths = ['lib']
20
23
 
21
24
  spec.add_development_dependency 'bundler', '~> 1.7'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nenv
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Cezary Baginski
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-12-13 00:00:00.000000000 Z
11
+ date: 2014-12-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -52,7 +52,7 @@ dependencies:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: '10.0'
55
- description: Using ENV is like using raw SQL statements in your code. Well all know
55
+ description: Using ENV is like using raw SQL statements in your code. We all know
56
56
  how that ends...
57
57
  email:
58
58
  - cezary@chronomantic.net
@@ -61,15 +61,8 @@ extensions: []
61
61
  extra_rdoc_files: []
62
62
  files:
63
63
  - ".gitignore"
64
- - ".rspec"
65
- - ".rubocop.yml"
66
- - ".rubocop_todo.yml"
67
- - ".travis.yml"
68
- - Gemfile
69
- - Guardfile
70
64
  - LICENSE.txt
71
65
  - README.md
72
- - Rakefile
73
66
  - lib/nenv.rb
74
67
  - lib/nenv/autoenvironment.rb
75
68
  - lib/nenv/builder.rb
@@ -78,12 +71,6 @@ files:
78
71
  - lib/nenv/environment/loader.rb
79
72
  - lib/nenv/version.rb
80
73
  - nenv.gemspec
81
- - spec/lib/nenv/builder_spec.rb
82
- - spec/lib/nenv/environment/dumper_spec.rb
83
- - spec/lib/nenv/environment/loader_spec.rb
84
- - spec/lib/nenv/environment_spec.rb
85
- - spec/lib/nenv_spec.rb
86
- - spec/spec_helper.rb
87
74
  homepage: https://github.com/e2/nenv
88
75
  licenses:
89
76
  - MIT
@@ -108,10 +95,4 @@ rubygems_version: 2.2.2
108
95
  signing_key:
109
96
  specification_version: 4
110
97
  summary: Convenience wrapper for Ruby's ENV
111
- test_files:
112
- - spec/lib/nenv/builder_spec.rb
113
- - spec/lib/nenv/environment/dumper_spec.rb
114
- - spec/lib/nenv/environment/loader_spec.rb
115
- - spec/lib/nenv/environment_spec.rb
116
- - spec/lib/nenv_spec.rb
117
- - spec/spec_helper.rb
98
+ test_files: []
data/.rspec DELETED
@@ -1,2 +0,0 @@
1
- --color
2
- --require spec_helper
@@ -1 +0,0 @@
1
- inherit_from: .rubocop_todo.yml
@@ -1,33 +0,0 @@
1
- # This configuration was generated by `rubocop --auto-gen-config`
2
- # on 2014-12-13 13:35:53 +0100 using RuboCop version 0.28.0.
3
- # The point is for the user to remove these configuration records
4
- # one by one as the offenses are removed from the code base.
5
- # Note that changes in the inspected code, or installation of new
6
- # versions of RuboCop, may require this file to be generated again.
7
-
8
- # Offense count: 1
9
- Lint/HandleExceptions:
10
- Enabled: false
11
-
12
- # Offense count: 1
13
- Metrics/AbcSize:
14
- Max: 16
15
-
16
- # Offense count: 1
17
- # Configuration parameters: AllowURI, URISchemes.
18
- Metrics/LineLength:
19
- Max: 112
20
-
21
- # Offense count: 1
22
- # Configuration parameters: CountComments.
23
- Metrics/MethodLength:
24
- Max: 11
25
-
26
- # Offense count: 8
27
- Style/Documentation:
28
- Enabled: false
29
-
30
- # Offense count: 1
31
- # Configuration parameters: EnforcedStyle, SupportedStyles.
32
- Style/MethodName:
33
- Enabled: false
@@ -1,13 +0,0 @@
1
- language: ruby
2
- bundler_args: --without development
3
- rvm:
4
- - 1.9.3
5
- - 2.0.0
6
- - 2.1.5
7
- - ruby-head
8
- - jruby
9
- - rbx
10
- matrix:
11
- allow_failures:
12
- - rvm: rbx
13
- - rvm: jruby
data/Gemfile DELETED
@@ -1,12 +0,0 @@
1
- source 'https://rubygems.org'
2
-
3
- # Specify your gem's dependencies in nenv.gemspec
4
- gemspec development_group: :test
5
-
6
- gem 'coveralls', require: false
7
-
8
- group :development do
9
- gem 'guard-rspec', '~> 4.5', require: false
10
- gem 'guard-rubocop', require: false
11
- gem 'pry'
12
- end
data/Guardfile DELETED
@@ -1,32 +0,0 @@
1
- # A sample Guardfile
2
- # More info at https://github.com/guard/guard#readme
3
-
4
- ## Uncomment and set this to only include directories you want to watch
5
- directories(%w(lib spec))
6
-
7
- ## Uncomment to clear the screen before every task
8
- # clearing :on
9
-
10
- group :spec, halt_on_fail: true do
11
- guard :rspec, cmd: 'bundle exec rspec' do
12
- require 'guard/rspec/dsl'
13
- dsl = Guard::RSpec::Dsl.new(self)
14
-
15
- # Feel free to open issues for suggestions and improvements
16
-
17
- # RSpec files
18
- rspec = dsl.rspec
19
- watch(rspec.spec_helper) { rspec.spec_dir }
20
- watch(rspec.spec_support) { rspec.spec_dir }
21
- watch(rspec.spec_files)
22
-
23
- # Ruby files
24
- ruby = dsl.ruby
25
- dsl.watch_spec_files_for(ruby.lib_files)
26
- end
27
-
28
- guard :rubocop do
29
- watch(/.+\.rb$/)
30
- watch(/(?:.+\/)?\.rubocop(?:_todo)?\.yml$/) { |m| File.dirname(m[0]) }
31
- end
32
- end
data/Rakefile DELETED
@@ -1,17 +0,0 @@
1
- require 'bundler/gem_tasks'
2
-
3
- require 'nenv'
4
-
5
- default_tasks = []
6
-
7
- require 'rspec/core/rake_task'
8
- default_tasks << RSpec::Core::RakeTask.new(:spec) do |t|
9
- t.verbose = Nenv.ci?
10
- end
11
-
12
- unless Nenv.ci?
13
- require 'rubocop/rake_task'
14
- default_tasks << RuboCop::RakeTask.new(:rubocop)
15
- end
16
-
17
- task default: default_tasks.map(&:name)
@@ -1,27 +0,0 @@
1
- require 'nenv/builder'
2
-
3
- RSpec.describe Nenv::Builder do
4
- describe '#build' do
5
- before do
6
- allow(ENV).to receive(:[]).with('FOO')
7
- end
8
-
9
- it 'returns a class with the given methods' do
10
- FooEnv = Nenv::Builder.build do
11
- create_method(:foo?)
12
- end
13
- FooEnv.new.foo?
14
- end
15
-
16
- context 'with duplicate methods' do
17
- it 'fails' do
18
- expect do
19
- FooEnv = Nenv::Builder.build do
20
- create_method(:foo?)
21
- create_method(:foo?)
22
- end
23
- end.to raise_error(Nenv::Environment::AlreadyExistsError)
24
- end
25
- end
26
- end
27
- end
@@ -1,34 +0,0 @@
1
- require 'yaml'
2
-
3
- require 'nenv/environment/dumper'
4
-
5
- RSpec.describe Nenv::Environment::Dumper do
6
- subject { described_class.new.dump(value) }
7
-
8
- context "with \"abc\"" do
9
- let(:value) { 'abc' }
10
- it { is_expected.to eq('abc') }
11
- end
12
-
13
- context 'with 123' do
14
- let(:value) { 123 }
15
- it { is_expected.to eq('123') }
16
- end
17
-
18
- context 'with nil' do
19
- let(:value) { nil }
20
- it { is_expected.to eq(nil) }
21
- end
22
-
23
- context 'with a block' do
24
- subject do
25
- described_class.new.dump(value) { |data| YAML.dump(data) }
26
- end
27
-
28
- context 'with a yaml string' do
29
- let(:value) { { foo: 3 } }
30
- let(:yaml) { "---\n:foo: 3\n" }
31
- it { is_expected.to eq(yaml) }
32
- end
33
- end
34
- end
@@ -1,59 +0,0 @@
1
- require 'yaml'
2
- require 'nenv/environment/loader'
3
-
4
- RSpec.describe Nenv::Environment::Loader do
5
- context 'with no block' do
6
- subject { described_class.new(meth).load(value) }
7
-
8
- context 'with a normal method' do
9
- let(:meth) { :foo }
10
-
11
- context "with \"abc\"" do
12
- let(:value) { 'abc' }
13
- it { is_expected.to eq('abc') }
14
- end
15
- end
16
-
17
- context 'with a bool method' do
18
- let(:meth) { :foo? }
19
-
20
- %w(1 true y yes TRUE YES foobar).each do |data|
21
- context "with #{data.inspect}" do
22
- let(:value) { data }
23
- it { is_expected.to eq(true) }
24
- end
25
- end
26
-
27
- %w(0 false n no FALSE NO).each do |data|
28
- context "with #{data.inspect}" do
29
- let(:value) { data }
30
- it { is_expected.to eq(false) }
31
- end
32
- end
33
-
34
- context 'with nil' do
35
- let(:value) { nil }
36
- it { is_expected.to eq(nil) }
37
- end
38
-
39
- context 'when empty string' do
40
- let(:value) { '' }
41
- it do
42
- expect { subject }.to raise_error(
43
- ArgumentError, /Can't convert empty string into Bool/
44
- )
45
- end
46
- end
47
- end
48
- end
49
-
50
- context 'with a block' do
51
- subject do
52
- described_class.new(:foo).load(value) { |data| YAML.load(data) }
53
- end
54
- context 'with a yaml string' do
55
- let(:value) { "--- foo\n...\n" }
56
- it { is_expected.to eq('foo') }
57
- end
58
- end
59
- end
@@ -1,220 +0,0 @@
1
- require 'yaml'
2
-
3
- require 'nenv/environment'
4
-
5
- RSpec.describe Nenv::Environment do
6
- let(:env) { instance_double(Hash) } # a hash is close enough
7
- before(:each) { stub_const('ENV', env) }
8
-
9
- context 'without integration' do
10
- let(:dumper) { instance_double(described_class::Dumper) }
11
- let(:loader) { instance_double(described_class::Loader) }
12
-
13
- before do
14
- allow(described_class::Dumper).to receive(:new).and_return(dumper)
15
- allow(described_class::Loader).to receive(:new).and_return(loader)
16
- end
17
-
18
- context 'with no namespace' do
19
- let(:instance) { described_class.new }
20
-
21
- context 'with an existing method' do
22
- before do
23
- subject.create_method(:foo?)
24
- end
25
-
26
- it 'uses the name as full key' do
27
- expect(ENV).to receive(:[]).with('FOO').and_return('true')
28
- expect(loader).to receive(:load).with('true').and_return(true)
29
- expect(subject.foo?).to eq(true)
30
- end
31
- end
32
- end
33
-
34
- context 'with any namespace' do
35
- let(:namespace) { 'bar' }
36
- let(:instance) { described_class.new(namespace) }
37
-
38
- describe 'creating a method' do
39
- subject { instance }
40
-
41
- before do
42
- subject.create_method(:foo)
43
- end
44
-
45
- it { is_expected.to respond_to(:foo) }
46
-
47
- context 'when the method already exists' do
48
- let(:error) { described_class::AlreadyExistsError }
49
- let(:message) { 'Method :foo already exists' }
50
- specify do
51
- expect do
52
- subject.create_method(:foo)
53
- end.to raise_error(error, message)
54
- end
55
- end
56
- end
57
-
58
- describe 'calling' do
59
- subject { instance }
60
-
61
- context 'when method does not exist' do
62
- let(:error) { NoMethodError }
63
- let(:message) { /undefined method `foo' for/ }
64
- it { expect { subject.foo }.to raise_error(error, message) }
65
- end
66
-
67
- context 'with a reader method' do
68
- context 'with no block' do
69
- before { instance.create_method(meth) }
70
-
71
- context 'with a normal method' do
72
- let(:meth) { :foo }
73
- before do
74
- allow(loader).to receive(:load).with('123').and_return(123)
75
- end
76
-
77
- it 'returns unmarshalled stored value' do
78
- expect(ENV).to receive(:[]).with('BAR_FOO').and_return('123')
79
- expect(subject.foo).to eq 123
80
- end
81
- end
82
-
83
- context 'with a bool method' do
84
- let(:meth) { :foo? }
85
-
86
- it 'references the proper ENV variable' do
87
- allow(loader).to receive(:load).with('false').and_return(false)
88
- expect(ENV).to receive(:[]).with('BAR_FOO').and_return('false')
89
- expect(subject.foo?).to eq false
90
- end
91
- end
92
- end
93
-
94
- context 'with a block' do
95
- before do
96
- instance.create_method(:foo) { |data| YAML.load(data) }
97
- end
98
-
99
- let(:value) { "---\n:foo: 5\n" }
100
-
101
- it 'unmarshals using the block' do
102
- allow(ENV).to receive(:[]).with('BAR_FOO')
103
- .and_return(value)
104
-
105
- allow(loader).to receive(:load).with(value) do |arg, &block|
106
- expect(block).to be
107
- block.call(arg)
108
- end
109
-
110
- expect(subject.foo).to eq(foo: 5)
111
- end
112
- end
113
- end
114
-
115
- context 'with a writer method' do
116
- before { instance.create_method(:foo=) }
117
-
118
- it 'set the environment variable' do
119
- expect(ENV).to receive(:[]=).with('BAR_FOO', '123')
120
- allow(dumper).to receive(:dump).with(123).and_return('123')
121
- subject.foo = 123
122
- end
123
-
124
- it 'marshals and stores the value' do
125
- expect(ENV).to receive(:[]=).with('BAR_FOO', '123')
126
- allow(dumper).to receive(:dump).with(123).and_return('123')
127
- subject.foo = 123
128
- end
129
- end
130
-
131
- context 'with a method containing underscores' do
132
- before { instance.create_method(:foo_baz) }
133
- it 'reads the correct variable' do
134
- expect(ENV).to receive(:[]).with('BAR_FOO_BAZ').and_return('123')
135
- allow(loader).to receive(:load).with('123').and_return(123)
136
- subject.foo_baz
137
- end
138
- end
139
-
140
- context 'with a block' do
141
- before do
142
- instance.create_method(:foo=) { |data| YAML.dump(data) }
143
- end
144
-
145
- let(:result) { "---\n:foo: 5\n" }
146
-
147
- it 'marshals using the block' do
148
- allow(ENV).to receive(:[]=).with('BAR_FOO', result)
149
-
150
- allow(dumper).to receive(:dump).with(foo: 5) do |arg, &block|
151
- expect(block).to be
152
- block.call(arg)
153
- end
154
-
155
- subject.foo = { foo: 5 }
156
- end
157
- end
158
-
159
- context 'with an unsanitized name' do
160
- pending
161
- end
162
- end
163
- end
164
- end
165
-
166
- describe 'with integration' do
167
- context 'with any namespace' do
168
- let(:namespace) { 'baz' }
169
- let(:instance) { described_class.new(namespace) }
170
- subject { instance }
171
-
172
- context 'with a reader method' do
173
- context 'with no block' do
174
- before { instance.create_method(:foo) }
175
-
176
- it 'returns the stored value' do
177
- allow(ENV).to receive(:[]).with('BAZ_FOO').and_return('123')
178
- expect(subject.foo).to eq '123'
179
- end
180
- end
181
-
182
- context 'with a block' do
183
- before do
184
- instance.create_method(:foo) { |data| YAML.load(data) }
185
- end
186
-
187
- it 'unmarshals the value' do
188
- expect(ENV).to receive(:[]).with('BAZ_FOO')
189
- .and_return("---\n:foo: 5\n")
190
-
191
- expect(subject.foo).to eq(foo: 5)
192
- end
193
- end
194
- end
195
-
196
- context 'with a writer method' do
197
- context 'with no block' do
198
- before { instance.create_method(:foo=) }
199
-
200
- it 'marshals and stores the value' do
201
- expect(ENV).to receive(:[]=).with('BAZ_FOO', '123')
202
- subject.foo = 123
203
- end
204
- end
205
-
206
- context 'with a block' do
207
- before do
208
- instance.create_method(:foo=) { |data| YAML.dump(data) }
209
- end
210
-
211
- it 'nmarshals the value' do
212
- expect(ENV).to receive(:[]=).with('BAZ_FOO', "---\n:foo: 5\n")
213
-
214
- subject.foo = { foo: 5 }
215
- end
216
- end
217
- end
218
- end
219
- end
220
- end
@@ -1,66 +0,0 @@
1
- require 'nenv'
2
-
3
- RSpec.describe Nenv do
4
- let(:env) { instance_double(Hash) } # Hash is close enough
5
- before { stub_const('ENV', env) }
6
-
7
- describe 'Nenv() helper method' do
8
- it 'reads from env' do
9
- expect(ENV).to receive(:[]).with('GIT_BROWSER').and_return('chrome')
10
- Nenv('git').browser
11
- end
12
-
13
- it 'return the value from env' do
14
- allow(ENV).to receive(:[]).with('GIT_BROWSER').and_return('firefox')
15
- expect(Nenv('git').browser).to eq('firefox')
16
- end
17
- end
18
-
19
- describe 'Nenv module' do
20
- it 'reads from env' do
21
- expect(ENV).to receive(:[]).with('CI').and_return('true')
22
- Nenv.ci?
23
- end
24
-
25
- it 'return the value from env' do
26
- allow(ENV).to receive(:[]).with('CI').and_return('false')
27
- expect(Nenv.ci?).to be(false)
28
- end
29
-
30
- context 'with no method' do
31
- it 'automatically creates the method' do
32
- expect(ENV).to receive(:[]).with('FOO').and_return('true')
33
- Nenv.foo?
34
- end
35
- end
36
-
37
- context 'with existing method' do
38
- before do
39
- Nenv.instance.create_method(:foo?)
40
- end
41
-
42
- it 'reads from env' do
43
- expect(ENV).to receive(:[]).with('FOO').and_return('true')
44
- Nenv.foo?
45
- end
46
-
47
- it 'return the value from env' do
48
- expect(ENV).to receive(:[]).with('FOO').and_return('true')
49
- expect(Nenv.foo?).to be(true)
50
- end
51
- end
52
- end
53
-
54
- # Test added here to properly test if builder is required
55
- describe 'Nenv builder' do
56
- before do
57
- allow(ENV).to receive(:[]).with('FOO').and_return('false')
58
- end
59
- it 'is required and works' do
60
- FooEnv = Nenv::Builder.build do
61
- create_method(:foo?)
62
- end
63
- FooEnv.new.foo?
64
- end
65
- end
66
- end
@@ -1,49 +0,0 @@
1
- require 'coveralls'
2
- Coveralls.wear!
3
-
4
- RSpec.configure do |config|
5
- config.expect_with :rspec do |expectations|
6
- expectations.include_chain_clauses_in_custom_matcher_descriptions = true
7
- end
8
-
9
- config.mock_with :rspec do |mocks|
10
- mocks.verify_partial_doubles = true
11
- end
12
-
13
- config.filter_run focus: ENV['CI'] != 'true'
14
- config.run_all_when_everything_filtered = true
15
-
16
- config.disable_monkey_patching!
17
-
18
- # config.warnings = true
19
-
20
- config.default_formatter = 'doc' if config.files_to_run.one?
21
-
22
- # config.profile_examples = 10
23
-
24
- config.order = :random
25
-
26
- Kernel.srand config.seed
27
-
28
- config.before do
29
- allow(ENV).to receive(:[]) do |key|
30
- fail "stub me: ENV[#{key.inspect}]"
31
- end
32
-
33
- allow(ENV).to receive(:[]=) do |key, value|
34
- fail "stub me: ENV[#{key.inspect}] = #{value.inspect}"
35
- end
36
-
37
- allow(ENV).to receive(:[]).with('PRYRC').and_call_original
38
- allow(ENV).to receive(:[]).with('DISABLE_PRY').and_call_original
39
- allow(ENV).to receive(:[]).with('ANSICON').and_call_original
40
- allow(ENV).to receive(:[]).with('TERM').and_call_original
41
- end
42
-
43
- config.after do
44
- begin
45
- Nenv.method(:reset).call
46
- rescue NameError
47
- end
48
- end
49
- end