magiconf 0.1.0 → 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.
- data/CHANGELOG.md +10 -0
- data/{README.markdown → README.md} +10 -8
- data/lib/magiconf/railtie.rb +1 -2
- data/lib/magiconf/version.rb +1 -1
- data/lib/magiconf.rb +36 -10
- data/magiconf.gemspec +1 -1
- metadata +6 -5
data/CHANGELOG.md
ADDED
@@ -16,13 +16,15 @@ Installation
|
|
16
16
|
|
17
17
|
3. Add your configuration variables:
|
18
18
|
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
19
|
+
```yaml
|
20
|
+
# config/application.yml
|
21
|
+
username: 'seth'
|
22
|
+
password: 'aj29slda'
|
23
|
+
development:
|
24
|
+
pusher_url: 'http://github.com/pusher'
|
25
|
+
production:
|
26
|
+
pusher_url: 'http://google.com/pusher'
|
27
|
+
```
|
26
28
|
|
27
29
|
Usage
|
28
30
|
-----
|
@@ -34,7 +36,7 @@ gem 'magiconf'
|
|
34
36
|
gem 'rails'
|
35
37
|
```
|
36
38
|
|
37
|
-
```
|
39
|
+
```yaml
|
38
40
|
# config/application.yml
|
39
41
|
username: 'seth'
|
40
42
|
development:
|
data/lib/magiconf/railtie.rb
CHANGED
@@ -1,8 +1,7 @@
|
|
1
1
|
module Magiconf
|
2
2
|
class Railtie < ::Rails::Railtie
|
3
3
|
initializer 'magiconf.initialize', before: 'load_environment_config' do |app|
|
4
|
-
|
5
|
-
Magiconf.setup! unless namespace.const_defined?('Config')
|
4
|
+
Magiconf.setup! unless Magiconf.setup?
|
6
5
|
end
|
7
6
|
end
|
8
7
|
end
|
data/lib/magiconf/version.rb
CHANGED
data/lib/magiconf.rb
CHANGED
@@ -1,22 +1,48 @@
|
|
1
1
|
module Magiconf
|
2
2
|
extend self
|
3
3
|
|
4
|
+
# For each configuration key, define a method inside the module
|
4
5
|
def setup!
|
5
|
-
|
6
|
-
namespace = Rails.application.class.parent_name.constantize
|
7
|
-
nodule = namespace.const_set('Config', Module.new)
|
6
|
+
configuration = config
|
8
7
|
|
9
|
-
|
10
|
-
config = YAML::load( ERB.new( File.read('config/application.yml') ).result )
|
11
|
-
config.merge!( config.fetch(Rails.env, {}) )
|
12
|
-
config.symbolize_keys!
|
13
|
-
|
14
|
-
config.keys.each do |key|
|
8
|
+
configuration.keys.each do |key|
|
15
9
|
nodule.define_singleton_method key do
|
16
|
-
return
|
10
|
+
return configuration[key]
|
17
11
|
end
|
18
12
|
end
|
19
13
|
end
|
14
|
+
|
15
|
+
# Have we already loaded the magiconf config?
|
16
|
+
# @return [Boolean] true if we have been loaded, false otherwise
|
17
|
+
def setup?
|
18
|
+
namespace.constants.include?('Config') # Note: We cannot use const_defined?('Config')
|
19
|
+
# here because that will recursively search up
|
20
|
+
# Object and find RbConfig
|
21
|
+
end
|
22
|
+
|
23
|
+
private
|
24
|
+
# Get the namespace for the current application
|
25
|
+
# @return [Module] the namespace of the Rails app
|
26
|
+
def namespace
|
27
|
+
@namespace ||= Rails.application.class.parent_name.constantize
|
28
|
+
end
|
29
|
+
|
30
|
+
# Create a new Config module in the current namespace
|
31
|
+
# @return [Module] the created module
|
32
|
+
def nodule
|
33
|
+
@nodule ||= namespace.const_set('Config', Module.new)
|
34
|
+
end
|
35
|
+
|
36
|
+
# The configuration yaml file
|
37
|
+
# @return [Hash] the parsed yaml data
|
38
|
+
def config
|
39
|
+
@config ||= begin
|
40
|
+
config = YAML::load( ERB.new( File.read('config/application.yml') ).result )
|
41
|
+
config.merge!( config.fetch(Rails.env, {}) )
|
42
|
+
config.symbolize_keys!
|
43
|
+
config
|
44
|
+
end
|
45
|
+
end
|
20
46
|
end
|
21
47
|
|
22
48
|
require 'magiconf/railtie' if defined?(Rails)
|
data/magiconf.gemspec
CHANGED
@@ -10,7 +10,7 @@ Gem::Specification.new do |gem|
|
|
10
10
|
gem.email = 'sethvargo@gmail.com'
|
11
11
|
gem.description = %q{Magiconf is a tiny gem for managing a Rails application configuration file}
|
12
12
|
gem.summary = %q{Manage a single Rails application config file with Magiconf}
|
13
|
-
gem.homepage = ''
|
13
|
+
gem.homepage = 'https://github.com/sethvargo/magiconf'
|
14
14
|
|
15
15
|
gem.files = `git ls-files`.split($/)
|
16
16
|
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: magiconf
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -36,15 +36,16 @@ extra_rdoc_files: []
|
|
36
36
|
files:
|
37
37
|
- .gitignore
|
38
38
|
- .rvmrc
|
39
|
+
- CHANGELOG.md
|
39
40
|
- Gemfile
|
40
41
|
- LICENSE.txt
|
41
|
-
- README.
|
42
|
+
- README.md
|
42
43
|
- Rakefile
|
43
44
|
- lib/magiconf.rb
|
44
45
|
- lib/magiconf/railtie.rb
|
45
46
|
- lib/magiconf/version.rb
|
46
47
|
- magiconf.gemspec
|
47
|
-
homepage:
|
48
|
+
homepage: https://github.com/sethvargo/magiconf
|
48
49
|
licenses: []
|
49
50
|
post_install_message:
|
50
51
|
rdoc_options: []
|
@@ -58,7 +59,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
58
59
|
version: '0'
|
59
60
|
segments:
|
60
61
|
- 0
|
61
|
-
hash:
|
62
|
+
hash: 740543136545878292
|
62
63
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
63
64
|
none: false
|
64
65
|
requirements:
|
@@ -67,7 +68,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
67
68
|
version: '0'
|
68
69
|
segments:
|
69
70
|
- 0
|
70
|
-
hash:
|
71
|
+
hash: 740543136545878292
|
71
72
|
requirements: []
|
72
73
|
rubyforge_project:
|
73
74
|
rubygems_version: 1.8.24
|