conferred 0.0.1 → 0.1.1
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/README.rdoc +6 -0
- data/VERSION +1 -1
- data/conferred.gemspec +4 -4
- data/lib/conferred.rb +56 -12
- data/spec/conferred_spec.rb +47 -0
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d37687a4734e2bbd21bc79d368a6a69510027223
|
4
|
+
data.tar.gz: 50bab863bc36a9e863d641db70f19f98ae2a39c3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 470ce41582ee20909870f7b9516bf8391e9316f1b9114bfc71992e33530cf3fd9a02063b3eb3443c2595629673632ecc14a186682ab1bd88409b58a7e45fddae
|
7
|
+
data.tar.gz: 60dab8126270cf4f7ed233d7e1317dda111e20998b90ef201b6eee6ef98ba5d426e1e17885339d0646e56b6a26108d9ac88cbdba1635e0c3182af7490b573d69
|
data/README.rdoc
CHANGED
@@ -23,6 +23,12 @@ to access the environment use:
|
|
23
23
|
# returns ENV['GMAIL_USER'] if it has a non blank value
|
24
24
|
# otherwise raises an error
|
25
25
|
|
26
|
+
to access etcd settings
|
27
|
+
|
28
|
+
Conferred.provider = :etcd
|
29
|
+
Conferred.namespace = :my_app
|
30
|
+
Conferred.gmail_user
|
31
|
+
# returns the value of etcd key at "http://localhost:2379/v2/keys/:my_app/gmail_user"
|
26
32
|
|
27
33
|
|
28
34
|
== Contributing to conferred
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.1.1
|
data/conferred.gemspec
CHANGED
@@ -2,16 +2,16 @@
|
|
2
2
|
# DO NOT EDIT THIS FILE DIRECTLY
|
3
3
|
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
|
-
# stub: conferred 0.
|
5
|
+
# stub: conferred 0.1.1 ruby lib
|
6
6
|
|
7
7
|
Gem::Specification.new do |s|
|
8
8
|
s.name = "conferred"
|
9
|
-
s.version = "0.
|
9
|
+
s.version = "0.1.1"
|
10
10
|
|
11
11
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
12
12
|
s.require_paths = ["lib"]
|
13
13
|
s.authors = ["Ian Kenney"]
|
14
|
-
s.date = "
|
14
|
+
s.date = "2015-11-17"
|
15
15
|
s.description = "inspired by the 12 factor app http://12factor.net/config "
|
16
16
|
s.email = "ian@lostock.co.uk"
|
17
17
|
s.extra_rdoc_files = [
|
@@ -34,7 +34,7 @@ Gem::Specification.new do |s|
|
|
34
34
|
]
|
35
35
|
s.homepage = "http://github.com/ikenney/conferred"
|
36
36
|
s.licenses = ["MIT"]
|
37
|
-
s.rubygems_version = "2.
|
37
|
+
s.rubygems_version = "2.4.8"
|
38
38
|
s.summary = "manage environment based config settings"
|
39
39
|
|
40
40
|
if s.respond_to? :specification_version then
|
data/lib/conferred.rb
CHANGED
@@ -1,27 +1,71 @@
|
|
1
|
-
|
1
|
+
require 'json'
|
2
2
|
|
3
|
+
class Conferred
|
4
|
+
@@provider = "env"
|
3
5
|
class << self
|
6
|
+
attr_accessor :namespace
|
7
|
+
|
8
|
+
def provider=(value)
|
9
|
+
@@provider=value
|
10
|
+
end
|
11
|
+
|
12
|
+
def provider
|
13
|
+
@@provider || "env"
|
14
|
+
end
|
15
|
+
|
4
16
|
def method_missing(setting, *args, &block)
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
17
|
+
if setting =~ /#{provider}_setting_value/
|
18
|
+
super
|
19
|
+
return
|
20
|
+
end
|
21
|
+
method = :setting_value
|
22
|
+
method = :setting_value? if setting[-1] == "?"
|
23
|
+
method = :setting_value! if setting[-1] == "!"
|
24
|
+
self.send method, setting
|
9
25
|
end
|
10
26
|
|
11
|
-
def
|
27
|
+
def setting_name(method_name)
|
12
28
|
method_name.to_s.chomp("!").chomp("?").upcase
|
13
29
|
end
|
14
30
|
|
15
|
-
def
|
16
|
-
|
31
|
+
def setting_value(key)
|
32
|
+
#raise "iConferred: Undefined provider (#{@@provider})" unless self.responds_to setting_method_name
|
33
|
+
self.send(setting_method_name, key)
|
34
|
+
end
|
35
|
+
|
36
|
+
def setting_value?(key)
|
37
|
+
self.setting_value(key) != nil
|
38
|
+
end
|
39
|
+
|
40
|
+
def setting_value!(key)
|
41
|
+
self.setting_value(key) || raise("#{self.setting_name(key)} missing from environment")
|
42
|
+
end
|
43
|
+
|
44
|
+
private
|
45
|
+
|
46
|
+
def env_setting_value(key)
|
47
|
+
ENV[self.setting_name(key)]
|
48
|
+
end
|
49
|
+
|
50
|
+
def etcd_setting_value(key)
|
51
|
+
begin
|
52
|
+
resp = JSON.parse(Net::HTTP.get(etcd_setting_endpoint(key)))
|
53
|
+
resp["node"]["value"]
|
54
|
+
rescue
|
55
|
+
""
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
def etcd_setting_endpoint(key)
|
60
|
+
URI("http://localhost:2379/#{etcd_setting_namespace}#{key}")
|
17
61
|
end
|
18
62
|
|
19
|
-
def
|
20
|
-
self.
|
63
|
+
def etcd_setting_namespace
|
64
|
+
self.namespace ? "#{self.namespace}/" : ""
|
21
65
|
end
|
22
66
|
|
23
|
-
def
|
24
|
-
|
67
|
+
def setting_method_name
|
68
|
+
"#{self.provider}_setting_value".to_sym
|
25
69
|
end
|
26
70
|
end
|
27
71
|
end
|
data/spec/conferred_spec.rb
CHANGED
@@ -39,4 +39,51 @@ describe "Conferred" do
|
|
39
39
|
end
|
40
40
|
end
|
41
41
|
end
|
42
|
+
|
43
|
+
|
44
|
+
describe "providers" do
|
45
|
+
describe "#provider" do
|
46
|
+
it "defaults to 'env'" do
|
47
|
+
expect(Conferred.provider).to eq "env"
|
48
|
+
end
|
49
|
+
|
50
|
+
it "raises on missing provider" do
|
51
|
+
Conferred.provider = "none"
|
52
|
+
expect{Conferred.foo}.to raise_error NoMethodError
|
53
|
+
end
|
54
|
+
|
55
|
+
it "sets a provider" do
|
56
|
+
Conferred.provider = "etcd"
|
57
|
+
expect(Conferred.provider).to eq "etcd"
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
describe "#namespace" do
|
62
|
+
before do
|
63
|
+
Conferred.provider = "etcd"
|
64
|
+
Conferred.namespace = "section"
|
65
|
+
end
|
66
|
+
|
67
|
+
it "sets a namespace" do
|
68
|
+
expect(Conferred.namespace).to eq "section"
|
69
|
+
end
|
70
|
+
|
71
|
+
it "passes the namespace to etcd" do
|
72
|
+
expect(Net::HTTP).to receive(:get)
|
73
|
+
.with(URI('http://localhost:2379/section/secret'))
|
74
|
+
Conferred.secret
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
describe "etcd" do
|
79
|
+
it "calls the correct lookup function based on provider" do
|
80
|
+
Conferred.provider="etcd"
|
81
|
+
Conferred.namespace=nil
|
82
|
+
allow(Net::HTTP).to receive(:get)
|
83
|
+
.with(URI('http://localhost:2379/secret'))
|
84
|
+
.and_return('{"action":"get","node":{"key":"/secret","value":"foo","modifiedIndex":2962,"createdIndex":2962}}')
|
85
|
+
expect(Conferred.secret).to eq "foo"
|
86
|
+
end
|
87
|
+
end
|
88
|
+
end
|
42
89
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: conferred
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ian Kenney
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2015-11-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rspec
|
@@ -134,7 +134,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
134
134
|
version: '0'
|
135
135
|
requirements: []
|
136
136
|
rubyforge_project:
|
137
|
-
rubygems_version: 2.
|
137
|
+
rubygems_version: 2.4.8
|
138
138
|
signing_key:
|
139
139
|
specification_version: 4
|
140
140
|
summary: manage environment based config settings
|