mirror of
https://github.com/github/rails.git
synced 2026-01-10 07:07:54 -05:00
Asset manifest includes aliases for foo.js -> foo/index.js and vice versa. Bump Sprockets requirements from 2.1+ to 2.2+ and let it answer "should we compile this asset?" for us.
This commit is contained in:
@@ -1,5 +1,19 @@
|
||||
## Rails 3.2.9 (unreleased) ##
|
||||
|
||||
* Precompiled assets include aliases from foo.js to foo/index.js and vice versa.
|
||||
|
||||
# Precompiles phone-<digest>.css and aliases phone/index.css to phone.css.
|
||||
config.assets.precompile = [ 'phone.css' ]
|
||||
|
||||
# Precompiles phone/index-<digest>.css and aliases phone.css to phone/index.css.
|
||||
config.assets.precompile = [ 'phone/index.css' ]
|
||||
|
||||
# Both of these work with either precompile thanks to their aliases.
|
||||
<%= stylesheet_link_tag 'phone', media: 'all' %>
|
||||
<%= stylesheet_link_tag 'phone/index', media: 'all' %>
|
||||
|
||||
*Jeremy Kemper*
|
||||
|
||||
* `assert_template` is no more passing with what ever string that matches
|
||||
with the template name.
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@ Gem::Specification.new do |s|
|
||||
s.add_dependency('rack', '~> 1.4.0')
|
||||
s.add_dependency('rack-test', '~> 0.6.1')
|
||||
s.add_dependency('journey', '~> 1.0.4')
|
||||
s.add_dependency('sprockets', '~> 2.1')
|
||||
s.add_dependency('sprockets', '~> 2.2')
|
||||
s.add_dependency('erubis', '~> 2.7.0')
|
||||
|
||||
s.add_development_dependency('tzinfo', '~> 0.3.29')
|
||||
|
||||
@@ -15,13 +15,11 @@ module Sprockets
|
||||
|
||||
def compile
|
||||
manifest = {}
|
||||
env.each_logical_path do |logical_path|
|
||||
if File.basename(logical_path)[/[^\.]+/, 0] == 'index'
|
||||
logical_path.sub!(/\/index\./, '.')
|
||||
end
|
||||
next unless compile_path?(logical_path)
|
||||
env.each_logical_path(paths) do |logical_path|
|
||||
if asset = env.find_asset(logical_path)
|
||||
manifest[logical_path] = write_asset(asset)
|
||||
digest_path = write_asset(asset)
|
||||
manifest[asset.logical_path] = digest_path
|
||||
manifest[aliased_path_for(asset.logical_path)] = digest_path
|
||||
end
|
||||
end
|
||||
write_manifest(manifest) if @manifest
|
||||
@@ -43,22 +41,16 @@ module Sprockets
|
||||
end
|
||||
end
|
||||
|
||||
def compile_path?(logical_path)
|
||||
paths.each do |path|
|
||||
case path
|
||||
when Regexp
|
||||
return true if path.match(logical_path)
|
||||
when Proc
|
||||
return true if path.call(logical_path)
|
||||
else
|
||||
return true if File.fnmatch(path.to_s, logical_path)
|
||||
end
|
||||
end
|
||||
false
|
||||
end
|
||||
|
||||
def path_for(asset)
|
||||
@digest ? asset.digest_path : asset.logical_path
|
||||
end
|
||||
|
||||
def aliased_path_for(logical_path)
|
||||
if File.basename(logical_path).start_with?('index')
|
||||
logical_path.sub(/\/index([^\/]+)$/, '\1')
|
||||
else
|
||||
logical_path.sub(/\.([^\/]+)$/, '/index.\1')
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -122,8 +122,23 @@ module ApplicationTests
|
||||
app_file "app/assets/javascripts/something/index.js.erb", "alert();"
|
||||
|
||||
precompile!
|
||||
|
||||
assert File.exists?("#{app_path}/public/assets/something.js")
|
||||
|
||||
assets = YAML.load_file("#{app_path}/public/assets/manifest.yml")
|
||||
assert_not_nil assets['something/index.js'], "Expected something/index.js among #{assets.keys.inspect}"
|
||||
assert_not_nil assets['something.js'], "Expected something.js among #{assets.keys.inspect}"
|
||||
end
|
||||
|
||||
test "precompile something/index.js for directory containing index file" do
|
||||
add_to_config "config.assets.precompile = [ 'something/index.js' ]"
|
||||
app_file "app/assets/javascripts/something/index.js.erb", "alert();"
|
||||
|
||||
precompile!
|
||||
assert File.exists?("#{app_path}/public/assets/something/index.js")
|
||||
|
||||
assets = YAML.load_file("#{app_path}/public/assets/manifest.yml")
|
||||
assert_not_nil assets['something/index.js'], "Expected something/index.js among #{assets.keys.inspect}"
|
||||
assert_not_nil assets['something.js'], "Expected something.js among #{assets.keys.inspect}"
|
||||
end
|
||||
|
||||
test "asset pipeline should use a Sprockets::Index when config.assets.digest is true" do
|
||||
|
||||
Reference in New Issue
Block a user