Module: Sinatra::AssetPack::ClassMethods
- Included in:
- Sinatra::AssetPack
- Defined in:
- lib/sinatra/assetpack/class_methods.rb
Overview
Class methods that will be given to the Sinatra application.
Instance Method Summary collapse
-
#add_compressed_routes! ⇒ Object
Add routes for the compressed versions.
-
#add_individual_routes! ⇒ Object
Add the routes for the individual files.
-
#assets(&blk) ⇒ Object
Sets asset options, or gets them.
- #assets_initialize! ⇒ Object
Instance Method Details
#add_compressed_routes! ⇒ Object
Add routes for the compressed versions
24 25 26 27 28 29 30 31 32 33 34 35 36 |
# File 'lib/sinatra/assetpack/class_methods.rb', line 24 def add_compressed_routes! assets.packages.each do |name, package| get package.route_regex do mtime, contents = @template_cache.fetch(package.path) { [ package.mtime, package.minify ] } content_type package.type last_modified mtime contents end end end |
#add_individual_routes! ⇒ Object
Add the routes for the individual files.
39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 |
# File 'lib/sinatra/assetpack/class_methods.rb', line 39 def add_individual_routes! assets.served.each do |path, from| get %r{#{"^/#{path}/".squeeze('/')}(.*)$} do |file| fmt = File.extname(file)[1..-1] # Sanity checks pass unless AssetPack.supported_formats.include?(fmt) fn = asset_path_for(file, from) or pass pass if settings.assets.ignored?("#{path}/#{file}") # Send headers content_type fmt.to_sym last_modified File.mtime(fn).to_i expires 86400*30, :public format = File.extname(fn)[1..-1] if AssetPack.supported_formats.include?(format) # It's a raw file, just send it not_found unless format == fmt if fmt == 'css' @template_cache.fetch(fn) { asset_filter_css File.read(fn) } else send_file fn end else # Dynamic file not_found unless AssetPack.tilt_formats[format] == fmt @template_cache.fetch(fn) { out = render format.to_sym, File.read(fn) out = asset_filter_css(out) if fmt == 'css' out } end end end end |
#assets(&blk) ⇒ Object
Sets asset options, or gets them
6 7 8 9 10 11 |
# File 'lib/sinatra/assetpack/class_methods.rb', line 6 def assets(&blk) @options ||= Options.new(self, &blk) self.assets_initialize! if block_given? @options end |
#assets_initialize! ⇒ Object
13 14 15 16 17 18 19 20 21 |
# File 'lib/sinatra/assetpack/class_methods.rb', line 13 def assets_initialize! add_compressed_routes! add_individual_routes! # Cache the built files. if assets.prebuild && !reload_templates assets.cache! { |file| $stderr.write "** Building #{file}...\n" } end end |