Skip to content

Commit fad3d29

Browse files
committed
[Close #321] Double check precompile missing asset
When in classes are not cached, we're not in a state where performance matters as much (like development mode) we want to see if any new files have been added to our precompile list by nature of them being added to disk. For example if you add an image to `images` and you have linked the directory: ``` //= link_directory ../images ``` This change also eliminates the need to restart the server in development when changes are made when using a manifest.js and Sprockets 4.
1 parent 907cf04 commit fad3d29

File tree

2 files changed

+11
-4
lines changed

2 files changed

+11
-4
lines changed

lib/sprockets/rails/helper.rb

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,7 @@ def initialize(source)
1818
"`//= link_directory ../javascripts .js`\n" +
1919
"`//= link_directory ../stylesheets .css`\n" +
2020
"`//= link_tree ../javascripts .js`\n" +
21-
"`//= link_tree ../images`\n" +
22-
"and restart your server"
21+
"`//= link_tree ../images`\n"
2322
else
2423
"Asset was not declared to be precompiled in production.\n" +
2524
"Add `Rails.application.config.assets.precompile += " +

lib/sprockets/railtie.rb

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,13 +31,21 @@ class Configuration
3131
# Called from asset helpers to alert you if you reference an asset URL that
3232
# isn't precompiled and hence won't be available in production.
3333
def asset_precompiled?(logical_path)
34-
precompiled_assets.include? logical_path
34+
if precompiled_assets.include?(logical_path)
35+
true
36+
elsif !config.cache_classes
37+
# Check to see if precompile list has been updated
38+
precompiled_assets(true).include?(logical_path)
39+
else
40+
false
41+
end
3542
end
3643

3744
# Lazy-load the precompile list so we don't cause asset compilation at app
3845
# boot time, but ensure we cache the list so we don't recompute it for each
3946
# request or test case.
40-
def precompiled_assets
47+
def precompiled_assets(clear_cache = false)
48+
@precompiled_assets = nil if clear_cache
4149
@precompiled_assets ||= assets_manifest.find(config.assets.precompile).map(&:logical_path).to_set
4250
end
4351
end

0 commit comments

Comments
 (0)