Commit 0fb0f060 authored by Robert Speicher's avatar Robert Speicher

Merge branch 'rubocop/enable-access-modifiers-cops' into 'master'

Rubocop - enable cops access modifiers

This is sync with https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/5014

See merge request !603
parents 56b36c91 60e41187
...@@ -510,6 +510,15 @@ Metrics/PerceivedComplexity: ...@@ -510,6 +510,15 @@ Metrics/PerceivedComplexity:
#################### Lint ################################ #################### Lint ################################
# Checks for useless access modifiers.
Lint/UselessAccessModifier:
Enabled: true
# Checks for attempts to use `private` or `protected` to set the visibility
# of a class method, which does not work.
Lint/IneffectiveAccessModifier:
Enabled: false
# Checks for ambiguous operators in the first argument of a method invocation # Checks for ambiguous operators in the first argument of a method invocation
# without parentheses. # without parentheses.
Lint/AmbiguousOperator: Lint/AmbiguousOperator:
......
...@@ -19,10 +19,6 @@ Lint/AssignmentInCondition: ...@@ -19,10 +19,6 @@ Lint/AssignmentInCondition:
Lint/HandleExceptions: Lint/HandleExceptions:
Enabled: false Enabled: false
# Offense count: 21
Lint/IneffectiveAccessModifier:
Enabled: false
# Offense count: 2 # Offense count: 2
Lint/Loop: Lint/Loop:
Enabled: false Enabled: false
...@@ -48,10 +44,6 @@ Lint/UnusedBlockArgument: ...@@ -48,10 +44,6 @@ Lint/UnusedBlockArgument:
Lint/UnusedMethodArgument: Lint/UnusedMethodArgument:
Enabled: false Enabled: false
# Offense count: 11
Lint/UselessAccessModifier:
Enabled: false
# Offense count: 12 # Offense count: 12
# Cop supports --auto-correct. # Cop supports --auto-correct.
Performance/PushSplat: Performance/PushSplat:
......
...@@ -82,8 +82,6 @@ class Import::BitbucketController < Import::BaseController ...@@ -82,8 +82,6 @@ class Import::BitbucketController < Import::BaseController
go_to_bitbucket_for_permissions go_to_bitbucket_for_permissions
end end
private
def access_params def access_params
{ {
bitbucket_access_token: session[:bitbucket_access_token], bitbucket_access_token: session[:bitbucket_access_token],
......
...@@ -61,8 +61,6 @@ class Import::GitlabController < Import::BaseController ...@@ -61,8 +61,6 @@ class Import::GitlabController < Import::BaseController
go_to_gitlab_for_permissions go_to_gitlab_for_permissions
end end
private
def access_params def access_params
{ gitlab_access_token: session[:gitlab_access_token] } { gitlab_access_token: session[:gitlab_access_token] }
end end
......
...@@ -144,8 +144,6 @@ module DiffHelper ...@@ -144,8 +144,6 @@ module DiffHelper
toggle_whitespace_link(url, options) toggle_whitespace_link(url, options)
end end
private
def hide_whitespace? def hide_whitespace?
params[:w] == '1' params[:w] == '1'
end end
......
module TokenAuthenticatable module TokenAuthenticatable
extend ActiveSupport::Concern extend ActiveSupport::Concern
private
def write_new_token(token_field)
new_token = generate_token(token_field)
write_attribute(token_field, new_token)
end
def generate_token(token_field)
loop do
token = Devise.friendly_token
break token unless self.class.unscoped.find_by(token_field => token)
end
end
class_methods do class_methods do
def authentication_token_fields def authentication_token_fields
@token_fields || [] @token_fields || []
end end
private private # rubocop:disable Lint/UselessAccessModifier
def add_authentication_token_field(token_field) def add_authentication_token_field(token_field)
@token_fields = [] unless @token_fields @token_fields = [] unless @token_fields
...@@ -32,18 +46,4 @@ module TokenAuthenticatable ...@@ -32,18 +46,4 @@ module TokenAuthenticatable
end end
end end
end end
private
def write_new_token(token_field)
new_token = generate_token(token_field)
write_attribute(token_field, new_token)
end
def generate_token(token_field)
loop do
token = Devise.friendly_token
break token unless self.class.unscoped.find_by(token_field => token)
end
end
end end
...@@ -28,6 +28,10 @@ module Auth ...@@ -28,6 +28,10 @@ module Auth
token.encoded token.encoded
end end
def self.token_expire_at
Time.now + current_application_settings.container_registry_token_expire_delay.minutes
end
private private
def authorized_token(*accesses) def authorized_token(*accesses)
...@@ -35,7 +39,7 @@ module Auth ...@@ -35,7 +39,7 @@ module Auth
token.issuer = registry.issuer token.issuer = registry.issuer
token.audience = params[:service] token.audience = params[:service]
token.subject = current_user.try(:username) token.subject = current_user.try(:username)
token.expire_time = ContainerRegistryAuthenticationService.token_expire_at token.expire_time = self.class.token_expire_at
token[:access] = accesses.compact token[:access] = accesses.compact
token token
end end
...@@ -81,9 +85,5 @@ module Auth ...@@ -81,9 +85,5 @@ module Auth
def registry def registry
Gitlab.config.registry Gitlab.config.registry
end end
def self.token_expire_at
Time.now + current_application_settings.container_registry_token_expire_delay.minutes
end
end end
end end
...@@ -2,7 +2,9 @@ ...@@ -2,7 +2,9 @@
# #
# Used for creating system notes (e.g., when a user references a merge request # Used for creating system notes (e.g., when a user references a merge request
# from an issue, an issue's assignee changes, an issue is closed, etc.) # from an issue, an issue's assignee changes, an issue is closed, etc.)
class SystemNoteService module SystemNoteService
extend self
# Called when commits are added to a Merge Request # Called when commits are added to a Merge Request
# #
# noteable - Noteable object # noteable - Noteable object
...@@ -15,7 +17,7 @@ class SystemNoteService ...@@ -15,7 +17,7 @@ class SystemNoteService
# See new_commit_summary and existing_commit_summary. # See new_commit_summary and existing_commit_summary.
# #
# Returns the created Note object # Returns the created Note object
def self.add_commits(noteable, project, author, new_commits, existing_commits = [], oldrev = nil) def add_commits(noteable, project, author, new_commits, existing_commits = [], oldrev = nil)
total_count = new_commits.length + existing_commits.length total_count = new_commits.length + existing_commits.length
commits_text = "#{total_count} commit".pluralize(total_count) commits_text = "#{total_count} commit".pluralize(total_count)
...@@ -40,7 +42,7 @@ class SystemNoteService ...@@ -40,7 +42,7 @@ class SystemNoteService
# "Reassigned to @rspeicher" # "Reassigned to @rspeicher"
# #
# Returns the created Note object # Returns the created Note object
def self.change_assignee(noteable, project, author, assignee) def change_assignee(noteable, project, author, assignee)
body = assignee.nil? ? 'Assignee removed' : "Reassigned to #{assignee.to_reference}" body = assignee.nil? ? 'Assignee removed' : "Reassigned to #{assignee.to_reference}"
create_note(noteable: noteable, project: project, author: author, note: body) create_note(noteable: noteable, project: project, author: author, note: body)
...@@ -63,7 +65,7 @@ class SystemNoteService ...@@ -63,7 +65,7 @@ class SystemNoteService
# "Removed ~5 label" # "Removed ~5 label"
# #
# Returns the created Note object # Returns the created Note object
def self.change_label(noteable, project, author, added_labels, removed_labels) def change_label(noteable, project, author, added_labels, removed_labels)
labels_count = added_labels.count + removed_labels.count labels_count = added_labels.count + removed_labels.count
references = ->(label) { label.to_reference(format: :id) } references = ->(label) { label.to_reference(format: :id) }
...@@ -101,7 +103,7 @@ class SystemNoteService ...@@ -101,7 +103,7 @@ class SystemNoteService
# "Miletone changed to 7.11" # "Miletone changed to 7.11"
# #
# Returns the created Note object # Returns the created Note object
def self.change_milestone(noteable, project, author, milestone) def change_milestone(noteable, project, author, milestone)
body = 'Milestone ' body = 'Milestone '
body += milestone.nil? ? 'removed' : "changed to #{milestone.to_reference(project)}" body += milestone.nil? ? 'removed' : "changed to #{milestone.to_reference(project)}"
...@@ -123,7 +125,7 @@ class SystemNoteService ...@@ -123,7 +125,7 @@ class SystemNoteService
# "Status changed to closed by bc17db76" # "Status changed to closed by bc17db76"
# #
# Returns the created Note object # Returns the created Note object
def self.change_status(noteable, project, author, status, source) def change_status(noteable, project, author, status, source)
body = "Status changed to #{status}" body = "Status changed to #{status}"
body << " by #{source.gfm_reference(project)}" if source body << " by #{source.gfm_reference(project)}" if source
...@@ -131,26 +133,26 @@ class SystemNoteService ...@@ -131,26 +133,26 @@ class SystemNoteService
end end
# Called when 'merge when build succeeds' is executed # Called when 'merge when build succeeds' is executed
def self.merge_when_build_succeeds(noteable, project, author, last_commit) def merge_when_build_succeeds(noteable, project, author, last_commit)
body = "Enabled an automatic merge when the build for #{last_commit.to_reference(project)} succeeds" body = "Enabled an automatic merge when the build for #{last_commit.to_reference(project)} succeeds"
create_note(noteable: noteable, project: project, author: author, note: body) create_note(noteable: noteable, project: project, author: author, note: body)
end end
# Called when 'merge when build succeeds' is canceled # Called when 'merge when build succeeds' is canceled
def self.cancel_merge_when_build_succeeds(noteable, project, author) def cancel_merge_when_build_succeeds(noteable, project, author)
body = 'Canceled the automatic merge' body = 'Canceled the automatic merge'
create_note(noteable: noteable, project: project, author: author, note: body) create_note(noteable: noteable, project: project, author: author, note: body)
end end
def self.remove_merge_request_wip(noteable, project, author) def remove_merge_request_wip(noteable, project, author)
body = 'Unmarked this merge request as a Work In Progress' body = 'Unmarked this merge request as a Work In Progress'
create_note(noteable: noteable, project: project, author: author, note: body) create_note(noteable: noteable, project: project, author: author, note: body)
end end
def self.add_merge_request_wip(noteable, project, author) def add_merge_request_wip(noteable, project, author)
body = 'Marked this merge request as a **Work In Progress**' body = 'Marked this merge request as a **Work In Progress**'
create_note(noteable: noteable, project: project, author: author, note: body) create_note(noteable: noteable, project: project, author: author, note: body)
...@@ -168,7 +170,7 @@ class SystemNoteService ...@@ -168,7 +170,7 @@ class SystemNoteService
# "Title changed from **Old** to **New**" # "Title changed from **Old** to **New**"
# #
# Returns the created Note object # Returns the created Note object
def self.change_title(noteable, project, author, old_title) def change_title(noteable, project, author, old_title)
new_title = noteable.title.dup new_title = noteable.title.dup
old_diffs, new_diffs = Gitlab::Diff::InlineDiff.new(old_title, new_title).inline_diffs old_diffs, new_diffs = Gitlab::Diff::InlineDiff.new(old_title, new_title).inline_diffs
...@@ -191,7 +193,7 @@ class SystemNoteService ...@@ -191,7 +193,7 @@ class SystemNoteService
# "Made the issue confidential" # "Made the issue confidential"
# #
# Returns the created Note object # Returns the created Note object
def self.change_issue_confidentiality(issue, project, author) def change_issue_confidentiality(issue, project, author)
body = issue.confidential ? 'Made the issue confidential' : 'Made the issue visible' body = issue.confidential ? 'Made the issue confidential' : 'Made the issue visible'
create_note(noteable: issue, project: project, author: author, note: body) create_note(noteable: issue, project: project, author: author, note: body)
end end
...@@ -210,7 +212,7 @@ class SystemNoteService ...@@ -210,7 +212,7 @@ class SystemNoteService
# "Target branch changed from `Old` to `New`" # "Target branch changed from `Old` to `New`"
# #
# Returns the created Note object # Returns the created Note object
def self.change_branch(noteable, project, author, branch_type, old_branch, new_branch) def change_branch(noteable, project, author, branch_type, old_branch, new_branch)
body = "#{branch_type} branch changed from `#{old_branch}` to `#{new_branch}`".capitalize body = "#{branch_type} branch changed from `#{old_branch}` to `#{new_branch}`".capitalize
create_note(noteable: noteable, project: project, author: author, note: body) create_note(noteable: noteable, project: project, author: author, note: body)
end end
...@@ -229,7 +231,7 @@ class SystemNoteService ...@@ -229,7 +231,7 @@ class SystemNoteService
# "Restored target branch `feature`" # "Restored target branch `feature`"
# #
# Returns the created Note object # Returns the created Note object
def self.change_branch_presence(noteable, project, author, branch_type, branch, presence) def change_branch_presence(noteable, project, author, branch_type, branch, presence)
verb = verb =
if presence == :add if presence == :add
'restored' 'restored'
...@@ -245,7 +247,7 @@ class SystemNoteService ...@@ -245,7 +247,7 @@ class SystemNoteService
# Example note text: # Example note text:
# #
# "Started branch `201-issue-branch-button`" # "Started branch `201-issue-branch-button`"
def self.new_issue_branch(issue, project, author, branch) def new_issue_branch(issue, project, author, branch)
h = Gitlab::Routing.url_helpers h = Gitlab::Routing.url_helpers
link = h.namespace_project_compare_url(project.namespace, project, from: project.default_branch, to: branch) link = h.namespace_project_compare_url(project.namespace, project, from: project.default_branch, to: branch)
...@@ -270,7 +272,7 @@ class SystemNoteService ...@@ -270,7 +272,7 @@ class SystemNoteService
# See cross_reference_note_content. # See cross_reference_note_content.
# #
# Returns the created Note object # Returns the created Note object
def self.cross_reference(noteable, mentioner, author) def cross_reference(noteable, mentioner, author)
return if cross_reference_disallowed?(noteable, mentioner) return if cross_reference_disallowed?(noteable, mentioner)
gfm_reference = mentioner.gfm_reference(noteable.project) gfm_reference = mentioner.gfm_reference(noteable.project)
...@@ -294,7 +296,7 @@ class SystemNoteService ...@@ -294,7 +296,7 @@ class SystemNoteService
end end
end end
def self.cross_reference?(note_text) def cross_reference?(note_text)
note_text.start_with?(cross_reference_note_prefix) note_text.start_with?(cross_reference_note_prefix)
end end
...@@ -308,7 +310,7 @@ class SystemNoteService ...@@ -308,7 +310,7 @@ class SystemNoteService
# mentioner - Mentionable object # mentioner - Mentionable object
# #
# Returns Boolean # Returns Boolean
def self.cross_reference_disallowed?(noteable, mentioner) def cross_reference_disallowed?(noteable, mentioner)
return true if noteable.is_a?(ExternalIssue) && !noteable.project.jira_tracker_active? return true if noteable.is_a?(ExternalIssue) && !noteable.project.jira_tracker_active?
return false unless mentioner.is_a?(MergeRequest) return false unless mentioner.is_a?(MergeRequest)
return false unless noteable.is_a?(Commit) return false unless noteable.is_a?(Commit)
...@@ -328,7 +330,7 @@ class SystemNoteService ...@@ -328,7 +330,7 @@ class SystemNoteService
# #
# Returns Boolean # Returns Boolean
def self.cross_reference_exists?(noteable, mentioner) def cross_reference_exists?(noteable, mentioner)
# Initial scope should be system notes of this noteable type # Initial scope should be system notes of this noteable type
notes = Note.system.where(noteable_type: noteable.class) notes = Note.system.where(noteable_type: noteable.class)
...@@ -342,6 +344,57 @@ class SystemNoteService ...@@ -342,6 +344,57 @@ class SystemNoteService
notes_for_mentioner(mentioner, noteable, notes).count > 0 notes_for_mentioner(mentioner, noteable, notes).count > 0
end end
# Build an Array of lines detailing each commit added in a merge request
#
# new_commits - Array of new Commit objects
#
# Returns an Array of Strings
def new_commit_summary(new_commits)
new_commits.collect do |commit|
"* #{commit.short_id} - #{escape_html(commit.title)}"
end
end
# Called when the status of a Task has changed
#
# noteable - Noteable object.
# project - Project owning noteable
# author - User performing the change
# new_task - TaskList::Item object.
#
# Example Note text:
#
# "Soandso marked the task Whatever as completed."
#
# Returns the created Note object
def change_task_status(noteable, project, author, new_task)
status_label = new_task.complete? ? Taskable::COMPLETED : Taskable::INCOMPLETE
body = "Marked the task **#{new_task.source}** as #{status_label}"
create_note(noteable: noteable, project: project, author: author, note: body)
end
# Called when noteable has been moved to another project
#
# direction - symbol, :to or :from
# noteable - Noteable object
# noteable_ref - Referenced noteable
# author - User performing the move
#
# Example Note text:
#
# "Moved to some_namespace/project_new#11"
#
# Returns the created Note object
def noteable_moved(noteable, project, noteable_ref, author, direction:)
unless [:to, :from].include?(direction)
raise ArgumentError, "Invalid direction `#{direction}`"
end
cross_reference = noteable_ref.to_reference(project)
body = "Moved #{direction} #{cross_reference}"
create_note(noteable: noteable, project: project, author: author, note: body)
end
# Called when the merge request is approved by user # Called when the merge request is approved by user
# #
# noteable - Noteable object # noteable - Noteable object
...@@ -352,7 +405,7 @@ class SystemNoteService ...@@ -352,7 +405,7 @@ class SystemNoteService
# "Approved this merge request" # "Approved this merge request"
# #
# Returns the created Note object # Returns the created Note object
def self.approve_mr(noteable, user) def approve_mr(noteable, user)
body = "Approved this merge request" body = "Approved this merge request"
create_note(noteable: noteable, project: noteable.project, author: user, note: body) create_note(noteable: noteable, project: noteable.project, author: user, note: body)
...@@ -360,7 +413,7 @@ class SystemNoteService ...@@ -360,7 +413,7 @@ class SystemNoteService
private private
def self.notes_for_mentioner(mentioner, noteable, notes) def notes_for_mentioner(mentioner, noteable, notes)
if mentioner.is_a?(Commit) if mentioner.is_a?(Commit)
notes.where('note LIKE ?', "#{cross_reference_note_prefix}%#{mentioner.to_reference(nil)}") notes.where('note LIKE ?', "#{cross_reference_note_prefix}%#{mentioner.to_reference(nil)}")
else else
...@@ -369,29 +422,18 @@ class SystemNoteService ...@@ -369,29 +422,18 @@ class SystemNoteService
end end
end end
def self.create_note(args = {}) def create_note(args = {})
Note.create(args.merge(system: true)) Note.create(args.merge(system: true))
end end
def self.cross_reference_note_prefix def cross_reference_note_prefix
'mentioned in ' 'mentioned in '
end end
def self.cross_reference_note_content(gfm_reference) def cross_reference_note_content(gfm_reference)
"#{cross_reference_note_prefix}#{gfm_reference}" "#{cross_reference_note_prefix}#{gfm_reference}"
end end
# Build an Array of lines detailing each commit added in a merge request
#
# new_commits - Array of new Commit objects
#
# Returns an Array of Strings
def self.new_commit_summary(new_commits)
new_commits.collect do |commit|
"* #{commit.short_id} - #{escape_html(commit.title)}"
end
end
# Build a single line summarizing existing commits being added in a merge # Build a single line summarizing existing commits being added in a merge
# request # request
# #
...@@ -408,7 +450,7 @@ class SystemNoteService ...@@ -408,7 +450,7 @@ class SystemNoteService
# "* ea0f8418 - 1 commit from branch `feature`" # "* ea0f8418 - 1 commit from branch `feature`"
# #
# Returns a newline-terminated String # Returns a newline-terminated String
def self.existing_commit_summary(noteable, existing_commits, oldrev = nil) def existing_commit_summary(noteable, existing_commits, oldrev = nil)
return '' if existing_commits.empty? return '' if existing_commits.empty?
count = existing_commits.size count = existing_commits.size
...@@ -431,47 +473,7 @@ class SystemNoteService ...@@ -431,47 +473,7 @@ class SystemNoteService
"* #{commit_ids} - #{commits_text} from branch `#{branch}`\n" "* #{commit_ids} - #{commits_text} from branch `#{branch}`\n"
end end
# Called when the status of a Task has changed def escape_html(text)
#
# noteable - Noteable object.
# project - Project owning noteable
# author - User performing the change
# new_task - TaskList::Item object.
#
# Example Note text:
#
# "Soandso marked the task Whatever as completed."
#
# Returns the created Note object
def self.change_task_status(noteable, project, author, new_task)
status_label = new_task.complete? ? Taskable::COMPLETED : Taskable::INCOMPLETE
body = "Marked the task **#{new_task.source}** as #{status_label}"
create_note(noteable: noteable, project: project, author: author, note: body)
end
# Called when noteable has been moved to another project
#
# direction - symbol, :to or :from
# noteable - Noteable object
# noteable_ref - Referenced noteable
# author - User performing the move
#
# Example Note text:
#
# "Moved to some_namespace/project_new#11"
#
# Returns the created Note object
def self.noteable_moved(noteable, project, noteable_ref, author, direction:)
unless [:to, :from].include?(direction)
raise ArgumentError, "Invalid direction `#{direction}`"
end
cross_reference = noteable_ref.to_reference(project)
body = "Moved #{direction} #{cross_reference}"
create_note(noteable: noteable, project: project, author: author, note: body)
end
def self.escape_html(text)
Rack::Utils.escape_html(text) Rack::Utils.escape_html(text)
end end
end end
...@@ -38,6 +38,11 @@ module Banzai ...@@ -38,6 +38,11 @@ module Banzai
end end
end end
# Build a regexp that matches all valid :emoji: names.
def self.emoji_pattern
@emoji_pattern ||= /:(#{Gitlab::Emoji.emojis_names.map { |name| Regexp.escape(name) }.join('|')}):/
end
private private
def emoji_url(name) def emoji_url(name)
...@@ -59,11 +64,6 @@ module Banzai ...@@ -59,11 +64,6 @@ module Banzai
ActionController::Base.helpers.url_to_image(image) ActionController::Base.helpers.url_to_image(image)
end end
# Build a regexp that matches all valid :emoji: names.
def self.emoji_pattern
@emoji_pattern ||= /:(#{Gitlab::Emoji.emojis_names.map { |name| Regexp.escape(name) }.join('|')}):/
end
def emoji_pattern def emoji_pattern
self.class.emoji_pattern self.class.emoji_pattern
end end
......
...@@ -12,7 +12,12 @@ module Banzai ...@@ -12,7 +12,12 @@ module Banzai
html html
end end
private def self.renderer
@renderer ||= begin
renderer = Redcarpet::Render::HTML.new
Redcarpet::Markdown.new(renderer, redcarpet_options)
end
end
def self.redcarpet_options def self.redcarpet_options
# https://github.com/vmg/redcarpet#and-its-like-really-simple-to-use # https://github.com/vmg/redcarpet#and-its-like-really-simple-to-use
...@@ -28,12 +33,7 @@ module Banzai ...@@ -28,12 +33,7 @@ module Banzai
}.freeze }.freeze
end end
def self.renderer private_class_method :redcarpet_options
@renderer ||= begin
renderer = Redcarpet::Render::HTML.new
Redcarpet::Markdown.new(renderer, redcarpet_options)
end
end
end end
end end
end end
module Banzai module Banzai
module Renderer module Renderer
extend self
# Convert a Markdown String into an HTML-safe String of HTML # Convert a Markdown String into an HTML-safe String of HTML
# #
# Note that while the returned HTML will have been sanitized of dangerous # Note that while the returned HTML will have been sanitized of dangerous
...@@ -14,7 +16,7 @@ module Banzai ...@@ -14,7 +16,7 @@ module Banzai
# context - Hash of context options passed to our HTML Pipeline # context - Hash of context options passed to our HTML Pipeline
# #
# Returns an HTML-safe String # Returns an HTML-safe String
def self.render(text, context = {}) def render(text, context = {})
cache_key = context.delete(:cache_key) cache_key = context.delete(:cache_key)
cache_key = full_cache_key(cache_key, context[:pipeline]) cache_key = full_cache_key(cache_key, context[:pipeline])
...@@ -52,7 +54,7 @@ module Banzai ...@@ -52,7 +54,7 @@ module Banzai
# texts_and_contexts # texts_and_contexts
# => [{ text: '### Hello', # => [{ text: '### Hello',
# context: { cache_key: [note, :note] } }] # context: { cache_key: [note, :note] } }]
def self.cache_collection_render(texts_and_contexts) def cache_collection_render(texts_and_contexts)
items_collection = texts_and_contexts.each_with_index do |item, index| items_collection = texts_and_contexts.each_with_index do |item, index|
context = item[:context] context = item[:context]
cache_key = full_cache_multi_key(context.delete(:cache_key), context[:pipeline]) cache_key = full_cache_multi_key(context.delete(:cache_key), context[:pipeline])
...@@ -81,7 +83,7 @@ module Banzai ...@@ -81,7 +83,7 @@ module Banzai
items_collection.map { |item| item[:rendered] } items_collection.map { |item| item[:rendered] }
end end
def self.render_result(text, context = {}) def render_result(text, context = {})
text = Pipeline[:pre_process].to_html(text, context) if text text = Pipeline[:pre_process].to_html(text, context) if text
Pipeline[context[:pipeline]].call(text, context) Pipeline[context[:pipeline]].call(text, context)
...@@ -100,7 +102,7 @@ module Banzai ...@@ -100,7 +102,7 @@ module Banzai
# :user - User object # :user - User object
# #
# Returns an HTML-safe String # Returns an HTML-safe String
def self.post_process(html, context) def post_process(html, context)
context = Pipeline[context[:pipeline]].transform_context(context) context = Pipeline[context[:pipeline]].transform_context(context)
pipeline = Pipeline[:post_process] pipeline = Pipeline[:post_process]
...@@ -113,7 +115,7 @@ module Banzai ...@@ -113,7 +115,7 @@ module Banzai
private private
def self.cacheless_render(text, context = {}) def cacheless_render(text, context = {})
Gitlab::Metrics.measure(:banzai_cacheless_render) do Gitlab::Metrics.measure(:banzai_cacheless_render) do
result = render_result(text, context) result = render_result(text, context)
...@@ -126,7 +128,7 @@ module Banzai ...@@ -126,7 +128,7 @@ module Banzai
end end
end end
def self.full_cache_key(cache_key, pipeline_name) def full_cache_key(cache_key, pipeline_name)
return unless cache_key return unless cache_key
["banzai", *cache_key, pipeline_name || :full] ["banzai", *cache_key, pipeline_name || :full]
end end
...@@ -134,7 +136,7 @@ module Banzai ...@@ -134,7 +136,7 @@ module Banzai
# To map Rails.cache.read_multi results we need to know the Rails.cache.expanded_key. # To map Rails.cache.read_multi results we need to know the Rails.cache.expanded_key.
# Other option will be to generate stringified keys on our side and don't delegate to Rails.cache.expanded_key # Other option will be to generate stringified keys on our side and don't delegate to Rails.cache.expanded_key
# method. # method.
def self.full_cache_multi_key(cache_key, pipeline_name) def full_cache_multi_key(cache_key, pipeline_name)
return unless cache_key return unless cache_key
Rails.cache.send(:expanded_key, full_cache_key(cache_key, pipeline_name)) Rails.cache.send(:expanded_key, full_cache_key(cache_key, pipeline_name))
end end
......
...@@ -36,7 +36,7 @@ module Gitlab ...@@ -36,7 +36,7 @@ module Gitlab
Hash[(@nodes || {}).map { |key, factory| [key, factory.dup] }] Hash[(@nodes || {}).map { |key, factory| [key, factory.dup] }]
end end
private private # rubocop:disable Lint/UselessAccessModifier
def node(symbol, entry_class, metadata) def node(symbol, entry_class, metadata)
factory = Node::Factory.new(entry_class) factory = Node::Factory.new(entry_class)
......
...@@ -55,12 +55,12 @@ module Gitlab ...@@ -55,12 +55,12 @@ module Gitlab
end end
end end
private
def self.connection def self.connection
ActiveRecord::Base.connection ActiveRecord::Base.connection
end end
private_class_method :connection
def self.database_version def self.database_version
row = connection.execute("SELECT VERSION()").first row = connection.execute("SELECT VERSION()").first
...@@ -70,5 +70,7 @@ module Gitlab ...@@ -70,5 +70,7 @@ module Gitlab
row.first row.first
end end
end end
private_class_method :database_version
end end
end end
...@@ -19,24 +19,6 @@ module Gitlab ...@@ -19,24 +19,6 @@ module Gitlab
attr_accessor :old_line, :new_line, :offset attr_accessor :old_line, :new_line, :offset
def self.for_lines(lines)
changed_line_pairs = self.find_changed_line_pairs(lines)
inline_diffs = []
changed_line_pairs.each do |old_index, new_index|
old_line = lines[old_index]
new_line = lines[new_index]
old_diffs, new_diffs = new(old_line, new_line, offset: 1).inline_diffs
inline_diffs[old_index] = old_diffs
inline_diffs[new_index] = new_diffs
end
inline_diffs
end
def initialize(old_line, new_line, offset: 0) def initialize(old_line, new_line, offset: 0)
@old_line = old_line[offset..-1] @old_line = old_line[offset..-1]
@new_line = new_line[offset..-1] @new_line = new_line[offset..-1]
...@@ -63,10 +45,29 @@ module Gitlab ...@@ -63,10 +45,29 @@ module Gitlab
[old_diffs, new_diffs] [old_diffs, new_diffs]
end end
class << self
def for_lines(lines)
changed_line_pairs = find_changed_line_pairs(lines)
inline_diffs = []
changed_line_pairs.each do |old_index, new_index|
old_line = lines[old_index]
new_line = lines[new_index]
old_diffs, new_diffs = new(old_line, new_line, offset: 1).inline_diffs
inline_diffs[old_index] = old_diffs
inline_diffs[new_index] = new_diffs
end
inline_diffs
end
private private
# Finds pairs of old/new line pairs that represent the same line that changed # Finds pairs of old/new line pairs that represent the same line that changed
def self.find_changed_line_pairs(lines) def find_changed_line_pairs(lines)
# Prefixes of all diff lines, indicating their types # Prefixes of all diff lines, indicating their types
# For example: `" - + -+ ---+++ --+ -++"` # For example: `" - + -+ ---+++ --+ -++"`
line_prefixes = lines.each_with_object("") { |line, s| s << line[0] }.gsub(/[^ +-]/, ' ') line_prefixes = lines.each_with_object("") { |line, s| s << line[0] }.gsub(/[^ +-]/, ' ')
...@@ -88,6 +89,9 @@ module Gitlab ...@@ -88,6 +89,9 @@ module Gitlab
changed_line_pairs changed_line_pairs
end end
end
private
def longest_common_prefix(a, b) def longest_common_prefix(a, b)
max_length = [a.length, b.length].max max_length = [a.length, b.length].max
......
...@@ -211,8 +211,6 @@ module Gitlab ...@@ -211,8 +211,6 @@ module Gitlab
project.repository.tag_exists?(tag_name) project.repository.tag_exists?(tag_name)
end end
private
def deploy_key def deploy_key
actor if actor.is_a?(DeployKey) actor if actor.is_a?(DeployKey)
end end
......
...@@ -136,10 +136,10 @@ module Gitlab ...@@ -136,10 +136,10 @@ module Gitlab
end end
end end
private
def self.current_transaction def self.current_transaction
Transaction.current Transaction.current
end end
private_class_method :current_transaction
end end
end end
...@@ -2,6 +2,8 @@ module Gitlab ...@@ -2,6 +2,8 @@ module Gitlab
# Module containing GitLab's application theme definitions and helper methods # Module containing GitLab's application theme definitions and helper methods
# for accessing them. # for accessing them.
module Themes module Themes
extend self
# Theme ID used when no `default_theme` configuration setting is provided. # Theme ID used when no `default_theme` configuration setting is provided.
APPLICATION_DEFAULT = 2 APPLICATION_DEFAULT = 2
...@@ -22,7 +24,7 @@ module Gitlab ...@@ -22,7 +24,7 @@ module Gitlab
# classes that might be applied to the `body` element # classes that might be applied to the `body` element
# #
# Returns a String # Returns a String
def self.body_classes def body_classes
THEMES.collect(&:css_class).uniq.join(' ') THEMES.collect(&:css_class).uniq.join(' ')
end end
...@@ -33,26 +35,26 @@ module Gitlab ...@@ -33,26 +35,26 @@ module Gitlab
# id - Integer ID # id - Integer ID
# #
# Returns a Theme # Returns a Theme
def self.by_id(id) def by_id(id)
THEMES.detect { |t| t.id == id } || default THEMES.detect { |t| t.id == id } || default
end end
# Returns the number of defined Themes # Returns the number of defined Themes
def self.count def count
THEMES.size THEMES.size
end end
# Get the default Theme # Get the default Theme
# #
# Returns a Theme # Returns a Theme
def self.default def default
by_id(default_id) by_id(default_id)
end end
# Iterate through each Theme # Iterate through each Theme
# #
# Yields the Theme object # Yields the Theme object
def self.each(&block) def each(&block)
THEMES.each(&block) THEMES.each(&block)
end end
...@@ -61,7 +63,7 @@ module Gitlab ...@@ -61,7 +63,7 @@ module Gitlab
# user - User record # user - User record
# #
# Returns a Theme # Returns a Theme
def self.for_user(user) def for_user(user)
if user if user
by_id(user.theme_id) by_id(user.theme_id)
else else
...@@ -71,7 +73,7 @@ module Gitlab ...@@ -71,7 +73,7 @@ module Gitlab
private private
def self.default_id def default_id
id = Gitlab.config.gitlab.default_theme.to_i id = Gitlab.config.gitlab.default_theme.to_i
# Prevent an invalid configuration setting from causing an infinite loop # Prevent an invalid configuration setting from causing an infinite loop
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment