can_use

🤔Can I use this feature? Hmm, let me see.

CanUse is a minimalist feature toggle/flag for crystal, based on yaml file.

GitHub release Build Status

Installation

  1. Add the dependency to your shard.yml:
dependencies:
  can_use:
    github: rodrigopinto/can_use
  1. Run shards install

Usage

  1. Require the library on your code base.
require "can_use"
  1. Create a file with the features toggle definitions. We suggest to name it as featutes.yaml, but it is up to you.

    Note: The defaults block is mandatory, as it will be used as fallback when values are not defined on the environment set on configuration. Example:

defaults:
  new_payment_flow: false
  rating_service: false

development:
  new_payment_flow: true
  rating_service: false

your_environment:
  new_payment_flow: true
  1. Configure the environment and the path to the yaml.
CanUse.configure do |config|
  config.file = "path/to/features.yaml"
  config.environment = "your_environment"
end
  1. Verify if a feature is toggled on/off
if CanUse.feature?("new_payment_flow")
  # do_something
end
  1. Enabling or Disabling a feature is simple as

Enabling

CanUse.feature?("feature_a") # => false

CanUse.enable("feature_a") # => true

CanUse.feature?("feature_a") # => true

Disabling

CanUse.feature?("feature_b") # => true

CanUse.disable("feature_b") # => false

CanUse.feature?("feature_b") # => false

Development

  1. Install the dependencies.
$ shards install
  1. Implement and test your changes.
$ crystal spec
  1. Run fomart tool to verify code style.
$ crystal tool format

TODO

Contributing

  1. Fork it (https://github.com/rodrigopinto/can_use/fork)
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create a new Pull Request

Contributors

Credits

This shard was initially inspired by can_do.