environment_helpers 1.0.1 → 1.2.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 +4 -4
- data/README.md +7 -1
- data/lib/environment_helpers/file_helpers.rb +12 -0
- data/lib/environment_helpers/range_helpers.rb +42 -0
- data/lib/environment_helpers/version.rb +1 -1
- data/lib/environment_helpers.rb +5 -0
- metadata +3 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fdd872a3aa32975aeeb47dbe0236e1571c41c47632c0fcae86fea957f8c1eafa
|
4
|
+
data.tar.gz: d9f41beec0bba097c4bda2c0aa6c365c0967106843daeb79650e58b08c2e6a43
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5a0adb44b8ce267e6e6d072c3f7e474c55fce9709bb924736b5f8abad59d54cd0e88d401892adbf850c589abfed455eec7925077fc2b62393984943c636c938b
|
7
|
+
data.tar.gz: c64a226be91f881470d39671fc8a559927c475ea9e32e347ad54a2dae02dc534190a743f1927601bd321e2acbe37d872c49c66251c1fad9be2f74e3586025894
|
data/README.md
CHANGED
@@ -30,11 +30,13 @@ methods onto `ENV` for your use.
|
|
30
30
|
|
31
31
|
## Usage
|
32
32
|
|
33
|
-
```
|
33
|
+
```shell
|
34
34
|
ENV.string("APP_NAME", default: "local")
|
35
35
|
ENV.symbol("BUSINESS_DOMAIN", default: :engineering, required: true)
|
36
36
|
ENV.boolean("ENABLE_FEATURE_FOO", default: false)
|
37
|
+
ENV.integer_range("ID_RANGE", default: (500..6000))
|
37
38
|
ENV.integer("MAX_THREAD_COUNT", default: 5)
|
39
|
+
ENV.file_path("FILE_PATH", default: "/some/path", required: true)
|
38
40
|
ENV.date("SCHEDULED_DATE", required: true, format: "%Y-%m-%d")
|
39
41
|
```
|
40
42
|
|
@@ -45,15 +47,19 @@ isn't present in the environment. If `required` is set to a truthy value, then i
|
|
45
47
|
present in the environment, an `EnvironmentHelpers::MissingVariableError` is raised.
|
46
48
|
|
47
49
|
The available methods added to `ENV`:
|
50
|
+
|
48
51
|
* `string` - environment values are already strings, so this is the simplest of the methods.
|
49
52
|
* `symbol` - produces a symbol, and enforces that the default value is either `nil` or a Symbol.
|
50
53
|
* `boolean` - produces `nil`, `true`, or `false` (and only allows those as defaults). Supports..
|
51
54
|
a fair variety of strings to map onto those boolean value, though you should probably just use
|
52
55
|
"true" and "false" really. If you specify `required: true` and get a value like "maybe?", it'll
|
53
56
|
raise an `EnvironmentHelpers::InvalidBooleanText` exception.
|
57
|
+
* `integer_range` - produces an integer Range object. It accepts `N-N`, `N..N`, or `N...N`, (the
|
58
|
+
latter means 'excluding the upper bound, as in ruby).
|
54
59
|
* `integer` - produces an integer from the environment variable, by calling `to_i` on it (if it's
|
55
60
|
present). Note that this means that providing a value like "hello" means you'll get `0`, since
|
56
61
|
that's what ruby does when you call `"hello".to_i`.
|
62
|
+
* `file_path` - produces a `Pathname` initialized with the path specified by the environment variable.
|
57
63
|
* `date` - produces a `Date` object, using `Date.strptime`. The default format string is `%Y-%m-%d`,
|
58
64
|
which would parse a date like `2023-12-25`. It will handle invalid values (or format strings) like
|
59
65
|
the variable not being present, though if it's specified as `required`, you will see a different
|
@@ -0,0 +1,12 @@
|
|
1
|
+
require "pathname"
|
2
|
+
|
3
|
+
module EnvironmentHelpers
|
4
|
+
module FileHelpers
|
5
|
+
def file_path(name, default: nil, required: false)
|
6
|
+
check_default_type(:file_path, default, String)
|
7
|
+
path = fetch_value(name, required: required) || default
|
8
|
+
return nil if path.nil?
|
9
|
+
Pathname.new(path)
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
module EnvironmentHelpers
|
2
|
+
module RangeHelpers
|
3
|
+
def integer_range(name, default: nil, required: false)
|
4
|
+
check_default_type(:integer_range, default, Range)
|
5
|
+
check_range_endpoint(:integer_range, default.begin) if default
|
6
|
+
check_range_endpoint(:integer_range, default.end) if default
|
7
|
+
|
8
|
+
text = fetch_value(name, required: required)
|
9
|
+
range = parse_range_from(text)
|
10
|
+
return range if range
|
11
|
+
return default unless required
|
12
|
+
fail(InvalidRangeText, "Required Integer Range environment variable #{name} had inappropriate content '#{text}'")
|
13
|
+
end
|
14
|
+
|
15
|
+
private
|
16
|
+
|
17
|
+
def check_range_endpoint(context, value)
|
18
|
+
return if value.is_a?(Integer)
|
19
|
+
fail(BadDefault, "Invalid endpoint for default range of #{context} - must be Integer")
|
20
|
+
end
|
21
|
+
|
22
|
+
def parse_range_bound_from(text)
|
23
|
+
return nil if text.nil?
|
24
|
+
return nil if text.empty?
|
25
|
+
text.to_i
|
26
|
+
end
|
27
|
+
|
28
|
+
def parse_range_from(text)
|
29
|
+
text =~ /\A(\d*)(-|\.\.|\.\.\.)(\d*)\z/
|
30
|
+
lower_bound = parse_range_bound_from($1)
|
31
|
+
separator = $2
|
32
|
+
upper_bound = parse_range_bound_from($3)
|
33
|
+
|
34
|
+
return nil if lower_bound.nil? || upper_bound.nil?
|
35
|
+
if separator == "..."
|
36
|
+
(lower_bound...upper_bound)
|
37
|
+
else
|
38
|
+
(lower_bound..upper_bound)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
data/lib/environment_helpers.rb
CHANGED
@@ -1,7 +1,9 @@
|
|
1
1
|
require_relative "./environment_helpers/access_helpers"
|
2
2
|
require_relative "./environment_helpers/string_helpers"
|
3
3
|
require_relative "./environment_helpers/boolean_helpers"
|
4
|
+
require_relative "./environment_helpers/range_helpers"
|
4
5
|
require_relative "./environment_helpers/numeric_helpers"
|
6
|
+
require_relative "./environment_helpers/file_helpers"
|
5
7
|
require_relative "./environment_helpers/datetime_helpers"
|
6
8
|
|
7
9
|
module EnvironmentHelpers
|
@@ -11,13 +13,16 @@ module EnvironmentHelpers
|
|
11
13
|
|
12
14
|
InvalidValue = Class.new(Error)
|
13
15
|
InvalidBooleanText = Class.new(InvalidValue)
|
16
|
+
InvalidRangeText = Class.new(InvalidValue)
|
14
17
|
InvalidIntegerText = Class.new(InvalidValue)
|
15
18
|
InvalidDateText = Class.new(InvalidValue)
|
16
19
|
|
17
20
|
include AccessHelpers
|
18
21
|
include StringHelpers
|
19
22
|
include BooleanHelpers
|
23
|
+
include RangeHelpers
|
20
24
|
include NumericHelpers
|
25
|
+
include FileHelpers
|
21
26
|
include DatetimeHelpers
|
22
27
|
end
|
23
28
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: environment_helpers
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0
|
4
|
+
version: 1.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Eric Mueller
|
@@ -102,7 +102,9 @@ files:
|
|
102
102
|
- lib/environment_helpers/access_helpers.rb
|
103
103
|
- lib/environment_helpers/boolean_helpers.rb
|
104
104
|
- lib/environment_helpers/datetime_helpers.rb
|
105
|
+
- lib/environment_helpers/file_helpers.rb
|
105
106
|
- lib/environment_helpers/numeric_helpers.rb
|
107
|
+
- lib/environment_helpers/range_helpers.rb
|
106
108
|
- lib/environment_helpers/string_helpers.rb
|
107
109
|
- lib/environment_helpers/version.rb
|
108
110
|
homepage: https://github.com/nevinera/environment_helpers
|