environs 1.0.1 → 1.1.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.
- data/.travis.yml +6 -5
- data/Gemfile +2 -0
- data/README.md +19 -2
- data/environs.gemspec +1 -1
- data/lib/environs/env.rb +14 -12
- data/lib/environs/version.rb +1 -1
- data/spec/environs/env_spec.rb +10 -5
- data/spec/spec_helper.rb +4 -0
- metadata +25 -23
data/.travis.yml
CHANGED
@@ -1,10 +1,11 @@
|
|
1
1
|
language: ruby
|
2
2
|
rvm:
|
3
|
-
- "1.8.7"
|
4
|
-
- "1.9.2"
|
5
3
|
- "1.9.3"
|
6
4
|
- "2.0.0"
|
7
|
-
-
|
5
|
+
- "2.1.0"
|
8
6
|
- jruby-19mode # JRuby in 1.9 mode
|
9
|
-
|
10
|
-
|
7
|
+
notifications:
|
8
|
+
campfire:
|
9
|
+
secure: "GnEk4I+ZRjW8h7x6rtZaI/2BfhErJkeELkbjamg3a4CnRQgAKzQZUNwQL8NH\nfbxmAcVSZfVPF6unw0XMY54pgO0+6Fp6fkypaV4fpDgSJEE+6QsSJxBEPN0w\n0bkXKa7/gsRpPLx6GwkQCqSAQIf+aVB0zTV7m1spMoRE40cXZss="
|
10
|
+
on_success: always
|
11
|
+
on_failure: always
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -1,6 +1,11 @@
|
|
1
1
|
# Environs
|
2
|
+
[](https://codeclimate.com/repos/51d37914c7f3a376e005daec/feed)
|
3
|
+
[](https://travis-ci.org/primedia/environs)
|
4
|
+
[](https://coveralls.io/r/primedia/environs?branch=dev)
|
5
|
+
[](https://gemnasium.com/primedia/environs)
|
6
|
+
[](http://badge.fury.io/rb/environs)
|
2
7
|
|
3
|
-
|
8
|
+
A simple wrapper around the ENV hash that by default raises an error when value requested is not set.
|
4
9
|
|
5
10
|
## Installation
|
6
11
|
|
@@ -18,7 +23,19 @@ Or install it yourself as:
|
|
18
23
|
|
19
24
|
## Usage
|
20
25
|
|
21
|
-
|
26
|
+
This gem provides an `Env` class that dynamically retrieves environment variables based on the name of the method called on the `Env` class object. Method names are converted to `SCREAMING_SNAKE_CASE`, e.g. `Env.foo_bar` tries to retrieve `ENV['FOO_BAR']`. If a non-nil value is not returned for the key, then an error is raised. Nil values can be allowed by passing a Hash with the `allow_nil` key set to true.
|
27
|
+
|
28
|
+
```ruby
|
29
|
+
require 'environs'
|
30
|
+
|
31
|
+
ENV['FOO'] = nil
|
32
|
+
|
33
|
+
Env.foo
|
34
|
+
# => 'MissingEnvVarError "The FOO environment variable is not set."'
|
35
|
+
|
36
|
+
Env.foo(allow_nil: true)
|
37
|
+
# => nil
|
38
|
+
```
|
22
39
|
|
23
40
|
## Contributing
|
24
41
|
|
data/environs.gemspec
CHANGED
@@ -18,7 +18,7 @@ Gem::Specification.new do |spec|
|
|
18
18
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
19
|
spec.require_paths = ['lib']
|
20
20
|
|
21
|
-
spec.add_development_dependency 'bundler'
|
21
|
+
spec.add_development_dependency 'bundler'
|
22
22
|
spec.add_development_dependency 'rake'
|
23
23
|
spec.add_development_dependency 'rspec'
|
24
24
|
end
|
data/lib/environs/env.rb
CHANGED
@@ -3,20 +3,22 @@ require 'environs/missing_env_var_error'
|
|
3
3
|
class Env
|
4
4
|
class << self
|
5
5
|
def method_missing(method, *args, &block)
|
6
|
-
|
7
|
-
|
8
|
-
ENV[key] || key_not_found_response(args.first, key)
|
9
|
-
else
|
10
|
-
super
|
11
|
-
end
|
6
|
+
key = method.to_s.upcase
|
7
|
+
key.match(/\w+/) ? env_key(key, *args) : super
|
12
8
|
end
|
13
9
|
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
10
|
+
private
|
11
|
+
|
12
|
+
def env_key(key, nil_allowance = {})
|
13
|
+
ENV.fetch(key) { |k| key_not_found(nil_allowance, key) }
|
14
|
+
end
|
15
|
+
|
16
|
+
def key_not_found(nil_allowance, key)
|
17
|
+
nil_allowance[:allow_nil] ? nil : env_var_error(key)
|
18
|
+
end
|
19
|
+
|
20
|
+
def env_var_error(key)
|
21
|
+
raise MissingEnvVarError, "The #{key} environment variable is not set."
|
20
22
|
end
|
21
23
|
end
|
22
24
|
end
|
data/lib/environs/version.rb
CHANGED
data/spec/environs/env_spec.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
require '
|
1
|
+
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Env, "#foo" do
|
4
4
|
|
@@ -7,11 +7,16 @@ describe Env, "#foo" do
|
|
7
7
|
Env.foo.should eq 'bar'
|
8
8
|
end
|
9
9
|
|
10
|
+
it "converts method name to SCREAMING_SNAKE_CASE for lookup" do
|
11
|
+
ENV['FOO_BAR_BAZ'] = 'bar'
|
12
|
+
Env.foo_bar_baz.should eq 'bar'
|
13
|
+
end
|
14
|
+
|
10
15
|
describe "default behavior" do
|
11
16
|
|
12
17
|
it "returns an error if no corresponding ENV variable is set" do
|
13
|
-
ENV['
|
14
|
-
expect { Env.
|
18
|
+
ENV['FOO_NO_VALUE'] = nil
|
19
|
+
expect { Env.foo_no_value }.to raise_error
|
15
20
|
end
|
16
21
|
|
17
22
|
end
|
@@ -19,8 +24,8 @@ describe Env, "#foo" do
|
|
19
24
|
describe "'allow_nil: true' is passed along" do
|
20
25
|
|
21
26
|
it "returns nil if no corresponding ENV var is set" do
|
22
|
-
ENV['
|
23
|
-
Env.
|
27
|
+
ENV['FOO_ALLOW_NIL'] = nil
|
28
|
+
Env.foo_allow_nil(:allow_nil => true).should be_nil
|
24
29
|
end
|
25
30
|
|
26
31
|
end
|
data/spec/spec_helper.rb
ADDED
metadata
CHANGED
@@ -1,64 +1,64 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: environs
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.1.0
|
4
5
|
prerelease:
|
5
|
-
version: 1.0.1
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Colin Rymer
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2014-02-12 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
|
-
|
15
|
+
name: bundler
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
16
18
|
requirements:
|
17
|
-
- -
|
19
|
+
- - ! '>='
|
18
20
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
20
|
-
none: false
|
21
|
-
name: bundler
|
21
|
+
version: '0'
|
22
22
|
type: :development
|
23
23
|
prerelease: false
|
24
|
-
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
25
26
|
requirements:
|
26
|
-
- -
|
27
|
+
- - ! '>='
|
27
28
|
- !ruby/object:Gem::Version
|
28
|
-
version: '
|
29
|
-
none: false
|
29
|
+
version: '0'
|
30
30
|
- !ruby/object:Gem::Dependency
|
31
|
-
|
31
|
+
name: rake
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
32
34
|
requirements:
|
33
35
|
- - ! '>='
|
34
36
|
- !ruby/object:Gem::Version
|
35
37
|
version: '0'
|
36
|
-
none: false
|
37
|
-
name: rake
|
38
38
|
type: :development
|
39
39
|
prerelease: false
|
40
|
-
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
41
42
|
requirements:
|
42
43
|
- - ! '>='
|
43
44
|
- !ruby/object:Gem::Version
|
44
45
|
version: '0'
|
45
|
-
none: false
|
46
46
|
- !ruby/object:Gem::Dependency
|
47
|
-
|
47
|
+
name: rspec
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
48
50
|
requirements:
|
49
51
|
- - ! '>='
|
50
52
|
- !ruby/object:Gem::Version
|
51
53
|
version: '0'
|
52
|
-
none: false
|
53
|
-
name: rspec
|
54
54
|
type: :development
|
55
55
|
prerelease: false
|
56
|
-
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
57
58
|
requirements:
|
58
59
|
- - ! '>='
|
59
60
|
- !ruby/object:Gem::Version
|
60
61
|
version: '0'
|
61
|
-
none: false
|
62
62
|
description: A simple wrapper around the ENV hash that by default raises an error
|
63
63
|
when value requested is not set.
|
64
64
|
email:
|
@@ -79,6 +79,7 @@ files:
|
|
79
79
|
- lib/environs/missing_env_var_error.rb
|
80
80
|
- lib/environs/version.rb
|
81
81
|
- spec/environs/env_spec.rb
|
82
|
+
- spec/spec_helper.rb
|
82
83
|
homepage: https://github.com/primedia/environs
|
83
84
|
licenses:
|
84
85
|
- MIT
|
@@ -87,17 +88,17 @@ rdoc_options: []
|
|
87
88
|
require_paths:
|
88
89
|
- lib
|
89
90
|
required_ruby_version: !ruby/object:Gem::Requirement
|
91
|
+
none: false
|
90
92
|
requirements:
|
91
93
|
- - ! '>='
|
92
94
|
- !ruby/object:Gem::Version
|
93
95
|
version: '0'
|
94
|
-
none: false
|
95
96
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
97
|
+
none: false
|
96
98
|
requirements:
|
97
99
|
- - ! '>='
|
98
100
|
- !ruby/object:Gem::Version
|
99
101
|
version: '0'
|
100
|
-
none: false
|
101
102
|
requirements: []
|
102
103
|
rubyforge_project:
|
103
104
|
rubygems_version: 1.8.23
|
@@ -107,4 +108,5 @@ summary: A simple wrapper around the ENV hash that by default raises an error wh
|
|
107
108
|
value requested is not set.
|
108
109
|
test_files:
|
109
110
|
- spec/environs/env_spec.rb
|
111
|
+
- spec/spec_helper.rb
|
110
112
|
has_rdoc:
|