class Dominate::Assets::Middleware
Attributes
app[R]
env[R]
res[R]
Public Class Methods
new(app)
click to toggle source
# File lib/dominate/assets/middleware.rb, line 9 def initialize(app) @app = app end
Public Instance Methods
call(env)
click to toggle source
# File lib/dominate/assets/middleware.rb, line 13 def call env dup.call! env end
call!(env)
click to toggle source
# File lib/dominate/assets/middleware.rb, line 17 def call! env @env = env if assets_path render_assets else res end end
Private Instance Methods
assets_path()
click to toggle source
# File lib/dominate/assets/middleware.rb, line 43 def assets_path path[Regexp.new("^#{Dominate.config.asset_url}($|.*)")] end
ext()
click to toggle source
# File lib/dominate/assets/middleware.rb, line 68 def ext if matched = path.match(/(?<=\.).*$/) matched[0] else false end end
name()
click to toggle source
# File lib/dominate/assets/middleware.rb, line 59 def name @name ||= begin cleaned = path.gsub(/\.#{ext}$/, '') cleaned = cleaned.gsub(/^#{Dominate.config.asset_url}\//, '') cleaned = cleaned.gsub(/^#{type}\//, '') cleaned end end
path()
click to toggle source
# File lib/dominate/assets/middleware.rb, line 47 def path env['PATH_INFO'] end
render_all_files()
click to toggle source
# File lib/dominate/assets/middleware.rb, line 107 def render_all_files content = '' files = Dominate.config.assets[ext] path = "#{Dominate.config.asset_path}/#{type}" files.each do |file| if file[/^http/] content += open(file).string else content += Dominate::HTML.load_file("#{path}/#{file}") end end content end
render_assets()
click to toggle source
# File lib/dominate/assets/middleware.rb, line 76 def render_assets case type when 'css', 'stylesheet', 'stylesheets' content_type = 'text/css; charset=utf-8' when 'js', 'javascript', 'javascripts' content_type = 'text/javascript; charset=utf-8' else content_type = Rack::Mime.mime_type ext end res.headers.merge!({ "Content-Type" => content_type, "Cache-Control" => 'public, max-age=2592000, no-transform', 'Connection' => 'keep-alive', 'Age' => '25637', 'Strict-Transport-Security' => 'max-age=31536000', 'Content-Disposition' => 'inline' }) if name == "all-#{sha}" @name = 'dominate-compiled' res.write render_single_file elsif name == 'all' res.write render_all_files else res.write render_single_file end res.finish end
render_single_file()
click to toggle source
# File lib/dominate/assets/middleware.rb, line 123 def render_single_file path = "#{Dominate.config.asset_path}/#{type}" Dominate::HTML.load_file "#{path}/#{name}.#{ext}" end
req()
click to toggle source
# File lib/dominate/assets/middleware.rb, line 39 def req @req ||= Rack::Request.new env end
sha()
click to toggle source
# File lib/dominate/assets/middleware.rb, line 128 def sha Thread.current[:_sha] ||= (Dominate.config.sha || `git rev-parse HEAD`.strip) end
type()
click to toggle source
# File lib/dominate/assets/middleware.rb, line 51 def type if matched = path.match(/(?<=#{Dominate.config.asset_url}\/).*(?=\/)/) matched[0] else '' end end