lib/tasks/feature_flagger.rake
namespace :feature_flagger do
desc "cleaning up keys from storage that are no longer in the rollout.yml file"
task :cleanup_removed_rollouts => :environment do
keys = FeatureFlagger::Manager.detached_feature_keys
puts "Found keys to remove: #{keys}"
keys.each do |key|
FeatureFlagger::Manager.cleanup_detached key
end
end
desc "Synchronizes resource_keys with feature_keys, recommended to apps that installed feature flagger before v.1.2.0"
task :migrate_to_resource_keys => :environment do
storage = FeatureFlagger.config.storage
storage.synchronize_feature_and_resource
end
desc "Release feature to given identifiers, Usage: `$ bundle exec rake feature_flagger:release\[Account,email_marketing:whitelabel,1,2,3,4\]`"
task :release, [:entity_name, :feature_key] => :environment do |_, args|
entity = args.entity_name.constantize
entity_ids = args.extras
entity.release_id(entity_ids, *args.feature_key.split(':'))
end
desc "Unrelease feature to given identifiers, Usage: `$ bundle exec rake feature_flagger:unrelease\[Account,email_marketing:whitelabel,1,2,3,4\]`"
task :unrelease, [:entity_name, :feature_key] => :environment do |_, args|
entity, entity_ids = args.entity_name.constantize, args.extras
entity.unrelease_id(entity_ids, *args.feature_key.split(':'))
end
desc "Release one feature to all entity ids, Usage: `$ bundle exec rake feature_flagger:release_to_all\[Account,email_marketing:whitelabel\]`"
task :release_to_all, [:entity_name, :feature_key] => :environment do |_, args|
entity = args.entity_name.constantize
entity.release_to_all(*args.feature_key.split(':'))
end
desc "Unrelease one feature to all entity ids, Usage: `$ bundle exec rake feature_flagger:unrelease_to_all\[Account,email_marketing:whitelabel\]`"
task :unrelease_to_all, [:entity_name, :feature_key] => :environment do |_, args|
entity = args.entity_name.constantize
entity.unrelease_to_all(*args.feature_key.split(':'))
end
end