Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2020-09-19 04:45:44 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2020-09-19 04:45:44 +0300
commit85dc423f7090da0a52c73eb66faf22ddb20efff9 (patch)
tree9160f299afd8c80c038f08e1545be119f5e3f1e1 /doc/development/creating_enums.md
parent15c2c8c66dbe422588e5411eee7e68f1fa440bb8 (diff)
Add latest changes from gitlab-org/gitlab@13-4-stable-ee
Diffstat (limited to 'doc/development/creating_enums.md')
-rw-r--r--doc/development/creating_enums.md34
1 files changed, 20 insertions, 14 deletions
diff --git a/doc/development/creating_enums.md b/doc/development/creating_enums.md
index 3833f771bb5..af9bf919b2b 100644
--- a/doc/development/creating_enums.md
+++ b/doc/development/creating_enums.md
@@ -33,28 +33,32 @@ tempted to organize the `enum` as the following:
```ruby
# Define `failure_reason` enum in `Pipeline` model:
class Pipeline < ApplicationRecord
- enum failure_reason: ::PipelineEnums.failure_reasons
+ enum failure_reason: Enums::Pipeline.failure_reasons
end
```
```ruby
# Define key/value pairs that used in FOSS and EE:
-module PipelineEnums
- def self.failure_reasons
- { unknown_failure: 0, config_error: 1 }
+module Enums
+ module Pipeline
+ def self.failure_reasons
+ { unknown_failure: 0, config_error: 1 }
+ end
end
end
-PipelineEnums.prepend_if_ee('EE::PipelineEnums')
+Enums::Pipeline.prepend_if_ee('EE::Enums::Pipeline')
```
```ruby
# Define key/value pairs that used in EE only:
module EE
- module PipelineEnums
- override :failure_reasons
- def failure_reasons
- super.merge(activity_limit_exceeded: 2)
+ module Enums
+ module Pipeline
+ override :failure_reasons
+ def failure_reasons
+ super.merge(activity_limit_exceeded: 2)
+ end
end
end
end
@@ -63,7 +67,7 @@ end
This works as-is, however, it has a couple of downside that:
- Someone could define a key/value pair in EE that is **conflicted** with a value defined in FOSS.
- e.g. Define `activity_limit_exceeded: 1` in `EE::PipelineEnums`.
+ e.g. Define `activity_limit_exceeded: 1` in `EE::Enums::Pipeline`.
- When it happens, the feature works totally different.
e.g. We cannot figure out `failure_reason` is either `config_error` or `activity_limit_exceeded`.
- When it happens, we have to ship a database migration to fix the data integrity,
@@ -74,10 +78,12 @@ For example, this example sets `1000` as the offset:
```ruby
module EE
- module PipelineEnums
- override :failure_reasons
- def failure_reasons
- super.merge(activity_limit_exceeded: 1_000, size_limit_exceeded: 1_001)
+ module Enums
+ module Pipeline
+ override :failure_reasons
+ def failure_reasons
+ super.merge(activity_limit_exceeded: 1_000, size_limit_exceeded: 1_001)
+ end
end
end
end