envee 0.0.3 → 0.0.4
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 +5 -13
- data/lib/envee.rb +38 -0
- data/lib/envee/version.rb +1 -1
- data/spec/envee_spec.rb +22 -22
- metadata +14 -15
checksums.yaml
CHANGED
@@ -1,15 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
|
5
|
-
data.tar.gz: !binary |-
|
6
|
-
MDMyMzllZmVlODk1MjgxYzQxNjg0MWIyZmE1YzkwOTNhNTFmODhiNQ==
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: f479aedd1066f6b181c5391ae2fe3611ea98a823
|
4
|
+
data.tar.gz: 11cb01c5f92bef72126dbf7aed6d95ec373df55c
|
7
5
|
SHA512:
|
8
|
-
metadata.gz:
|
9
|
-
|
10
|
-
YjIxOTkyYjdjODg2ZTdkY2M0OGJlZTNhZGZiNzNmYWFiNjY3NTI2NGMwZWI4
|
11
|
-
YWZjMWVlMWI2OTc4ZTQwODc4YTA4NWE2YjQyNGE3YTVkYzVmZTg=
|
12
|
-
data.tar.gz: !binary |-
|
13
|
-
OWJjYzY4YjBmNTBmMzQwNDhlN2RiYTgyMTJjZTY3ZmNiNmU0NjRhYmQ5YWE3
|
14
|
-
NzVhZjU5YWUwMzBiMmRiOGNjOGM5YTZkYmNkODI3ZmJlY2E4YTEyY2JlNjdh
|
15
|
-
NjNmYzVhMzE3MjIzODc2OGIxNDIyYTc0ZTI5MTAwYmExMjk4Y2E=
|
6
|
+
metadata.gz: a1d85e394ff8fc1bd746e46e3a671c93a0689c9110eb9768a93ee035670ec4e28566c8b9d3634d0721a24577a4f18918c95626bd0ab0a1a6600a59c3b978c5f0
|
7
|
+
data.tar.gz: 6016549dae3162d96b2d2086f695df57241adc2d75a2e36dd7585d15ac32b7caea9e2ca140bb0ca3dd746ab6cf7a8c3c884ac65a29907d4cd58f2a3fa044aeed
|
data/lib/envee.rb
CHANGED
@@ -13,38 +13,76 @@ module Envee
|
|
13
13
|
end
|
14
14
|
end
|
15
15
|
|
16
|
+
class MissingValueError < StandardError
|
17
|
+
def initialize(key)
|
18
|
+
super("Environment variable had no value: #{key.inspect}")
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
class UncoercibleError < StandardError
|
23
|
+
def initialize(key, type)
|
24
|
+
super("Unable to coerce environment variable #{key.inspect} to #{type}")
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
16
28
|
def int(*args, &block)
|
17
29
|
Integer(fetch(*args, &block))
|
30
|
+
rescue ArgumentError
|
31
|
+
raise UncoercibleError.new(args.first, 'Integer')
|
32
|
+
rescue KeyError
|
33
|
+
raise MissingValueError.new(args.first)
|
18
34
|
end
|
19
35
|
|
20
36
|
def fl(*args, &block)
|
21
37
|
Float(fetch(*args, &block))
|
38
|
+
rescue ArgumentError
|
39
|
+
raise UncoercibleError.new(args.first, 'Float')
|
40
|
+
rescue KeyError
|
41
|
+
raise MissingValueError.new(args.first)
|
22
42
|
end
|
23
43
|
|
24
44
|
def str(*args, &block)
|
25
45
|
String(fetch(*args, &block))
|
46
|
+
rescue ArgumentError
|
47
|
+
raise UncoercibleError.new(args.first, 'String')
|
48
|
+
rescue KeyError
|
49
|
+
raise MissingValueError.new(args.first)
|
26
50
|
end
|
27
51
|
|
28
52
|
def sym(*args, &block)
|
29
53
|
String(fetch(*args, &block)).to_sym
|
54
|
+
rescue ArgumentError
|
55
|
+
raise UncoercibleError.new(args.first, 'Symbol')
|
56
|
+
rescue KeyError
|
57
|
+
raise MissingValueError.new(args.first)
|
30
58
|
end
|
31
59
|
|
32
60
|
def bool(*args, &block)
|
33
61
|
value = fetch(*args, &block)
|
34
62
|
|
35
63
|
value && value !~ /\A(0|no|false|off|nil|null|)\z/i
|
64
|
+
rescue KeyError
|
65
|
+
raise MissingValueError.new(args.first)
|
36
66
|
end
|
37
67
|
|
38
68
|
def time(*args, &block)
|
39
69
|
value = fetch(*args, &block)
|
40
70
|
return value if value.is_a?(Time)
|
41
71
|
Time.parse(value).utc
|
72
|
+
rescue ArgumentError
|
73
|
+
raise UncoercibleError.new(args.first, 'Time')
|
74
|
+
rescue KeyError
|
75
|
+
raise MissingValueError.new(args.first)
|
42
76
|
end
|
43
77
|
|
44
78
|
def int_time(*args, &block)
|
45
79
|
value = Integer(fetch(*args, &block))
|
46
80
|
return value if value.is_a?(Time)
|
47
81
|
Time.at(value).utc
|
82
|
+
rescue ArgumentError
|
83
|
+
raise UncoercibleError.new(args.first, 'Integer')
|
84
|
+
rescue KeyError
|
85
|
+
raise MissingValueError.new(args.first)
|
48
86
|
end
|
49
87
|
|
50
88
|
def validate!(options = {})
|
data/lib/envee/version.rb
CHANGED
data/spec/envee_spec.rb
CHANGED
@@ -28,15 +28,15 @@ describe Envee do
|
|
28
28
|
end
|
29
29
|
|
30
30
|
context 'when requesting a value not in env with no default' do
|
31
|
-
it 'raises an
|
32
|
-
expect{env.int('NUM')}.to raise_error(
|
31
|
+
it 'raises an MissingValueError' do
|
32
|
+
expect{env.int('NUM')}.to raise_error(Envee::MissingValueError, 'Environment variable had no value: "NUM"')
|
33
33
|
end
|
34
34
|
end
|
35
35
|
|
36
36
|
context 'when requesting a value in env that cannot be casted to integer' do
|
37
|
-
it 'raises an
|
37
|
+
it 'raises an UncoercibleError' do
|
38
38
|
env['NUM'] = 'a'
|
39
|
-
expect{env.int('NUM')}.to raise_error(
|
39
|
+
expect{env.int('NUM')}.to raise_error(Envee::UncoercibleError, 'Unable to coerce environment variable "NUM" to Integer')
|
40
40
|
end
|
41
41
|
end
|
42
42
|
end
|
@@ -62,15 +62,15 @@ describe Envee do
|
|
62
62
|
end
|
63
63
|
|
64
64
|
context 'when requesting a value not in env with no default' do
|
65
|
-
it 'raises an
|
66
|
-
expect{env.fl('NUM')}.to raise_error(
|
65
|
+
it 'raises an MissingValueError' do
|
66
|
+
expect{env.fl('NUM')}.to raise_error(Envee::MissingValueError, 'Environment variable had no value: "NUM"')
|
67
67
|
end
|
68
68
|
end
|
69
69
|
|
70
70
|
context 'when requesting a value in env that cannot be casted to float' do
|
71
|
-
it 'raises an
|
71
|
+
it 'raises an UncoercibleError' do
|
72
72
|
env['NUM'] = 'a'
|
73
|
-
expect{env.fl('NUM')}.to raise_error(
|
73
|
+
expect{env.fl('NUM')}.to raise_error(Envee::UncoercibleError, 'Unable to coerce environment variable "NUM" to Float')
|
74
74
|
end
|
75
75
|
end
|
76
76
|
end
|
@@ -96,8 +96,8 @@ describe Envee do
|
|
96
96
|
end
|
97
97
|
|
98
98
|
context 'when requesting a value not in env with no default' do
|
99
|
-
it 'raises an
|
100
|
-
expect{env.str('NUM')}.to raise_error(
|
99
|
+
it 'raises an MissingValueError' do
|
100
|
+
expect{env.str('NUM')}.to raise_error(Envee::MissingValueError, 'Environment variable had no value: "NUM"')
|
101
101
|
end
|
102
102
|
end
|
103
103
|
end
|
@@ -123,8 +123,8 @@ describe Envee do
|
|
123
123
|
end
|
124
124
|
|
125
125
|
context 'when requesting a value not in env with no default' do
|
126
|
-
it 'raises an
|
127
|
-
expect{env.sym('NUM')}.to raise_error(
|
126
|
+
it 'raises an MissingValueError' do
|
127
|
+
expect{env.sym('NUM')}.to raise_error(Envee::MissingValueError, 'Environment variable had no value: "NUM"')
|
128
128
|
end
|
129
129
|
end
|
130
130
|
end
|
@@ -159,8 +159,8 @@ describe Envee do
|
|
159
159
|
end
|
160
160
|
|
161
161
|
context 'when requesting a value not in env with no default' do
|
162
|
-
it 'raises an
|
163
|
-
expect{env.bool('START')}.to raise_error(
|
162
|
+
it 'raises an MissingValueError' do
|
163
|
+
expect{env.bool('START')}.to raise_error(Envee::MissingValueError, 'Environment variable had no value: "START"')
|
164
164
|
end
|
165
165
|
end
|
166
166
|
end
|
@@ -192,15 +192,15 @@ describe Envee do
|
|
192
192
|
end
|
193
193
|
|
194
194
|
context 'when requesting a value not in env with no default' do
|
195
|
-
it 'raises an
|
196
|
-
expect{env.time('TIME')}.to raise_error(
|
195
|
+
it 'raises an MissingValueError' do
|
196
|
+
expect{env.time('TIME')}.to raise_error(Envee::MissingValueError, 'Environment variable had no value: "TIME"')
|
197
197
|
end
|
198
198
|
end
|
199
199
|
|
200
200
|
context 'when requesting a value in env that cannot be casted to time' do
|
201
|
-
it 'raises an
|
201
|
+
it 'raises an UncoercibleError' do
|
202
202
|
env['TIME'] = 'a'
|
203
|
-
expect{env.time('TIME')}.to raise_error(
|
203
|
+
expect{env.time('TIME')}.to raise_error(Envee::UncoercibleError, 'Unable to coerce environment variable "TIME" to Time')
|
204
204
|
end
|
205
205
|
end
|
206
206
|
end
|
@@ -226,15 +226,15 @@ describe Envee do
|
|
226
226
|
end
|
227
227
|
|
228
228
|
context 'when requesting a value not in env with no default' do
|
229
|
-
it 'raises an
|
230
|
-
expect{env.int_time('TIME')}.to raise_error(
|
229
|
+
it 'raises an MissingValueError' do
|
230
|
+
expect{env.int_time('TIME')}.to raise_error(Envee::MissingValueError, 'Environment variable had no value: "TIME"')
|
231
231
|
end
|
232
232
|
end
|
233
233
|
|
234
234
|
context 'when requesting a value in env that cannot be casted to time' do
|
235
|
-
it 'raises an
|
235
|
+
it 'raises an UncoercibleError' do
|
236
236
|
env['TIME'] = 'a'
|
237
|
-
expect{env.int_time('TIME')}.to raise_error(
|
237
|
+
expect{env.int_time('TIME')}.to raise_error(Envee::UncoercibleError, 'Unable to coerce environment variable "TIME" to Integer')
|
238
238
|
end
|
239
239
|
end
|
240
240
|
end
|
metadata
CHANGED
@@ -1,55 +1,55 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: envee
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Allen Madsen
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-12-
|
11
|
+
date: 2015-12-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - ~>
|
17
|
+
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '1.7'
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - ~>
|
24
|
+
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '1.7'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rake
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - ~>
|
31
|
+
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '10.0'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- - ~>
|
38
|
+
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '10.0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rspec
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- -
|
45
|
+
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: '0'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- -
|
52
|
+
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
55
|
description:
|
@@ -59,9 +59,9 @@ executables: []
|
|
59
59
|
extensions: []
|
60
60
|
extra_rdoc_files: []
|
61
61
|
files:
|
62
|
-
- .gitignore
|
63
|
-
- .rspec
|
64
|
-
- .rubocop.yml
|
62
|
+
- ".gitignore"
|
63
|
+
- ".rspec"
|
64
|
+
- ".rubocop.yml"
|
65
65
|
- Gemfile
|
66
66
|
- LICENSE.txt
|
67
67
|
- README.md
|
@@ -81,21 +81,20 @@ require_paths:
|
|
81
81
|
- lib
|
82
82
|
required_ruby_version: !ruby/object:Gem::Requirement
|
83
83
|
requirements:
|
84
|
-
- -
|
84
|
+
- - ">="
|
85
85
|
- !ruby/object:Gem::Version
|
86
86
|
version: '0'
|
87
87
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
88
88
|
requirements:
|
89
|
-
- -
|
89
|
+
- - ">="
|
90
90
|
- !ruby/object:Gem::Version
|
91
91
|
version: '0'
|
92
92
|
requirements: []
|
93
93
|
rubyforge_project:
|
94
|
-
rubygems_version: 2.4.5
|
94
|
+
rubygems_version: 2.4.5.1
|
95
95
|
signing_key:
|
96
96
|
specification_version: 4
|
97
97
|
summary: Provides casting wrappers around fetch for environment variables.
|
98
98
|
test_files:
|
99
99
|
- spec/envee_spec.rb
|
100
100
|
- spec/spec_helper.rb
|
101
|
-
has_rdoc:
|