61 lines
1.8 KiB
Ruby
61 lines
1.8 KiB
Ruby
|
module Sass
|
||
|
module Plugin
|
||
|
# Rack middleware for compiling Sass code.
|
||
|
#
|
||
|
# ## Activate
|
||
|
#
|
||
|
# require 'sass/plugin/rack'
|
||
|
# use Sass::Plugin::Rack
|
||
|
#
|
||
|
# ## Customize
|
||
|
#
|
||
|
# Sass::Plugin.options.merge!(
|
||
|
# :cache_location => './tmp/sass-cache',
|
||
|
# :never_update => environment != :production,
|
||
|
# :full_exception => environment != :production)
|
||
|
#
|
||
|
# {file:SASS_REFERENCE.md#Options See the Reference for more options}.
|
||
|
#
|
||
|
# ## Use
|
||
|
#
|
||
|
# Put your Sass files in `public/stylesheets/sass`.
|
||
|
# Your CSS will be generated in `public/stylesheets`,
|
||
|
# and regenerated every request if necessary.
|
||
|
# The locations and frequency {file:SASS_REFERENCE.md#Options can be customized}.
|
||
|
# That's all there is to it!
|
||
|
class Rack
|
||
|
# The delay, in seconds, between update checks.
|
||
|
# Useful when many resources are requested for a single page.
|
||
|
# `nil` means no delay at all.
|
||
|
#
|
||
|
# @return [Float]
|
||
|
attr_accessor :dwell
|
||
|
|
||
|
# Initialize the middleware.
|
||
|
#
|
||
|
# @param app [#call] The Rack application
|
||
|
# @param dwell [Float] See \{#dwell}
|
||
|
def initialize(app, dwell = 1.0)
|
||
|
@app = app
|
||
|
@dwell = dwell
|
||
|
@check_after = Time.now.to_f
|
||
|
end
|
||
|
|
||
|
# Process a request, checking the Sass stylesheets for changes
|
||
|
# and updating them if necessary.
|
||
|
#
|
||
|
# @param env The Rack request environment
|
||
|
# @return [(#to_i, {String => String}, Object)] The Rack response
|
||
|
def call(env)
|
||
|
if @dwell.nil? || Time.now.to_f > @check_after
|
||
|
Sass::Plugin.check_for_updates
|
||
|
@check_after = Time.now.to_f + @dwell if @dwell
|
||
|
end
|
||
|
@app.call(env)
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
|
||
|
require 'sass/plugin'
|