class Wild::View::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