Open6
flipperを使ってfeatureフラグを実装

何ができるか?
フラグがONかOFFかによって、処理を分岐させることができる。
if Flipper.enabled?(:hoge)
'ほげほげ'
else
'ふがふが'
end

フラグの保存場所について
選べる。Railsで使う場合には、ActiveRecord adapterを使って、DBで管理するのが無難そう。
Gemfile
gem 'flipper-active_record'
$ bundle install
$ rails g flipper:active_record # 以下のmigrationファイルが生成される
db/migrate/20240712075358_create_flipper_tables.rb
class CreateFlipperTables < ActiveRecord::Migration[7.1]
def up
create_table :flipper_features do |t|
t.string :key, null: false
t.timestamps null: false
end
add_index :flipper_features, :key, unique: true
create_table :flipper_gates do |t|
t.string :feature_key, null: false
t.string :key, null: false
t.text :value
t.timestamps null: false
end
add_index :flipper_gates, [:feature_key, :key, :value], unique: true, length: { value: 255 }
end
def down
drop_table :flipper_gates
drop_table :flipper_features
end
end
$ rails db:migrate
flipper_features
テーブル、flipper_gates
テーブルが生成される。

Flipper UI
フラグ管理のためのwebページを提供してくれるgemがある。
エンジニアじゃなくてもUI上からフラグ制御できるので便利。
Gemfile
gem 'flipper-ui'
$ bundle install
config/routes.rb
Rails.application.routes.draw do
# ...
mount Flipper::UI.app(Flipper) => '/flipper'
end
フラグが作成され、DBにレコードが作成される。

その他、
- 特定のユーザーのみ許可
- 特定のグループのみ許可
みたいな制御も可能。
この場合、usersテーブルにflipper_idカラムを追加したりとか、設定が必要。