easy_config 0.9.3 → 1.0.0
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/CHANGELOG.md +5 -0
- data/Gemfile.lock +1 -1
- data/README.md +49 -15
- data/lib/easy_config/env_var.rb +32 -0
- data/lib/easy_config/setup.rb +10 -1
- data/lib/easy_config/version.rb +1 -1
- data/lib/easy_config.rb +2 -0
- data/spec/easy_config/config_file_spec.rb +1 -1
- data/spec/easy_config/env_var_spec.rb +15 -0
- data/spec/easy_config_spec.rb +22 -1
- data/spec/fixtures/{facebook.yml → config/facebook.yml} +0 -0
- data/spec/fixtures/{github.yml → config/github.yml} +0 -0
- data/spec/fixtures/{redis.yml → config/redis.yml} +0 -0
- data/spec/fixtures/vendor/twitter.yml +5 -0
- data/spec/spec_helper.rb +2 -0
- metadata +7 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 20fedbc0060ed810f28d626477c33302a3ad8e15
|
4
|
+
data.tar.gz: 7f6a686def31fb1829a7897c15239a2bdd635185
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e047d96892658d40ab68843acea9206e30aa75eb5628faefac11ea789eb0230ae9fa55696fd3a7ec9f5b50040e50da24217538c8f820a46d7b7822267d10aa37
|
7
|
+
data.tar.gz: 232e16c7e2ddfaa4c72c33ff115cc9345917068e9307ce0469eaa1ca9ce574ba4dfb3a3c70ae04f2466fd1ba71a67c4615ac44619b2c60974257eb278de02c1e
|
data/CHANGELOG.md
CHANGED
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
# Easy config
|
2
|
-
Rails and Rack applications configuration made easy.
|
3
2
|
|
3
|
+
[](http://badge.fury.io/rb/easy_config)
|
4
4
|
[](http://travis-ci.org/felipecvo/easy\_config)
|
5
5
|
[](https://codeclimate.com/github/felipecvo/easy_config)
|
6
6
|
[](https://codeclimate.com/github/felipecvo/easy_config)
|
7
7
|
[](https://gemnasium.com/felipecvo/easy_config)
|
8
8
|
|
9
|
-
|
9
|
+
Rails and Rack applications configuration made easy.
|
10
10
|
|
11
|
-
|
11
|
+
## Install
|
12
12
|
|
13
13
|
`gem install easy_config`
|
14
14
|
|
@@ -16,7 +16,51 @@ or in your Gemfile
|
|
16
16
|
|
17
17
|
`gem "easy_config"`
|
18
18
|
|
19
|
-
|
19
|
+
## Usage
|
20
|
+
|
21
|
+
### Rails/Sinatra
|
22
|
+
Inside config dir, create a file redis.yml:
|
23
|
+
```
|
24
|
+
development:
|
25
|
+
host: 127.0.0.1
|
26
|
+
port: 6379
|
27
|
+
password:
|
28
|
+
production:
|
29
|
+
host: 172.0.0.1
|
30
|
+
port: 6379
|
31
|
+
password: "alpha"
|
32
|
+
```
|
33
|
+
|
34
|
+
In your ruby code, you do:
|
35
|
+
```ruby
|
36
|
+
Redis.current = Redis.new({
|
37
|
+
host: EasyConfig.redis.host,
|
38
|
+
port: EasyConfig.redis.port,
|
39
|
+
password: EasyConfig.redis.password
|
40
|
+
})
|
41
|
+
```
|
42
|
+
|
43
|
+
### Custom config paths
|
44
|
+
|
45
|
+
You can provide additional custom config paths.
|
46
|
+
|
47
|
+
Config file at `vendor/config/sample.yml`:
|
48
|
+
```
|
49
|
+
development:
|
50
|
+
property: "value"
|
51
|
+
```
|
52
|
+
Code:
|
53
|
+
```
|
54
|
+
EasyConfig.append_config_path Rails.root.join('vendor/config')
|
55
|
+
puts EasyConfig.sample.property
|
56
|
+
```
|
57
|
+
Output will be: "value"
|
58
|
+
|
59
|
+
### Environment Variables
|
60
|
+
```
|
61
|
+
# ENV['APP_API_KEY'] = '1234567890'
|
62
|
+
puts EasyConfig.app.api_key
|
63
|
+
```
|
20
64
|
|
21
65
|
## How it works
|
22
66
|
|
@@ -26,22 +70,12 @@ to put your files in config dir and be a valid YAML file (with .yml as extension
|
|
26
70
|
If you desire you can split your configurations by environment. Easy config treats it
|
27
71
|
automatically.
|
28
72
|
|
29
|
-
### Example
|
30
|
-
|
31
|
-
We can access database.yml file as:
|
32
|
-
|
33
|
-
`EasyConfig.database.adapter`
|
34
|
-
|
35
|
-
And if you have your our custom config file named my\_customs.yml:
|
36
|
-
|
37
|
-
`EasyConfig.my_customs.custom_var`
|
38
|
-
|
39
73
|
## Supported rubies
|
40
74
|
|
41
75
|
* 2.1
|
42
76
|
* 2.0
|
43
77
|
* 1.9.3
|
44
|
-
* ree
|
78
|
+
* ree (will be dropped after 1.0)
|
45
79
|
|
46
80
|
## License
|
47
81
|
|
@@ -0,0 +1,32 @@
|
|
1
|
+
module EasyConfig::EnvVar
|
2
|
+
class << self
|
3
|
+
def extended(base)
|
4
|
+
setup(base)
|
5
|
+
end
|
6
|
+
|
7
|
+
def setup(base)
|
8
|
+
env_vars.each do |key, configs|
|
9
|
+
create_method(base, key, EasyConfig::Configuration.new(configs))
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
def env_vars
|
14
|
+
configs = {}
|
15
|
+
ENV.each do |key, value|
|
16
|
+
if key.downcase =~ /^([a-zA-Z][^_]+)_(\w+)/
|
17
|
+
configs[$1] = configs.fetch($1, {})
|
18
|
+
configs[$1][$2] = value
|
19
|
+
end
|
20
|
+
end
|
21
|
+
configs
|
22
|
+
end
|
23
|
+
|
24
|
+
def create_method(base, name, value)
|
25
|
+
base.class_eval do
|
26
|
+
(class << self; self; end).instance_eval do
|
27
|
+
define_method(name.to_sym) { value }
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
data/lib/easy_config/setup.rb
CHANGED
@@ -30,9 +30,18 @@ module EasyConfig
|
|
30
30
|
self.reset!
|
31
31
|
end
|
32
32
|
|
33
|
-
def
|
33
|
+
def append_config_path(path)
|
34
|
+
reset if @loaded
|
35
|
+
EasyConfig::PathResolver.config_paths << path
|
36
|
+
end
|
37
|
+
|
38
|
+
def reset
|
34
39
|
EasyConfig::ConfigFile.reset!
|
35
40
|
@loaded = false
|
41
|
+
end
|
42
|
+
|
43
|
+
def reset!
|
44
|
+
reset
|
36
45
|
setup_config
|
37
46
|
end
|
38
47
|
|
data/lib/easy_config/version.rb
CHANGED
data/lib/easy_config.rb
CHANGED
@@ -3,10 +3,12 @@ require 'easy_config/setup'
|
|
3
3
|
require 'easy_config/config_file'
|
4
4
|
require 'easy_config/configuration'
|
5
5
|
require 'easy_config/env'
|
6
|
+
require 'easy_config/env_var'
|
6
7
|
require 'easy_config/path_resolver'
|
7
8
|
|
8
9
|
module EasyConfig
|
9
10
|
class ConfigurationNotFound < NoMethodError; end
|
10
11
|
|
12
|
+
extend EnvVar
|
11
13
|
extend Setup
|
12
14
|
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe EasyConfig::ConfigFile do
|
4
|
-
before { EasyConfig::PathResolver.config_paths << './spec/fixtures' }
|
4
|
+
before { EasyConfig::PathResolver.config_paths << './spec/fixtures/config' }
|
5
5
|
after { EasyConfig::PathResolver.clear! }
|
6
6
|
|
7
7
|
context "all files" do
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe EasyConfig::EnvVar do
|
4
|
+
class TestEnvVar
|
5
|
+
end
|
6
|
+
|
7
|
+
before do
|
8
|
+
ENV['CLOUDAMQP_URL'] = 'amqp://user:pass@ec2.clustername.cloudamqp.com/vhost'
|
9
|
+
end
|
10
|
+
|
11
|
+
it 'has methods to retrieve values' do
|
12
|
+
EasyConfig::EnvVar.setup(TestEnvVar)
|
13
|
+
TestEnvVar.cloudamqp.url.should eq 'amqp://user:pass@ec2.clustername.cloudamqp.com/vhost'
|
14
|
+
end
|
15
|
+
end
|
data/spec/easy_config_spec.rb
CHANGED
@@ -1,7 +1,10 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe EasyConfig do
|
4
|
-
before
|
4
|
+
before do
|
5
|
+
EasyConfig.reset!
|
6
|
+
EasyConfig.append_config_path File.expand_path('./spec/fixtures/config')
|
7
|
+
end
|
5
8
|
|
6
9
|
context "mising methods" do
|
7
10
|
it 'should treat it' do
|
@@ -42,4 +45,22 @@ describe EasyConfig do
|
|
42
45
|
subject { EasyConfig.environment }
|
43
46
|
it { should eq "test" }
|
44
47
|
end
|
48
|
+
|
49
|
+
context "multiple config paths" do
|
50
|
+
before do
|
51
|
+
EasyConfig.append_config_path File.expand_path('./spec/fixtures/vendor')
|
52
|
+
end
|
53
|
+
|
54
|
+
it "reads from default config path" do
|
55
|
+
EasyConfig.redis.host.should eq "localhost"
|
56
|
+
end
|
57
|
+
|
58
|
+
it "reads from additional config path" do
|
59
|
+
EasyConfig.twitter.consumer_key.should eq "YOUR_CONSUMER_KEY"
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
it "returns value from environment variables" do
|
64
|
+
EasyConfig.app.env.should eq 'dev'
|
65
|
+
end
|
45
66
|
end
|
File without changes
|
File without changes
|
File without changes
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: easy_config
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Felipe Oliveira
|
@@ -86,17 +86,20 @@ files:
|
|
86
86
|
- lib/easy_config/config_file.rb
|
87
87
|
- lib/easy_config/configuration.rb
|
88
88
|
- lib/easy_config/env.rb
|
89
|
+
- lib/easy_config/env_var.rb
|
89
90
|
- lib/easy_config/path_resolver.rb
|
90
91
|
- lib/easy_config/setup.rb
|
91
92
|
- lib/easy_config/version.rb
|
92
93
|
- spec/easy_config/config_file_spec.rb
|
93
94
|
- spec/easy_config/configuration_spec.rb
|
94
95
|
- spec/easy_config/env_spec.rb
|
96
|
+
- spec/easy_config/env_var_spec.rb
|
95
97
|
- spec/easy_config/path_resolver_spec.rb
|
96
98
|
- spec/easy_config_spec.rb
|
97
|
-
- spec/fixtures/facebook.yml
|
98
|
-
- spec/fixtures/github.yml
|
99
|
-
- spec/fixtures/redis.yml
|
99
|
+
- spec/fixtures/config/facebook.yml
|
100
|
+
- spec/fixtures/config/github.yml
|
101
|
+
- spec/fixtures/config/redis.yml
|
102
|
+
- spec/fixtures/vendor/twitter.yml
|
100
103
|
- spec/spec_helper.rb
|
101
104
|
homepage: http://rubygems.org/gems/easy_config
|
102
105
|
licenses:
|