Cogwheels
Cogwheels is a lightweight configuration-loading library for Ruby.
Installation
To install, use the standard RubyGems syntax:
$ gem install cogwheelsOr if necessary, you can add it to your Gemfile:
gem 'cogwheels'As Cogwheels is not yet at version 1.0, it is recommended to use version locking:
gem 'cogwheels', '~> 0.2'Usage
Assuming you have already installed the cogwheels gem or added it to your Gemfile, the first step
is to require it:
require 'cogwheels'You can load the configuration file into a Cogwheels::Configuration object using the following:
config = Cogwheels.load('.../file.yml')This config object uses methods similar to those in a Hash object:
config[:key] # Retrieves the value for a key
config.key?(:key) # Checks if a value exists for a key
config[:key] = 'value' # Sets the value for a keyHowever, the basic retrieval method (config[:key]) also takes a default value as an optional parameter:
config[:key, 'default'] # Retrieves the value for a key, specifying a default valueInternal Hashes
Configuration instances use hashes to store data. These hashes can be retrieved as-is (with sub-items inside remaining as Configuration objects) by calling config.internal_hash. However, a more useful hash (with all Configuration sub-items also converted to hashes) can be retrieved by calling config.hash.
Take the following file, for example:
Test: value
Test2:
Test3: yet another valueconfig.internal_hash # => {"Test"=>"value", "Test2"=>Cogwheels::Configuration (mutable: true)=> {"Test3"=>"yet another value"}}
config.hash # => {"Test"=>"value", "Test2"=>{"Test3"=>"yet another value"}}Mutability
By default, Configuration instances are mutable, which means their values can be altered at any time. However, you can lock editing on a configuration tree by passing a second parameter to the load method:
config = Cogwheels.load('.../file.yml', false)Now, whenever an edit is attempted (such as config[:key] = 'value'), an ImmutableConfigurationError will be raised.
Symbols As Keys, or Strings As Keys
If needed, Configuration objects can be forced to convert all of their keys to symbols:
config.symbolize_keysSo if this file is passed in:
Test: valuethe value can be retrieved using:
config[:Test]On the other hand, objects can also be forced to convert all of their keys to strings:
config.stringify_keysWriting Configurations to Files
Configuration instances can also be written to files, by using their write method:
config.write('.../file.yml')Copyright
Copyright (c) 2016 Christopher Lutz. See LICENSE.txt for further details.