envoker 1.2.0 → 2.0.0.rc1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 7fc1121c7891baf9586759486f369ee66a14dbda
4
- data.tar.gz: 504529abf44f310e4f84b613bad27240a1e93188
3
+ metadata.gz: 81577165e8bf17349e1df3aabc87de9dd8874f32
4
+ data.tar.gz: 3ef3c24fd474b137080cadc149ab08e98cd13086
5
5
  SHA512:
6
- metadata.gz: 9e17b877dd54de3f2e997ba04e9b07043d1184eb4387cc60b1ea986bb1077bdad24d9329e2c124241fdd9de1e9ab70d3a1b96b8333c4712906845cd6b1d953cf
7
- data.tar.gz: 7661aefee9aff60bdbba10f75905b198238757f6e5ff2cc2e794aa4b53cc273564921bbb0df03d71661c05d7b00880f0a35296b2996d9e8acd3c5c353cef12f1
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 file.
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
@@ -12,6 +12,5 @@ Gem::Specification.new do |s|
12
12
 
13
13
  s.files = `git ls-files`.split("\n")
14
14
 
15
- s.add_development_dependency "bundler", "~> 1.10"
16
15
  s.add_development_dependency "cutest", "~> 1.2"
17
16
  end
@@ -1,28 +1,25 @@
1
1
  require_relative "envoker/version"
2
2
 
3
3
  module Envoker
4
- DEFAULT = ".env"
5
- SETTINGS = /(.+)=(.*)$/
4
+ KeyNotFound = Class.new(StandardError)
6
5
 
7
- class KeyNotFound < StandardError
8
- MESSAGE = "%s not found in .env file or environment settings."
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.load(file = DEFAULT)
16
- return unless File.exist?(file)
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(SETTINGS)
17
+ return File.read(file).scan(/(.+)=(.*)$/)
23
18
  end
24
19
 
25
20
  def self.fetch(key, default = nil)
26
- return ENV.fetch(key, default) || raise(KeyNotFound, key)
21
+ return ENV.fetch(key) do
22
+ raise(KeyNotFound, sprintf("ENV[%p] not found", key))
23
+ end
27
24
  end
28
25
  end
@@ -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
@@ -1,3 +1,3 @@
1
1
  module Envoker
2
- VERSION = "1.2.0"
2
+ VERSION = "2.0.0.rc1"
3
3
  end
data/makefile CHANGED
@@ -1,5 +1,9 @@
1
- default:
2
- cutest test/*_test.rb
1
+ default: test
3
2
 
4
- gem:
5
- gem build *.gemspec
3
+ install:
4
+ @cat .gems | xargs gem install
5
+
6
+ test:
7
+ @cutest ./test/*.rb
8
+
9
+ .PHONY: test
@@ -0,0 +1,2 @@
1
+ ENVIRONMENT=development
2
+ OVERRIDED=false
@@ -0,0 +1 @@
1
+ OVERRIDED=true
@@ -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
- def test(*)
8
- defaults = ENV.to_hash
9
- super
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: 1.2.0
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-09-24 00:00:00.000000000 Z
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
- - ".gitignore"
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: '0'
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
@@ -1,3 +0,0 @@
1
- source "https://rubygems.org"
2
-
3
- gemspec