summaryrefslogtreecommitdiff
path: root/lib/banzai
diff options
context:
space:
mode:
authorTiago Botelho <tiagonbotelho@hotmail.com>2017-08-23 17:53:29 +0100
committerTiago Botelho <tiagonbotelho@hotmail.com>2017-09-06 15:35:35 +0100
commit6d8e102c740b75ac9e1d168a84f532f6d9ebaa65 (patch)
tree803818e401c0f99a54c41776c5b8dec2c38fd9c0 /lib/banzai
parentdd7434e398d26e5f4c92f73dce4bcf9b7e47e193 (diff)
downloadgitlab-ce-6d8e102c740b75ac9e1d168a84f532f6d9ebaa65.tar.gz
Adds cacheless render to Banzai object render34509-improves-markdown-rendering-performance-for-commits-list
Diffstat (limited to 'lib/banzai')
-rw-r--r--lib/banzai/commit_description_renderer.rb7
-rw-r--r--lib/banzai/commit_renderer.rb11
-rw-r--r--lib/banzai/object_renderer.rb2
-rw-r--r--lib/banzai/renderer.rb4
4 files changed, 16 insertions, 8 deletions
diff --git a/lib/banzai/commit_description_renderer.rb b/lib/banzai/commit_description_renderer.rb
deleted file mode 100644
index 9600ab918a4..00000000000
--- a/lib/banzai/commit_description_renderer.rb
+++ /dev/null
@@ -1,7 +0,0 @@
-module Banzai
- module CommitDescriptionRenderer
- def self.render(commit_descriptions, project, user = nil)
- ObjectRenderer.new(project, user).render(commit_descriptions, :commit_description)
- end
- end
-end
diff --git a/lib/banzai/commit_renderer.rb b/lib/banzai/commit_renderer.rb
new file mode 100644
index 00000000000..f5ff95e3eb3
--- /dev/null
+++ b/lib/banzai/commit_renderer.rb
@@ -0,0 +1,11 @@
+module Banzai
+ module CommitRenderer
+ ATTRIBUTES = [:description, :title].freeze
+
+ def self.render(commits, project, user = nil)
+ obj_renderer = ObjectRenderer.new(project, user)
+
+ ATTRIBUTES.each { |attr| obj_renderer.render(commits, attr) }
+ end
+ end
+end
diff --git a/lib/banzai/object_renderer.rb b/lib/banzai/object_renderer.rb
index 2196a92474c..e40556e869c 100644
--- a/lib/banzai/object_renderer.rb
+++ b/lib/banzai/object_renderer.rb
@@ -38,7 +38,7 @@ module Banzai
objects.each_with_index do |object, index|
redacted_data = redacted[index]
object.__send__("redacted_#{attribute}_html=", redacted_data[:document].to_html.html_safe) # rubocop:disable GitlabSecurity/PublicSend
- object.user_visible_reference_count = redacted_data[:visible_reference_count]
+ object.user_visible_reference_count = redacted_data[:visible_reference_count] if object.respond_to?(:user_visible_reference_count)
end
end
diff --git a/lib/banzai/renderer.rb b/lib/banzai/renderer.rb
index 95d82d17658..ceca9296851 100644
--- a/lib/banzai/renderer.rb
+++ b/lib/banzai/renderer.rb
@@ -36,6 +36,10 @@ module Banzai
# The context to use is managed by the object and cannot be changed.
# Use #render, passing it the field text, if a custom rendering is needed.
def self.render_field(object, field)
+ unless object.respond_to?(:cached_markdown_fields)
+ return cacheless_render_field(object, field)
+ end
+
object.refresh_markdown_cache!(do_update: update_object?(object)) unless object.cached_html_up_to_date?(field)
object.cached_html_for(field)