Skip to content

Commit 71fe1a7

Browse files
rafaelfrancaRafael Mendonça França
authored and
Rafael Mendonça França
committed
Merge pull request #143 from dskang/js-css-path
Use `asset_path` with error checking for all calls to `path_to_asset`
1 parent b5de852 commit 71fe1a7

File tree

2 files changed

+68
-23
lines changed

2 files changed

+68
-23
lines changed

lib/sprockets/rails/helper.rb

+5-10
Original file line numberDiff line numberDiff line change
@@ -85,17 +85,12 @@ def compute_asset_path(path, options = {})
8585
# Computes the full URL to a asset in the public directory. This
8686
# method checks for errors before returning path.
8787
def asset_path(source, options = {})
88-
check_errors_for(source, options)
89-
path_to_asset(source, options)
90-
end
91-
alias :path_to_asset_with_errors :asset_path
92-
93-
# Computes the full URL to a asset in the public directory. This
94-
# will use +asset_path+ internally, so most of their behaviors
95-
# will be the same.
96-
def asset_url(source, options = {})
97-
path_to_asset_with_errors(source, options.merge(:protocol => :request))
88+
unless options[:debug]
89+
check_errors_for(source, options)
90+
end
91+
super(source, options)
9892
end
93+
alias :path_to_asset :asset_path
9994

10095
# Get digest for asset path.
10196
#

test/test_helper.rb

+63-13
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,8 @@ def setup
3333
@foo_js_digest = @assets['foo.js'].digest
3434
@foo_css_digest = @assets['foo.css'].digest
3535
@logo_digest = @assets["logo.png"].digest
36+
37+
Sprockets::Rails::Helper.raise_runtime_errors = false
3638
end
3739

3840
def test_truth
@@ -370,10 +372,25 @@ def test_stylesheet_path
370372
assert_equal "/assets/foo-#{@foo_css_digest}.css", @view.stylesheet_path("foo")
371373
end
372374

373-
def test_public_folder_fallback_works_correctly
375+
def test_asset_digest_path
376+
assert_equal "foo-#{@foo_js_digest}.js", @view.asset_digest_path("foo.js")
377+
assert_equal "foo-#{@foo_css_digest}.css", @view.asset_digest_path("foo.css")
378+
end
379+
380+
def test_asset_digest
381+
assert_equal @foo_js_digest, @view.asset_digest("foo.js")
382+
assert_equal @foo_css_digest, @view.asset_digest("foo.css")
383+
end
384+
end
385+
386+
class PrecompileHelperTest < HelperTest
387+
def setup
388+
super
389+
374390
Sprockets::Rails::Helper.raise_runtime_errors = true
375-
@view.debug_assets = true
391+
end
376392

393+
def test_public_folder_fallback_works_correctly
377394
@view.asset_path("asset-does-not-exist-foo.js")
378395
@view.asset_url("asset-does-not-exist-foo.js")
379396
@view.stylesheet_link_tag("asset-does-not-exist-foo.js")
@@ -397,10 +414,7 @@ def test_absolute_asset_path_error
397414
end
398415

399416
def test_asset_not_precompiled_error
400-
Sprockets::Rails::Helper.raise_runtime_errors = true
401-
Sprockets::Rails::Helper.precompile = [ lambda {|logical_path| false } ]
402-
@view.assets_environment = @assets
403-
@view.debug_assets = true
417+
Sprockets::Rails::Helper.precompile = [ lambda {|logical_path| false } ]
404418

405419
assert_raises(Sprockets::Rails::Helper::AssetFilteredError) do
406420
@view.asset_path("foo.js")
@@ -410,6 +424,14 @@ def test_asset_not_precompiled_error
410424
@view.asset_url("foo.js")
411425
end
412426

427+
assert_raises(Sprockets::Rails::Helper::AssetFilteredError) do
428+
@view.javascript_path("foo")
429+
end
430+
431+
assert_raises(Sprockets::Rails::Helper::AssetFilteredError) do
432+
@view.javascript_url("foo")
433+
end
434+
413435
assert_raises(Sprockets::Rails::Helper::AssetFilteredError) do
414436
@view.javascript_include_tag("foo.js")
415437
end
@@ -426,10 +448,20 @@ def test_asset_not_precompiled_error
426448

427449
@view.asset_path("foo.js")
428450
@view.asset_url("foo.js")
451+
@view.javascript_path("foo")
452+
@view.javascript_url("foo")
429453
@view.javascript_include_tag("foo.js")
430454
@view.javascript_include_tag("foo")
431455
@view.javascript_include_tag(:foo)
432456

457+
assert_raises(Sprockets::Rails::Helper::AssetFilteredError) do
458+
@view.stylesheet_path("foo")
459+
end
460+
461+
assert_raises(Sprockets::Rails::Helper::AssetFilteredError) do
462+
@view.stylesheet_url("foo")
463+
end
464+
433465
assert_raises(Sprockets::Rails::Helper::AssetFilteredError) do
434466
@view.stylesheet_link_tag("foo")
435467
end
@@ -440,31 +472,49 @@ def test_asset_not_precompiled_error
440472
@view.javascript_include_tag("foo")
441473
end
442474

475+
@view.stylesheet_path("foo")
476+
@view.stylesheet_url("foo")
443477
@view.stylesheet_link_tag("foo")
444478

445479
Sprockets::Rails::Helper.precompile = [ lambda {|logical_path| true } ]
446480

447481
@view.asset_path("foo.js")
448482
@view.asset_url("foo.js")
483+
@view.javascript_path("foo")
484+
@view.javascript_url("foo")
449485
@view.javascript_include_tag("foo.js")
450486
@view.javascript_include_tag("foo")
451487
@view.javascript_include_tag(:foo)
488+
@view.stylesheet_path("foo")
489+
@view.stylesheet_url("foo")
452490
@view.stylesheet_link_tag("foo")
453491
end
454492

455-
def test_asset_digest_path
456-
assert_equal "foo-#{@foo_js_digest}.js", @view.asset_digest_path("foo.js")
457-
assert_equal "foo-#{@foo_css_digest}.css", @view.asset_digest_path("foo.css")
493+
def test_debug_mode
494+
@view.debug_assets = true
495+
496+
Sprockets::Rails::Helper.precompile = [ lambda {|logical_path| false } ]
497+
498+
assert_raises(Sprockets::Rails::Helper::AssetFilteredError) do
499+
@view.javascript_include_tag("bar")
500+
end
501+
502+
Sprockets::Rails::Helper.precompile = ['bar.js']
503+
504+
@view.javascript_include_tag("bar")
458505
end
459506

460-
def test_asset_digest
461-
assert_equal @foo_js_digest, @view.asset_digest("foo.js")
462-
assert_equal @foo_css_digest, @view.asset_digest("foo.css")
507+
def test_non_javascripts_and_stylesheets
508+
loose_app_assets = lambda do |filename|
509+
!%w(.js .css).include?(File.extname(filename))
510+
end
511+
Sprockets::Rails::Helper.precompile = [loose_app_assets, /(?:\/|\\|\A)application\.(css|js)$/]
512+
513+
@view.asset_path("logo.png")
463514
end
464515
end
465516

466517
class AutomaticDependenciesFromHelpersTest < HelperTest
467-
468518
def test_dependency_added
469519
assert_equal ["logo.png", "url.css.erb"], @assets['url.css'].send(:dependency_paths).map {|d| File.basename(d.pathname) }.sort
470520
end

0 commit comments

Comments
 (0)