sprockets-rails 2.0.1 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/LICENSE +1 -1
- data/README.md +16 -2
- data/lib/sprockets/rails/helper.rb +80 -1
- data/lib/sprockets/rails/legacy_asset_url_helper.rb +1 -2
- data/lib/sprockets/rails/task.rb +1 -0
- data/lib/sprockets/railtie.rb +18 -4
- metadata +19 -19
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f7cda4acb26f13dcaf19f3e20a80a993ce94a51d
|
4
|
+
data.tar.gz: 13edbe84e222532d684dd604c704b924ec112dd6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4469943e88ac45ffa9063b0bfa5db8c8875029b9d72a9482b5dbd5b0a9eca6659ea3c295bc5c5835ec698c8586641889d7876c30b882c189eef868590a9b786c
|
7
|
+
data.tar.gz: afe0a6f3db89ab3a79b0d2f5f1163ae96a61023b0297c9239d63cd14be6d2b882bc05d1e9908aaa5cea6b3949b1945502d10750e5ccaae60a1ddc21df98c23c2
|
data/LICENSE
CHANGED
data/README.md
CHANGED
@@ -37,7 +37,12 @@ You can also redefine the task with the built in task generator.
|
|
37
37
|
|
38
38
|
``` ruby
|
39
39
|
require 'sprockets/rails/task'
|
40
|
-
|
40
|
+
# clean the old tasks
|
41
|
+
Rake::Task["assets:environment"].clear
|
42
|
+
Rake::Task["assets:precompile"].clear
|
43
|
+
Rake::Task["assets:clean"].clear
|
44
|
+
Rake::Task["assets:clobber"].clear
|
45
|
+
Sprockets::Rails::Task.new(Rails.application) do |t|
|
41
46
|
t.environment = lambda { Rails.application.assets }
|
42
47
|
t.assets = %w( application.js application.css )
|
43
48
|
t.keep = 5
|
@@ -55,9 +60,14 @@ Also see [Sprockets::Rails::Task](https://github.com/josh/sprockets-rails/blob/m
|
|
55
60
|
|
56
61
|
Add additional assets to compile on deploy. Defaults to `application.js`, `application.css` and any other non-js/css file under `app/assets`.
|
57
62
|
|
63
|
+
**`config.assets.raise_runtime_errors`**
|
64
|
+
|
65
|
+
Set to `true` to enable additional runtime error checking. Recommended in the `development` environment to minimize unexpected behavior when deploying to `production`.
|
66
|
+
|
58
67
|
**`config.assets.paths`**
|
59
68
|
|
60
|
-
Add additional load paths to this Array. Rails includes `app/assets` and `vendor/assets` for you already. Plugins might want to add their custom paths to
|
69
|
+
Add additional load paths to this Array. Rails includes `app/assets`, `lib/assets` and `vendor/assets` for you already. Plugins might want to add their custom paths to this.
|
70
|
+
|
61
71
|
|
62
72
|
**`config.assets.version`**
|
63
73
|
|
@@ -73,6 +83,10 @@ config.assets.version = 'v2'
|
|
73
83
|
|
74
84
|
Defaults to `/assets`. Changes the directory to compile assets to.
|
75
85
|
|
86
|
+
**`config.assets.manifest`**
|
87
|
+
|
88
|
+
Defines the full path to be used for the asset precompiler's manifest file. Defaults to using the `config.assets.prefix` directory within the public folder.
|
89
|
+
|
76
90
|
**`config.assets.digest`**
|
77
91
|
|
78
92
|
Link to undigest asset filenames. This option will eventually go away. Unless when `compile` is disabled.
|
@@ -5,6 +5,39 @@ require 'active_support/core_ext/class/attribute'
|
|
5
5
|
module Sprockets
|
6
6
|
module Rails
|
7
7
|
module Helper
|
8
|
+
class << self
|
9
|
+
attr_accessor :precompile, :assets, :raise_runtime_errors
|
10
|
+
end
|
11
|
+
|
12
|
+
def precompile
|
13
|
+
Sprockets::Rails::Helper.precompile
|
14
|
+
end
|
15
|
+
|
16
|
+
def assets
|
17
|
+
Sprockets::Rails::Helper.assets
|
18
|
+
end
|
19
|
+
|
20
|
+
def raise_runtime_errors
|
21
|
+
Sprockets::Rails::Helper.raise_runtime_errors
|
22
|
+
end
|
23
|
+
|
24
|
+
class DependencyError < StandardError
|
25
|
+
def initialize(path, dep)
|
26
|
+
msg = "Asset depends on '#{dep}' to generate properly but has not declared the dependency\n"
|
27
|
+
msg << "Please add: `//= depend_on_asset \"#{dep}\"` to '#{path}'"
|
28
|
+
super msg
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
class AssetFilteredError < StandardError
|
33
|
+
def initialize(source)
|
34
|
+
msg = "Asset filtered out and will not be served: " <<
|
35
|
+
"add `config.assets.precompile += %w( #{source} )` " <<
|
36
|
+
"to `config/application.rb` and restart your server"
|
37
|
+
super(msg)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
8
41
|
if defined? ActionView::Helpers::AssetUrlHelper
|
9
42
|
include ActionView::Helpers::AssetUrlHelper
|
10
43
|
include ActionView::Helpers::AssetTagHelper
|
@@ -37,6 +70,9 @@ module Sprockets
|
|
37
70
|
end
|
38
71
|
|
39
72
|
def compute_asset_path(path, options = {})
|
73
|
+
# Check if we are inside Sprockets context before calling check_dependencies!.
|
74
|
+
check_dependencies!(path) if defined?(_dependency_assets)
|
75
|
+
|
40
76
|
if digest_path = asset_digest_path(path)
|
41
77
|
path = digest_path if digest_assets
|
42
78
|
path += "?body=1" if options[:debug]
|
@@ -46,6 +82,21 @@ module Sprockets
|
|
46
82
|
end
|
47
83
|
end
|
48
84
|
|
85
|
+
# Computes the full URL to a asset in the public directory. This
|
86
|
+
# method checks for errors before returning path.
|
87
|
+
def asset_path(source, options = {})
|
88
|
+
check_errors_for(source)
|
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))
|
98
|
+
end
|
99
|
+
|
49
100
|
# Get digest for asset path.
|
50
101
|
#
|
51
102
|
# path - String path
|
@@ -88,6 +139,7 @@ module Sprockets
|
|
88
139
|
|
89
140
|
if options["debug"] != false && request_debug_assets?
|
90
141
|
sources.map { |source|
|
142
|
+
check_errors_for(source)
|
91
143
|
if asset = lookup_asset_for_path(source, :type => :javascript)
|
92
144
|
asset.to_a.map do |a|
|
93
145
|
super(path_to_javascript(a.logical_path, :debug => true), options)
|
@@ -107,9 +159,9 @@ module Sprockets
|
|
107
159
|
# Eventually will be deprecated and replaced by source maps.
|
108
160
|
def stylesheet_link_tag(*sources)
|
109
161
|
options = sources.extract_options!.stringify_keys
|
110
|
-
|
111
162
|
if options["debug"] != false && request_debug_assets?
|
112
163
|
sources.map { |source|
|
164
|
+
check_errors_for(source)
|
113
165
|
if asset = lookup_asset_for_path(source, :type => :stylesheet)
|
114
166
|
asset.to_a.map do |a|
|
115
167
|
super(path_to_stylesheet(a.logical_path, :debug => true), options)
|
@@ -125,6 +177,33 @@ module Sprockets
|
|
125
177
|
end
|
126
178
|
|
127
179
|
protected
|
180
|
+
# Checks if the asset is included in the dependencies list.
|
181
|
+
def check_dependencies!(dep)
|
182
|
+
if raise_runtime_errors && !_dependency_assets.detect { |asset| asset.include?(dep) }
|
183
|
+
raise DependencyError.new(self.pathname, dep)
|
184
|
+
end
|
185
|
+
end
|
186
|
+
|
187
|
+
# Raise errors when source does not exist or is not in the precompiled list
|
188
|
+
def check_errors_for(source)
|
189
|
+
source = source.to_s
|
190
|
+
return source if !self.raise_runtime_errors || source.blank? || source =~ URI_REGEXP
|
191
|
+
asset = lookup_asset_for_path(source)
|
192
|
+
|
193
|
+
if asset && asset_needs_precompile?(source, asset.pathname.to_s)
|
194
|
+
raise AssetFilteredError.new(source)
|
195
|
+
end
|
196
|
+
end
|
197
|
+
|
198
|
+
# Returns true when an asset will not be available after precompile is run
|
199
|
+
def asset_needs_precompile?(source, filename)
|
200
|
+
if assets_environment && assets_environment.send(:matches_filter, precompile || [], source, filename)
|
201
|
+
false
|
202
|
+
else
|
203
|
+
true
|
204
|
+
end
|
205
|
+
end
|
206
|
+
|
128
207
|
# Enable split asset debugging. Eventually will be deprecated
|
129
208
|
# and replaced by source maps in Sprockets 3.x.
|
130
209
|
def request_debug_assets?
|
@@ -21,8 +21,7 @@ module Sprockets
|
|
21
21
|
source = compute_asset_path(source, options)
|
22
22
|
end
|
23
23
|
|
24
|
-
relative_url_root =
|
25
|
-
(respond_to?(:request) && request.try(:script_name))
|
24
|
+
relative_url_root = defined?(config.relative_url_root) && config.relative_url_root
|
26
25
|
if relative_url_root
|
27
26
|
source = "#{relative_url_root}#{source}" unless source.starts_with?("#{relative_url_root}/")
|
28
27
|
end
|
data/lib/sprockets/rails/task.rb
CHANGED
data/lib/sprockets/railtie.rb
CHANGED
@@ -50,6 +50,7 @@ module Sprockets
|
|
50
50
|
config.assets._blocks = []
|
51
51
|
config.assets.paths = []
|
52
52
|
config.assets.prefix = "/assets"
|
53
|
+
config.assets.manifest = nil
|
53
54
|
config.assets.precompile = [LOOSE_APP_ASSETS, /(?:\/|\\|\A)application\.(css|js)$/]
|
54
55
|
config.assets.version = ""
|
55
56
|
config.assets.debug = false
|
@@ -64,10 +65,18 @@ module Sprockets
|
|
64
65
|
config.after_initialize do |app|
|
65
66
|
config = app.config
|
66
67
|
|
67
|
-
manifest_path = File.join(
|
68
|
+
manifest_path = config.assets.manifest || File.join(config.paths['public'].first, config.assets.prefix)
|
68
69
|
|
69
|
-
|
70
|
-
|
70
|
+
# Configuration options that should invalidate
|
71
|
+
# the Sprockets cache when changed.
|
72
|
+
version_fragments = [
|
73
|
+
config.assets.version,
|
74
|
+
config.action_controller.relative_url_root,
|
75
|
+
config.action_controller.asset_host
|
76
|
+
].compact.join('-')
|
77
|
+
|
78
|
+
if version_fragments.present?
|
79
|
+
app.assets.version += "-#{version_fragments}"
|
71
80
|
end
|
72
81
|
|
73
82
|
# Copy config.assets.paths to Sprockets
|
@@ -75,7 +84,7 @@ module Sprockets
|
|
75
84
|
app.assets.append_path path
|
76
85
|
end
|
77
86
|
|
78
|
-
|
87
|
+
ActiveSupport.on_load(:action_view) do
|
79
88
|
include Sprockets::Rails::Helper
|
80
89
|
|
81
90
|
# Copy relevant config to AV context
|
@@ -113,6 +122,11 @@ module Sprockets
|
|
113
122
|
app.assets = app.assets.index
|
114
123
|
end
|
115
124
|
|
125
|
+
|
126
|
+
Sprockets::Rails::Helper.precompile ||= app.config.assets.precompile
|
127
|
+
Sprockets::Rails::Helper.assets ||= app.assets
|
128
|
+
Sprockets::Rails::Helper.raise_runtime_errors = app.config.assets.raise_runtime_errors
|
129
|
+
|
116
130
|
if config.assets.compile
|
117
131
|
if app.routes.respond_to?(:prepend)
|
118
132
|
app.routes.prepend do
|
metadata
CHANGED
@@ -1,69 +1,69 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sprockets-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0
|
4
|
+
version: 2.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Joshua Peek
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2014-04-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: sprockets
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - ~>
|
17
|
+
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '2.8'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - ~>
|
24
|
+
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '2.8'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: actionpack
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
33
|
+
version: '4.0'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- -
|
38
|
+
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
40
|
+
version: '4.0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: activesupport
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- -
|
45
|
+
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '
|
47
|
+
version: '4.0'
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- -
|
52
|
+
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: '
|
54
|
+
version: '4.0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: rake
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- -
|
59
|
+
- - ">="
|
60
60
|
- !ruby/object:Gem::Version
|
61
61
|
version: '0'
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- -
|
66
|
+
- - ">="
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '0'
|
69
69
|
description:
|
@@ -72,14 +72,14 @@ executables: []
|
|
72
72
|
extensions: []
|
73
73
|
extra_rdoc_files: []
|
74
74
|
files:
|
75
|
+
- LICENSE
|
75
76
|
- README.md
|
77
|
+
- lib/sprockets/rails.rb
|
76
78
|
- lib/sprockets/rails/helper.rb
|
77
79
|
- lib/sprockets/rails/legacy_asset_tag_helper.rb
|
78
80
|
- lib/sprockets/rails/legacy_asset_url_helper.rb
|
79
81
|
- lib/sprockets/rails/task.rb
|
80
|
-
- lib/sprockets/rails.rb
|
81
82
|
- lib/sprockets/railtie.rb
|
82
|
-
- LICENSE
|
83
83
|
homepage: https://github.com/rails/sprockets-rails
|
84
84
|
licenses:
|
85
85
|
- MIT
|
@@ -90,17 +90,17 @@ require_paths:
|
|
90
90
|
- lib
|
91
91
|
required_ruby_version: !ruby/object:Gem::Requirement
|
92
92
|
requirements:
|
93
|
-
- -
|
93
|
+
- - ">="
|
94
94
|
- !ruby/object:Gem::Version
|
95
95
|
version: '0'
|
96
96
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
97
97
|
requirements:
|
98
|
-
- -
|
98
|
+
- - ">="
|
99
99
|
- !ruby/object:Gem::Version
|
100
100
|
version: '0'
|
101
101
|
requirements: []
|
102
102
|
rubyforge_project:
|
103
|
-
rubygems_version: 2.
|
103
|
+
rubygems_version: 2.2.2
|
104
104
|
signing_key:
|
105
105
|
specification_version: 4
|
106
106
|
summary: Sprockets Rails integration
|