class Wild::View::RemoteRenderer

RemoteRenderer

This class extend ActionView::Renderer and overwriten the render methods to download views from configure endpoint

Public Instance Methods

render(context, options) click to toggle source
Calls superclass method ActionView::Renderer#render
# File lib/wild/views/remote_renderer.rb, line 11
def render(context, options)
  options.delete(:remote)
  super(context, options)
end

Private Instance Methods

build_view_path(view_name) click to toggle source
# File lib/wild/views/remote_renderer.rb, line 48
def build_view_path(view_name)
  path = view_name.split('/')
  path[-1] = view_file_name(path.last)
  Wild::Views.root.join(*path)
end
download_and_save_view(view_name) click to toggle source
# File lib/wild/views/remote_renderer.rb, line 31
def download_and_save_view(view_name)
  view_data = download_view(view_name)
  save_view(view_name, view_data)
end
download_view(view_name) click to toggle source
# File lib/wild/views/remote_renderer.rb, line 36
def download_view(view_name)
  response = http.get endpoint_path(view_name)
  response.value
  response.body
end
endpoint_path(view_name) click to toggle source
# File lib/wild/views/remote_renderer.rb, line 58
def endpoint_path(view_name)
  "/#{view_name}"
end
ensure_directory_exists(view_name) click to toggle source
# File lib/wild/views/remote_renderer.rb, line 70
def ensure_directory_exists(view_name)
  FileUtils.mkdir_p(File.dirname(view_name))
end
http() click to toggle source
# File lib/wild/views/remote_renderer.rb, line 63
def http
  @http ||= begin
    uri = URI(Wild::Views.config['endpoint'])
    Net::HTTP.start(uri.host, uri.port, use_ssl: uri.scheme == 'https')
  end
end
save_view(view_name, view_data) click to toggle source
# File lib/wild/views/remote_renderer.rb, line 42
def save_view(view_name, view_data)
  view_path = build_view_path(view_name)
  ensure_directory_exists(view_path)
  write_view(view_path, view_data)
end
view_file_name(view_name) click to toggle source
# File lib/wild/views/remote_renderer.rb, line 54
def view_file_name(view_name)
  "_#{view_name}.html.erb"
end
write_view(view_path, view_data) click to toggle source
# File lib/wild/views/remote_renderer.rb, line 74
def write_view(view_path, view_data)
  File.open(view_path, 'w') { |f| f.write(view_data) }
end