Sha256: 90f300d3359b5c7c45e3caa0c37f185e3493e888c98f4ed435e70aaa66c58b17

Contents?: true

Size: 1.38 KB

Versions: 9

Compression:

Stored size: 1.38 KB

Contents

# Adds a route for JavaScript files.
#
# == Usage
#
#   require 'sinatra/support/jssupport'
#
#   class Main < Sinatra::Base
#     register Sinatra::JsSupport
#     serve_js '/js', from: './app/js'
#   end
#
# You'll be able to access files via +/js+:
#
#   # This will serve /app/js/jquery.js. (or .coffee)
#   $ curl "http://localhost:4567/js/jquery.js"
#
# == CoffeeScript support
#
# This plugin supports CoffeeScript. To use it, simply
# add a CoffeeScript file in the JS file path.
#
#   # Will first try app/js/application.coffee,
#   # then move onto app/js/application.js if it's not found.
#
#   $ curl "http://localhost:4567/js/application.js"
#
# To use CoffeeScript, install the +coffee_script+ gem.
# If you're using Bundler, that is:
#
#   # Gemfile
#   gem "coffee-script", require: "coffee_script"
#
#
module Sinatra::JsSupport
  def self.registered(app)
    app.set :js_max_age, app.development? ? 0 : 86400*30
  end

  def serve_js(url_prefix, options={})
    path   = File.join(url_prefix, '*.js')
    prefix = options[:from]

    get path do |name|
      fname = Dir[File.join(prefix, "#{name}.{js,coffee}")].first  or pass

      content_type :js
      last_modified File.mtime(fname)
      cache_control :public, :must_revalidate, :max_age => settings.js_max_age

      if fname =~ /\.coffee$/
        coffee File.read(fname)
      else
        send_file fname
      end
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
sinatra-support-1.2.1 lib/sinatra/support/jssupport.rb
sinatra-support-1.2.0 lib/sinatra/support/jssupport.rb
sinatra-support-1.1.3 lib/sinatra/support/jssupport.rb
sinatra-support-1.1.2 lib/sinatra/support/jssupport.rb
sinatra-support-1.1.1 lib/sinatra/support/jssupport.rb
sinatra-support-1.1.0 lib/sinatra/support/jssupport.rb
sinatra-support-1.0.4 lib/sinatra/support/jssupport.rb
sinatra-support-1.0.3 lib/sinatra/support/jssupport.rb
sinatra-support-1.0.2 lib/sinatra/support/jssupport.rb