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 ADDED
@@ -0,0 +1,10 @@
1
+ CHANGELOG
2
+ =========
3
+
4
+ v0.1.0
5
+ ------
6
+ - Initial Release
7
+
8
+ v0.1.1
9
+ ------
10
+ - Autoload during the initialization process
@@ -16,13 +16,15 @@ Installation
16
16
 
17
17
  3. Add your configuration variables:
18
18
 
19
- # config/application.yml
20
- username: 'seth'
21
- password: 'aj29slda'
22
- development:
23
- pusher_url: 'http://github.com/pusher'
24
- production:
25
- pusher_url: 'http://google.com/pusher'
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
- ```text
39
+ ```yaml
38
40
  # config/application.yml
39
41
  username: 'seth'
40
42
  development:
@@ -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
- namespace = app.class.parent_name.constantize
5
- Magiconf.setup! unless namespace.const_defined?('Config')
4
+ Magiconf.setup! unless Magiconf.setup?
6
5
  end
7
6
  end
8
7
  end
@@ -1,3 +1,3 @@
1
1
  module Magiconf
2
- VERSION = '0.1.0'
2
+ VERSION = '0.1.1'
3
3
  end
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
- # Get the namespace and create the module
6
- namespace = Rails.application.class.parent_name.constantize
7
- nodule = namespace.const_set('Config', Module.new)
6
+ configuration = config
8
7
 
9
- # Open up the config file
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 config[key]
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.0
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.markdown
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: -605009535946545267
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: -605009535946545267
71
+ hash: 740543136545878292
71
72
  requirements: []
72
73
  rubyforge_project:
73
74
  rubygems_version: 1.8.24