rails_config 0.0.7 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
data/Rakefile CHANGED
@@ -8,9 +8,10 @@ begin
8
8
  s.email = "railsjedi@gmail.com"
9
9
  s.homepage = "http://github.com/railsjedi/rails_config"
10
10
  s.description = "Provides an easy to use Application Configuration object"
11
- s.authors = ["Jacques Crocker"]
11
+ s.authors = ["Jacques Crocker", "Fred Wu"]
12
12
  s.files = FileList["[A-Z]*", "{bin,generators,lib,spec}/**/*"]
13
13
 
14
+ s.add_dependency 'active_support', ">=3.0.0.rc"
14
15
  s.add_development_dependency 'rspec', ">=2.0.0.beta.19"
15
16
 
16
17
  end
data/TODO CHANGED
@@ -1,10 +1,14 @@
1
- - Add a Rails before_filter that triggers Settings.reload! for each development request
2
- - Allow user to customize the name of the global setting object (Settings)
1
+ - Remove OStruct and use ActiveSupport::OrderedOptions instead (adds dependency to active_support 3.0)
2
+
3
3
  - Add generator `rails_config:install` to create the default setting files
4
4
  - config/settings.yml
5
5
  - config/settings/development.yml
6
6
  - config/settings/test.yml
7
7
  - config/settings/production.yml
8
8
 
9
- - Remove OStruct and create a custom implementation (return proxy obj)
9
+ - Add generator `rails_config:override` that creates an config/rails_config.rb initializer and disables the default initialzer
10
10
 
11
+
12
+ DONE:
13
+ - Add a Rails before_filter that triggers Settings.reload! for each development request
14
+ - Allow user to customize the name of the global setting object (Settings)
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.7
1
+ 0.1.0
@@ -0,0 +1,11 @@
1
+ class RailsConfigGenerator < Rails::Generators::Base
2
+ desc "Generates a custom Rails Config initializer file."
3
+
4
+ def self.source_root
5
+ @_rails_config_source_root ||= File.expand_path("../templates", __FILE__)
6
+ end
7
+
8
+ def copy_initializer
9
+ template "rails_config.rb", "config/initializers/rails_config.rb"
10
+ end
11
+ end
@@ -0,0 +1,3 @@
1
+ RailsConfig.setup do |config|
2
+ config.const_name = "Settings"
3
+ end
data/lib/rails_config.rb CHANGED
@@ -1,3 +1,4 @@
1
+ require 'active_support/core_ext/module/attribute_accessors'
1
2
  require 'pathname'
2
3
  require 'ostruct'
3
4
  require 'yaml'
@@ -6,6 +7,16 @@ require 'erb'
6
7
  require 'rails_config/vendor/deep_merge' unless defined?(DeepMerge)
7
8
 
8
9
  module RailsConfig
10
+ # ensures the setup only gets run once
11
+ @@_ran_once = false
12
+
13
+ mattr_accessor :const_name
14
+ @@const_name = "Settings"
15
+
16
+ def self.setup
17
+ yield self if @@_ran_once == false
18
+ @@_ran_once = true
19
+ end
9
20
 
10
21
  @@load_paths = []
11
22
  def self.load_paths
@@ -2,13 +2,21 @@ if defined?(Rails::Railtie)
2
2
  module RailsConfig
3
3
  class Railtie < Rails::Railtie
4
4
 
5
+ # manually load the custom initializer before everything else
6
+ initializer :load_custom_rails_config, :before => :bootstrap_hook do
7
+ initializer = Rails.root.join("config", "initializers", "rails_config")
8
+ require initializer if File.exist?(initializer)
9
+ end
10
+
5
11
  # Parse the settings before any of the initializers
6
12
  ActiveSupport.on_load :before_initialize, :yield => true do
7
- ::Settings = RailsConfig.load_files(
13
+ settings = RailsConfig.load_files(
8
14
  Rails.root.join("config", "settings.yml").to_s,
9
15
  Rails.root.join("config", "settings", "#{Rails.env}.yml").to_s,
10
16
  Rails.root.join("config", "environments", "#{Rails.env}.yml").to_s
11
17
  )
18
+
19
+ Kernel.const_set(RailsConfig.const_name, settings)
12
20
  end
13
21
 
14
22
  # Rails Dev environment should reload the Settings on every request
@@ -103,5 +103,15 @@ describe RailsConfig do
103
103
  end
104
104
  end
105
105
 
106
+ context "Custom Configuration" do
107
+ it "should have the default settings constant as 'Settings'" do
108
+ RailsConfig.const_name.should == "Settings"
109
+ end
110
+
111
+ it "should be able to assign a different settings constant" do
112
+ RailsConfig.setup{ |config| config.const_name = "Settings2" }
113
+ RailsConfig.const_name.should == "Settings2"
114
+ end
115
+ end
106
116
 
107
117
  end
metadata CHANGED
@@ -1,16 +1,17 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rails_config
3
3
  version: !ruby/object:Gem::Version
4
- hash: 17
4
+ hash: 27
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
+ - 1
8
9
  - 0
9
- - 7
10
- version: 0.0.7
10
+ version: 0.1.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Jacques Crocker
14
+ - Fred Wu
14
15
  autorequire:
15
16
  bindir: bin
16
17
  cert_chain: []
@@ -19,9 +20,26 @@ date: 2010-08-10 00:00:00 -07:00
19
20
  default_executable:
20
21
  dependencies:
21
22
  - !ruby/object:Gem::Dependency
22
- name: rspec
23
+ name: active_support
23
24
  prerelease: false
24
25
  requirement: &id001 !ruby/object:Gem::Requirement
26
+ none: false
27
+ requirements:
28
+ - - ">="
29
+ - !ruby/object:Gem::Version
30
+ hash: 7712042
31
+ segments:
32
+ - 3
33
+ - 0
34
+ - 0
35
+ - rc
36
+ version: 3.0.0.rc
37
+ type: :runtime
38
+ version_requirements: *id001
39
+ - !ruby/object:Gem::Dependency
40
+ name: rspec
41
+ prerelease: false
42
+ requirement: &id002 !ruby/object:Gem::Requirement
25
43
  none: false
26
44
  requirements:
27
45
  - - ">="
@@ -35,7 +53,7 @@ dependencies:
35
53
  - 19
36
54
  version: 2.0.0.beta.19
37
55
  type: :development
38
- version_requirements: *id001
56
+ version_requirements: *id002
39
57
  description: Provides an easy to use Application Configuration object
40
58
  email: railsjedi@gmail.com
41
59
  executables: []
@@ -54,6 +72,8 @@ files:
54
72
  - Rakefile
55
73
  - TODO
56
74
  - VERSION
75
+ - lib/generators/rails_config_generator.rb
76
+ - lib/generators/templates/rails_config.rb
57
77
  - lib/rails_config.rb
58
78
  - lib/rails_config/railtie.rb
59
79
  - lib/rails_config/vendor/deep_merge.rb