env_bang 0.2.10 → 0.3.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 +7 -0
- data/.travis.yml +1 -7
- data/README.md +15 -6
- data/lib/env_bang/classes.rb +11 -0
- data/lib/env_bang/version.rb +1 -1
- data/test/env_bang_test.rb +21 -0
- metadata +5 -11
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 56076f21b1106dd3b9f43505dc300ccd27d09cdb
|
4
|
+
data.tar.gz: a8d957643766fbf0e01c3386fa8f91ff84dbaa17
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 3f0f5477d06e160baf27e3cd37c6c3837f7facf41d029fa82be8f8a427ad2629aab132f9f80bf0a9088718bef8be62c628072054b451ef3990da18c97864b96c
|
7
|
+
data.tar.gz: a06cf701db3d782c7cd8f528f9043b35fd72951da9b960ff7b8fd13fd0e5147ab5a117966c791c42727a0f10970c43421e410826c82b18090b681ddd259830fb
|
data/.travis.yml
CHANGED
data/README.md
CHANGED
@@ -1,13 +1,13 @@
|
|
1
|
-
[](https://rubygems.org/gems/env_bang)
|
2
|
-
[](https://travis-ci.org/jcamenisch/ENV_BANG)
|
3
|
-
[](https://gemnasium.com/jcamenisch/ENV_BANG)
|
4
|
-
[](https://codeclimate.com/github/jcamenisch/ENV_BANG)
|
5
|
-
[](https://coveralls.io/r/jcamenisch/ENV_BANG)
|
6
|
-
|
7
1
|
# ENV!
|
8
2
|
|
9
3
|
Do a bang-up job managing your environment variables.
|
10
4
|
|
5
|
+
[](https://rubygems.org/gems/env_bang)
|
6
|
+
[](https://travis-ci.org/jcamenisch/ENV_BANG)
|
7
|
+
[](https://gemnasium.com/jcamenisch/ENV_BANG)
|
8
|
+
[](https://codeclimate.com/github/jcamenisch/ENV_BANG)
|
9
|
+
[](https://coveralls.io/r/jcamenisch/ENV_BANG)
|
10
|
+
|
11
11
|
ENV! provides a thin wrapper around ENV to accomplish a few things:
|
12
12
|
|
13
13
|
- Provide a central place to specify all your app’s environment variables.
|
@@ -108,6 +108,7 @@ ENV!.config do
|
|
108
108
|
use :MAIL_DELIVERY_METHOD, class: Symbol, default: :smtp
|
109
109
|
use :DEFAULT_FRACTION, class: Float
|
110
110
|
use :ENABLE_SOUNDTRACK, class: :boolean
|
111
|
+
use :PUPPETMASTERS, class: Hash
|
111
112
|
end
|
112
113
|
```
|
113
114
|
|
@@ -120,6 +121,14 @@ ENV!.config do
|
|
120
121
|
end
|
121
122
|
```
|
122
123
|
|
124
|
+
Hashes are split on commas (',') and key:value pairs are delimited by colon (':'). To get hashes of a specific type of value, use the `:of` option, and to use a different type for keys (default is `Symbol`), use the `:keys` option:
|
125
|
+
|
126
|
+
```ruby
|
127
|
+
ENV!.config do
|
128
|
+
use :BIRTHDAYS, class: Hash, of: Integer, keys: String
|
129
|
+
end
|
130
|
+
```
|
131
|
+
|
123
132
|
#### Default type conversion behavior
|
124
133
|
|
125
134
|
If you don’t specify a `:class` option for a variable, ENV! defaults to a special
|
data/lib/env_bang/classes.rb
CHANGED
@@ -20,6 +20,17 @@ class ENV_BANG
|
|
20
20
|
value.split(',').map { |v| cast(v.strip, item_options) }
|
21
21
|
end
|
22
22
|
|
23
|
+
def Hash(value, options)
|
24
|
+
key_options = options.merge(class: options.fetch(:keys, Symbol))
|
25
|
+
value_options = options.merge(class: options.fetch(:of, default_class))
|
26
|
+
{}.tap do |h|
|
27
|
+
value.split(',').each do |pair|
|
28
|
+
key, value = pair.split(':')
|
29
|
+
h[cast(key.strip, key_options)] = cast(value.strip, value_options)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
23
34
|
def Symbol(value, options)
|
24
35
|
value.to_sym
|
25
36
|
end
|
data/lib/env_bang/version.rb
CHANGED
data/test/env_bang_test.rb
CHANGED
@@ -99,6 +99,27 @@ describe ENV_BANG do
|
|
99
99
|
end
|
100
100
|
end
|
101
101
|
|
102
|
+
it "Casts Hashes" do
|
103
|
+
ENV['HASH'] = 'one: two, three: four'
|
104
|
+
ENV!.use 'HASH', class: Hash
|
105
|
+
|
106
|
+
ENV!['HASH'].must_equal({one: 'two', three: 'four'})
|
107
|
+
end
|
108
|
+
|
109
|
+
it 'Casts Hashes of Integers' do
|
110
|
+
ENV['INT_HASH'] = 'one: 111, two: 222'
|
111
|
+
ENV!.use 'INT_HASH', class: Hash, of: Integer
|
112
|
+
|
113
|
+
ENV!['INT_HASH'].must_equal({one: 111, two: 222})
|
114
|
+
end
|
115
|
+
|
116
|
+
it 'Casts Hashes with String keys' do
|
117
|
+
ENV['STRKEY_HASH'] = 'one: two, three: four'
|
118
|
+
ENV!.use 'STRKEY_HASH', class: Hash, keys: String
|
119
|
+
|
120
|
+
ENV!['STRKEY_HASH'].must_equal({'one' => 'two', 'three' => 'four'})
|
121
|
+
end
|
122
|
+
|
102
123
|
it "Casts true" do
|
103
124
|
ENV['TRUE'] = truthy_values.sample
|
104
125
|
ENV!.use 'TRUE', class: :boolean
|
metadata
CHANGED
@@ -1,20 +1,18 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: env_bang
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
5
|
-
prerelease:
|
4
|
+
version: 0.3.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Jonathan Camenisch
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2016-01-26 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: rake
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
17
|
- - ">="
|
20
18
|
- !ruby/object:Gem::Version
|
@@ -22,7 +20,6 @@ dependencies:
|
|
22
20
|
type: :development
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
24
|
- - ">="
|
28
25
|
- !ruby/object:Gem::Version
|
@@ -30,7 +27,6 @@ dependencies:
|
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: minitest
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
31
|
- - "~>"
|
36
32
|
- !ruby/object:Gem::Version
|
@@ -38,7 +34,6 @@ dependencies:
|
|
38
34
|
type: :development
|
39
35
|
prerelease: false
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
37
|
requirements:
|
43
38
|
- - "~>"
|
44
39
|
- !ruby/object:Gem::Version
|
@@ -69,27 +64,26 @@ files:
|
|
69
64
|
homepage: https://github.com/jcamenisch/ENV_BANG
|
70
65
|
licenses:
|
71
66
|
- MIT
|
67
|
+
metadata: {}
|
72
68
|
post_install_message:
|
73
69
|
rdoc_options: []
|
74
70
|
require_paths:
|
75
71
|
- lib
|
76
72
|
required_ruby_version: !ruby/object:Gem::Requirement
|
77
|
-
none: false
|
78
73
|
requirements:
|
79
74
|
- - ">="
|
80
75
|
- !ruby/object:Gem::Version
|
81
76
|
version: '0'
|
82
77
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
83
|
-
none: false
|
84
78
|
requirements:
|
85
79
|
- - ">="
|
86
80
|
- !ruby/object:Gem::Version
|
87
81
|
version: '0'
|
88
82
|
requirements: []
|
89
83
|
rubyforge_project:
|
90
|
-
rubygems_version:
|
84
|
+
rubygems_version: 2.2.5
|
91
85
|
signing_key:
|
92
|
-
specification_version:
|
86
|
+
specification_version: 4
|
93
87
|
summary: Do a bang-up job managing your environment variables
|
94
88
|
test_files:
|
95
89
|
- test/env_bang_test.rb
|