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 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