class VueRails::Renderer

Constants

CONSOLE_POLYFILL
GLOBAL_WRAPPER

Attributes

component[RW]
props[RW]
router_push_to[RW]
state[RW]

Public Class Methods

new(component, props, router_push_to=nil, state={}) click to toggle source
# File lib/vue_rails/renderer.rb, line 28
def initialize component, props, router_push_to=nil, state={}
  self.component = component
  self.props = props
  self.router_push_to = router_push_to
  self.state = state
end
server_render(*args) click to toggle source
# File lib/vue_rails/renderer.rb, line 35
def self.server_render *args
  new(*args).render
end

Public Instance Methods

render() click to toggle source
# File lib/vue_rails/renderer.rb, line 39
def render
  if Rails.env.production?
    self.context ||= (
    js_code = VueRails::WebpackerAssetFinder.new.find_asset("vue_server_render.js")
    ExecJS.compile(GLOBAL_WRAPPER + CONSOLE_POLYFILL + js_code)
    )
  else
    self.context = (
    js_code = VueRails::WebpackerAssetFinder.new.find_asset("vue_server_render.js")
    ExecJS.compile(GLOBAL_WRAPPER + CONSOLE_POLYFILL + js_code)
    )
  end

  self.context.eval("RailsVueUJS.serverRender('#{component}', #{props}, '#{router_push_to}', #{state})")
end

Private Instance Methods

cache_key() click to toggle source
# File lib/vue_rails/renderer.rb, line 57
def cache_key
  path = VueRails::WebpackerAssetFinder.new.find_path("vue_server_render.js")
  Digest::MD5.hexdigest("#{component}_#{JSON.parse(props).delete_if {|k, _| k.to_s == "csrf_token"}}_#{router_push_to}_#{path}_#{state}")
end