Class: Rake::SprocketsTask

Inherits:
TaskLib
  • Object
show all
Defined in:
lib/rake/sprocketstask.rb

Overview

Simple Sprockets compilation Rake task macro.

Rake::SprocketsTask.new do |t|
  t.environment = Sprockets::Environment.new
  t.output      = "./public/assets"
  t.assets      = %w( application.js application.css )
end

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name = :assets) {|_self| ... } ⇒ SprocketsTask

Returns a new instance of SprocketsTask.

Yields:

  • (_self)

Yield Parameters:



97
98
99
100
101
102
103
104
105
106
107
108
# File 'lib/rake/sprocketstask.rb', line 97

def initialize(name = :assets)
  @name         = name
  @environment  = lambda { Sprockets::Environment.new(Dir.pwd) }
  @manifest     = lambda { Sprockets::Manifest.new(index, output) }
  @logger       = Logger.new($stderr)
  @logger.level = Logger::INFO
  @keep         = 2

  yield self if block_given?

  define
end

Instance Attribute Details

#assetsObject

Array of asset logical paths to compile.

t.assets = %w( application.js jquery.js application.css )


68
69
70
# File 'lib/rake/sprocketstask.rb', line 68

def assets
  @assets
end

#environmentObject

‘Environment` instance used for finding assets.

You’ll most likely want to reassign ‘environment` to your own.

Rake::SprocketsTask.new do |t|
  t.environment = Foo::Assets
end


31
32
33
34
35
36
37
# File 'lib/rake/sprocketstask.rb', line 31

def environment
  if !@environment.is_a?(Sprockets::Base) && @environment.respond_to?(:call)
    @environment = @environment.call
  else
    @environment
  end
end

#keepObject

Number of old assets to keep.



71
72
73
# File 'lib/rake/sprocketstask.rb', line 71

def keep
  @keep
end

#loggerObject

Logger to use during rake tasks. Defaults to using stderr.

t.logger = Logger.new($stdout)


77
78
79
# File 'lib/rake/sprocketstask.rb', line 77

def logger
  @logger
end

#manifestObject

‘Manifest` instance used for already compiled assets.

Will be created by default if an environment and output directory are given



49
50
51
52
53
54
55
# File 'lib/rake/sprocketstask.rb', line 49

def manifest
  if !@manifest.is_a?(Sprockets::Manifest) && @manifest.respond_to?(:call)
    @manifest = @manifest.call
  else
    @manifest
  end
end

#nameObject

Name of the task. Defaults to “assets”.

The name will also be used to suffix the clean and clobber tasks, “clean_assets” and “clobber_assets”.



21
22
23
# File 'lib/rake/sprocketstask.rb', line 21

def name
  @name
end

#outputObject

Directory to write compiled assets too. As well as the manifest file.

t.output = "./public/assets"


62
63
64
# File 'lib/rake/sprocketstask.rb', line 62

def output
  @output
end

Instance Method Details

#defineObject

Define tasks



111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
# File 'lib/rake/sprocketstask.rb', line 111

def define
  desc name == :assets ? "Compile assets" : "Compile #{name} assets"
  task name do
    with_logger do
      manifest.compile(assets)
    end
  end

  desc name == :assets ? "Remove all assets" : "Remove all #{name} assets"
  task "clobber_#{name}" do
    with_logger do
      manifest.clobber
    end
  end

  task :clobber => ["clobber_#{name}"]

  desc name == :assets ? "Clean old assets" : "Clean old #{name} assets"
  task "clean_#{name}" do
    with_logger do
      manifest.clean(keep)
    end
  end

  task :clean => ["clean_#{name}"]
end

#indexObject

Returns cached indexed environment



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

def index
  @index ||= environment.index if environment
end

#log_levelObject

Returns logger level Integer.



80
81
82
# File 'lib/rake/sprocketstask.rb', line 80

def log_level
  @logger.level
end

#log_level=(level) ⇒ Object

Set logger level with constant or symbol.

t.log_level = Logger::INFO
t.log_level = :debug


89
90
91
92
93
94
95
# File 'lib/rake/sprocketstask.rb', line 89

def log_level=(level)
  if level.is_a?(Integer)
    @logger.level = level
  else
    @logger.level = Logger.const_get(level.to_s.upcase)
  end
end