demarches-normaliennes/config/initializers/flipper.rb

51 lines
1.3 KiB
Ruby
Raw Normal View History

2019-07-04 12:36:17 +02:00
Flipper.configure do |config|
config.default do
Flipper.new(Flipper::Adapters::ActiveRecord.new)
end
end
Flipper.register('Administrateurs') do |user|
user.administrateur_id.present?
end
Flipper.register('Instructeurs') do |user|
user.instructeur_id.present?
end
# This setup is primarily for first deployment, because consequently
# we can add new features from the Web UI. However when the new DB is created
# this will immediately migrate the default features to be controlled.
def setup_features(features)
features.each do |feature|
2019-09-11 12:21:21 +02:00
if !Flipper.exist?(feature)
# Disable feature by default
Flipper.disable(feature)
2019-07-04 12:36:17 +02:00
end
end
end
# A list of features to be deployed on first push
features = [
2021-03-03 18:20:34 +01:00
:administrateur_routage,
2019-07-04 12:36:17 +02:00
:administrateur_web_hook,
2021-03-03 18:20:34 +01:00
:dossier_pdf_vide,
:expert_not_allowed_to_invite,
:hide_instructeur_email,
2019-07-04 12:36:17 +02:00
:instructeur_bypass_email_login_token,
2021-03-03 18:20:34 +01:00
:make_experts_notifiable,
2021-04-13 18:38:58 +02:00
:procedure_revisions,
2021-04-06 12:37:43 +02:00
:procedure_routage_api
2019-07-04 12:36:17 +02:00
]
2019-09-11 12:21:21 +02:00
def database_exists?
ActiveRecord::Base.connection
true
rescue ActiveRecord::NoDatabaseError, PG::ConnectionBad
2019-09-11 12:21:21 +02:00
false
end
2019-07-04 12:36:17 +02:00
ActiveSupport.on_load(:active_record) do
2019-09-11 12:21:21 +02:00
if database_exists? && ActiveRecord::Base.connection.data_source_exists?('flipper_features')
2019-07-04 12:36:17 +02:00
setup_features(features)
end
end