module DustyRailsRenderer
Constants
- VERSION
Attributes
configuration[W]
Public Class Methods
configuration()
click to toggle source
# File lib/dusty_rails_renderer.rb, line 95 def self.configuration @configuration ||= Configuration.new end
configure() { |configuration| ... }
click to toggle source
# File lib/dusty_rails_renderer.rb, line 91 def self.configure yield(configuration) end
get_template(template_name)
click to toggle source
# File lib/dusty_rails_renderer.rb, line 29 def get_template(template_name) @precompiled_templates[template_name] end
initialize()
click to toggle source
Initialize, load Dust.js library, and precompile Dust.js templates
# File lib/dusty_rails_renderer.rb, line 13 def initialize @dust_config = YAML.load_file(self.configuration.dust_config_path) @dust_library = File.read(self.configuration.dust_js_library_path) @precompiled_templates = GoogleHashDenseRubyToRuby.new @last_modification_hash = GoogleHashDenseRubyToRuby.new @context = V8::Context.new @context.eval(@dust_library, 'dustjs') if self.configuration.load_dust_helpers @dust_helpers = File.read(self.configuration.dust_js_helper_path) @context.eval(@dust_helpers, 'dustjs-helpers') end read_dust_files end
render(template_name, json)
click to toggle source
# File lib/dusty_rails_renderer.rb, line 38 def render(template_name, json) if self.configuration.production @context.eval("(function() { var result; dust.render('#{template_name}', #{json}, function(err, out) { result = out; }); return result; })()") else read_dust_files @context.eval("(function() { var result; dust.render('#{template_name}', #{json}, function(err, out) { result = out; }); return result; })()") end end
templates()
click to toggle source
Return precompiled templates in JSON format (Client-side)
# File lib/dusty_rails_renderer.rb, line 34 def templates @precompiled_templates.to_json end
Private Class Methods
read_dust_files()
click to toggle source
Read in and register Dust.js templates
# File lib/dusty_rails_renderer.rb, line 49 def read_dust_files @dust_config.each do |template, info| file_url = self.configuration.dust_template_base_path + info["file_path"] template_name = info["name"] if @last_modification_hash[template_name] == File.mtime(file_url) next else @last_modification_hash[template_name] = File.mtime(file_url) end if self.configuration.logging puts "file url = #{file_url}" puts "template name = #{template_name}" end if self.configuration.node_dust_compiler command = "#{self.configuration.dust_compiler_command} --name=#{template_name} #{file_url}" template = Open3.capture3("bash","-l","-c",command) escaped_template = escape_javascript(template[0]) if self.configuration.logging puts "open3 result = #{template}" puts "compiled template = #{escaped_template}" end @context.eval("dust.loadSource(\"#{escaped_template}\")") @precompiled_templates[template_name] = template[0] else contents = File.read(file_url).gsub("\n","").gsub("\"","'").gsub("\t","") template = @context.eval("(function() {var template = dust.compile(\"#{contents}\",'#{template_name}'); dust.loadSource(template); return template; })()") if self.configuration.logging puts "compiled template = #{escaped_template}" end @precompiled_templates[template_name] = template end end end