= Configuring your daemon
daemon-kit provides a multitude of ways to configure your daemon, this document
will outline the different options available to you.
== Configuration files and #DaemonKit::Config
#DaemonKit::Config gives you easy access to any YAML configuration
files you have in your config directory.
You can access the configuration files like this:
config = DaemonKit::Config.load('sample')
The above snippet relies on the presence of a config/sample.yml file.
#DaemonKit::Config is environment aware, so configuration files are
parsed for a top-level key that is the same as the value of
DAEMON_ENV, and if present is loaded into the object as the
configuration data. If the key is not present, the whole YAML
document is exposed as configuration data.
== Command line arguments
The most flexible way to configure your daemon is through command line
arguments, or switches.
DaemonKit includes a couple of its own arguments that can be used:
-e ENV (or --env ENV) to set the daemon environment
--pid /path/to/pidfile to set the path to a pidfile
-l path (or --log path) to set the path for the log file
-v shows the DaemonKit version
-h shows a useful help message
=== Custom arguments
It is possible for you to specify your own arguments as well, by
updating the config/arguments.rb file. This file is eval'd
inside #DaemonKit::Arguments and gives you access to the following two
variables:
* opts - Instance of OptionParser[http://www.ruby-doc.org/stdlib/libdoc/optparse/rdoc/classes/OptionParser.html]
* @options - A standard Ruby hash that you can populate and access later
Your custom arguments can be accessed like this:
DaemonKit.arguments.options
=== Advanced Configuration
All the writable attributes of the default #DaemonKit::Configuration
instance call also be modified from the command line using the special
--config arguments:
--config force_kill_wait=30
This happens after config/environment.rb is processed, so all
command line arguments will overwrite those values.