Skip to content

Easiest way to add multi-environment yaml settings to Rails, Sinatra, Padrino and other Ruby projects.

License

Notifications You must be signed in to change notification settings

rubyconfig/config

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

22 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

== 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