Skip to content

Commit 8689007

Browse files
committed
config.assets.manifest:
- fix Rake task - fix config.assets.compile = false case - add additional test cases related to config.assets.manifest option
1 parent 72034a6 commit 8689007

File tree

4 files changed

+41
-7
lines changed

4 files changed

+41
-7
lines changed

lib/sprockets/rails/task.rb

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,14 @@ def assets
3737
end
3838
end
3939

40+
def manifest
41+
if app
42+
Sprockets::Manifest.new(index, output, app.config.assets.manifest)
43+
else
44+
super
45+
end
46+
end
47+
4048
def cache_path
4149
if app
4250
"#{app.config.root}/tmp/cache/assets"

lib/sprockets/railtie.rb

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ def configure(&block)
6666
config.after_initialize do |app|
6767
config = app.config
6868

69-
manifest_path = config.assets.manifest || File.join(config.paths['public'].first, config.assets.prefix)
69+
manifest_assets_path = File.join(config.paths['public'].first, config.assets.prefix)
7070

7171
# Configuration options that should invalidate
7272
# the Sprockets cache when changed.
@@ -99,9 +99,9 @@ def configure(&block)
9999

100100
if config.assets.compile
101101
self.assets_environment = app.assets
102-
self.assets_manifest = Sprockets::Manifest.new(app.assets, manifest_path)
102+
self.assets_manifest = Sprockets::Manifest.new(app.assets, manifest_assets_path, config.assets.manifest)
103103
else
104-
self.assets_manifest = Sprockets::Manifest.new(manifest_path)
104+
self.assets_manifest = Sprockets::Manifest.new(manifest_assets_path, config.assets.manifest)
105105
end
106106
end
107107

test/test_railtie.rb

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -184,7 +184,8 @@ def test_manifest_path
184184
end
185185
app.initialize!
186186

187-
assert_match %r{config/foo/manifest-.*.json}, ActionView::Base.assets_manifest.path
187+
assert_match %r{config/foo/manifest-.*\.json$}, ActionView::Base.assets_manifest.path
188+
assert_match %r{public/assets$}, ActionView::Base.assets_manifest.dir
188189
end
189190

190191
def test_manifest_path_respects_rails_public_path
@@ -193,6 +194,7 @@ def test_manifest_path_respects_rails_public_path
193194
end
194195
app.initialize!
195196

196-
assert_match %r{test_public/assets/manifest-.*.json}, ActionView::Base.assets_manifest.path
197+
assert_match %r{test_public/assets/manifest-.*\.json$}, ActionView::Base.assets_manifest.path
198+
assert_match %r{test_public/assets$}, ActionView::Base.assets_manifest.dir
197199
end
198200
end

test/test_task.rb

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,10 @@ def setup
1616
@assets = Sprockets::Environment.new
1717
@assets.append_path FIXTURES_PATH
1818

19-
@dir = File.join(Dir::tmpdir, 'rails/task')
19+
@dir = File.join(Dir::tmpdir, 'rails', 'task')
2020

21-
@manifest = Sprockets::Manifest.new(@assets, @dir)
21+
@manifest_dir = File.join(Dir::tmpdir, 'rails', 'manifest')
22+
@manifest = Sprockets::Manifest.new(@assets, @dir, @manifest_dir)
2223

2324
@environment_ran = false
2425
# Stub Rails environment task
@@ -39,6 +40,9 @@ def teardown
3940

4041
FileUtils.rm_rf(@dir)
4142
assert Dir["#{@dir}/*"].empty?
43+
44+
FileUtils.rm_rf(@manifest_dir)
45+
assert Dir["#{@manifest_dir}/*"].empty?
4246
end
4347

4448
def test_precompile
@@ -49,6 +53,26 @@ def test_precompile
4953

5054
@rake['assets:precompile'].invoke
5155

56+
assert @environment_ran
57+
assert Dir["#{@manifest_dir}/manifest-*.json"].first
58+
assert File.exist?("#{@dir}/#{digest_path}")
59+
end
60+
61+
def test_precompile_without_manifest
62+
Sprockets::Rails::Task.new do |t|
63+
t.environment = @assets
64+
t.manifest = Sprockets::Manifest.new(@assets, @dir, nil)
65+
t.assets = ['foo.js', 'foo-modified.js']
66+
t.log_level = :fatal
67+
end
68+
69+
assert !@environment_ran
70+
71+
digest_path = @assets['foo.js'].digest_path
72+
assert !File.exist?("#{@dir}/#{digest_path}")
73+
74+
@rake['assets:precompile'].invoke
75+
5276
assert @environment_ran
5377
assert Dir["#{@dir}/manifest-*.json"].first
5478
assert File.exist?("#{@dir}/#{digest_path}")

0 commit comments

Comments
 (0)