Contours provids objects for building configuration.
Install the gem and add to the application's Gemfile by executing:
$ bundle add contours
If bundler is not being used to manage dependencies, install the gem by executing:
$ gem install contours
Build a configuration object by creating a class that inherits from Contours::BlendedHash
and define the configuration attributes.
Specify a list of keys that should be blended into the configuration object by setting the @blended_keys
variable on the class.
class Configuration < Contours::BlendedHash
@blended_keys = %i[class data]
end
Create a new object using init
config = Configuration.init({class: "test", data: [1, 2, 3]})
The config
object will be able to be merged with other configuration objects.
config.merge(Configuration.init({class: "overwrite", data: [4, 5, 6]}))
config.to_h # => {class: "overwrite", data: [1, 2, 3, 4, 5, 6]}
You can specify a custom way to blend the values for the @blended_keys
class Configuration < Contours::BlendedHash
@blended_keys = %i[class data]
blend(:class, with: StructuredString)
blend :data do |existing, new_value|
existing.sum(new_value.sum)
end
end
config.merge(Configuration.init({class: "overwrite", data: [4, 5, 6]}))
config.to_h # => {class: "test overwrite", data: 21}
After checking out the repo, run bin/setup
to install dependencies. Then, run rake test
to run the tests. You can also run bin/console
for an interactive prompt that will allow you to experiment.
To install this gem onto your local machine, run bundle exec rake install
. To release a new version, update the version number in version.rb
, and then run bundle exec rake release
, which will create a git tag for the version, push git commits and the created tag, and push the .gem
file to rubygems.org.
Bug reports and pull requests are welcome on GitHub at https://github.com/SOFware/contours.