This gem allows you to quickly convert YML files into a Config
object where the attributes can be accessed using dot, hash symbol or hash string notation.
Installation
Add this line to your application's Gemfile:
gem 'quandl-config'
And then execute:
$ bundle
Or install it yourself as:
$ gem install quandl-config
Usage
- Create a
yml
file with the same file name as your class. For example:
class: A::B::C
file name: config/a/b/c.yml
- Extend the
Quandl::Configurable
class. This adds a configuration class method.
class A::B::C
extend Quandl::Configurable
end
pry
pry> A::B::C.configuration
=> #<Quandl::Config language="spanish", hello="hola">
What if my yml file name doesn't match the class name?
class A::B::Special
extend Quandl::Configurable
def self.file_name
'database_zip_uploader'
end
end
What if I want configuration to be an instance method?
class A::B::C
include Quandl::Configurable
end
What if my project is not a Rails app?
That's ok. Quandl::Config
will find your config file if it's in a config
folder in the root of your app. See also the How do I override default values? for more information.
How do I override default values?
You can override default values by adding a configuration_options
method to your class/instance. The options available to be overwritten are:
-
root_path
- Override this when you want to change the default path to your configuration files root folder. (default: your project path) -
environment
- Override this when you are not using a rails project and don't set the environment viaENV['RAILS_ENV']
class A::B::Special
extend Quandl::Configurable
def self.configuration_options
{
root_path: Pathname.new('~/configs/my_project'),
environment: ENV['MY_PROJECT']
}
end
end
FAQ
My config file won't reload in development mode (Rails)
quandl-config utilizes an internal caching schema to save previously loaded configurations so that they don't load twice. You may need to restart your server in certain cases depending on how quandl-config was used in your project.
Additionally if you have included
via include Quandl::Configurable
you can use the following method to reset the internal config. This however will not work when extending
the module.
Quandl::Config.clear_internal_cache
Contributing
- Fork it ( https://github.com/[my-github-username]/quandl-config/fork )
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create a new Pull Request