a9n 0.4.1 → 0.4.2
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 +1 -1
- data/a9n.gemspec +1 -1
- data/lib/a9n.rb +3 -2
- data/lib/a9n/struct.rb +1 -1
- data/lib/a9n/version.rb +1 -1
- data/spec/integration/a9n_spec.rb +78 -17
- data/spec/spec_helper.rb +8 -0
- data/spec/unit/a9n_spec.rb +0 -8
- data/spec/unit/struct_spec.rb +42 -5
- 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: cb78fbff3f0313e316677658597f0143d5688835
|
4
|
+
data.tar.gz: ec4ee59ac801e019236d895674b325ac0b720483
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6325f3fbad2cc18a3d8eb78cde05aebf3c3a0ea62f7a0c1b4e4c2b27e2901919f292c8d268a90319baf053235fcc0055e46aea595a1be764c896b0339fcd88dd
|
7
|
+
data.tar.gz: d0d1228d3b001208f1296f2f6e9468173acac35169cf34810dce9fd303c811ffd303fb9027db19a51d411c3207ba0d8108c90818654f7323daa3bd2a9d07361f
|
data/Gemfile
CHANGED
data/a9n.gemspec
CHANGED
@@ -4,7 +4,7 @@ require File.expand_path('../lib/a9n/version', __FILE__)
|
|
4
4
|
Gem::Specification.new do |gem|
|
5
5
|
gem.authors = ["Krzysztof Knapik"]
|
6
6
|
gem.email = ["knapo@knapo.net"]
|
7
|
-
gem.description = %q{a9n - ruby/rails apps
|
7
|
+
gem.description = %q{a9n - ruby/rails apps configuration manager}
|
8
8
|
gem.summary = %q{a9n is a tool to keep ruby/rails apps extra configuration easily maintainable and verifiable}
|
9
9
|
gem.homepage = "https://github.com/knapo/a9n"
|
10
10
|
gem.license = 'MIT'
|
data/lib/a9n.rb
CHANGED
@@ -66,7 +66,7 @@ module A9n
|
|
66
66
|
|
67
67
|
def method_missing(name, *args)
|
68
68
|
load if storage.empty?
|
69
|
-
storage.send(name)
|
69
|
+
storage.send(name, *args)
|
70
70
|
end
|
71
71
|
|
72
72
|
private
|
@@ -80,10 +80,11 @@ module A9n
|
|
80
80
|
def setup_scope(name, data)
|
81
81
|
if default_scope?(name)
|
82
82
|
storage.merge(data)
|
83
|
+
def_delegator :storage, :fetch
|
83
84
|
def_delegators :storage, *data.keys
|
84
85
|
else
|
85
86
|
storage[name] = data
|
86
|
-
|
87
|
+
def_delegator :storage, name
|
87
88
|
end
|
88
89
|
return data
|
89
90
|
end
|
data/lib/a9n/struct.rb
CHANGED
data/lib/a9n/version.rb
CHANGED
@@ -5,53 +5,114 @@ describe A9n do
|
|
5
5
|
|
6
6
|
let(:env) { "test" }
|
7
7
|
|
8
|
-
before
|
8
|
+
before do
|
9
|
+
clean_singleton(subject)
|
9
10
|
subject.app = double(env: env)
|
10
11
|
subject.root = File.expand_path("../../../test_app", __FILE__)
|
11
12
|
subject.load
|
12
|
-
|
13
|
+
end
|
13
14
|
|
14
|
-
after
|
15
|
-
subject
|
16
|
-
|
17
|
-
subject.app = nil
|
18
|
-
}
|
15
|
+
after do
|
16
|
+
clean_singleton(subject)
|
17
|
+
end
|
19
18
|
|
20
19
|
context "base config file" do
|
21
|
-
it
|
20
|
+
it do
|
21
|
+
expect(subject.storage).to be_kind_of(A9n::Struct)
|
22
|
+
end
|
23
|
+
|
24
|
+
it do
|
22
25
|
expect(subject.default_dwarf).to eq("default dwarf")
|
23
26
|
expect(subject.overriden_dwarf).to eq("already overriden dwarf")
|
24
|
-
|
27
|
+
end
|
28
|
+
|
29
|
+
it do
|
30
|
+
expect(subject.fetch(:default_dwarf)).to eq("default dwarf")
|
31
|
+
expect(subject.fetch(:overriden_dwarf)).to eq("already overriden dwarf")
|
32
|
+
end
|
33
|
+
|
34
|
+
it do
|
35
|
+
expect { subject.invalid }.to raise_error(A9n::NoSuchConfigurationVariable)
|
36
|
+
end
|
37
|
+
|
38
|
+
it do
|
39
|
+
expect { subject.fetch(:invalid) }.to raise_error(::KeyError)
|
40
|
+
end
|
41
|
+
|
42
|
+
it do
|
43
|
+
expect { subject.fetch(:invalid, "Hello").to eq("Hello") }
|
44
|
+
end
|
25
45
|
end
|
26
46
|
|
27
47
|
context "undefined env" do
|
28
48
|
let(:env) { "tropical" }
|
29
|
-
|
49
|
+
|
50
|
+
it do
|
30
51
|
expect(subject.default_dwarf).to eq("default dwarf")
|
31
52
|
expect(subject.overriden_dwarf).to eq("not yet overriden dwarf")
|
32
|
-
|
53
|
+
end
|
54
|
+
|
55
|
+
it do
|
56
|
+
expect(subject.fetch(:default_dwarf)).to eq("default dwarf")
|
57
|
+
expect(subject.fetch(:overriden_dwarf)).to eq("not yet overriden dwarf")
|
58
|
+
end
|
33
59
|
end
|
34
60
|
|
35
61
|
context "extra config file" do
|
36
|
-
|
62
|
+
before do
|
37
63
|
expect(subject.mandrill).to be_kind_of(A9n::Struct)
|
64
|
+
end
|
65
|
+
|
66
|
+
it do
|
38
67
|
expect(subject.mandrill.username).to eq("joe")
|
39
68
|
expect(subject.mandrill.api_key).to eq("asdf1234")
|
40
|
-
|
69
|
+
end
|
70
|
+
|
71
|
+
it do
|
72
|
+
expect(subject.mandrill.fetch(:username)).to eq("joe")
|
73
|
+
expect(subject.mandrill.fetch(:api_key)).to eq("asdf1234")
|
74
|
+
end
|
75
|
+
|
76
|
+
it do
|
77
|
+
expect(subject.fetch(:mandrill)).to eq(subject.mandrill)
|
78
|
+
end
|
41
79
|
end
|
42
80
|
|
43
81
|
context "extra config file with erb" do
|
44
|
-
|
82
|
+
before do
|
45
83
|
expect(subject.cloud).to be_kind_of(A9n::Struct)
|
84
|
+
end
|
85
|
+
|
86
|
+
it do
|
46
87
|
expect(subject.cloud.username).to eq("testuser")
|
47
88
|
expect(subject.cloud.password).to eq("qwerty")
|
48
|
-
|
89
|
+
end
|
90
|
+
|
91
|
+
it do
|
92
|
+
expect(subject.cloud.fetch(:username)).to eq("testuser")
|
93
|
+
expect(subject.cloud.fetch(:password)).to eq("qwerty")
|
94
|
+
end
|
95
|
+
|
96
|
+
it do
|
97
|
+
expect(subject.fetch(:cloud)).to eq(subject.cloud)
|
98
|
+
end
|
49
99
|
end
|
50
100
|
|
51
101
|
context "extra config file with example" do
|
52
|
-
|
102
|
+
before do
|
53
103
|
expect(subject.mailer).to be_kind_of(A9n::Struct)
|
104
|
+
end
|
105
|
+
|
106
|
+
it do
|
54
107
|
expect(subject.mailer.delivery_method).to eq("test")
|
55
|
-
|
108
|
+
end
|
109
|
+
|
110
|
+
it do
|
111
|
+
expect(subject.mailer.fetch(:delivery_method)).to eq("test")
|
112
|
+
end
|
113
|
+
|
114
|
+
it do
|
115
|
+
expect(subject.fetch(:mailer)).to eq(subject.mailer)
|
116
|
+
end
|
56
117
|
end
|
57
118
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -15,3 +15,11 @@ RSpec.configure do |config|
|
|
15
15
|
config.order = "random"
|
16
16
|
config.tty = true
|
17
17
|
end
|
18
|
+
|
19
|
+
def clean_singleton(klass)
|
20
|
+
[:@storage, :@env, :@app, :@root].each do |var|
|
21
|
+
if klass.instance_variable_defined?(var)
|
22
|
+
klass.remove_instance_variable(var)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
data/spec/unit/a9n_spec.rb
CHANGED
@@ -2,14 +2,6 @@ require "spec_helper"
|
|
2
2
|
|
3
3
|
describe A9n do
|
4
4
|
subject { described_class }
|
5
|
-
|
6
|
-
def clean_singleton(subject)
|
7
|
-
subject.instance_variable_set(:@storage, nil)
|
8
|
-
subject.instance_variable_set(:@env, nil)
|
9
|
-
subject.root = nil
|
10
|
-
subject.app = nil
|
11
|
-
end
|
12
|
-
|
13
5
|
before { clean_singleton(subject) }
|
14
6
|
after { clean_singleton(subject) }
|
15
7
|
|
data/spec/unit/struct_spec.rb
CHANGED
@@ -17,7 +17,19 @@ describe A9n::Struct do
|
|
17
17
|
end
|
18
18
|
|
19
19
|
describe "#[]" do
|
20
|
-
it { expect(subject[:dwarf]).to
|
20
|
+
it { expect(subject[:dwarf]).to eq(nil) }
|
21
|
+
end
|
22
|
+
|
23
|
+
describe "#fetch" do
|
24
|
+
it do
|
25
|
+
expect {
|
26
|
+
subject.fetch(:dwarf)
|
27
|
+
}.to raise_error(KeyError)
|
28
|
+
end
|
29
|
+
|
30
|
+
it do
|
31
|
+
expect(subject.fetch(:dwarf, "hello")).to eq("hello")
|
32
|
+
end
|
21
33
|
end
|
22
34
|
|
23
35
|
it "raises error on accessin invalid attribute" do
|
@@ -100,21 +112,46 @@ describe A9n::Struct do
|
|
100
112
|
end
|
101
113
|
|
102
114
|
describe "#[]" do
|
103
|
-
it "
|
115
|
+
it "returns non empty value" do
|
104
116
|
expect(subject[:non_empty_dwarf]).to eq("dwarf")
|
105
117
|
end
|
106
118
|
|
107
|
-
it "
|
119
|
+
it "returns false value" do
|
108
120
|
expect(subject[:false_dwarf]).to eq(false)
|
109
121
|
end
|
110
122
|
|
111
|
-
it "
|
123
|
+
it "returns nil value" do
|
112
124
|
expect(subject[:nil_dwarf]).to eq(nil)
|
113
125
|
end
|
114
126
|
|
115
|
-
it "
|
127
|
+
it "returns nil for non existing key" do
|
116
128
|
expect(subject[:non_existing_dwarf]).to eq(nil)
|
117
129
|
end
|
118
130
|
end
|
131
|
+
|
132
|
+
|
133
|
+
describe "#fetch" do
|
134
|
+
it "returns non empty value" do
|
135
|
+
expect(subject.fetch(:non_empty_dwarf)).to eq("dwarf")
|
136
|
+
end
|
137
|
+
|
138
|
+
it "returns false value" do
|
139
|
+
expect(subject.fetch(:false_dwarf)).to eq(false)
|
140
|
+
end
|
141
|
+
|
142
|
+
it "returns nil value" do
|
143
|
+
expect(subject.fetch(:nil_dwarf)).to eq(nil)
|
144
|
+
end
|
145
|
+
|
146
|
+
it "returns default for non existing value" do
|
147
|
+
expect(subject.fetch(:non_existing_dwarf, "hello")).to eq("hello")
|
148
|
+
end
|
149
|
+
|
150
|
+
it "raises error for non existing key" do
|
151
|
+
expect {
|
152
|
+
subject.fetch(:non_existing_dwarf)
|
153
|
+
}.to raise_error(KeyError)
|
154
|
+
end
|
155
|
+
end
|
119
156
|
end
|
120
157
|
end
|
metadata
CHANGED
@@ -1,16 +1,16 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: a9n
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Krzysztof Knapik
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-02-
|
11
|
+
date: 2015-02-24 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
|
-
description: a9n - ruby/rails apps
|
13
|
+
description: a9n - ruby/rails apps configuration manager
|
14
14
|
email:
|
15
15
|
- knapo@knapo.net
|
16
16
|
executables: []
|