envoker 1.2.0 → 2.0.0.rc1
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/.gems +1 -0
- data/README.md +1 -13
- data/envoker.gemspec +0 -1
- data/lib/envoker.rb +11 -14
- data/lib/envoker/rack.rb +15 -0
- data/lib/envoker/version.rb +1 -1
- data/makefile +8 -4
- data/test/.env.example.development +2 -0
- data/test/.env.example.local +1 -0
- data/test/envoker_test.rb +22 -9
- metadata +8 -20
- data/.gitignore +0 -1
- data/Gemfile +0 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 81577165e8bf17349e1df3aabc87de9dd8874f32
|
4
|
+
data.tar.gz: 3ef3c24fd474b137080cadc149ab08e98cd13086
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bc6ce2150ddbe6caec5c8678cde7ba2cc9592048dce8e616da5f7979cc702067ea852f72f3afe502cd3dd4de3319fe03461432400742e3f78f8a4e2f91bd855f
|
7
|
+
data.tar.gz: f89b711dad46757d35ba934166392016b938b55ca48a788e68d16cc0c5e4d2e77b16b0368b4e03e24f9a582e8ac675c7dd369213244797f2b436ddd0c263f42f
|
data/.gems
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
cutest:1.2.2
|
data/README.md
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
envoker
|
2
2
|
=======
|
3
3
|
|
4
|
-
Load environment variables from .env
|
4
|
+
Load environment variables from .env files.
|
5
5
|
|
6
6
|
Usage
|
7
7
|
-----
|
@@ -10,18 +10,6 @@ This is a common pattern we use in our applications:
|
|
10
10
|
|
11
11
|
```ruby
|
12
12
|
require "envoker"
|
13
|
-
|
14
|
-
module Settings
|
15
|
-
Envoker.load
|
16
|
-
|
17
|
-
DATABASE_URL = Envoker.fetch("DATABASE_URL")
|
18
|
-
RACK_ENV = Envoker.fetch("RACK_ENV", "development")
|
19
|
-
|
20
|
-
# ...
|
21
|
-
end
|
22
|
-
|
23
|
-
puts(Settings::RACK_ENV)
|
24
|
-
# => "development"
|
25
13
|
```
|
26
14
|
|
27
15
|
Installation
|
data/envoker.gemspec
CHANGED
data/lib/envoker.rb
CHANGED
@@ -1,28 +1,25 @@
|
|
1
1
|
require_relative "envoker/version"
|
2
2
|
|
3
3
|
module Envoker
|
4
|
-
|
5
|
-
SETTINGS = /(.+)=(.*)$/
|
4
|
+
KeyNotFound = Class.new(StandardError)
|
6
5
|
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
def initialize(key)
|
11
|
-
super(sprintf(MESSAGE, key.inspect))
|
12
|
-
end
|
6
|
+
def self.load(file)
|
7
|
+
parse(file).each { |k, v| ENV[k] ||= v }
|
8
|
+
rescue Errno::ENOENT
|
13
9
|
end
|
14
10
|
|
15
|
-
def self.
|
16
|
-
|
17
|
-
|
18
|
-
parse(file).each { |k, v| ENV[k] ||= v }
|
11
|
+
def self.overload(file)
|
12
|
+
parse(file).each { |k, v| ENV[k] = v }
|
13
|
+
rescue Errno::ENOENT
|
19
14
|
end
|
20
15
|
|
21
16
|
def self.parse(file)
|
22
|
-
return File.read(file).scan(
|
17
|
+
return File.read(file).scan(/(.+)=(.*)$/)
|
23
18
|
end
|
24
19
|
|
25
20
|
def self.fetch(key, default = nil)
|
26
|
-
return ENV.fetch(key
|
21
|
+
return ENV.fetch(key) do
|
22
|
+
raise(KeyNotFound, sprintf("ENV[%p] not found", key))
|
23
|
+
end
|
27
24
|
end
|
28
25
|
end
|
data/lib/envoker/rack.rb
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
require_relative "../envoker"
|
2
|
+
|
3
|
+
module Envoker
|
4
|
+
module Rack
|
5
|
+
def self.load(file = ".env")
|
6
|
+
Envoker.load(file)
|
7
|
+
Envoker.overload(sprintf("%s.%s", file, environment))
|
8
|
+
Envoker.overload(sprintf("%s.local", file))
|
9
|
+
end
|
10
|
+
|
11
|
+
def self.environment
|
12
|
+
return ENV.fetch("RACK_ENV", "development")
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
data/lib/envoker/version.rb
CHANGED
data/makefile
CHANGED
@@ -0,0 +1 @@
|
|
1
|
+
OVERRIDED=true
|
data/test/envoker_test.rb
CHANGED
@@ -1,13 +1,12 @@
|
|
1
|
-
require "bundler/setup"
|
2
1
|
require "cutest"
|
3
2
|
require_relative "../lib/envoker"
|
3
|
+
require_relative "../lib/envoker/rack"
|
4
4
|
|
5
5
|
FILE = File.expand_path(".env.example", __dir__)
|
6
6
|
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
ensure
|
7
|
+
defaults = ENV.to_hash
|
8
|
+
|
9
|
+
setup do
|
11
10
|
ENV.replace(defaults)
|
12
11
|
end
|
13
12
|
|
@@ -37,6 +36,16 @@ scope "load" do
|
|
37
36
|
end
|
38
37
|
end
|
39
38
|
|
39
|
+
scope "overload" do
|
40
|
+
test "override environment vars" do
|
41
|
+
ENV["SECRET"] = "supersecret"
|
42
|
+
|
43
|
+
Envoker.overload(FILE)
|
44
|
+
|
45
|
+
assert_equal "secret", ENV["SECRET"]
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
40
49
|
scope "fetch" do
|
41
50
|
test "return value from ENV" do
|
42
51
|
Envoker.load(FILE)
|
@@ -44,13 +53,17 @@ scope "fetch" do
|
|
44
53
|
assert_equal "secret", Envoker.fetch("SECRET")
|
45
54
|
end
|
46
55
|
|
47
|
-
test "return default if not exists" do
|
48
|
-
assert_equal "secret", Envoker.fetch("notexists", "secret")
|
49
|
-
end
|
50
|
-
|
51
56
|
test "raise error if key not exists" do
|
52
57
|
assert_raise do
|
53
58
|
Envoker.fetch("notexists")
|
54
59
|
end
|
55
60
|
end
|
56
61
|
end
|
62
|
+
|
63
|
+
test "rack" do
|
64
|
+
Envoker::Rack.load(FILE)
|
65
|
+
|
66
|
+
assert_equal "secret", Envoker.fetch("SECRET")
|
67
|
+
assert_equal "development", Envoker.fetch("ENVIRONMENT")
|
68
|
+
assert_equal "true", Envoker.fetch("OVERRIDED")
|
69
|
+
end
|
metadata
CHANGED
@@ -1,29 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: envoker
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.0.rc1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Francesco Rodríguez
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-11-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
-
- !ruby/object:Gem::Dependency
|
14
|
-
name: bundler
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
16
|
-
requirements:
|
17
|
-
- - "~>"
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: '1.10'
|
20
|
-
type: :development
|
21
|
-
prerelease: false
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
23
|
-
requirements:
|
24
|
-
- - "~>"
|
25
|
-
- !ruby/object:Gem::Version
|
26
|
-
version: '1.10'
|
27
13
|
- !ruby/object:Gem::Dependency
|
28
14
|
name: cutest
|
29
15
|
requirement: !ruby/object:Gem::Requirement
|
@@ -45,15 +31,17 @@ executables: []
|
|
45
31
|
extensions: []
|
46
32
|
extra_rdoc_files: []
|
47
33
|
files:
|
48
|
-
- ".
|
49
|
-
- Gemfile
|
34
|
+
- ".gems"
|
50
35
|
- LICENSE
|
51
36
|
- README.md
|
52
37
|
- envoker.gemspec
|
53
38
|
- lib/envoker.rb
|
39
|
+
- lib/envoker/rack.rb
|
54
40
|
- lib/envoker/version.rb
|
55
41
|
- makefile
|
56
42
|
- test/.env.example
|
43
|
+
- test/.env.example.development
|
44
|
+
- test/.env.example.local
|
57
45
|
- test/envoker_test.rb
|
58
46
|
homepage: https://github.com/harmoni/envoker
|
59
47
|
licenses:
|
@@ -70,9 +58,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
70
58
|
version: '0'
|
71
59
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
72
60
|
requirements:
|
73
|
-
- - "
|
61
|
+
- - ">"
|
74
62
|
- !ruby/object:Gem::Version
|
75
|
-
version:
|
63
|
+
version: 1.3.1
|
76
64
|
requirements: []
|
77
65
|
rubyforge_project:
|
78
66
|
rubygems_version: 2.4.8
|
data/.gitignore
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
Gemfile.lock
|
data/Gemfile
DELETED