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:
authorAndreas Brandl <abrandl@gitlab.com>2018-03-16 15:34:08 +0300
committerAndreas Brandl <abrandl@gitlab.com>2018-03-16 15:35:27 +0300
commitfb6d6fce5a4d0fd833dc1cd231dd284a6c89471a (patch)
treecd60653ee507ae673a6da8a12ebd731bf449f525 /app/models
parentbc3fc8ec3eec74876a0e2125248c27cde153e32b (diff)
Address review comments.
Diffstat (limited to 'app/models')
-rw-r--r--app/models/concerns/atomic_internal_id.rb12
-rw-r--r--app/models/internal_id.rb7
2 files changed, 10 insertions, 9 deletions
diff --git a/app/models/concerns/atomic_internal_id.rb b/app/models/concerns/atomic_internal_id.rb
index 343edc237c9..6895c7d7e95 100644
--- a/app/models/concerns/atomic_internal_id.rb
+++ b/app/models/concerns/atomic_internal_id.rb
@@ -1,6 +1,6 @@
# Include atomic internal id generation scheme for a model
#
-# This allows to atomically generate internal ids that are
+# This allows us to atomically generate internal ids that are
# unique within a given scope.
#
# For example, let's generate internal ids for Issue per Project:
@@ -25,18 +25,18 @@ module AtomicInternalId
extend ActiveSupport::Concern
module ClassMethods
- def has_internal_id(on, scope:, usage: nil, init:) # rubocop:disable Naming/PredicateName
+ def has_internal_id(column, scope:, init:) # rubocop:disable Naming/PredicateName
before_validation(on: :create) do
- if self.public_send(on).blank? # rubocop:disable GitlabSecurity/PublicSend
+ if self.public_send(column).blank? # rubocop:disable GitlabSecurity/PublicSend
scope_attrs = { scope => self.public_send(scope) } # rubocop:disable GitlabSecurity/PublicSend
- usage = (usage || self.class.table_name).to_sym
+ usage = self.class.table_name.to_sym
new_iid = InternalId.generate_next(self, scope_attrs, usage, init)
- self.public_send("#{on}=", new_iid) # rubocop:disable GitlabSecurity/PublicSend
+ self.public_send("#{column}=", new_iid) # rubocop:disable GitlabSecurity/PublicSend
end
end
- validates on, presence: true, numericality: true
+ validates column, presence: true, numericality: true
end
end
diff --git a/app/models/internal_id.rb b/app/models/internal_id.rb
index f3630ed1ac5..cbec735c2dd 100644
--- a/app/models/internal_id.rb
+++ b/app/models/internal_id.rb
@@ -66,6 +66,7 @@ class InternalId < ActiveRecord::Base
# scope: Attributes that define the scope for id generation.
# usage: Symbol to define the usage of the internal id, see InternalId.usages
# init: Block that gets called to initialize InternalId record if not present
+ # Make sure to not throw exceptions in the absence of records (if this is expected).
attr_reader :subject, :scope, :init, :scope_attrs, :usage
def initialize(subject, scope, usage, init)
@@ -74,9 +75,9 @@ class InternalId < ActiveRecord::Base
@init = init
@usage = usage
- raise ArgumentError, 'scope is not well-defined, need at least one column for scope (given: 0)' if scope.empty?
+ raise ArgumentError, 'Scope is not well-defined, need at least one column for scope (given: 0)' if scope.empty?
- unless InternalId.usages.keys.include?(usage.to_s)
+ unless InternalId.usages.has_key?(usage.to_s)
raise ArgumentError, "Usage '#{usage}' is unknown. Supported values are #{InternalId.usages.keys} from InternalId.usages"
end
end
@@ -85,7 +86,7 @@ class InternalId < ActiveRecord::Base
def generate
subject.transaction do
# Create a record in internal_ids if one does not yet exist
- # and increment it's last value
+ # and increment its last value
#
# Note this will acquire a ROW SHARE lock on the InternalId record
(lookup || create_record).increment_and_save!