module DynamicRendering::ActsAsDynamicallyRenderable
Constants
- DESKTOP_VIEWPORT
- MOBILE_USER_AGENT
- MOBILE_VIEWPORT
- USE_DYNAMIC_RENDERING_FOR_USER_AGENTS
Public Instance Methods
enable_dynamic_rendering(arguments = {})
click to toggle source
# File lib/dynamic_rendering/acts_as_dynamically_renderable.rb, line 36 def enable_dynamic_rendering(arguments = {}) append_after_action(:render_dynamically, **arguments) end
render_dynamically(log_level: :info)
click to toggle source
# File lib/dynamic_rendering/acts_as_dynamically_renderable.rb, line 14 def render_dynamically(log_level: :info) return unless request_suitable_for_dynamic_rendering? && response_suitable_for_dynamic_rendering? Rails.logger.public_send( log_level, <<~TEXT [Dynamic rendering 🔍 ]: • URL: #{request.original_url}" • User-Agent: #{request.user_agent} • Viewport: #{dynamic_rendering_viewport.inspect} TEXT ) response.body = HtmlRenderer.new( response.body, dynamic_rendering_viewport, request.original_url ).to_s end
Private Instance Methods
dynamic_rendering_request_from_mobile_crawler?()
click to toggle source
# File lib/dynamic_rendering/acts_as_dynamically_renderable.rb, line 53 def dynamic_rendering_request_from_mobile_crawler? MOBILE_USER_AGENT.match?(request.user_agent) end
dynamic_rendering_viewport()
click to toggle source
# File lib/dynamic_rendering/acts_as_dynamically_renderable.rb, line 47 def dynamic_rendering_viewport return MOBILE_VIEWPORT if dynamic_rendering_request_from_mobile_crawler? DESKTOP_VIEWPORT end
request_suitable_for_dynamic_rendering?()
click to toggle source
# File lib/dynamic_rendering/acts_as_dynamically_renderable.rb, line 43 def request_suitable_for_dynamic_rendering? USE_DYNAMIC_RENDERING_FOR_USER_AGENTS.match?(request.user_agent) end
response_suitable_for_dynamic_rendering?()
click to toggle source
# File lib/dynamic_rendering/acts_as_dynamically_renderable.rb, line 57 def response_suitable_for_dynamic_rendering? response.ok? && Mime::Type.lookup(response.media_type).html? end