Module: Shamu::Features::Support

Extended by:
ActiveSupport::Concern
Included in:
Rails::Features
Defined in:
lib/shamu/features/support.rb

Overview

Add feature togggle support to an object.

Dependencies collapse

Instance Method Summary collapse

Instance Attribute Details

#features_serviceFeatures::FeaturesService

Returns the service used to resolve enabled features.

Returns:



17
# File 'lib/shamu/features/support.rb', line 17

attr_dependency :features_service, Features::FeaturesService, lazy: true

Instance Method Details

#feature_enabled?(feature) ⇒ Boolean

Determines if the given feature has been toggled.

Parameters:

  • feature (Symbol)

    name of the feature to check.

Returns:

  • (Boolean)

    true if the feature has been toggled on.



46
47
48
# File 'lib/shamu/features/support.rb', line 46

def feature_enabled?( feature )
  features_service.enabled?( feature )
end

#when_feature(feature, override: nil) { ... } ⇒ Object

Only execute the block if the current Context has the named featue enabled.

Parameters:

  • feature (String)

    name.

  • override (Boolean) (defaults to: nil)

    force the feature to be either on or off.

Yields:

  • Yields if the feature is enabled.

Yield Returns:

  • the result of the block or nil if the feature wasn't enabled.



36
37
38
# File 'lib/shamu/features/support.rb', line 36

def when_feature( feature, override: nil, &block )
  yield if override.nil? ? feature_enabled?( feature ) : override
end