Sha256: 640fb015639538f246ac20132551ab4c512ef71e9c7e67f004cb75dbf1f260d6
Contents?: true
Size: 1.77 KB
Versions: 1
Compression:
Stored size: 1.77 KB
Contents
module Rail class Pipeline extend Forwardable def_delegators :@host, :root, :gems, :helpers, :compress? def initialize(host) @host = host end def process(request) Thread.current[:request] = request path = request.path case path when '', 'index.html' path = 'layouts/application' end path = "#{ path }.html" if File.extname(path).empty? asset = sprockets[path] code, body = asset ? [ 200, asset ] : [ 404, [ 'Not found' ] ] [ code, {}, body ] end private def sprockets @sprockets ||= build_sprockets end def build_sprockets environment = Sprockets::Environment.new paths.each do |directory| environment.append_path(directory) end if compress? environment.js_compressor = :uglify environment.css_compressor = :scss end # TODO: Find a per-instance way to configure HAML. Haml::Options.defaults[:ugly] = compress? helpers.each do |helper| environment.context_class.class_eval do include helper end end environment.context_class.class_eval do define_method(:request) do Thread.current[:request] end end environment end def paths (application_paths + gems.map { |name| gem_paths(name) }).flatten end def application_paths [ File.join(root, 'app/assets/javascripts'), File.join(root, 'app/assets/stylesheets'), File.join(root, 'app/views') ] end def gem_paths(name) gem = Gem::Specification.find_by_name(name) [ File.join(gem.gem_dir, 'lib/assets/javascripts'), File.join(gem.gem_dir, 'lib/assets/stylesheets') ] end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
rail-0.0.2 | lib/rail/pipeline.rb |