Действия Featury
Для работы с фича-флагами через Featury необходимо создать действия. Каждое действие предполагает реализацию логики над именами полученных фича-флагов и дополнительных опций.
Пример
В качестве примера представим что у нас есть модель ActiveRecord, которая отвечает за все фича-флаги проекта. Называется она FeatureFlag
.
Также представим что для работы с фича-флагами в проекте нужно 4 действия:
enabled?
disabled?
enable
disable
В таком случае действия Featury будут выглядеть так:
ruby
module ApplicationFeature
class Base < Featury::Base
action :enabled? do |features:, **options|
features.all? do |feature|
FeatureFlag
.find_or_create_by!(code: feature, actor: options[:user])
.enabled?
end
end
action :disabled? do |features:, **options|
features.any? do |feature|
!FeatureFlag
.find_or_create_by!(code: feature, actor: options[:user])
.enabled?
end
end
action :enable do |features:, **options|
features.all? do |feature|
FeatureFlag
.find_or_create_by!(code: feature, actor: options[:user])
.update!(enabled: true)
end
end
action :disable do |features:, **options|
features.all? do |feature|
FeatureFlag
.find_or_create_by!(code: feature, actor: options[:user])
.update!(enabled: false)
end
end
end
end