env_bang 0.4.1 → 1.0.0.pre.rc.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/README.md +3 -4
- data/lib/env_bang/classes.rb +26 -3
- data/lib/env_bang/version.rb +1 -1
- data/lib/env_bang-rails.rb +10 -2
- data/test/env_bang_test.rb +43 -0
- data/test/test_helper.rb +0 -1
- metadata +8 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 9876284297bbe55660d78e4d62bb83ec54e40ec83ddc94ef56907020805945c1
|
4
|
+
data.tar.gz: 1ef016e91711a660eee17849a8ac28c1ba8d303e5d6a645415f66d51ab648fb6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: aa240511a3e7a4b4ea6437ec61f35fadbea111bfb191eeda6d25eee91818380cfc99d36a22734b48a66f945e53c3710e2909c9d4e132f64fb7df4c83bad1cdfc
|
7
|
+
data.tar.gz: d67dc205e27c91f1abe43b43d1745b432b6dfb2d9c495800c23b06a3e3616a89dabdde5513ce66d796074e346963b9fedb03f387fbb061fcea5e077efd557934
|
data/README.md
CHANGED
@@ -1,11 +1,10 @@
|
|
1
|
-
# ENV!
|
1
|
+
# ENV!
|
2
2
|
|
3
3
|
Do a bang-up job managing your environment variables.
|
4
4
|
|
5
5
|
[![Gem Version](https://img.shields.io/gem/v/env_bang.svg?style=flat)](https://rubygems.org/gems/env_bang)
|
6
6
|
[![Build Status](https://img.shields.io/travis/jcamenisch/ENV_BANG/master.svg?style=flat)](https://travis-ci.org/jcamenisch/ENV_BANG)
|
7
|
-
[![
|
8
|
-
[![Code Climate](https://img.shields.io/codeclimate/github/jcamenisch/ENV_BANG.svg?style=flat)](https://codeclimate.com/github/jcamenisch/ENV_BANG)
|
7
|
+
[![Maintainability](https://api.codeclimate.com/v1/badges/58ba2167873ed46687f9/maintainability)](https://codeclimate.com/github/jcamenisch/ENV_BANG/maintainability)
|
9
8
|
[![Coverage Status](https://img.shields.io/coveralls/jcamenisch/ENV_BANG/master.svg?style=flat)](https://coveralls.io/r/jcamenisch/ENV_BANG)
|
10
9
|
|
11
10
|
ENV! provides a thin wrapper around ENV to accomplish a few things:
|
@@ -202,7 +201,7 @@ ENV!['NUMBER_SET']
|
|
202
201
|
|
203
202
|
ENV!.use :NUMBER_SET, class: Set
|
204
203
|
```
|
205
|
-
|
204
|
+
|
206
205
|
While the `config` block is designed to provide a cleaner configuration
|
207
206
|
file, calling the methods directly can occasionally be handy, such as when
|
208
207
|
trying things out in an IRB/Pry session.
|
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/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
|
-
if File.
|
18
|
+
if File.exist?(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/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
|
+
version: 1.0.0.pre.rc.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jonathan Camenisch
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2023-01-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -65,7 +65,7 @@ homepage: https://github.com/jcamenisch/ENV_BANG
|
|
65
65
|
licenses:
|
66
66
|
- MIT
|
67
67
|
metadata: {}
|
68
|
-
post_install_message:
|
68
|
+
post_install_message:
|
69
69
|
rdoc_options: []
|
70
70
|
require_paths:
|
71
71
|
- lib
|
@@ -76,13 +76,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
76
76
|
version: '0'
|
77
77
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
78
78
|
requirements:
|
79
|
-
- - "
|
79
|
+
- - ">"
|
80
80
|
- !ruby/object:Gem::Version
|
81
|
-
version:
|
81
|
+
version: 1.3.1
|
82
82
|
requirements: []
|
83
|
-
|
84
|
-
|
85
|
-
signing_key:
|
83
|
+
rubygems_version: 3.3.7
|
84
|
+
signing_key:
|
86
85
|
specification_version: 4
|
87
86
|
summary: Do a bang-up job managing your environment variables
|
88
87
|
test_files:
|