configus 0.0.4 → 0.0.5
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 +7 -0
- data/.coveralls.yml +1 -0
- data/.travis.yml +1 -3
- data/Gemfile +4 -0
- data/README.md +52 -25
- data/Rakefile +2 -0
- data/configus.gemspec +0 -4
- data/lib/configus.rb +4 -3
- data/lib/configus/builder.rb +2 -0
- data/lib/configus/config.rb +6 -3
- data/lib/configus/version.rb +1 -1
- data/spec/configus/builder_spec.rb +13 -0
- data/spec/configus/config_spec.rb +57 -0
- data/spec/spec_helper.rb +5 -1
- metadata +15 -36
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: b8a0371a1dc4ddac7c726ed2d7f1095cbc133ab3
|
4
|
+
data.tar.gz: f1944395474e964e680fffcbc05ac755027a6670
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 5a9f3d785e7842a3625d95b950858ee2db2402b4bb98ffd99b37b25220fe2e2b069e195938337de86e580f193397e194a707a519080703f68a5df469c6d4f17e
|
7
|
+
data.tar.gz: b45c82eaa4ad173212f96dbba9cf9293a07f381c14527f5815af48a8ff4b3e7bcf9986f7e5a11c1d7153cdd198686a939a62a11df710083ee3ae97be215dc9ed
|
data/.coveralls.yml
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
repo_token: oybJW5C1ZdCRqiC1Ivn4mDjOqNdYipXts
|
data/.travis.yml
CHANGED
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -1,11 +1,16 @@
|
|
1
1
|
# Configus
|
2
2
|
|
3
|
+
[](https://rubygems.org/gems/configus)
|
4
|
+
[](https://travis-ci.org/kaize/configus)
|
5
|
+
[](https://gemnasium.com/kaize/configus)
|
6
|
+
[](https://codeclimate.com/github/kaize/configus)
|
7
|
+
[](https://coveralls.io/r/kaize/configus)
|
8
|
+
[](http://stillmaintained.com/kaize/configus)
|
9
|
+
|
3
10
|
## Summary
|
4
11
|
|
5
12
|
Configus helps you easily manage environment specific settings
|
6
13
|
|
7
|
-
[](http://travis-ci.org/mokevnin/configus)
|
8
|
-
|
9
14
|
## Installing
|
10
15
|
|
11
16
|
Add this to your `Gemfile`:
|
@@ -16,42 +21,64 @@ Add this to your `Gemfile`:
|
|
16
21
|
|
17
22
|
### Definition
|
18
23
|
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
24
|
+
``` ruby
|
25
|
+
Configus.build :development do # set current environment
|
26
|
+
env :production do
|
27
|
+
site_name 'Example'
|
28
|
+
web do
|
29
|
+
domain 'example.com'
|
30
|
+
protocol 'https'
|
31
|
+
port 80
|
32
|
+
uri -> { "#{protocol}://#{domain}:#{port}" }
|
33
|
+
end
|
34
|
+
site_uri -> { web.uri }
|
35
|
+
email do
|
36
|
+
pop do
|
37
|
+
address 'pop.example.com'
|
38
|
+
port 110
|
32
39
|
end
|
40
|
+
smtp do
|
41
|
+
address 'smtp.example.com'
|
42
|
+
port 25
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
33
46
|
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
47
|
+
env :development, :parent => :production do
|
48
|
+
web do
|
49
|
+
domain 'localhost'
|
50
|
+
protocol 'http'
|
51
|
+
port 9292
|
52
|
+
end
|
53
|
+
email do
|
54
|
+
smtp do
|
55
|
+
address 'smpt.text.example.com'
|
41
56
|
end
|
42
57
|
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
```
|
43
61
|
|
44
62
|
### Usage
|
45
63
|
|
46
|
-
configus.
|
64
|
+
configus.site_name # => 'Example'
|
65
|
+
configus.web.uri # => 'https://example.com:80'
|
66
|
+
configus.site_uri # => 'https://example.com:80'
|
47
67
|
configus.email.pop.port # => 110
|
48
68
|
|
49
69
|
### Rails
|
50
70
|
|
51
|
-
define your config in `
|
71
|
+
define your config in `lib/configus.rb`
|
52
72
|
|
53
73
|
Configus.build Rails.env do
|
54
|
-
#
|
74
|
+
# settings
|
75
|
+
end
|
76
|
+
|
77
|
+
reload
|
78
|
+
|
79
|
+
# config/environments/development.rb
|
80
|
+
ActionDispatch::Reloader.to_prepare do
|
81
|
+
load Rails.root.join('lib/configus.rb')
|
55
82
|
end
|
56
83
|
|
57
84
|
## Similar
|
data/Rakefile
CHANGED
data/configus.gemspec
CHANGED
@@ -17,8 +17,4 @@ Gem::Specification.new do |s|
|
|
17
17
|
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
18
18
|
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
19
19
|
s.require_paths = ["lib"]
|
20
|
-
|
21
|
-
# specify any dependencies here; for example:
|
22
|
-
s.add_development_dependency "rspec"
|
23
|
-
s.add_runtime_dependency "rake"
|
24
20
|
end
|
data/lib/configus.rb
CHANGED
@@ -1,10 +1,11 @@
|
|
1
1
|
require "configus/version"
|
2
|
-
require 'configus/builder'
|
3
|
-
require 'configus/proxy'
|
4
|
-
require 'configus/config'
|
5
2
|
require 'configus/core_ext/kernel'
|
6
3
|
|
7
4
|
module Configus
|
5
|
+
autoload :Builder, 'configus/builder'
|
6
|
+
autoload :Proxy, 'configus/proxy'
|
7
|
+
autoload :Config, 'configus/config'
|
8
|
+
|
8
9
|
def self.build(env, &block)
|
9
10
|
@config = Builder.build(env, &block)
|
10
11
|
end
|
data/lib/configus/builder.rb
CHANGED
data/lib/configus/config.rb
CHANGED
@@ -10,12 +10,15 @@ module Configus
|
|
10
10
|
|
11
11
|
(class << self; self; end).class_eval do
|
12
12
|
config.each_pair do |key, value|
|
13
|
-
|
13
|
+
case value
|
14
|
+
when Hash
|
14
15
|
value = Config.new(value)
|
16
|
+
when Proc
|
17
|
+
value
|
15
18
|
end
|
16
19
|
|
17
20
|
define_method key.to_sym do
|
18
|
-
value
|
21
|
+
value.is_a?(Proc) ? instance_exec(&value) : value
|
19
22
|
end
|
20
23
|
end
|
21
24
|
end
|
@@ -39,7 +42,7 @@ module Configus
|
|
39
42
|
end
|
40
43
|
|
41
44
|
def method_missing(meth, *args, &blk)
|
42
|
-
raise "'#{meth}' key does not
|
45
|
+
raise "'#{meth}' key does not exist in your configus"
|
43
46
|
end
|
44
47
|
end
|
45
48
|
end
|
data/lib/configus/version.rb
CHANGED
@@ -39,4 +39,17 @@ describe Configus::Builder do
|
|
39
39
|
}
|
40
40
|
}
|
41
41
|
end
|
42
|
+
|
43
|
+
it 'should raise error' do
|
44
|
+
p = Proc.new do
|
45
|
+
env :production do
|
46
|
+
key_1 'value 1'
|
47
|
+
end
|
48
|
+
|
49
|
+
env :production do
|
50
|
+
key_2 'value 2'
|
51
|
+
end
|
52
|
+
end
|
53
|
+
expect{ Configus::Builder.new(:production, p) }.to raise_error ArgumentError
|
54
|
+
end
|
42
55
|
end
|
@@ -39,3 +39,60 @@ describe Configus::Config do
|
|
39
39
|
end
|
40
40
|
end
|
41
41
|
|
42
|
+
describe "Hardcore" do
|
43
|
+
|
44
|
+
it 'should use defined value' do
|
45
|
+
p = Proc.new do
|
46
|
+
env :production do
|
47
|
+
foo 'bar'
|
48
|
+
bar 'bom'
|
49
|
+
baz -> { foo + bar }
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
builder = Configus::Builder.new(:production, p)
|
54
|
+
@options = builder.result
|
55
|
+
@config = Configus::Config.new(@options)
|
56
|
+
|
57
|
+
@config.foo == @options[:foo]
|
58
|
+
@config.bar == @options[:bar]
|
59
|
+
@config.baz == @options[:foo] + @options[:bar]
|
60
|
+
@config.baz == @config.foo + @config.bar
|
61
|
+
end
|
62
|
+
|
63
|
+
it "second" do
|
64
|
+
p = Proc.new do
|
65
|
+
env :a do
|
66
|
+
foo do
|
67
|
+
bar 'baz'
|
68
|
+
bom 'bim'
|
69
|
+
baz -> { bar + bim}
|
70
|
+
end
|
71
|
+
key1 do
|
72
|
+
key2 'value1'
|
73
|
+
key3 'value2'
|
74
|
+
key4 -> { key2 + key3}
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
env :b, parent: :a do
|
79
|
+
bom -> { foo.bar }
|
80
|
+
key1 do
|
81
|
+
key2 'value3'
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
builder_a = Configus::Builder.new(:a, p)
|
87
|
+
@options_a = builder_a.result
|
88
|
+
@config_a = Configus::Config.new(@options_a)
|
89
|
+
|
90
|
+
builder_b = Configus::Builder.new(:b, p)
|
91
|
+
@options_b = builder_b.result
|
92
|
+
@config_b = Configus::Config.new(@options_b)
|
93
|
+
|
94
|
+
@config_b.bom == @config_a.foo.bar
|
95
|
+
@config_b.key1.key4 == @config_b.key1.key2 + @config_a.key1.key3
|
96
|
+
end
|
97
|
+
end
|
98
|
+
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,38 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: configus
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
5
|
-
prerelease:
|
4
|
+
version: 0.0.5
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Mokevnin Kirill
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
13
|
-
dependencies:
|
14
|
-
- !ruby/object:Gem::Dependency
|
15
|
-
name: rspec
|
16
|
-
requirement: &75431570 !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
|
-
requirements:
|
19
|
-
- - ! '>='
|
20
|
-
- !ruby/object:Gem::Version
|
21
|
-
version: '0'
|
22
|
-
type: :development
|
23
|
-
prerelease: false
|
24
|
-
version_requirements: *75431570
|
25
|
-
- !ruby/object:Gem::Dependency
|
26
|
-
name: rake
|
27
|
-
requirement: &75431290 !ruby/object:Gem::Requirement
|
28
|
-
none: false
|
29
|
-
requirements:
|
30
|
-
- - ! '>='
|
31
|
-
- !ruby/object:Gem::Version
|
32
|
-
version: '0'
|
33
|
-
type: :runtime
|
34
|
-
prerelease: false
|
35
|
-
version_requirements: *75431290
|
11
|
+
date: 2014-01-17 00:00:00.000000000 Z
|
12
|
+
dependencies: []
|
36
13
|
description: Configus helps you easily manage environment specific settings
|
37
14
|
email:
|
38
15
|
- mokevnin@gmail.com
|
@@ -40,8 +17,9 @@ executables: []
|
|
40
17
|
extensions: []
|
41
18
|
extra_rdoc_files: []
|
42
19
|
files:
|
43
|
-
- .
|
44
|
-
- .
|
20
|
+
- ".coveralls.yml"
|
21
|
+
- ".gitignore"
|
22
|
+
- ".travis.yml"
|
45
23
|
- Gemfile
|
46
24
|
- README.md
|
47
25
|
- Rakefile
|
@@ -57,27 +35,28 @@ files:
|
|
57
35
|
- spec/spec_helper.rb
|
58
36
|
homepage: https://github.com/kaize/configus
|
59
37
|
licenses: []
|
38
|
+
metadata: {}
|
60
39
|
post_install_message:
|
61
40
|
rdoc_options: []
|
62
41
|
require_paths:
|
63
42
|
- lib
|
64
43
|
required_ruby_version: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
44
|
requirements:
|
67
|
-
- -
|
45
|
+
- - ">="
|
68
46
|
- !ruby/object:Gem::Version
|
69
47
|
version: '0'
|
70
48
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
71
|
-
none: false
|
72
49
|
requirements:
|
73
|
-
- -
|
50
|
+
- - ">="
|
74
51
|
- !ruby/object:Gem::Version
|
75
52
|
version: '0'
|
76
53
|
requirements: []
|
77
54
|
rubyforge_project: configus
|
78
|
-
rubygems_version:
|
55
|
+
rubygems_version: 2.2.0
|
79
56
|
signing_key:
|
80
|
-
specification_version:
|
57
|
+
specification_version: 4
|
81
58
|
summary: Configus helps you easily manage environment specific settings
|
82
|
-
test_files:
|
83
|
-
|
59
|
+
test_files:
|
60
|
+
- spec/configus/builder_spec.rb
|
61
|
+
- spec/configus/config_spec.rb
|
62
|
+
- spec/spec_helper.rb
|