提交 5e519fb0 编写于 作者: J Joshua Peek

Merge branch '3-1-stable'

Conflicts:
	actionpack/actionpack.gemspec
	activemodel/activemodel.gemspec
......@@ -20,10 +20,11 @@
s.add_dependency('activemodel', version)
s.add_dependency('rack-cache', '~> 1.0.1')
s.add_dependency('builder', '~> 3.0.0')
s.add_dependency('i18n', '~> 0.6')
s.add_dependency('rack', '~> 1.3.0.beta2')
s.add_dependency('rack-test', '~> 0.6.0')
s.add_dependency('rack-mount', '~> 0.8.1')
s.add_dependency('sprockets', '~> 2.0.0.beta.5')
s.add_dependency('sprockets', '~> 2.0.0.beta.8')
s.add_dependency('tzinfo', '~> 0.3.27')
s.add_dependency('erubis', '~> 2.7.0')
end
......@@ -4,28 +4,53 @@
module ActionView
module Helpers
module SprocketsHelper
def asset_path(source, default_ext = nil)
sprockets_asset_paths.compute_public_path(source, 'assets', default_ext, true)
def debug_assets?
params[:debug_assets] == '1' ||
params[:debug_assets] == 'true'
end
def asset_path(source, default_ext = nil, body = false)
source = source.logical_path if source.respond_to?(:logical_path)
path = sprockets_asset_paths.compute_public_path(source, 'assets', default_ext, true)
body ? "#{path}?body=1" : path
end
def sprockets_javascript_include_tag(source, options = {})
options = {
'type' => "text/javascript",
'src' => asset_path(source, 'js')
}.merge(options.stringify_keys)
debug = options.key?(:debug) ? options.delete(:debug) : debug_assets?
body = options.key?(:body) ? options.delete(:body) : false
content_tag 'script', "", options
if debug && asset = sprockets_asset_paths.asset_for(source, 'js')
asset.to_a.map { |dep|
sprockets_javascript_include_tag(dep, :debug => false, :body => true)
}.join("\n").html_safe
else
options = {
'type' => "text/javascript",
'src' => asset_path(source, 'js', body)
}.merge(options.stringify_keys)
content_tag 'script', "", options
end
end
def sprockets_stylesheet_link_tag(source, options = {})
options = {
'rel' => "stylesheet",
'type' => "text/css",
'media' => "screen",
'href' => asset_path(source, 'css')
}.merge(options.stringify_keys)
debug = options.key?(:debug) ? options.delete(:debug) : debug_assets?
body = options.key?(:body) ? options.delete(:body) : false
tag 'link', options
if debug && asset = sprockets_asset_paths.asset_for(source, 'css')
asset.to_a.map { |dep|
sprockets_stylesheet_link_tag(dep, :debug => false, :body => true)
}.join("\n").html_safe
else
options = {
'rel' => "stylesheet",
'type' => "text/css",
'media' => "screen",
'href' => asset_path(source, 'css', body)
}.merge(options.stringify_keys)
tag 'link', options
end
end
private
......@@ -39,6 +64,13 @@ def sprockets_asset_paths
end
class AssetPaths < ActionView::Helpers::AssetPaths #:nodoc:
def asset_for(source, ext)
source = source.to_s
return nil if is_uri?(source)
source = rewrite_extension(source, nil, ext)
assets[source]
end
def rewrite_asset_path(source, dir)
if source[0] == ?/
source
......@@ -66,4 +98,4 @@ def performing_caching?
end
end
end
end
\ No newline at end of file
end
......@@ -18,6 +18,7 @@ def setup
super
@controller = BasicController.new
@controller.stubs(:params).returns({})
@request = Class.new do
def protocol() 'http://' end
......@@ -90,10 +91,13 @@ def url_for(*args)
sprockets_javascript_include_tag("xmlhr.js")
assert_equal '<script src="http://www.example.com/xmlhr" type="text/javascript"></script>',
sprockets_javascript_include_tag("http://www.example.com/xmlhr")
assert_equal "<script src=\"/assets/xmlhr-d41d8cd98f00b204e9800998ecf8427e.js?body=1\" type=\"text/javascript\"></script>\n<script src=\"/assets/application-d41d8cd98f00b204e9800998ecf8427e.js?body=1\" type=\"text/javascript\"></script>",
sprockets_javascript_include_tag(:application, :debug => true)
end
test "stylesheet path" do
assert_equal "/assets/application-d41d8cd98f00b204e9800998ecf8427e.css", asset_path(:application, "css")
assert_equal "/assets/application-68b329da9893e34099c7d8ad5cb9c940.css", asset_path(:application, "css")
assert_equal "/assets/style-d41d8cd98f00b204e9800998ecf8427e.css", asset_path("style", "css")
assert_equal "/assets/dir/style-d41d8cd98f00b204e9800998ecf8427e.css", asset_path("dir/style.css", "css")
......@@ -106,7 +110,7 @@ def url_for(*args)
end
test "stylesheet link tag" do
assert_equal '<link href="/assets/application-d41d8cd98f00b204e9800998ecf8427e.css" media="screen" rel="stylesheet" type="text/css" />',
assert_equal '<link href="/assets/application-68b329da9893e34099c7d8ad5cb9c940.css" media="screen" rel="stylesheet" type="text/css" />',
sprockets_stylesheet_link_tag(:application)
assert_equal '<link href="/assets/style-d41d8cd98f00b204e9800998ecf8427e.css" media="screen" rel="stylesheet" type="text/css" />',
......@@ -120,5 +124,8 @@ def url_for(*args)
sprockets_stylesheet_link_tag("style", :media => "all")
assert_equal '<link href="/assets/style-d41d8cd98f00b204e9800998ecf8427e.css" media="print" rel="stylesheet" type="text/css" />',
sprockets_stylesheet_link_tag("style", :media => "print")
assert_equal "<link href=\"/assets/style-d41d8cd98f00b204e9800998ecf8427e.css?body=1\" media=\"screen\" rel=\"stylesheet\" type=\"text/css\" />\n<link href=\"/assets/application-68b329da9893e34099c7d8ad5cb9c940.css?body=1\" media=\"screen\" rel=\"stylesheet\" type=\"text/css\" />",
sprockets_stylesheet_link_tag(:application, :debug => true)
end
end
......@@ -18,5 +18,6 @@
s.add_dependency('activesupport', version)
s.add_dependency('builder', '~> 3.0.0')
s.add_dependency('i18n', '~> 0.6')
s.add_dependency('bcrypt-ruby', '~> 2.1.4')
end
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册