Class: Gitlab::FeatureCategories
- Inherits:
-
Object
- Object
- Gitlab::FeatureCategories
- Defined in:
- lib/gitlab/feature_categories.rb
Constant Summary collapse
- FEATURE_CATEGORY_DEFAULT =
'unknown'
Instance Attribute Summary collapse
-
#categories ⇒ Object
readonly
Returns the value of attribute categories.
Class Method Summary collapse
Instance Method Summary collapse
-
#from_request(request) ⇒ Object
If valid, returns a feature category from the given request.
- #get!(feature_category) ⇒ Object
-
#initialize(categories) ⇒ FeatureCategories
constructor
A new instance of FeatureCategories.
- #valid?(category) ⇒ Boolean
Constructor Details
#initialize(categories) ⇒ FeatureCategories
Returns a new instance of FeatureCategories.
19 20 21 |
# File 'lib/gitlab/feature_categories.rb', line 19 def initialize(categories) @categories = categories.to_set end |
Instance Attribute Details
#categories ⇒ Object (readonly)
Returns the value of attribute categories.
7 8 9 |
# File 'lib/gitlab/feature_categories.rb', line 7 def categories @categories end |
Class Method Details
.default ⇒ Object
9 10 11 |
# File 'lib/gitlab/feature_categories.rb', line 9 def self.default @default ||= self.load_from_yaml end |
.load_from_yaml ⇒ Object
13 14 15 16 17 |
# File 'lib/gitlab/feature_categories.rb', line 13 def self.load_from_yaml categories = YAML.load_file(Rails.root.join('config', 'feature_categories.yml')) new(categories) end |
Instance Method Details
#from_request(request) ⇒ Object
If valid, returns a feature category from the given request.
24 25 26 27 28 29 30 31 32 |
# File 'lib/gitlab/feature_categories.rb', line 24 def from_request(request) category = request.headers["HTTP_X_GITLAB_FEATURE_CATEGORY"].presence return unless category && valid?(category) return unless ::Gitlab::RequestForgeryProtection.verified?(request.env) category end |
#get!(feature_category) ⇒ Object
34 35 36 37 38 39 40 |
# File 'lib/gitlab/feature_categories.rb', line 34 def get!(feature_category) return feature_category if valid?(feature_category) raise "Unknown feature category: #{feature_category}" if Gitlab.dev_or_test_env? FEATURE_CATEGORY_DEFAULT end |
#valid?(category) ⇒ Boolean
42 43 44 |
# File 'lib/gitlab/feature_categories.rb', line 42 def valid?(category) categories.include?(category.to_s) end |