π€ Can I use this feature? Yes, sure!
CanUse is a minimalist feature toggle/flag for crystal, based on yaml file.
- Add the dependency to your
shard.yml
:
dependencies:
can_use:
github: rodrigopinto/can_use
- Run
shards install
-
Require the library on your code base.
require "can_use"
-
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 onconfiguration
. Example:defaults: new_payment_flow: false rating_service: false development: new_payment_flow: true rating_service: false your_environment: new_payment_flow: true
-
Configure the environment and the path to the yaml.
CanUse.configure do |config| config.file = "path/to/features.yaml" config.environment = "your_environment" end
-
Verify if a feature is toggled on/off
if CanUse.feature?("new_payment_flow") # do_something end
-
Install the dependencies.
$ shards install
-
Implement and test your changes.
$ crystal spec
-
Run fomart tool to verify code style.
$ crystal tool format
- Add ability to toggle on/off a feature programatically, ex:
CanUse.enable("feature")
. - Allows ENVIRONMENT variables to set/override a value for a key.
- Fork it (https://github.com/rodrigopinto/can_use/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
This shard was initially inspired by can_do (Ruby).
- Rodrigo Pinto - creator and maintainer