rails_config 0.1.0 → 0.1.3
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/Gemfile +1 -0
- data/Gemfile.lock +2 -0
- data/README.md +111 -0
- data/Rakefile +2 -2
- data/TODO +3 -3
- data/VERSION +1 -1
- data/lib/rails_config.rb +11 -46
- data/lib/rails_config/options.rb +61 -0
- data/lib/rails_config/sources/yaml_source.rb +24 -0
- data/spec/rails_config_spec.rb +5 -5
- data/spec/sources/yaml_source_spec.rb +69 -0
- data/spec/spec_helper.rb +1 -0
- metadata +13 -7
- data/README +0 -72
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
GEM
|
2
2
|
remote: http://rubygems.org/
|
3
3
|
specs:
|
4
|
+
activesupport (3.0.0.rc)
|
4
5
|
autotest (4.3.2)
|
5
6
|
columnize (0.3.1)
|
6
7
|
diff-lcs (1.1.2)
|
@@ -24,6 +25,7 @@ PLATFORMS
|
|
24
25
|
ruby
|
25
26
|
|
26
27
|
DEPENDENCIES
|
28
|
+
activesupport (>= 3.0.0.rc)
|
27
29
|
autotest
|
28
30
|
growl-glue
|
29
31
|
rspec (>= 2.0.0.beta.19)
|
data/README.md
ADDED
@@ -0,0 +1,111 @@
|
|
1
|
+
## Summary
|
2
|
+
|
3
|
+
RailsConfig helps you easily manage environment specific Rails settings in an easy and usable manner
|
4
|
+
|
5
|
+
## Features
|
6
|
+
|
7
|
+
* simple YAML config files
|
8
|
+
* config files support ERB
|
9
|
+
* config files support inheritance
|
10
|
+
* access config information via convenient object member notation
|
11
|
+
|
12
|
+
## Compatibility
|
13
|
+
|
14
|
+
* Rails 3.0
|
15
|
+
|
16
|
+
For older versions of Rails and other Ruby apps, use [AppConfig](http://github.com/fredwu/app_config).
|
17
|
+
|
18
|
+
## Installing on Rails 3
|
19
|
+
|
20
|
+
Add this to your `Gemfile`:
|
21
|
+
|
22
|
+
gem "rails_config"
|
23
|
+
|
24
|
+
## Customizing RailsConfig
|
25
|
+
|
26
|
+
You may customize the behavior of RailsConfig by generating an initializer file:
|
27
|
+
|
28
|
+
rails g rails_config
|
29
|
+
|
30
|
+
This will generate `config/initializers/rails_config.rb` with a set of default settings.
|
31
|
+
|
32
|
+
## Accessing the Settings object
|
33
|
+
|
34
|
+
After installing this plugin, the Settings object will be global available. Entries are accessed via object member notation:
|
35
|
+
|
36
|
+
Settings.my_config_entry
|
37
|
+
|
38
|
+
Nested entries are supported:
|
39
|
+
|
40
|
+
Settings.my_section.some_entry
|
41
|
+
|
42
|
+
If you have set a different constant name for the object in the initializer file, use that instead.
|
43
|
+
|
44
|
+
## Common config file
|
45
|
+
|
46
|
+
Config entries are compiled from
|
47
|
+
|
48
|
+
config/settings.yml
|
49
|
+
config/settings/#{environment}.yml
|
50
|
+
config/environments/#{environment}.yml
|
51
|
+
|
52
|
+
settings defined in files that are lower in the list override settings higher
|
53
|
+
|
54
|
+
### Reloading config files
|
55
|
+
|
56
|
+
You can reload the Settings from file at any time by running Settings.reload!
|
57
|
+
|
58
|
+
### Environment specific config files
|
59
|
+
|
60
|
+
You can have environment specific config files. Environment specific config entries take precedence over common config entries.
|
61
|
+
|
62
|
+
Example development environment config file:
|
63
|
+
|
64
|
+
#{Rails.root}/config/environments/development.yml
|
65
|
+
|
66
|
+
Example production environment config file:
|
67
|
+
|
68
|
+
#{Rails.root}/config/environments/production.yml
|
69
|
+
|
70
|
+
## Embedded Ruby (ERB)
|
71
|
+
|
72
|
+
Embedded Ruby is allowed in the configuration files. See examples below.
|
73
|
+
|
74
|
+
## Accessing Configuration Settings
|
75
|
+
|
76
|
+
Consider the two following config files.
|
77
|
+
|
78
|
+
# #{Rails.root}/config/settings.yml:
|
79
|
+
size: 1
|
80
|
+
server: google.com
|
81
|
+
|
82
|
+
# #{Rails.root}/config/environments/development.yml:
|
83
|
+
size: 2
|
84
|
+
computed: <%= 1 + 2 + 3 %>
|
85
|
+
section:
|
86
|
+
size: 3
|
87
|
+
servers: [ {name: yahoo.com}, {name: amazon.com} ]
|
88
|
+
|
89
|
+
Notice that the environment specific config entries overwrite the common entries.
|
90
|
+
|
91
|
+
Settings.size # => 2
|
92
|
+
Settings.server # => google.com
|
93
|
+
|
94
|
+
Notice the embedded Ruby.
|
95
|
+
|
96
|
+
Settings.computed # => 6
|
97
|
+
|
98
|
+
Notice that object member notation is maintained even in nested entries.
|
99
|
+
|
100
|
+
Settings.section.size # => 3
|
101
|
+
|
102
|
+
Notice array notation and object member notation is maintained.
|
103
|
+
|
104
|
+
Settings.section.servers[0].name # => yahoo.com
|
105
|
+
Settings.section.servers[1].name # => amazon.com
|
106
|
+
|
107
|
+
## Authors
|
108
|
+
|
109
|
+
* [Jacques Crocker](http://github.com/railsjedi)
|
110
|
+
* [Fred Wu](http://github.com/fredwu)
|
111
|
+
* Inherited from [AppConfig](http://github.com/cjbottaro/app_config) by [Christopher J. Bottaro](http://github.com/cjbottaro)
|
data/Rakefile
CHANGED
@@ -5,13 +5,13 @@ begin
|
|
5
5
|
Jeweler::Tasks.new do |s|
|
6
6
|
s.name = "rails_config"
|
7
7
|
s.summary = "provides an Settings for rails3 that reads config/settings.yml"
|
8
|
-
s.email = "railsjedi@gmail.com"
|
9
8
|
s.homepage = "http://github.com/railsjedi/rails_config"
|
10
9
|
s.description = "Provides an easy to use Application Configuration object"
|
11
10
|
s.authors = ["Jacques Crocker", "Fred Wu"]
|
11
|
+
s.email = ["railsjedi@gmail.com", "ifredwu@gmail.com"]
|
12
12
|
s.files = FileList["[A-Z]*", "{bin,generators,lib,spec}/**/*"]
|
13
13
|
|
14
|
-
s.add_dependency '
|
14
|
+
s.add_dependency 'activesupport', ">=3.0.0.rc"
|
15
15
|
s.add_development_dependency 'rspec', ">=2.0.0.beta.19"
|
16
16
|
|
17
17
|
end
|
data/TODO
CHANGED
@@ -1,5 +1,3 @@
|
|
1
|
-
- Remove OStruct and use ActiveSupport::OrderedOptions instead (adds dependency to active_support 3.0)
|
2
|
-
|
3
1
|
- Add generator `rails_config:install` to create the default setting files
|
4
2
|
- config/settings.yml
|
5
3
|
- config/settings/development.yml
|
@@ -8,7 +6,9 @@
|
|
8
6
|
|
9
7
|
- Add generator `rails_config:override` that creates an config/rails_config.rb initializer and disables the default initialzer
|
10
8
|
|
11
|
-
|
12
9
|
DONE:
|
13
10
|
- Add a Rails before_filter that triggers Settings.reload! for each development request
|
14
11
|
- Allow user to customize the name of the global setting object (Settings)
|
12
|
+
- Abstract OpenStruct to RailsConfig::Options
|
13
|
+
- Add ability to define multiple sources (Start with YAMLSource)
|
14
|
+
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.3
|
data/lib/rails_config.rb
CHANGED
@@ -1,18 +1,17 @@
|
|
1
1
|
require 'active_support/core_ext/module/attribute_accessors'
|
2
|
-
require '
|
3
|
-
|
4
|
-
require
|
5
|
-
require 'erb'
|
2
|
+
require 'rails_config/options'
|
3
|
+
|
4
|
+
require "rails_config/sources/yaml_source"
|
6
5
|
|
7
6
|
require 'rails_config/vendor/deep_merge' unless defined?(DeepMerge)
|
8
7
|
|
9
8
|
module RailsConfig
|
10
9
|
# ensures the setup only gets run once
|
11
10
|
@@_ran_once = false
|
12
|
-
|
11
|
+
|
13
12
|
mattr_accessor :const_name
|
14
13
|
@@const_name = "Settings"
|
15
|
-
|
14
|
+
|
16
15
|
def self.setup
|
17
16
|
yield self if @@_ran_once == false
|
18
17
|
@@_ran_once = true
|
@@ -23,53 +22,19 @@ module RailsConfig
|
|
23
22
|
@@load_paths
|
24
23
|
end
|
25
24
|
|
26
|
-
# Create a
|
25
|
+
# Create a populated Options instance from a yaml file. If a second yaml file is given, then the sections of that file will overwrite the sections
|
27
26
|
# if the first file if they exist in the first file.
|
28
27
|
def self.load_files(*files)
|
29
|
-
config =
|
30
|
-
|
31
|
-
@@load_paths = [files].flatten.compact.uniq
|
32
|
-
# add singleton method to our Settings that reloads its settings from the load_paths
|
33
|
-
def config.reload!
|
34
|
-
|
35
|
-
conf = {}
|
36
|
-
RailsConfig.load_paths.to_a.each do |path|
|
37
|
-
file_conf = YAML.load(ERB.new(IO.read(path.to_s)).result) if path and File.exists?(path.to_s)
|
38
|
-
next unless file_conf
|
28
|
+
config = Options.new
|
39
29
|
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
conf = file_conf
|
44
|
-
end
|
45
|
-
end
|
46
|
-
|
47
|
-
# load all the new values into the openstruct
|
48
|
-
marshal_load(RailsConfig.convert(conf).marshal_dump)
|
49
|
-
|
50
|
-
return self
|
30
|
+
# add yaml sources
|
31
|
+
[files].flatten.compact.uniq.each do |file|
|
32
|
+
config.add_source!(Sources::YAMLSource.new(file))
|
51
33
|
end
|
52
|
-
|
53
|
-
config.reload!
|
34
|
+
config.load!
|
54
35
|
return config
|
55
36
|
end
|
56
37
|
|
57
|
-
# Recursively converts Hashes to OpenStructs (including Hashes inside Arrays)
|
58
|
-
def self.convert(h) #:nodoc:
|
59
|
-
s = OpenStruct.new
|
60
|
-
h.each do |k, v|
|
61
|
-
s.new_ostruct_member(k)
|
62
|
-
if v.is_a?(Hash)
|
63
|
-
s.send( (k+'=').to_sym, convert(v))
|
64
|
-
elsif v.is_a?(Array)
|
65
|
-
converted_array = v.collect { |e| e.instance_of?(Hash) ? convert(e) : e }
|
66
|
-
s.send("#{k}=".to_sym, converted_array)
|
67
|
-
else
|
68
|
-
s.send("#{k}=".to_sym, v)
|
69
|
-
end
|
70
|
-
end
|
71
|
-
s
|
72
|
-
end
|
73
38
|
end
|
74
39
|
|
75
40
|
# add railtie
|
@@ -0,0 +1,61 @@
|
|
1
|
+
require 'ostruct'
|
2
|
+
module RailsConfig
|
3
|
+
class Options < OpenStruct
|
4
|
+
|
5
|
+
def empty?
|
6
|
+
marshal_dump.empty?
|
7
|
+
end
|
8
|
+
|
9
|
+
def add_source!(source)
|
10
|
+
@config_sources ||= []
|
11
|
+
@config_sources << source
|
12
|
+
end
|
13
|
+
|
14
|
+
def load!
|
15
|
+
reload!
|
16
|
+
end
|
17
|
+
|
18
|
+
# look through all our sources and rebuild the configuration
|
19
|
+
def reload!
|
20
|
+
conf = {}
|
21
|
+
@config_sources.each do |source|
|
22
|
+
source_conf = source.load
|
23
|
+
|
24
|
+
if conf.empty?
|
25
|
+
conf = source_conf
|
26
|
+
else
|
27
|
+
DeepMerge.deep_merge!(source_conf, conf, :preserve_unmergeables => false)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
# swap out the contents of the OStruct with a hash (need to recursively convert)
|
32
|
+
marshal_load(__convert(conf).marshal_dump)
|
33
|
+
|
34
|
+
return self
|
35
|
+
end
|
36
|
+
|
37
|
+
alias :load! :reload!
|
38
|
+
|
39
|
+
protected
|
40
|
+
|
41
|
+
# Recursively converts Hashes to Options (including Hashes inside Arrays)
|
42
|
+
def __convert(h) #:nodoc:
|
43
|
+
s = self.class.new
|
44
|
+
unless h.is_a?(Hash)
|
45
|
+
require 'ruby-debug';debugger
|
46
|
+
end
|
47
|
+
h.each do |k, v|
|
48
|
+
s.new_ostruct_member(k)
|
49
|
+
if v.is_a?(Hash)
|
50
|
+
s.send( (k+'=').to_sym, __convert(v))
|
51
|
+
elsif v.is_a?(Array)
|
52
|
+
converted_array = v.collect { |e| e.instance_of?(Hash) ? __convert(e) : e }
|
53
|
+
s.send("#{k}=".to_sym, converted_array)
|
54
|
+
else
|
55
|
+
s.send("#{k}=".to_sym, v)
|
56
|
+
end
|
57
|
+
end
|
58
|
+
s
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
require 'yaml'
|
2
|
+
require 'erb'
|
3
|
+
|
4
|
+
module RailsConfig
|
5
|
+
module Sources
|
6
|
+
class YAMLSource
|
7
|
+
|
8
|
+
attr_accessor :path
|
9
|
+
|
10
|
+
def initialize(path)
|
11
|
+
@path = path
|
12
|
+
end
|
13
|
+
|
14
|
+
# returns a config hash from the YML file
|
15
|
+
def load
|
16
|
+
if @path and File.exists?(@path.to_s)
|
17
|
+
result = YAML.load(ERB.new(IO.read(@path.to_s)).result)
|
18
|
+
end
|
19
|
+
result || {}
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
data/spec/rails_config_spec.rb
CHANGED
@@ -17,24 +17,24 @@ describe RailsConfig do
|
|
17
17
|
|
18
18
|
it "should load empty config for a missing file path" do
|
19
19
|
config = RailsConfig.load_files(setting_path("some_file_that_doesnt_exist.yml"))
|
20
|
-
config.should
|
20
|
+
config.should be_empty
|
21
21
|
end
|
22
22
|
|
23
23
|
it "should load an empty config for multiple missing file paths" do
|
24
24
|
files = [setting_path("doesnt_exist1.yml"), setting_path("doesnt_exist2.yml")]
|
25
25
|
config = RailsConfig.load_files(files)
|
26
|
-
config.should
|
26
|
+
config.should be_empty
|
27
27
|
end
|
28
28
|
|
29
29
|
it "should load empty config for an empty setting file" do
|
30
30
|
config = RailsConfig.load_files(setting_path("empty1.yml"))
|
31
|
-
config.should
|
31
|
+
config.should be_empty
|
32
32
|
end
|
33
33
|
|
34
34
|
it "should load an empty config for multiple missing file paths" do
|
35
35
|
files = [setting_path("empty1.yml"), setting_path("empty2.yml")]
|
36
36
|
config = RailsConfig.load_files(files)
|
37
|
-
config.should
|
37
|
+
config.should be_empty
|
38
38
|
end
|
39
39
|
|
40
40
|
it "should allow overrides" do
|
@@ -107,7 +107,7 @@ describe RailsConfig do
|
|
107
107
|
it "should have the default settings constant as 'Settings'" do
|
108
108
|
RailsConfig.const_name.should == "Settings"
|
109
109
|
end
|
110
|
-
|
110
|
+
|
111
111
|
it "should be able to assign a different settings constant" do
|
112
112
|
RailsConfig.setup{ |config| config.const_name = "Settings2" }
|
113
113
|
RailsConfig.const_name.should == "Settings2"
|
@@ -0,0 +1,69 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
module RailsConfig::Sources
|
4
|
+
describe YAMLSource do
|
5
|
+
|
6
|
+
it "should take a path as initializer" do
|
7
|
+
source = YAMLSource.new "somepath"
|
8
|
+
source.path.should == "somepath"
|
9
|
+
end
|
10
|
+
|
11
|
+
context "basic yml file" do
|
12
|
+
let(:source) do
|
13
|
+
YAMLSource.new setting_path("development.yml")
|
14
|
+
end
|
15
|
+
|
16
|
+
it "should properly read the settings" do
|
17
|
+
results = source.load
|
18
|
+
results["size"].should == 2
|
19
|
+
end
|
20
|
+
|
21
|
+
it "should properly read nested settings" do
|
22
|
+
results = source.load
|
23
|
+
results["section"]["size"].should == 3
|
24
|
+
results["section"]["servers"].should be_an(Array)
|
25
|
+
results["section"]["servers"].size.should == 2
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
context "yml file with erb tags" do
|
30
|
+
let(:source) do
|
31
|
+
YAMLSource.new setting_path("with_erb.yml")
|
32
|
+
end
|
33
|
+
|
34
|
+
it "should properly evaluate the erb" do
|
35
|
+
results = source.load
|
36
|
+
results["computed"].should == 6
|
37
|
+
end
|
38
|
+
|
39
|
+
it "should properly evaluate the nested erb settings" do
|
40
|
+
results = source.load
|
41
|
+
results["section"]["computed1"].should == 1
|
42
|
+
results["section"]["computed2"].should == 2
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
context "missing yml file" do
|
47
|
+
let(:source) do
|
48
|
+
YAMLSource.new "somewhere_that_doesnt_exist.yml"
|
49
|
+
end
|
50
|
+
|
51
|
+
it "should return an empty hash" do
|
52
|
+
results = source.load
|
53
|
+
results.should == {}
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
context "blank yml file" do
|
58
|
+
let(:source) do
|
59
|
+
YAMLSource.new setting_path("empty1.yml")
|
60
|
+
end
|
61
|
+
|
62
|
+
it "should return an empty hash" do
|
63
|
+
results = source.load
|
64
|
+
results.should == {}
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
end
|
69
|
+
end
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rails_config
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 29
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 1
|
9
|
-
-
|
10
|
-
version: 0.1.
|
9
|
+
- 3
|
10
|
+
version: 0.1.3
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Jacques Crocker
|
@@ -20,7 +20,7 @@ date: 2010-08-10 00:00:00 -07:00
|
|
20
20
|
default_executable:
|
21
21
|
dependencies:
|
22
22
|
- !ruby/object:Gem::Dependency
|
23
|
-
name:
|
23
|
+
name: activesupport
|
24
24
|
prerelease: false
|
25
25
|
requirement: &id001 !ruby/object:Gem::Requirement
|
26
26
|
none: false
|
@@ -55,27 +55,31 @@ dependencies:
|
|
55
55
|
type: :development
|
56
56
|
version_requirements: *id002
|
57
57
|
description: Provides an easy to use Application Configuration object
|
58
|
-
email:
|
58
|
+
email:
|
59
|
+
- railsjedi@gmail.com
|
60
|
+
- ifredwu@gmail.com
|
59
61
|
executables: []
|
60
62
|
|
61
63
|
extensions: []
|
62
64
|
|
63
65
|
extra_rdoc_files:
|
64
66
|
- LICENSE
|
65
|
-
- README
|
67
|
+
- README.md
|
66
68
|
- TODO
|
67
69
|
files:
|
68
70
|
- Gemfile
|
69
71
|
- Gemfile.lock
|
70
72
|
- LICENSE
|
71
|
-
- README
|
73
|
+
- README.md
|
72
74
|
- Rakefile
|
73
75
|
- TODO
|
74
76
|
- VERSION
|
75
77
|
- lib/generators/rails_config_generator.rb
|
76
78
|
- lib/generators/templates/rails_config.rb
|
77
79
|
- lib/rails_config.rb
|
80
|
+
- lib/rails_config/options.rb
|
78
81
|
- lib/rails_config/railtie.rb
|
82
|
+
- lib/rails_config/sources/yaml_source.rb
|
79
83
|
- lib/rails_config/vendor/deep_merge.rb
|
80
84
|
- spec/fixtures/bool_override/config1.yml
|
81
85
|
- spec/fixtures/bool_override/config2.yml
|
@@ -90,6 +94,7 @@ files:
|
|
90
94
|
- spec/fixtures/settings2.yml
|
91
95
|
- spec/fixtures/with_erb.yml
|
92
96
|
- spec/rails_config_spec.rb
|
97
|
+
- spec/sources/yaml_source_spec.rb
|
93
98
|
- spec/spec_helper.rb
|
94
99
|
has_rdoc: true
|
95
100
|
homepage: http://github.com/railsjedi/rails_config
|
@@ -127,4 +132,5 @@ specification_version: 3
|
|
127
132
|
summary: provides an Settings for rails3 that reads config/settings.yml
|
128
133
|
test_files:
|
129
134
|
- spec/rails_config_spec.rb
|
135
|
+
- spec/sources/yaml_source_spec.rb
|
130
136
|
- spec/spec_helper.rb
|
data/README
DELETED
@@ -1,72 +0,0 @@
|
|
1
|
-
== Summary
|
2
|
-
RailsConfig helps you easily manage environment specific Rails settings in an easy and usable manner
|
3
|
-
|
4
|
-
== Author
|
5
|
-
Jacques Crocker
|
6
|
-
Modified from Original Project (AppConfig by Christopher J. Bottaro)
|
7
|
-
|
8
|
-
=== Compatibility
|
9
|
-
Rails 3.0
|
10
|
-
|
11
|
-
=== Installing on Rails 3
|
12
|
-
|
13
|
-
add this to your Gemfile
|
14
|
-
|
15
|
-
gem "rails_config"
|
16
|
-
|
17
|
-
=== Accessing the Settings object
|
18
|
-
After installing this plugin, the Settings object will be global available. Entries are accessed via object member notation:
|
19
|
-
Settings.my_config_entry
|
20
|
-
Nested entries are supported:
|
21
|
-
Settings.my_section.some_entry
|
22
|
-
|
23
|
-
=== Common config file
|
24
|
-
Config entries are compiled from
|
25
|
-
config/settings.yml
|
26
|
-
config/settings/#{environment}.yml
|
27
|
-
config/environments/#{environment}.yml
|
28
|
-
|
29
|
-
settings defined in files that are lower in the list override settings higher
|
30
|
-
|
31
|
-
=== Reloading config files
|
32
|
-
You can reload the Settings from file at any time by running Settings.reload!
|
33
|
-
|
34
|
-
=== Environment specific config files
|
35
|
-
You can have environment specific config files. Environment specific config entries take precedence over common config entries.
|
36
|
-
|
37
|
-
Example development environment config file:
|
38
|
-
#{Rails.root}/config/environments/development.yml
|
39
|
-
|
40
|
-
Example production environment config file:
|
41
|
-
#{Rails.root}/config/environments/production.yml
|
42
|
-
|
43
|
-
=== Embedded Ruby (ERB)
|
44
|
-
Embedded Ruby is allowed in the configuration files. See examples below.
|
45
|
-
|
46
|
-
=== Accessing Configuration Settings
|
47
|
-
Consider the two following config files.
|
48
|
-
|
49
|
-
#{Rails.root}/config/settings.yml:
|
50
|
-
size: 1
|
51
|
-
server: google.com
|
52
|
-
|
53
|
-
#{Rails.root}/config/environments/development.yml:
|
54
|
-
size: 2
|
55
|
-
computed: <%= 1 + 2 + 3 %>
|
56
|
-
section:
|
57
|
-
size: 3
|
58
|
-
servers: [ {name: yahoo.com}, {name: amazon.com} ]
|
59
|
-
|
60
|
-
Notice that the environment specific config entries overwrite the common entries.
|
61
|
-
Settings.size -> 2
|
62
|
-
Settings.server -> google.com
|
63
|
-
|
64
|
-
Notice the embedded Ruby.
|
65
|
-
Settings.computed -> 6
|
66
|
-
|
67
|
-
Notice that object member notation is maintained even in nested entries.
|
68
|
-
Settings.section.size -> 3
|
69
|
-
|
70
|
-
Notice array notation and object member notation is maintained.
|
71
|
-
Settings.section.servers[0].name -> yahoo.com
|
72
|
-
Settings.section.servers[1].name -> amazon.com
|