[][travis] [travis]: https://travis-ci.org/romikoops/sexy_settings
Application settings are specified in a flexible way.
It is a Ruby-based library used to specify application settings in different ways:
- Using the YAML file (default and custom settings).
- Using the command line.
- Stop supporting Ruby < 2.2.2
- Validate missing defaults for all settings
- Fix issue Exception on empty custom.yml
- Fix issue Raise error instead of nil on missing setting
- Ability to override delimiter on fly for command line settings
- Hidden sensitive data in logging
- Changed default environment variable name with options
Ruby 2.2.2+
gem install sexy_settings
Create 2 configuration files, one for default settings and the other one – for custom settings, e.g.:
config\
default.yml
custom.yml
Insert the following code to the boot executable ruby file:
require 'sexy_settings'
Specify a shortcut method for the Settings object:
def settings
SexySettings::Base.instance
end
There are 3 possible settings values. The priority ranks with respect to the settings location are as follows:
command line < custom < default
Thus, specifying some setting in the command line will override the same setting value specified in the <default config file> or <custom config file>
Example:
default.yml
foo: bar
foo1: default ${foo}
foo2: default value
custom.yml
foo1: custom ${foo}
Set an environment variable:
SEXY_SETTINGS="foo2=10,foo3=:hi,foo4=true"
puts settings.foo # returns 'bar'
puts settings.foo1 # returns 'custom foo'
puts settings.foo2 # returns 10
puts settings.foo3 # returns :hi
puts settings.foo4 # returns true
- Add <default config file> under the version control system.
- Add <custom config file> to ignore the list.
- Use the command line with an Environment Variable for fast specifying setting in your Continuous Integration System.
- Specify custom delimiter with SEXY_SETTINGS_DELIMITER environment variable in case you need unique delimiter for command line mode
- Use the following code to output all settings as a pretty formatted text:
puts settings.as_formatted_text
Note, all sensitive data will be masked.
You have ability to change some default settings:
SexySettings.configure do |config|
config.path_to_default_settings = File.expand_path("config.yaml", File.join(File.dirname(__FILE__), '..', 'config')) # 'default.yml' by default
config.path_to_custom_settings = File.expand_path("overwritten.yaml", File.join(File.dirname(__FILE__), '..', 'config')) # 'custom.yml' by default
config.path_to_project = File.dirname(__FILE__) # '.' by default
config.env_variable_with_options = 'OPTIONS' # 'SEXY_SETTINGS' by default
cmd_line_option_delimiter = '$$$' # ',' by default
end
Please see CONTRIBUTING.md.
SexySettings was originally designed and is now maintained by Roman Parashchenko. You can find list of contributors here open source community.
SexySettngs is Copyright © 2011-2017 Roman Parashchenko. It is free software, and may be redistributed under the terms specified in the LICENSE file.