This instance will be upgraded to Heptapod 0.27.1 on 2021-12-08 at 22:00 UTC+1 (a few minutes of down time)

Commit 84b0ab77 authored by Yorick Peterse's avatar Yorick Peterse
Browse files

Added & use Gitlab::Routing for URL helpers

Rails' "url_helpers" method creates an anonymous Module (which a bunch
of methods) on every call. By caching the output of this method in a
dedicated method we can shave off about 10 seconds of loading time for
an issue with around 200 comments.
parent 0684e03f493a
......@@ -89,7 +89,7 @@ def self.upcoming
def to_reference(from_project = nil)
escaped_title = self.title.gsub("]", "\\]")
h = Gitlab::Application.routes.url_helpers
h = Gitlab::Routing.url_helpers
url = h.namespace_project_milestone_url(self.project.namespace, self.project, self)
"[#{escaped_title}](#{url})"
......
......@@ -471,7 +471,7 @@ def to_reference(_from_project = nil)
end
def web_url
Gitlab::Application.routes.url_helpers.namespace_project_url(self.namespace, self)
Gitlab::Routing.url_helpers.namespace_project_url(self.namespace, self)
end
def web_url_without_protocol
......@@ -592,7 +592,7 @@ def avatar_url
if avatar.present?
[gitlab_config.url, avatar.url].join
elsif avatar_in_git
Gitlab::Application.routes.url_helpers.namespace_project_avatar_url(namespace, self)
Gitlab::Routing.url_helpers.namespace_project_avatar_url(namespace, self)
end
end
......
......@@ -20,7 +20,7 @@
#
class GitlabIssueTrackerService < IssueTrackerService
include Gitlab::Application.routes.url_helpers
include Gitlab::Routing.url_helpers
prop_accessor :title, :description, :project_url, :issues_url, :new_issue_url
......
......@@ -21,7 +21,7 @@
class JiraService < IssueTrackerService
include HTTParty
include Gitlab::Application.routes.url_helpers
include Gitlab::Routing.url_helpers
DEFAULT_API_VERSION = 2
......
......@@ -224,7 +224,7 @@ def self.change_branch_presence(noteable, project, author, branch_type, branch,
#
# "Started branch `issue-branch-button-201`"
def self.new_issue_branch(issue, project, author, branch)
h = Gitlab::Application.routes.url_helpers
h = Gitlab::Routing.url_helpers
link = h.namespace_project_compare_url(project.namespace, project, from: project.default_branch, to: branch)
body = "Started branch [`#{branch}`](#{link})"
......
......@@ -8,7 +8,7 @@ class UserBasic < UserSafe
expose :id, :state, :avatar_url
expose :web_url do |user, options|
Gitlab::Application.routes.url_helpers.user_url(user)
Gitlab::Routing.url_helpers.user_url(user)
end
end
......@@ -89,7 +89,7 @@ class Group < Grape::Entity
expose :avatar_url
expose :web_url do |group, options|
Gitlab::Application.routes.url_helpers.group_url(group)
Gitlab::Routing.url_helpers.group_url(group)
end
end
......
......@@ -43,7 +43,7 @@ def find_object(*args)
end
def url_for_object(range, project)
h = Gitlab::Application.routes.url_helpers
h = Gitlab::Routing.url_helpers
h.namespace_project_compare_url(project.namespace, project,
range.to_param.merge(only_path: context[:only_path]))
end
......
......@@ -37,7 +37,7 @@ def find_object(*args)
end
def url_for_object(commit, project)
h = Gitlab::Application.routes.url_helpers
h = Gitlab::Routing.url_helpers
h.namespace_project_commit_url(project.namespace, project, commit,
only_path: context[:only_path])
end
......
......@@ -31,7 +31,7 @@ def references_in(text, pattern = Label.reference_pattern)
end
def url_for_object(label, project)
h = Gitlab::Application.routes.url_helpers
h = Gitlab::Routing.url_helpers
h.namespace_project_issues_url(project.namespace, project, label_name: label.name,
only_path: context[:only_path])
end
......
......@@ -14,7 +14,7 @@ def find_object(project, id)
end
def url_for_object(mr, project)
h = Gitlab::Application.routes.url_helpers
h = Gitlab::Routing.url_helpers
h.namespace_project_merge_request_url(project.namespace, project, mr,
only_path: context[:only_path])
end
......
......@@ -11,7 +11,7 @@ def find_object(project, id)
end
def url_for_object(issue, project)
h = Gitlab::Application.routes.url_helpers
h = Gitlab::Routing.url_helpers
h.namespace_project_milestone_url(project.namespace, project, milestone,
only_path: context[:only_path])
end
......
......@@ -14,7 +14,7 @@ def find_object(project, id)
end
def url_for_object(snippet, project)
h = Gitlab::Application.routes.url_helpers
h = Gitlab::Routing.url_helpers
h.namespace_project_snippet_url(project.namespace, project, snippet,
only_path: context[:only_path])
end
......
......@@ -90,7 +90,7 @@ def user_link_filter(text, link_text: nil)
private
def urls
Gitlab::Application.routes.url_helpers
Gitlab::Routing.url_helpers
end
def link_class
......
......@@ -5,7 +5,7 @@ class RepositoryPush
attr_accessor :recipient
attr_reader :author_id, :ref, :action
include Gitlab::Application.routes.url_helpers
include Gitlab::Routing.url_helpers
delegate :namespace, :name_with_namespace, to: :project, prefix: :project
delegate :name, to: :author, prefix: :author
......
module Gitlab
module Routing
# Returns the URL helpers Module.
#
# This method caches the output as Rails' "url_helpers" method creates an
# anonymous module every time it's called.
#
# Returns a Module.
def self.url_helpers
@url_helpers ||= Gitlab::Application.routes.url_helpers
end
end
end
module Gitlab
class UrlBuilder
include Gitlab::Application.routes.url_helpers
include Gitlab::Routing.url_helpers
include GitlabRoutingHelper
def initialize(type)
......
......@@ -3,7 +3,7 @@
describe ExtractsPath, lib: true do
include ExtractsPath
include RepoHelpers
include Gitlab::Application.routes.url_helpers
include Gitlab::Routing.url_helpers
let(:project) { double('project') }
......
......@@ -236,6 +236,6 @@
end
def urls
Gitlab::Application.routes.url_helpers
Gitlab::Routing.url_helpers
end
end
......@@ -78,6 +78,6 @@ def invalidate_reference(reference)
# Shortcut to Rails' auto-generated routes helpers, to avoid including the
# module
def urls
Gitlab::Application.routes.url_helpers
Gitlab::Routing.url_helpers
end
end
......@@ -106,7 +106,7 @@ def xmilestone
end
def urls
Gitlab::Application.routes.url_helpers
Gitlab::Routing.url_helpers
end
def raw_markdown
......
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