README.md in host_config-0.0.1 vs README.md in host_config-0.0.2
- old
+ new
@@ -5,66 +5,78 @@
## Setup/Usage
First add it to your `Gemfile`:
- gem 'host_config'
+``` ruby
+gem 'host_config'
+```
Then make an initializer (or add it to one you already have, like so):
- AppConfig = HostConfig.init!
+``` ruby
+AppConfig = HostConfig.init!
+```
That's really it. This will attempt to load `config/hosts/HOSTNAME.yml`
and assign an OpenStruct to `AppConfig` which you can then use all over
your app. You can also override the hostname:
- override_hostname = Rails.env.production? ? 'aws' :
- Rails.env.staging? ? 'staging' :
- nil
- AppConfig = HostConfig.init! hostname: override_hostname
+``` ruby
+override_hostname = Rails.env.production? ? 'aws' :
+ Rails.env.staging? ? 'staging' :
+ nil
+AppConfig = HostConfig.init! hostname: override_hostname
+```
...or something similar, so that you can share config for production environments.
This is a good alternative to environment variables. You can handle your configuration
just like you already handle `database.yml` (eg, by not committing production config
to the git repo, but adding it to each host out of band).
You can also add more values to it for things that aren't host-specific:
- AppConfig.analytics_id = 'UA-XXXXXXXX-Y'
- AppConfig.sanitize = Sanitize::Config::RELAXED
- AppConfig.sanitize[:attributes]['a'] = %w{ target href name }
- AppConfig.sanitize[:add_attributes] = {
- 'a' => { 'target' => '_blank' }
- }
+``` ruby
+AppConfig.analytics_id = 'UA-XXXXXXXX-Y'
+AppConfig.sanitize = Sanitize::Config::RELAXED
+AppConfig.sanitize[:attributes]['a'] = %w{ target href name }
+AppConfig.sanitize[:add_attributes] = {
+ 'a' => { 'target' => '_blank' }
+}
+```
...can be quite convenient.
## Configuration
Configuration is in YAML files.
- ---
- force_ssl: true
- protocol: https
- application_host: myapp.com
+``` yml
+---
+ force_ssl: true
+ protocol: https
+ application_host: myapp.com
- twitter:
- consumer: ABC
- secret: XYZ
+ twitter:
+ consumer: ABC
+ secret: XYZ
- vegetables:
- - broccoli
- - carrots
- - corn
+ vegetables:
+ - broccoli
+ - carrots
+ - corn
+```
As simple as that. You can also setup common stuff in files prefixed with `_`. Eg,
`_defaults.yml`, and load either before or after the stuff in the primary config:
- ---
- load_before:
- - defaults
- other_stuff: 'here'
+``` yml
+---
+ load_before:
+ - defaults
+ other_stuff: 'here'
+```
This will look for `_defaults.yml` and deep-merge in the rest. You can also use
`load_after`, which will of course override values in the primary config... why would
you ever need this? I don't know :)