env_bang 0.4.1 → 0.4.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/env_bang-rails.rb +9 -1
- data/lib/env_bang/classes.rb +26 -3
- data/lib/env_bang/version.rb +1 -1
- data/test/env_bang_test.rb +43 -0
- data/test/test_helper.rb +0 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8b8b5ff7d55793a3606129515bdea01f59f072c7
|
4
|
+
data.tar.gz: 0abf994bd7a5c82fbcd26e36e36411e9a73031f4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e57c9ffeb718dd8e49ce40edd1a69d34f72fa700967546ff4f545a9e92f793fab176299ae77771a97f7f2f0e33569b098808782bafe5673c151e3c70e467789f
|
7
|
+
data.tar.gz: a10569c4a1ca1fcd75703c1f8cfaddeca1ee20fd9c6521d58dfd932f490e5472985102f575c8b240d4dcb21ba6e7f7d6ec3dee0b571b9c2ecead60b705682e92
|
data/lib/env_bang-rails.rb
CHANGED
@@ -6,11 +6,19 @@ class ENV_BANG
|
|
6
6
|
File.join(Rails.root.to_s, 'config/env.rb')
|
7
7
|
end
|
8
8
|
|
9
|
+
def warn(msg)
|
10
|
+
if Rails.logger
|
11
|
+
Rails.logger.warn(msg)
|
12
|
+
else
|
13
|
+
puts "WARNING: #{msg}"
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
9
17
|
config.before_configuration do
|
10
18
|
if File.exists?(env_rb_file)
|
11
19
|
load env_rb_file
|
12
20
|
else
|
13
|
-
|
21
|
+
warn("ENV! could not find your environment variable configuration. Please create #{env_rb_file} to set up environment variables at Rails boot.")
|
14
22
|
end
|
15
23
|
end
|
16
24
|
end
|
data/lib/env_bang/classes.rb
CHANGED
@@ -71,19 +71,42 @@ class ENV_BANG
|
|
71
71
|
end
|
72
72
|
|
73
73
|
def Date(value, options)
|
74
|
-
require 'date'
|
75
74
|
Date.parse(value)
|
76
75
|
end
|
77
76
|
|
78
77
|
def DateTime(value, options)
|
79
|
-
require 'date'
|
80
78
|
DateTime.parse(value)
|
81
79
|
end
|
82
80
|
|
83
81
|
def Time(value, options)
|
84
|
-
require 'time'
|
85
82
|
Time.parse(value)
|
86
83
|
end
|
84
|
+
|
85
|
+
def Range(value, options = {})
|
86
|
+
beginning, ending = value.split('...')
|
87
|
+
if beginning && ending
|
88
|
+
options[:exclusive] = true unless options.has_key?(:exclusive)
|
89
|
+
else
|
90
|
+
beginning, ending = value.split('..')
|
91
|
+
end
|
92
|
+
unless beginning && ending
|
93
|
+
raise ArgumentError.new("Range '#{value}' cannot be parsed as a range. Must be in the form <start>..<end> or <start>...<end>")
|
94
|
+
end
|
95
|
+
|
96
|
+
options[:of] ||= Integer
|
97
|
+
beginning = cast(beginning, class: options[:of])
|
98
|
+
ending = cast(ending, class: options[:of])
|
99
|
+
|
100
|
+
if options[:exclusive]
|
101
|
+
beginning...ending
|
102
|
+
else
|
103
|
+
beginning..ending
|
104
|
+
end
|
105
|
+
end
|
106
|
+
|
107
|
+
def Regexp(value, options)
|
108
|
+
Regexp.new(value)
|
109
|
+
end
|
87
110
|
end
|
88
111
|
end
|
89
112
|
end
|
data/lib/env_bang/version.rb
CHANGED
data/test/env_bang_test.rb
CHANGED
@@ -190,6 +190,49 @@ describe ENV_BANG do
|
|
190
190
|
ENV!['A_TIME'].must_equal Time.new(2005, 5, 5, 17, 5)
|
191
191
|
end
|
192
192
|
|
193
|
+
it "casts Regexps" do
|
194
|
+
# Escaping backslashes is not without its pitfalls. Developer beware.
|
195
|
+
ENV['A_REGEX'] = '^(this|is|a|[^tes.*\|]t.\.\*/\\\)$'
|
196
|
+
ENV!.use 'A_REGEX', class: Regexp
|
197
|
+
|
198
|
+
ENV!['A_REGEX'].class.must_equal Regexp
|
199
|
+
ENV!['A_REGEX'].must_equal(/^(this|is|a|[^tes.*\|]t.\.\*\/\\)$/)
|
200
|
+
end
|
201
|
+
|
202
|
+
it "casts inclusive Ranges of Integers by default" do
|
203
|
+
ENV['A_RANGE'] = '1..100'
|
204
|
+
ENV!.use 'A_RANGE', class: Range
|
205
|
+
|
206
|
+
ENV!['A_RANGE'].class.must_equal Range
|
207
|
+
ENV!['A_RANGE'].must_equal 1..100
|
208
|
+
end
|
209
|
+
|
210
|
+
it "casts exclusive Ranges as directed" do
|
211
|
+
ENV['EXCLUSIVE_RANGE'] = '1..100'
|
212
|
+
ENV!.use 'EXCLUSIVE_RANGE', class: Range, exclusive: true
|
213
|
+
|
214
|
+
ENV!['EXCLUSIVE_RANGE'].must_equal 1...100
|
215
|
+
|
216
|
+
ENV['ANOTHER_EXCLUSIVE_RANGE'] = '1...100'
|
217
|
+
ENV!.use 'ANOTHER_EXCLUSIVE_RANGE', class: Range, exclusive: true
|
218
|
+
|
219
|
+
ENV!['ANOTHER_EXCLUSIVE_RANGE'].must_equal 1...100
|
220
|
+
end
|
221
|
+
|
222
|
+
it "casts Ranges of floats" do
|
223
|
+
ENV['FLOAT_RANGE'] = '1.5..100.7'
|
224
|
+
ENV!.use 'FLOAT_RANGE', class: Range, of: Float
|
225
|
+
|
226
|
+
ENV!['FLOAT_RANGE'].must_equal 1.5..100.7
|
227
|
+
end
|
228
|
+
|
229
|
+
it "casts Ranges of strings" do
|
230
|
+
ENV['FLOAT_RANGE'] = 'az..za'
|
231
|
+
ENV!.use 'FLOAT_RANGE', class: Range, of: String
|
232
|
+
|
233
|
+
ENV!['FLOAT_RANGE'].must_equal 'az'..'za'
|
234
|
+
end
|
235
|
+
|
193
236
|
it "allows default class to be overridden" do
|
194
237
|
ENV!.default_class.must_equal :StringUnlessFalsey
|
195
238
|
ENV!.config { default_class String }
|
data/test/test_helper.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.4.
|
4
|
+
version: 0.4.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jonathan Camenisch
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-10-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|