env-conf 0.0.2 → 0.0.3
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/Gemfile +4 -0
- data/env-conf.gemspec +1 -0
- data/lib/env-conf.rb +14 -1
- data/lib/env-conf/version.rb +1 -1
- data/test/config_test.rb +2 -36
- data/test/dotenv_test.rb +51 -0
- data/test/helper.rb +35 -0
- metadata +21 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 58250c277c52d0684b972ee12a313a9eab33616e
|
4
|
+
data.tar.gz: 1ca6d546f1b641923f7bb668ab54f151c13c2063
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 401a87ec96c25822767ef11af6b9133c782d2533b8bd244d983b17d611fe6941f83c4bb221462a348a094581f9d96d9bf4d43399f6e7cef838a26f4d4dc370b3
|
7
|
+
data.tar.gz: 673bccc57ac6aa66b0fdb113c4682fbae897e469d89148a63cdc3054d4ff215db07ad531eb6e63bd187615f8014177baae7f4f83d2cc11678e9c8bb6561b4648
|
data/Gemfile
CHANGED
data/env-conf.gemspec
CHANGED
@@ -18,6 +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_dependency "dotenv", "~> 1.0"
|
21
22
|
spec.add_development_dependency "bundler", "~> 1.7"
|
22
23
|
spec.add_development_dependency "rake", "~> 10.0"
|
23
24
|
spec.add_development_dependency "minitest"
|
data/lib/env-conf.rb
CHANGED
@@ -2,6 +2,7 @@ require_relative './env-conf/version'
|
|
2
2
|
|
3
3
|
module Config
|
4
4
|
@@defaults = {}
|
5
|
+
@@dotenv = {}
|
5
6
|
|
6
7
|
# Get a Config value
|
7
8
|
#
|
@@ -28,12 +29,13 @@ module Config
|
|
28
29
|
def self.[](name)
|
29
30
|
var_name = name.to_s.upcase
|
30
31
|
default_name = name.to_s.downcase.to_sym
|
31
|
-
ENV[var_name] || @@defaults[default_name]
|
32
|
+
ENV[var_name] || @@dotenv[var_name] || @@defaults[default_name]
|
32
33
|
end
|
33
34
|
|
34
35
|
# Reset defaults values
|
35
36
|
def self.reset!
|
36
37
|
@@defaults = {}
|
38
|
+
@@dotenv = {}
|
37
39
|
end
|
38
40
|
|
39
41
|
# An environment variable.
|
@@ -178,4 +180,15 @@ module Config
|
|
178
180
|
def self.uri(name)
|
179
181
|
self[name] && URI.parse(self[name])
|
180
182
|
end
|
183
|
+
|
184
|
+
# Loads a ".env" file, using Dotenv to parse but not fuck up the ENV
|
185
|
+
def self.dotenv!
|
186
|
+
return if Config.production?
|
187
|
+
require 'dotenv'
|
188
|
+
['.env','.env.local',".env.#{Config[:rack_env]}"].each do |filename|
|
189
|
+
if File.exists?(filename)
|
190
|
+
@@dotenv.update(Dotenv::Parser.call(File.read(filename)))
|
191
|
+
end
|
192
|
+
end
|
193
|
+
end
|
181
194
|
end
|
data/lib/env-conf/version.rb
CHANGED
data/test/config_test.rb
CHANGED
@@ -1,40 +1,6 @@
|
|
1
|
-
|
2
|
-
# more than one test file
|
3
|
-
require 'minitest'
|
4
|
-
require 'minitest/autorun'
|
5
|
-
require 'minitest/pride'
|
6
|
-
|
7
|
-
require 'env-conf'
|
8
|
-
|
9
|
-
module EnvironmentHelpers
|
10
|
-
# Override an environment variable in the current test.
|
11
|
-
def set_env(key, value)
|
12
|
-
@overrides[key] = ENV[key] unless @overrides.has_key?(key)
|
13
|
-
ENV[key] = value
|
14
|
-
end
|
15
|
-
|
16
|
-
def setup
|
17
|
-
super
|
18
|
-
@overrides = {}
|
19
|
-
end
|
20
|
-
|
21
|
-
# Restore the environment back to its state before tests ran.
|
22
|
-
def teardown
|
23
|
-
@overrides.each { |key, value| ENV[key] = value }
|
24
|
-
super
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
# end note
|
29
|
-
|
30
|
-
class ConfigTest < Minitest::Test
|
31
|
-
include EnvironmentHelpers
|
32
|
-
|
33
|
-
def teardown
|
34
|
-
super
|
35
|
-
Config.reset!
|
36
|
-
end
|
1
|
+
require 'helper'
|
37
2
|
|
3
|
+
class ConfigTest < Test
|
38
4
|
# Config.env returns the value matching the specified environment
|
39
5
|
# variable name.
|
40
6
|
def test_env
|
data/test/dotenv_test.rb
ADDED
@@ -0,0 +1,51 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
class DotenvTest < Test
|
4
|
+
def setup
|
5
|
+
super
|
6
|
+
FakeFS.activate!
|
7
|
+
end
|
8
|
+
|
9
|
+
def teardown
|
10
|
+
super
|
11
|
+
%w{.env .env.local .env.test}.each do |f|
|
12
|
+
File.unlink(f) if File.exists?(f)
|
13
|
+
end
|
14
|
+
FakeFS.deactivate!
|
15
|
+
end
|
16
|
+
|
17
|
+
def test_one_var
|
18
|
+
File.open(".env",'w') { |f| f << "FOO=bar" }
|
19
|
+
assert_equal(nil, Config[:foo])
|
20
|
+
Config.dotenv!
|
21
|
+
assert_equal('bar', Config[:foo])
|
22
|
+
end
|
23
|
+
|
24
|
+
def test_two_files
|
25
|
+
File.open(".env",'w') { |f| f << "FOO=bar" }
|
26
|
+
File.open(".env.local",'w') { |f| f << "FOO=zzz" }
|
27
|
+
assert_equal(nil, Config[:foo])
|
28
|
+
Config.dotenv!
|
29
|
+
assert_equal('zzz', Config[:foo])
|
30
|
+
end
|
31
|
+
|
32
|
+
def test_env_specific
|
33
|
+
File.open(".env",'w') { |f| f << "FOO=bar" }
|
34
|
+
File.open(".env.local",'w') { |f| f << "FOO=zzz" }
|
35
|
+
File.open(".env.test",'w') { |f| f << "FOO=test" }
|
36
|
+
assert_equal(nil, Config[:foo])
|
37
|
+
set_env('RACK_ENV', 'test')
|
38
|
+
Config.dotenv!
|
39
|
+
assert_equal('test', Config[:foo])
|
40
|
+
end
|
41
|
+
|
42
|
+
def test_noop_in_prod
|
43
|
+
File.open(".env",'w') { |f| f << "FOO=bar" }
|
44
|
+
File.open(".env.local",'w') { |f| f << "FOO=zzz" }
|
45
|
+
File.open(".env.test",'w') { |f| f << "FOO=test" }
|
46
|
+
assert_equal(nil, Config[:foo])
|
47
|
+
set_env('RACK_ENV', 'production')
|
48
|
+
Config.dotenv!
|
49
|
+
assert_equal(nil, Config[:foo])
|
50
|
+
end
|
51
|
+
end
|
data/test/helper.rb
ADDED
@@ -0,0 +1,35 @@
|
|
1
|
+
require 'minitest'
|
2
|
+
require 'minitest/autorun'
|
3
|
+
require 'minitest/pride'
|
4
|
+
require 'fakefs/safe'
|
5
|
+
|
6
|
+
require 'env-conf'
|
7
|
+
|
8
|
+
module EnvironmentHelpers
|
9
|
+
# Override an environment variable in the current test.
|
10
|
+
def set_env(key, value)
|
11
|
+
@overrides[key] = ENV[key] unless @overrides.has_key?(key)
|
12
|
+
ENV[key] = value
|
13
|
+
end
|
14
|
+
|
15
|
+
def setup
|
16
|
+
super
|
17
|
+
@overrides = {}
|
18
|
+
end
|
19
|
+
|
20
|
+
# Restore the environment back to its state before tests ran.
|
21
|
+
def teardown
|
22
|
+
@overrides.each { |key, value| ENV[key] = value }
|
23
|
+
super
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
class Test < Minitest::Test
|
28
|
+
include EnvironmentHelpers
|
29
|
+
|
30
|
+
def teardown
|
31
|
+
super
|
32
|
+
Config.reset!
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
metadata
CHANGED
@@ -1,15 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: env-conf
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Chris Continanza
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-10-
|
11
|
+
date: 2014-10-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: dotenv
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.0'
|
13
27
|
- !ruby/object:Gem::Dependency
|
14
28
|
name: bundler
|
15
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -68,6 +82,8 @@ files:
|
|
68
82
|
- lib/env-conf.rb
|
69
83
|
- lib/env-conf/version.rb
|
70
84
|
- test/config_test.rb
|
85
|
+
- test/dotenv_test.rb
|
86
|
+
- test/helper.rb
|
71
87
|
homepage: ''
|
72
88
|
licenses:
|
73
89
|
- MIT
|
@@ -88,9 +104,11 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
88
104
|
version: '0'
|
89
105
|
requirements: []
|
90
106
|
rubyforge_project:
|
91
|
-
rubygems_version: 2.2.
|
107
|
+
rubygems_version: 2.2.0
|
92
108
|
signing_key:
|
93
109
|
specification_version: 4
|
94
110
|
summary: Use ENV vars for Configuration
|
95
111
|
test_files:
|
96
112
|
- test/config_test.rb
|
113
|
+
- test/dotenv_test.rb
|
114
|
+
- test/helper.rb
|