Sha256: 9850d5b573de7e348aea14cb69c42ab583eb5f8278f21fc43ce98c0a7e5deaa4

Contents?: true

Size: 989 Bytes

Versions: 19

Compression:

Stored size: 989 Bytes

Contents

module Controller
  # Adds an api to toggle features at controller level.
  # 
  # Assume you have ransack enabled globally (Itsf::Backend.features?(:ransach) == true),
  # but you can't use ransack in a specific controller, than you overwrite disabled_features
  # in the controller and make it return an array with :ransack inside of it:
  # 
  # def disabled_features
  #   [:ransack]
  # end
  # 
  # Then you can ask features?(:ransack) in the view and it will return false,
  # although ransack is enabled globally.
  # 
  module FeatureFlagsConcern
    extend ActiveSupport::Concern

    included do
      helper_method :features?
    end

    private

    # Ask featuers?(:foo) in the controller or your views to find out, if a
    # feature is enabled in this controller.
    def features?(what)
      Itsf::Backend.features?(what) && !disabled_features.include?(what)
    end

    # overwrite this method, to disable features.
    def disabled_features
      []
    end
  end
end

Version data entries

19 entries across 19 versions & 1 rubygems

Version Path
itsf_backend-5.0.0.pre app/controllers/concerns/controller/feature_flags_concern.rb
itsf_backend-4.2.3 app/controllers/concerns/controller/feature_flags_concern.rb
itsf_backend-4.2.2 app/controllers/concerns/controller/feature_flags_concern.rb
itsf_backend-4.2.1 app/controllers/concerns/controller/feature_flags_concern.rb
itsf_backend-4.2.0 app/controllers/concerns/controller/feature_flags_concern.rb
itsf_backend-4.0.1 app/controllers/concerns/controller/feature_flags_concern.rb
itsf_backend-4.0.0 app/controllers/concerns/controller/feature_flags_concern.rb
itsf_backend-3.1.1 app/controllers/concerns/controller/feature_flags_concern.rb
itsf_backend-3.1.0 app/controllers/concerns/controller/feature_flags_concern.rb
itsf_backend-3.0.7 app/controllers/concerns/controller/feature_flags_concern.rb
itsf_backend-3.0.6 app/controllers/concerns/controller/feature_flags_concern.rb
itsf_backend-3.0.5 app/controllers/concerns/controller/feature_flags_concern.rb
itsf_backend-3.0.4 app/controllers/concerns/controller/feature_flags_concern.rb
itsf_backend-3.0.3 app/controllers/concerns/controller/feature_flags_concern.rb
itsf_backend-3.0.2 app/controllers/concerns/controller/feature_flags_concern.rb
itsf_backend-3.0.1 app/controllers/concerns/controller/feature_flags_concern.rb
itsf_backend-3.0.0 app/controllers/concerns/controller/feature_flags_concern.rb
itsf_backend-2.2.1 app/controllers/concerns/controller/feature_flags_concern.rb
itsf_backend-2.2.0 app/controllers/concerns/controller/feature_flags_concern.rb