configa 0.0.5 → 0.0.6
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +7 -0
- data/lib/configa/version.rb +1 -1
- data/lib/configa.rb +9 -1
- data/spec/configa/configa_spec.rb +6 -0
- metadata +1 -1
data/README.md
CHANGED
@@ -29,8 +29,14 @@ config.development.mongodb.user
|
|
29
29
|
#=> "pedro"
|
30
30
|
config.development.mongodb(:user, :password)
|
31
31
|
#=> ["pedro", "password"]
|
32
|
+
config.development.mongodb(:user, :password, hash: true)
|
33
|
+
#=> { user: "pedro", password: "password"}
|
32
34
|
config.production.root.password
|
33
35
|
#=> Error is raised ;)
|
36
|
+
|
37
|
+
config = Configa.new(config_file_path, env: :development)
|
38
|
+
config.mongodb.user
|
39
|
+
#=> "pedro"
|
34
40
|
```
|
35
41
|
|
36
42
|
## Why anyone needs configa?
|
@@ -173,6 +179,7 @@ dev.production.mysql
|
|
173
179
|
# will raise an error
|
174
180
|
all.production.mysql
|
175
181
|
# will return mysql for production
|
182
|
+
```
|
176
183
|
|
177
184
|
## Contributing
|
178
185
|
|
data/lib/configa/version.rb
CHANGED
data/lib/configa.rb
CHANGED
@@ -77,13 +77,21 @@ module Configa
|
|
77
77
|
def magic(data)
|
78
78
|
data.each do |k,v|
|
79
79
|
data.define_singleton_method(k) do |*args|
|
80
|
-
|
80
|
+
opts = {}
|
81
|
+
opts = args.pop if Hash === args.last
|
82
|
+
hash = opts[:hash]
|
83
|
+
res = if args.any?
|
81
84
|
args.map do |arg|
|
82
85
|
data[k][arg.to_s]
|
83
86
|
end
|
84
87
|
else
|
85
88
|
data[k]
|
86
89
|
end
|
90
|
+
if hash
|
91
|
+
Hash[ [res].flatten.map{ |r| [args.shift, r]} ]
|
92
|
+
else
|
93
|
+
res
|
94
|
+
end
|
87
95
|
end
|
88
96
|
data.define_singleton_method(:method_missing) do |name, *args, &blk|
|
89
97
|
raise Configa::UnknownKey, "Unknown key '#{name}' for current node. Available keys are: '#{data.keys * '\', \''}'. Current node: #{data.inspect}"
|
@@ -85,5 +85,11 @@ describe Configa do
|
|
85
85
|
@config.storage.must_equal "tmp"
|
86
86
|
proc{ @config.production.mysql.username }.must_raise Configa::UnknownEnvironment
|
87
87
|
end
|
88
|
+
|
89
|
+
it "should return result as a hash" do
|
90
|
+
path = File.expand_path("../../config.yml", __FILE__)
|
91
|
+
@config = Configa.new(path)
|
92
|
+
@config.production.mysql(:username, :database, hash: true).must_equal({ username: "admin", database: "mysql_prod" })
|
93
|
+
end
|
88
94
|
end
|
89
95
|
end
|