Class: AssetsServer

Inherits:
Object
  • Object
show all
Defined in:
lib/assets_server.rb,
lib/assets_server/version.rb

Overview

AssetsServer

Usage

AssetsServer.new(

root: './assets',
directories: %w{javascripts stylesheets images templates fonts}
paths: ['javascripts','stylesheets','vendor/javascripts','vendor/stylesheets'],
compass: true,

)

Constant Summary collapse

OptionError =
Class.new(ArgumentError)
VERSION =
"0.0.1"

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) ⇒ AssetsServer

Returns a new instance of AssetsServer.



19
20
21
22
23
24
25
26
27
# File 'lib/assets_server.rb', line 19

def initialize(options={})
  @root = options.fetch(:root){ Bundler.root if defined? Bundler }
  @directories = options.fetch(:directories){ %w{javascripts stylesheets images} }
  @paths = options.fetch(:paths){
    @directories + @directories.map{|d| "vendor/#{d}" }
  }
  @compass = options.fetch(:compass){ false }
  use_compass! if compass?
end

Instance Method Details

#call(env) ⇒ Object



29
30
31
# File 'lib/assets_server.rb', line 29

def call(env)
  sprockets_environment.call(env)
end

#compass?Boolean

Returns:

  • (Boolean)


41
42
43
# File 'lib/assets_server.rb', line 41

def compass?
  !!@compass
end

#pathsObject



37
38
39
# File 'lib/assets_server.rb', line 37

def paths
  @paths or raise OptionError, "paths option not set for #{self.class}"
end

#rootObject



33
34
35
# File 'lib/assets_server.rb', line 33

def root
  @root or raise OptionError, "root option not set for #{self.class}"
end

#sprockets_environmentObject



45
46
47
48
49
50
51
52
# File 'lib/assets_server.rb', line 45

def sprockets_environment
  return @sprockets_environment if defined? @sprockets_environment
  @sprockets_environment = Sprockets::Environment.new(root)
  paths.each do |path|
    @sprockets_environment.append_path path
  end
  @sprockets_environment
end

#use_compass!Object



54
55
56
57
# File 'lib/assets_server.rb', line 54

def use_compass!
  require "compass"
  sprockets_environment.append_path Compass::Frameworks['compass'].path+'/stylesheets'
end