merbjedi / app_config

Easy Merb Application Configuration and Asset Bundling via YAML.

This URL has Read+Write access

app_config / README
100644 102 lines (71 sloc) 2.872 kb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
== Summary
Application level configuration.
 
== Author
Jacques Crocker
Modified from Original Project (AppConfig by Christopher J. Bottaro)
 
=== Compatibility
Rails 2.1/2.2 and Merb 1.0
 
=== Installing on Merb
add this to your config: dependencies.rb and run thor merb:gem:install
 
    dependency "merb_app_config"
 
 
=== Installing on Rails
 
script/plugin install git://github.com/merbjedi/app_config.git
 
 
=== Accessing the AppConfig object
After installing this plugin, the AppConfig object will be global available. Entries are accessed via object member notation:
 AppConfig.my_config_entry
Nested entries are supported:
 AppConfig.my_section.some_entry
 
=== Common config file
Config entries are compiled from
 config/app_config.yml
 config/app_config/settings.yml
 config/app_config/#{environment}.yml
 config/environments/#{environment}.yml
 config/app_config/assets.yml
 config/app_config/stylesheets.yml
 config/app_config/javascripts.yml
  
settings defined in files that are lower in the list override settings higher
 
=== Reloading config files
You can reload the AppConfig from file at any time by running AppConfig.reload!
  
=== Environment specific config files
You can have environment specific config files. Environment specific config entries take precedence over common config entries.
 
Example development environment config file:
 RAILS_ROOT/config/environments/development.yml
 
Example production environment config file:
 RAILS_ROOT/config/environments/production.yml
 
=== Embedded Ruby (ERB)
 Embedded Ruby is allowed in the configuration files. See examples below.
 
=== Accessing Configuration Settings
Consider the two following config files.
 
RAILS_ROOT/config/app_config.yml:
 size: 1
 server: google.com
 
RAILS_ROOT/config/environments/development.yml:
 size: 2
 computed: <%= 1 + 2 + 3 %>
 section:
   size: 3
   servers: [ {name: yahoo.com}, {name: amazon.com} ]
 
Notice that the environment specific config entries overwrite the common entries.
 AppConfig.size -> 2
 AppConfig.server -> google.com
 
Notice the embedded Ruby.
 AppConfig.computed -> 6
 
Notice that object member notation is maintained even in nested entries.
 AppConfig.section.size -> 3
 
Notice array notation and object member notation is maintained.
 AppConfig.section.servers[0].name -> yahoo.com
 AppConfig.section.servers[1].name -> amazon.com
 
 
==== Managing Asset Files with AppConfig
Defining stylesheets: and/or javascripts: keys will allow you to easily manage lists of assets via config
 
javascripts:
  - application.js
  - prototype_scriptaculous:
    - prototype.js
    - scriptaculous/effects.js
  - base:
    - libraries/*.js
  
All * file paths will be expanded out into a full list of files.
 
To add these javascripts to your layout just run
 
<%= javascripts_from_config %>
 
This will group the assets by key in order to use the built in Bundling