app/controllers/concerns/feature_flags.rb

Summary

Maintainability
A
0 mins
Test Coverage
module FeatureFlags
  extend ActiveSupport::Concern

  class_methods do
    def feature_flag(name, *options)
      before_action(*options) do
        check_feature_flag(name)
      end
    end
  end

  def check_feature_flag(name)
    raise FeatureDisabled, name unless Setting["feature.#{name}"]
  end

  class FeatureDisabled < Exception
    def initialize(name)
      @name = name
    end

    def message
      "Feature disabled: #{@name}"
    end
  end
end