env_bang 0.2.8.1 → 0.2.9
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 +34 -4
- data/lib/env_bang.rb +1 -42
- data/lib/env_bang/classes.rb +38 -0
- data/lib/env_bang/version.rb +1 -1
- data/test/env_bang_test.rb +2 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: dfe99ce78ee95e20f85bd9467d2131b39550dd78
|
4
|
+
data.tar.gz: a24392f5e44fbcc89903e5c73d365eefd74d86d1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9081e3b9ee0253b58ba4f1eb6561e1afc4d988c468b0b4a68a98b86442afde16c97a847b32b028cbc03a987763fb8f5f390f045b8c44231604603d172115df92
|
7
|
+
data.tar.gz: 180d9a2a0d823caec0f48dbb4f15e99329b82d69d058b6b703d6a865ddb01ae8a44bd14ed6969ab216b2cfc70e4a544076abd4624b0983905177ba30205f0765
|
data/README.md
CHANGED
@@ -56,9 +56,6 @@ ENV!.config do
|
|
56
56
|
end
|
57
57
|
```
|
58
58
|
|
59
|
-
A single variable can also be configured with `ENV!.use MY_VAR`, but the `ENV!.config` block
|
60
|
-
will typically be a cleaner place for all the variables for your app.
|
61
|
-
|
62
59
|
Once a variable is specified with the `use` method, access it with
|
63
60
|
|
64
61
|
```ruby
|
@@ -126,7 +123,7 @@ end
|
|
126
123
|
#### Default type conversion behavior
|
127
124
|
|
128
125
|
If you don’t specify a `:class` option for a variable, ENV! defaults to a special
|
129
|
-
type conversion called `:StringUnlessFalsey`. This
|
126
|
+
type conversion called `:StringUnlessFalsey`. This conversion returns a string, unless
|
130
127
|
the value is a "falsey" string ('false', 'no', 'off', '0', 'disable', or 'disabled').
|
131
128
|
To turn off this magic for one variable, pass in `class: String`. To disable it globally,
|
132
129
|
set
|
@@ -168,6 +165,39 @@ ENV!['NUMBER_SET']
|
|
168
165
|
#=> #<Set: {1, 3, 5, 7, 9}>
|
169
166
|
```
|
170
167
|
|
168
|
+
## Implementation Notes
|
169
|
+
|
170
|
+
1. ENV! is simply a method that returns ENV_BANG. In certain contexts
|
171
|
+
(like defining a class), the exclamation mark notation is not allowed,
|
172
|
+
so we use an alias to get this shorthand.
|
173
|
+
|
174
|
+
2. Any method that can be run within an `ENV!.config` block can also be run
|
175
|
+
as a method directly on `ENV!`. For instance, instead of
|
176
|
+
|
177
|
+
```ruby
|
178
|
+
ENV!.config do
|
179
|
+
add_class Set do
|
180
|
+
...
|
181
|
+
end
|
182
|
+
|
183
|
+
use :NUMBER_SET, class: Set
|
184
|
+
end
|
185
|
+
```
|
186
|
+
|
187
|
+
It would also work to run
|
188
|
+
|
189
|
+
```ruby
|
190
|
+
ENV!.add_class Set do
|
191
|
+
...
|
192
|
+
end
|
193
|
+
|
194
|
+
ENV!.use :NUMBER_SET, class: Set
|
195
|
+
```
|
196
|
+
|
197
|
+
While the `config` block is designed to provide a cleaner configuration
|
198
|
+
file, calling the methods directly can occasionally be handy, such as when
|
199
|
+
trying things out in an IRB/Pry session.
|
200
|
+
|
171
201
|
## Contributing
|
172
202
|
|
173
203
|
1. Fork it
|
data/lib/env_bang.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require "env_bang/version"
|
2
|
+
require "env_bang/classes"
|
2
3
|
require "env_bang/formatter"
|
3
4
|
|
4
5
|
class ENV_BANG
|
@@ -7,11 +8,6 @@ class ENV_BANG
|
|
7
8
|
instance_eval(&block)
|
8
9
|
end
|
9
10
|
|
10
|
-
def clear_config
|
11
|
-
@vars = {}
|
12
|
-
default_class nil
|
13
|
-
end
|
14
|
-
|
15
11
|
def use(var, *args)
|
16
12
|
var = var.to_s
|
17
13
|
description = args.first.is_a?(String) && args.shift
|
@@ -63,43 +59,6 @@ class ENV_BANG
|
|
63
59
|
end
|
64
60
|
end
|
65
61
|
end
|
66
|
-
|
67
|
-
module Classes
|
68
|
-
class << self
|
69
|
-
attr_writer :default_class
|
70
|
-
|
71
|
-
def default_class
|
72
|
-
@default_class ||= :StringUnlessFalsey
|
73
|
-
end
|
74
|
-
|
75
|
-
def cast(value, options = {})
|
76
|
-
public_send(:"#{options.fetch(:class, default_class)}", value, options)
|
77
|
-
end
|
78
|
-
|
79
|
-
def boolean(value, options)
|
80
|
-
!(value =~ /^(|0|disabled?|false|no|off)$/i)
|
81
|
-
end
|
82
|
-
|
83
|
-
def Array(value, options)
|
84
|
-
options.delete(:class)
|
85
|
-
options[:class] = options[:of] if options[:of]
|
86
|
-
value.split(',').map { |value| cast(value.strip, options) }
|
87
|
-
end
|
88
|
-
|
89
|
-
def Symbol(value, options)
|
90
|
-
value.to_sym
|
91
|
-
end
|
92
|
-
|
93
|
-
def StringUnlessFalsey(value, options)
|
94
|
-
boolean(value, options) && value
|
95
|
-
end
|
96
|
-
|
97
|
-
# Delegate methods like Integer(), Float(), String(), etc. to the Kernel module
|
98
|
-
def method_missing(klass, value, options, &block)
|
99
|
-
Kernel.send(klass, value)
|
100
|
-
end
|
101
|
-
end
|
102
|
-
end
|
103
62
|
end
|
104
63
|
|
105
64
|
def ENV!
|
@@ -0,0 +1,38 @@
|
|
1
|
+
class ENV_BANG
|
2
|
+
module Classes
|
3
|
+
class << self
|
4
|
+
attr_writer :default_class
|
5
|
+
|
6
|
+
def default_class
|
7
|
+
@default_class ||= :StringUnlessFalsey
|
8
|
+
end
|
9
|
+
|
10
|
+
def cast(value, options = {})
|
11
|
+
public_send(:"#{options.fetch(:class, default_class)}", value, options)
|
12
|
+
end
|
13
|
+
|
14
|
+
def boolean(value, options)
|
15
|
+
!(value =~ /^(|0|disabled?|false|no|off)$/i)
|
16
|
+
end
|
17
|
+
|
18
|
+
def Array(value, options)
|
19
|
+
options.delete(:class)
|
20
|
+
options[:class] = options[:of] if options[:of]
|
21
|
+
value.split(',').map { |value| cast(value.strip, options) }
|
22
|
+
end
|
23
|
+
|
24
|
+
def Symbol(value, options)
|
25
|
+
value.to_sym
|
26
|
+
end
|
27
|
+
|
28
|
+
def StringUnlessFalsey(value, options)
|
29
|
+
boolean(value, options) && value
|
30
|
+
end
|
31
|
+
|
32
|
+
# Delegate methods like Integer(), Float(), String(), etc. to the Kernel module
|
33
|
+
def method_missing(klass, value, options, &block)
|
34
|
+
Kernel.send(klass, value)
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
data/lib/env_bang/version.rb
CHANGED
data/test/env_bang_test.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: env_bang
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jonathan Camenisch
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-02-
|
11
|
+
date: 2014-02-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -56,6 +56,7 @@ files:
|
|
56
56
|
- env_bang.gemspec
|
57
57
|
- lib/env_bang-rails.rb
|
58
58
|
- lib/env_bang.rb
|
59
|
+
- lib/env_bang/classes.rb
|
59
60
|
- lib/env_bang/formatter.rb
|
60
61
|
- lib/env_bang/version.rb
|
61
62
|
- test/env_bang_test.rb
|