active_assets 0.2.3 → 0.2.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.md +20 -21
- data/active_assets.gemspec +4 -3
- data/lib/active_assets/active_sprites.rb +6 -2
- data/lib/active_assets/active_sprites/configurable.rb +0 -1
- data/lib/active_assets/active_sprites/runners/abstract_runner.rb +124 -0
- data/lib/active_assets/active_sprites/runners/chunky_png_runner.rb +62 -0
- data/lib/active_assets/active_sprites/runners/mini_magick_runner.rb +74 -0
- data/lib/active_assets/active_sprites/runners/rmagick_runner.rb +66 -0
- data/lib/active_assets/active_sprites/sprite_piece.rb +5 -1
- data/lib/active_assets/active_sprites/sprite_stylesheet.rb +3 -4
- data/lib/active_assets/active_sprites/sprites.rb +31 -6
- data/lib/tasks/active_sprites/sprites.rake +1 -0
- data/test/active_assets/active_sprites/runners/chunky_png_runner_test.rb +10 -0
- data/test/active_assets/active_sprites/runners/mini_magick_runner_test.rb +10 -0
- data/test/active_assets/active_sprites/runners/rmagick_runner_test.rb +10 -0
- data/test/fixtures/rails_root/config/application.rb +1 -1
- data/test/helper.rb +0 -8
- data/test/{active_assets/active_sprites/runner_test.rb → support/abstract_runner.rb} +16 -29
- metadata +39 -21
- data/lib/active_assets/active_sprites/chunky_png_runner.rb +0 -119
- data/lib/active_assets/active_sprites/rmagick_runner.rb +0 -124
- data/test/raster_graphics.rb +0 -623
- data/test/raster_graphics_test.rb +0 -82
@@ -32,7 +32,7 @@ module ActiveAssets
|
|
32
32
|
self
|
33
33
|
end
|
34
34
|
|
35
|
-
def
|
35
|
+
def to_css
|
36
36
|
return '' if details.nil?
|
37
37
|
<<-CSS
|
38
38
|
#{css_selector}
|
@@ -45,6 +45,10 @@ module ActiveAssets
|
|
45
45
|
CSS
|
46
46
|
end
|
47
47
|
|
48
|
+
def to_s
|
49
|
+
"|\t#{path}\t|\t#{css_selector}\t|\t#{details.x}\t|\t#{details.y}\t|\t#{details.width}\t|\t#{details.height}\t|\n"
|
50
|
+
end
|
51
|
+
|
48
52
|
GEOMETRY_PROPS.each do |prop|
|
49
53
|
eval <<-METH
|
50
54
|
def #{prop}(*args)
|
@@ -8,16 +8,15 @@ module ActiveAssets
|
|
8
8
|
end
|
9
9
|
|
10
10
|
def write(path)
|
11
|
-
to_s!
|
12
11
|
FileUtils.mkdir_p(File.dirname(path))
|
13
12
|
File.open(path, 'w+') do |f|
|
14
|
-
f.write
|
13
|
+
f.write to_s
|
15
14
|
end
|
16
15
|
end
|
17
16
|
|
18
17
|
private
|
19
|
-
def to_s
|
20
|
-
@as_string ||= @sprite_pieces.map(&:
|
18
|
+
def to_s
|
19
|
+
@as_string ||= @sprite_pieces.map(&:to_css).join("\n")
|
21
20
|
end
|
22
21
|
end
|
23
22
|
end
|
@@ -54,18 +54,43 @@ module ActiveAssets
|
|
54
54
|
case sprite_backend
|
55
55
|
when :rmagick
|
56
56
|
require 'rmagick'
|
57
|
-
RmagickRunner.new(@sprites).generate!
|
58
|
-
when :
|
57
|
+
RmagickRunner.new(railtie, @sprites).generate!
|
58
|
+
when :mini_magick
|
59
|
+
require 'mini_magick'
|
60
|
+
MiniMagickRunner.new(railtie, @sprites).generate!
|
61
|
+
when :chunky_png, :oily_png
|
59
62
|
begin
|
60
63
|
require 'oily_png'
|
61
|
-
ChunkyPngRunner.new(@sprites).generate!
|
64
|
+
ChunkyPngRunner.new(railtie, @sprites).generate!
|
62
65
|
rescue LoadError
|
63
66
|
require 'chunky_png'
|
64
|
-
ChunkyPngRunner.new(@sprites).generate!
|
65
|
-
|
67
|
+
ChunkyPngRunner.new(railtie @sprites).generate!
|
68
|
+
end
|
69
|
+
else
|
70
|
+
begin
|
71
|
+
require 'rmagick'
|
72
|
+
RmagickRunner.new(railtie, @sprites).generate!
|
73
|
+
rescue LoadError
|
74
|
+
begin
|
75
|
+
begin
|
76
|
+
require 'oily_png'
|
77
|
+
ChunkyPngRunner.new(railtie, @sprites).generate!
|
78
|
+
rescue LoadError
|
79
|
+
require 'chunky_png'
|
80
|
+
ChunkyPngRunner.new(railtie, @sprites).generate!
|
81
|
+
end
|
82
|
+
rescue LoadError
|
83
|
+
require 'mini_magick'
|
84
|
+
MiniMagickRunner.new(railtie, @sprites).generate!
|
85
|
+
end
|
66
86
|
end
|
67
87
|
end
|
68
|
-
rescue LoadError
|
88
|
+
rescue LoadError => e
|
89
|
+
msg = ''
|
90
|
+
msg << "You have not specified any sprite runtime in your configuration. We tried to load all supported runtimes, but failed to load any." if !sprite_backend
|
91
|
+
msg << "Your requested backend, #{sprite_backend}, was not found." if sprite_backend
|
92
|
+
msg << " Supported sprite backends include :rmagick, :chunky_png, and :mini_magick. To use oily_png, install oily_png and configure with :chunky_png.\n"
|
93
|
+
$stdout << msg
|
69
94
|
end
|
70
95
|
end
|
71
96
|
end
|
data/test/helper.rb
CHANGED
@@ -9,8 +9,6 @@ require 'active_assets'
|
|
9
9
|
require 'socket'
|
10
10
|
require 'timeout'
|
11
11
|
|
12
|
-
require 'raster_graphics'
|
13
|
-
|
14
12
|
TEST_RAILS_ROOT = File.expand_path('../fixtures/rails_root', __FILE__)
|
15
13
|
|
16
14
|
Dir[File.expand_path('../support/**/*.rb', __FILE__)].each {|f| load f }
|
@@ -20,12 +18,6 @@ load File.join(TEST_RAILS_ROOT, 'config/application.rb')
|
|
20
18
|
class Test::Unit::TestCase
|
21
19
|
include RailsHelper
|
22
20
|
|
23
|
-
include(Module.new do
|
24
|
-
def percent_difference(image_1_path, image_2_path)
|
25
|
-
Pixmap.open(image_1_path) - Pixmap.open(image_2_path)
|
26
|
-
end
|
27
|
-
end)
|
28
|
-
|
29
21
|
def sprites
|
30
22
|
Rails.application.sprites
|
31
23
|
end
|
@@ -1,11 +1,10 @@
|
|
1
|
-
require 'helper'
|
2
1
|
require 'fileutils'
|
3
2
|
require 'rmagick'
|
4
3
|
require 'css_parser'
|
5
4
|
|
6
|
-
|
5
|
+
module AbstractRunnerTest
|
7
6
|
include Magick
|
8
|
-
def
|
7
|
+
def runner_setup
|
9
8
|
initialize_application_or_load_sprites!
|
10
9
|
|
11
10
|
assert_false Rails.application.sprites.all.empty?
|
@@ -13,6 +12,12 @@ class RunnerTest < Test::Unit::TestCase
|
|
13
12
|
assert_nothing_raised do
|
14
13
|
Rails.application.sprites.generate!
|
15
14
|
end
|
15
|
+
|
16
|
+
assert File.exists?(Rails.root.join('public/images/sprites/3.png'))
|
17
|
+
assert File.exists?(Rails.root.join('public/images/sprites/4.png'))
|
18
|
+
|
19
|
+
assert File.exists?(Rails.root.join('public/stylesheets/sprites/3.css'))
|
20
|
+
assert File.exists?(Rails.root.join('public/stylesheets/sprites/4.css'))
|
16
21
|
end
|
17
22
|
|
18
23
|
def teardown
|
@@ -36,14 +41,14 @@ class RunnerTest < Test::Unit::TestCase
|
|
36
41
|
|
37
42
|
sprite_pieces_with_selector_data = []
|
38
43
|
|
39
|
-
parser.
|
40
|
-
sprite_piece = sprite_pieces.find {|sp| sp.css_selector
|
41
|
-
width =
|
42
|
-
height =
|
43
|
-
background =
|
44
|
+
parser.each_rule_set do |rs|
|
45
|
+
sprite_piece = sprite_pieces.find {|sp| rs.selectors.include?(sp.css_selector) }
|
46
|
+
width = rs['width'][%r{\s*(\d+)(?:px)?;?$}, 1].to_i
|
47
|
+
height = rs['height'][%r{\s*(\d+)(?:px)?;?$}, 1].to_i
|
48
|
+
background = rs['background'][%r{\s*([^;]+)}, 1]
|
44
49
|
x = background[%r{\s-?(\d+)(?:px)?\s}, 1].to_i
|
45
50
|
y = background[%r{\s-?(\d+)(?:px)?$}, 1].to_i
|
46
|
-
sprite_pieces_with_selector_data << [sprite_piece, Selector.new(selectors, x, y, width, height)]
|
51
|
+
sprite_pieces_with_selector_data << [sprite_piece, Selector.new(rs.selectors, x, y, width, height)]
|
47
52
|
end
|
48
53
|
|
49
54
|
sprite_pieces_with_selector_data.each do |sp, selector_data|
|
@@ -56,19 +61,11 @@ class RunnerTest < Test::Unit::TestCase
|
|
56
61
|
selector_data.width,
|
57
62
|
selector_data.height
|
58
63
|
)
|
59
|
-
|
60
|
-
|
61
|
-
curr_sprite_piece_image_bmp = Tempfile.new("curr_sprite_piece_image_bmp.ppm")
|
62
|
-
sprite_piece_image.write "ppm:#{curr_sprite_piece_image_bmp.path}"
|
63
|
-
pd = percent_difference(curr_sprite_image_file.path, curr_sprite_piece_image_bmp.path)
|
64
|
-
assert pd <= 0.25
|
64
|
+
pd = curr_sprite_image.compare_channel(sprite_piece_image, MeanSquaredErrorMetric).last
|
65
|
+
assert_equal 0, pd
|
65
66
|
ensure
|
66
67
|
sprite_piece_image.destroy! if sprite_piece_image
|
67
68
|
curr_sprite_image.destroy! if curr_sprite_image
|
68
|
-
curr_sprite_image_file.close if curr_sprite_image_file
|
69
|
-
curr_sprite_piece_image_bmp.close if curr_sprite_piece_image_bmp
|
70
|
-
curr_sprite_piece_image_bmp = nil
|
71
|
-
curr_sprite_image_file = nil
|
72
69
|
curr_sprite_image = nil
|
73
70
|
sprite_piece_image = nil
|
74
71
|
end
|
@@ -77,14 +74,4 @@ class RunnerTest < Test::Unit::TestCase
|
|
77
74
|
sprite_image.destroy! if sprite_image
|
78
75
|
sprite_image = nil
|
79
76
|
end
|
80
|
-
|
81
|
-
def test_sprite_exists
|
82
|
-
assert File.exists?(Rails.root.join('public/images/sprites/3.png'))
|
83
|
-
assert File.exists?(Rails.root.join('public/images/sprites/4.png'))
|
84
|
-
end
|
85
|
-
|
86
|
-
def test_stylesheets_exists
|
87
|
-
assert File.exists?(Rails.root.join('public/stylesheets/sprites/3.css'))
|
88
|
-
assert File.exists?(Rails.root.join('public/stylesheets/sprites/4.css'))
|
89
|
-
end
|
90
77
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: active_assets
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 31
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 2
|
9
|
-
-
|
10
|
-
version: 0.2.
|
9
|
+
- 4
|
10
|
+
version: 0.2.4
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Sam Woodard
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-01-
|
18
|
+
date: 2011-01-29 00:00:00 -08:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
@@ -62,6 +62,20 @@ dependencies:
|
|
62
62
|
prerelease: false
|
63
63
|
- !ruby/object:Gem::Dependency
|
64
64
|
version_requirements: &id004 !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
66
|
+
requirements:
|
67
|
+
- - ">="
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
hash: 3
|
70
|
+
segments:
|
71
|
+
- 0
|
72
|
+
version: "0"
|
73
|
+
type: :development
|
74
|
+
requirement: *id004
|
75
|
+
name: mini_magick
|
76
|
+
prerelease: false
|
77
|
+
- !ruby/object:Gem::Dependency
|
78
|
+
version_requirements: &id005 !ruby/object:Gem::Requirement
|
65
79
|
none: false
|
66
80
|
requirements:
|
67
81
|
- - ~>
|
@@ -73,11 +87,11 @@ dependencies:
|
|
73
87
|
- 5
|
74
88
|
version: 1.1.5
|
75
89
|
type: :development
|
76
|
-
requirement: *
|
90
|
+
requirement: *id005
|
77
91
|
name: css_parser
|
78
92
|
prerelease: false
|
79
93
|
- !ruby/object:Gem::Dependency
|
80
|
-
version_requirements: &
|
94
|
+
version_requirements: &id006 !ruby/object:Gem::Requirement
|
81
95
|
none: false
|
82
96
|
requirements:
|
83
97
|
- - ~>
|
@@ -89,11 +103,11 @@ dependencies:
|
|
89
103
|
- 3
|
90
104
|
version: 3.0.3
|
91
105
|
type: :development
|
92
|
-
requirement: *
|
106
|
+
requirement: *id006
|
93
107
|
name: rails
|
94
108
|
prerelease: false
|
95
109
|
- !ruby/object:Gem::Dependency
|
96
|
-
version_requirements: &
|
110
|
+
version_requirements: &id007 !ruby/object:Gem::Requirement
|
97
111
|
none: false
|
98
112
|
requirements:
|
99
113
|
- - ">"
|
@@ -104,11 +118,11 @@ dependencies:
|
|
104
118
|
- 0
|
105
119
|
version: "2.0"
|
106
120
|
type: :development
|
107
|
-
requirement: *
|
121
|
+
requirement: *id007
|
108
122
|
name: test-unit
|
109
123
|
prerelease: false
|
110
124
|
- !ruby/object:Gem::Dependency
|
111
|
-
version_requirements: &
|
125
|
+
version_requirements: &id008 !ruby/object:Gem::Requirement
|
112
126
|
none: false
|
113
127
|
requirements:
|
114
128
|
- - ~>
|
@@ -120,10 +134,10 @@ dependencies:
|
|
120
134
|
- 2
|
121
135
|
version: 4.4.2
|
122
136
|
type: :development
|
123
|
-
requirement: *
|
137
|
+
requirement: *id008
|
124
138
|
name: ZenTest
|
125
139
|
prerelease: false
|
126
|
-
description: A Railtie that provides
|
140
|
+
description: A Railtie that provides an asset management system for css, javascript, and sprites in your Rails applications and engines. ActiveAssets includes two libraries, ActiveExpansions and ActiveSprites. ActiveSprites generates sprites defined by a dsl similar to a route definition. Similarly, ActiveExpansions' dsl creates ActionView::Helpers::AssetTagHelper javascript and stylesheet expansions, and adds additional features
|
127
141
|
email:
|
128
142
|
- sam@wildfireapp.com
|
129
143
|
executables: []
|
@@ -153,10 +167,12 @@ files:
|
|
153
167
|
- lib/active_assets/active_expansions/stylesheets.rb
|
154
168
|
- lib/active_assets/active_expansions/type_inferrable.rb
|
155
169
|
- lib/active_assets/active_sprites.rb
|
156
|
-
- lib/active_assets/active_sprites/chunky_png_runner.rb
|
157
170
|
- lib/active_assets/active_sprites/configurable.rb
|
158
171
|
- lib/active_assets/active_sprites/railtie.rb
|
159
|
-
- lib/active_assets/active_sprites/
|
172
|
+
- lib/active_assets/active_sprites/runners/abstract_runner.rb
|
173
|
+
- lib/active_assets/active_sprites/runners/chunky_png_runner.rb
|
174
|
+
- lib/active_assets/active_sprites/runners/mini_magick_runner.rb
|
175
|
+
- lib/active_assets/active_sprites/runners/rmagick_runner.rb
|
160
176
|
- lib/active_assets/active_sprites/sprite.rb
|
161
177
|
- lib/active_assets/active_sprites/sprite_piece.rb
|
162
178
|
- lib/active_assets/active_sprites/sprite_stylesheet.rb
|
@@ -170,7 +186,9 @@ files:
|
|
170
186
|
- script/console
|
171
187
|
- test/active_assets/active_expansions/asset_test.rb
|
172
188
|
- test/active_assets/active_expansions/expansions_test.rb
|
173
|
-
- test/active_assets/active_sprites/
|
189
|
+
- test/active_assets/active_sprites/runners/chunky_png_runner_test.rb
|
190
|
+
- test/active_assets/active_sprites/runners/mini_magick_runner_test.rb
|
191
|
+
- test/active_assets/active_sprites/runners/rmagick_runner_test.rb
|
174
192
|
- test/active_assets/active_sprites/sprite_piece_test.rb
|
175
193
|
- test/active_assets/active_sprites/sprite_test.rb
|
176
194
|
- test/active_assets/active_sprites/sprites_test.rb
|
@@ -236,8 +254,7 @@ files:
|
|
236
254
|
- test/fixtures/rails_root/public/stylesheets/bar/bas.css
|
237
255
|
- test/fixtures/rails_root/public/stylesheets/bas/bar.css
|
238
256
|
- test/helper.rb
|
239
|
-
- test/
|
240
|
-
- test/raster_graphics_test.rb
|
257
|
+
- test/support/abstract_runner.rb
|
241
258
|
- test/support/rails_helper.rb
|
242
259
|
has_rdoc: true
|
243
260
|
homepage: http://github.com/shwoodard/active_assets
|
@@ -272,11 +289,13 @@ rubyforge_project: activeassets
|
|
272
289
|
rubygems_version: 1.4.2
|
273
290
|
signing_key:
|
274
291
|
specification_version: 3
|
275
|
-
summary: A Railtie that provides
|
292
|
+
summary: A Railtie that provides an asset management system for css, javascript, and sprites in your Rails applications and engines.
|
276
293
|
test_files:
|
277
294
|
- test/active_assets/active_expansions/asset_test.rb
|
278
295
|
- test/active_assets/active_expansions/expansions_test.rb
|
279
|
-
- test/active_assets/active_sprites/
|
296
|
+
- test/active_assets/active_sprites/runners/chunky_png_runner_test.rb
|
297
|
+
- test/active_assets/active_sprites/runners/mini_magick_runner_test.rb
|
298
|
+
- test/active_assets/active_sprites/runners/rmagick_runner_test.rb
|
280
299
|
- test/active_assets/active_sprites/sprite_piece_test.rb
|
281
300
|
- test/active_assets/active_sprites/sprite_test.rb
|
282
301
|
- test/active_assets/active_sprites/sprites_test.rb
|
@@ -342,6 +361,5 @@ test_files:
|
|
342
361
|
- test/fixtures/rails_root/public/stylesheets/bar/bas.css
|
343
362
|
- test/fixtures/rails_root/public/stylesheets/bas/bar.css
|
344
363
|
- test/helper.rb
|
345
|
-
- test/
|
346
|
-
- test/raster_graphics_test.rb
|
364
|
+
- test/support/abstract_runner.rb
|
347
365
|
- test/support/rails_helper.rb
|
@@ -1,119 +0,0 @@
|
|
1
|
-
require 'action_controller'
|
2
|
-
require 'action_view'
|
3
|
-
require 'rack/mount'
|
4
|
-
require 'action_view'
|
5
|
-
require 'fileutils'
|
6
|
-
begin
|
7
|
-
require 'oily_png'
|
8
|
-
rescue LoadError
|
9
|
-
require 'chunky_png'
|
10
|
-
end
|
11
|
-
|
12
|
-
module ActiveAssets
|
13
|
-
module ActiveSprites
|
14
|
-
class ChunkyPngRunner
|
15
|
-
class AssetContext < ActionView::Base
|
16
|
-
end
|
17
|
-
|
18
|
-
def initialize(sprites)
|
19
|
-
@sprites = if ENV['SPRITE']
|
20
|
-
sprites.select do |name, sprite|
|
21
|
-
ENV['SPRITE'].split(',').map(&:strip).any? do |sp|
|
22
|
-
# were going to be very forgiving
|
23
|
-
name == sp ||
|
24
|
-
name == sp.to_sym ||
|
25
|
-
name == ::Rack::Mount::Utils.normalize_path(sp)
|
26
|
-
end
|
27
|
-
end.map(&:last)
|
28
|
-
else
|
29
|
-
sprites.values
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
def generate!(railtie = Rails.application, debug = ENV['DEBUG'])
|
34
|
-
p "Engine Class Name: #{railtie.class.name}" if debug
|
35
|
-
|
36
|
-
context = setup_context(railtie)
|
37
|
-
|
38
|
-
@sprites.each do |sprite|
|
39
|
-
next if sprite.sprite_pieces.empty?
|
40
|
-
sprite_path = sanitize_asset_path(context.image_path(sprite.path))
|
41
|
-
p "Sprite Path: #{sprite_path}" if debug
|
42
|
-
sprite_stylesheet_path = sanitize_asset_path(context.stylesheet_path(sprite.stylesheet_path))
|
43
|
-
p "Sprite Stylesheet Path: #{sprite_stylesheet_path}" if debug
|
44
|
-
|
45
|
-
orientation = sprite.orientation.to_s
|
46
|
-
sprite_pieces = sprite.sprite_pieces
|
47
|
-
|
48
|
-
begin
|
49
|
-
width, height = 0, 0
|
50
|
-
image_list = []
|
51
|
-
|
52
|
-
sprite_pieces.each do |sp|
|
53
|
-
sprite_piece_path = File.join(railtie.config.paths.public.to_a.first, sanitize_asset_path(context.image_path(sp.path)))
|
54
|
-
sp_image = ChunkyPNG::Image.from_file(sprite_piece_path)
|
55
|
-
image_list << sp_image
|
56
|
-
sp.details = SpritePiece::Details.new(
|
57
|
-
sprite.url.present? ? sprite.url : sprite_path,
|
58
|
-
orientation == Sprite::Orientation::VERTICAL ? 0 : width,
|
59
|
-
orientation == Sprite::Orientation::VERTICAL ? height : 0,
|
60
|
-
sp_image.width,
|
61
|
-
sp_image.height
|
62
|
-
)
|
63
|
-
|
64
|
-
width = orientation == Sprite::Orientation::HORIZONTAL ? width + sp_image.width : [width, sp_image.width].max
|
65
|
-
height = orientation == Sprite::Orientation::VERTICAL ? height + sp_image.height : [height, sp_image.height].max
|
66
|
-
end
|
67
|
-
|
68
|
-
@sprite = ChunkyPNG::Image.new(width, height, ChunkyPNG::Color::TRANSPARENT)
|
69
|
-
|
70
|
-
image_list.each_with_index do |image, i|
|
71
|
-
@sprite.replace(image, sprite_pieces[i].details.x, sprite_pieces[i].details.y)
|
72
|
-
end
|
73
|
-
|
74
|
-
stylesheet = SpriteStylesheet.new(sprite_pieces)
|
75
|
-
stylesheet.write File.join(railtie.config.paths.public.to_a.first, sprite_stylesheet_path)
|
76
|
-
write File.join(railtie.config.paths.public.to_a.first, sprite_path), sprite.quality
|
77
|
-
ensure
|
78
|
-
finish
|
79
|
-
end
|
80
|
-
end
|
81
|
-
end
|
82
|
-
|
83
|
-
private
|
84
|
-
def write(path, quality = nil)
|
85
|
-
FileUtils.mkdir_p(File.dirname(path))
|
86
|
-
@sprite.save(path)
|
87
|
-
end
|
88
|
-
|
89
|
-
def finish
|
90
|
-
@sprite = nil
|
91
|
-
end
|
92
|
-
|
93
|
-
def sanitize_asset_path(path)
|
94
|
-
path.split('?').first
|
95
|
-
end
|
96
|
-
|
97
|
-
def setup_context(railtie)
|
98
|
-
unless railtie.config.respond_to?(:action_controller)
|
99
|
-
railtie.config.action_controller = ActiveSupport::OrderedOptions.new
|
100
|
-
|
101
|
-
paths = railtie.config.paths
|
102
|
-
options = railtie.config.action_controller
|
103
|
-
|
104
|
-
options.assets_dir ||= paths.public.to_a.first
|
105
|
-
options.javascripts_dir ||= paths.public.javascripts.to_a.first
|
106
|
-
options.stylesheets_dir ||= paths.public.stylesheets.to_a.first
|
107
|
-
|
108
|
-
ActiveSupport.on_load(:action_controller) do
|
109
|
-
options.each { |k,v| send("#{k}=", v) }
|
110
|
-
end
|
111
|
-
end
|
112
|
-
|
113
|
-
controller = ActionController::Base.new
|
114
|
-
AssetContext.new(railtie.config.action_controller, {}, controller)
|
115
|
-
end
|
116
|
-
|
117
|
-
end
|
118
|
-
end
|
119
|
-
end
|