middleman-sprockets 3.0.1 → 3.0.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -7,8 +7,8 @@ Feature: Assets get a file hash appended to their and references to them are upd
7
7
  | images/100px-1242c368.png |
8
8
  | images/100px-5fd6fb90.jpg |
9
9
  | images/100px-5fd6fb90.gif |
10
- | javascripts/application-df677242.js |
11
- | stylesheets/site-ed8c2d12.css |
10
+ | javascripts/application-1d8d5276.js |
11
+ | stylesheets/site-50eaa978.css |
12
12
  | index.html |
13
13
  | subdir/index.html |
14
14
  | other/index.html |
@@ -19,50 +19,50 @@ Feature: Assets get a file hash appended to their and references to them are upd
19
19
  | javascripts/application.js |
20
20
  | stylesheets/site.css |
21
21
 
22
- And the file "javascripts/application-df677242.js" should contain "img.src = '/images/100px-5fd6fb90.jpg'"
23
- And the file "stylesheets/site-ed8c2d12.css" should contain "background-image: url('../images/100px-5fd6fb90.jpg')"
24
- And the file "index.html" should contain 'href="stylesheets/site-ed8c2d12.css"'
25
- And the file "index.html" should contain 'src="javascripts/application-df677242.js"'
22
+ And the file "javascripts/application-1d8d5276.js" should contain "img.src = '/images/100px-5fd6fb90.jpg'"
23
+ And the file "stylesheets/site-50eaa978.css" should contain "background-image: url('../images/100px-5fd6fb90.jpg')"
24
+ And the file "index.html" should contain 'href="stylesheets/site-50eaa978.css"'
25
+ And the file "index.html" should contain 'src="javascripts/application-1d8d5276.js"'
26
26
  And the file "index.html" should contain 'src="images/100px-5fd6fb90.jpg"'
27
- And the file "subdir/index.html" should contain 'href="../stylesheets/site-ed8c2d12.css"'
28
- And the file "subdir/index.html" should contain 'src="../javascripts/application-df677242.js"'
27
+ And the file "subdir/index.html" should contain 'href="../stylesheets/site-50eaa978.css"'
28
+ And the file "subdir/index.html" should contain 'src="../javascripts/application-1d8d5276.js"'
29
29
  And the file "subdir/index.html" should contain 'src="../images/100px-5fd6fb90.jpg"'
30
- And the file "other/index.html" should contain 'href="../stylesheets/site-ed8c2d12.css"'
31
- And the file "other/index.html" should contain 'src="../javascripts/application-df677242.js"'
30
+ And the file "other/index.html" should contain 'href="../stylesheets/site-50eaa978.css"'
31
+ And the file "other/index.html" should contain 'src="../javascripts/application-1d8d5276.js"'
32
32
  And the file "other/index.html" should contain 'src="../images/100px-5fd6fb90.jpg"'
33
33
 
34
34
  Scenario: Hashed assets work in preview server
35
35
  Given the Server is running at "asset-hash-app"
36
36
  When I go to "/"
37
- Then I should see 'href="stylesheets/site-ed8c2d12.css"'
38
- And I should see 'src="javascripts/application-df677242.js"'
37
+ Then I should see 'href="stylesheets/site-50eaa978.css"'
38
+ And I should see 'src="javascripts/application-1d8d5276.js"'
39
39
  And I should see 'src="images/100px-5fd6fb90.jpg"'
40
40
  When I go to "/subdir/"
41
- Then I should see 'href="../stylesheets/site-ed8c2d12.css"'
42
- And I should see 'src="../javascripts/application-df677242.js"'
41
+ Then I should see 'href="../stylesheets/site-50eaa978.css"'
42
+ And I should see 'src="../javascripts/application-1d8d5276.js"'
43
43
  And I should see 'src="../images/100px-5fd6fb90.jpg"'
44
44
  When I go to "/other/"
45
- Then I should see 'href="../stylesheets/site-ed8c2d12.css"'
46
- And I should see 'src="../javascripts/application-df677242.js"'
45
+ Then I should see 'href="../stylesheets/site-50eaa978.css"'
46
+ And I should see 'src="../javascripts/application-1d8d5276.js"'
47
47
  And I should see 'src="../images/100px-5fd6fb90.jpg"'
48
- When I go to "/javascripts/application-df677242.js"
48
+ When I go to "/javascripts/application-1d8d5276.js"
49
49
  Then I should see "img.src = '/images/100px-5fd6fb90.jpg'"
50
- When I go to "/stylesheets/site-ed8c2d12.css"
50
+ When I go to "/stylesheets/site-50eaa978.css"
51
51
  Then I should see "background-image: url('../images/100px-5fd6fb90.jpg')"
52
52
 
53
53
  Scenario: Enabling an asset host still produces hashed files and references
54
54
  Given the Server is running at "asset-hash-host-app"
55
55
  When I go to "/"
56
- Then I should see 'href="http://middlemanapp.com/stylesheets/site-e5a31a3e.css"'
56
+ Then I should see 'href="http://middlemanapp.com/stylesheets/site-171eb3c0.css"'
57
57
  And I should see 'src="http://middlemanapp.com/images/100px-5fd6fb90.jpg"'
58
58
  When I go to "/subdir/"
59
- Then I should see 'href="http://middlemanapp.com/stylesheets/site-e5a31a3e.css"'
59
+ Then I should see 'href="http://middlemanapp.com/stylesheets/site-171eb3c0.css"'
60
60
  And I should see 'src="http://middlemanapp.com/images/100px-5fd6fb90.jpg"'
61
61
  When I go to "/other/"
62
- Then I should see 'href="http://middlemanapp.com/stylesheets/site-e5a31a3e.css"'
62
+ Then I should see 'href="http://middlemanapp.com/stylesheets/site-171eb3c0.css"'
63
63
  And I should see 'src="http://middlemanapp.com/images/100px-5fd6fb90.jpg"'
64
64
  # Asset helpers don't appear to work from Compass right now
65
- # When I go to "/stylesheets/site-e5a31a3e.css"
65
+ # When I go to "/stylesheets/site-171eb3c0.css"
66
66
  # Then I should see "background-image: url('http://middlemanapp.com/images/100px-5fd6fb90.jpg')"
67
67
 
68
68
  Scenario: The asset hash should change when a SASS partial changes
@@ -73,14 +73,14 @@ Feature: Assets get a file hash appended to their and references to them are upd
73
73
  font-size: 14px
74
74
  """
75
75
  When I go to "/partials/"
76
- Then I should see 'href="../stylesheets/uses_partials-8b948098.css'
76
+ Then I should see 'href="../stylesheets/uses_partials-423a00f7.css'
77
77
  And the file "source/stylesheets/_partial.sass" has the contents
78
78
  """
79
79
  body
80
80
  font-size: 18px !important
81
81
  """
82
82
  When I go to "/partials/"
83
- Then I should see 'href="../stylesheets/uses_partials-1f9f0ed2.css'
83
+ Then I should see 'href="../stylesheets/uses_partials-e8c3d4eb.css'
84
84
 
85
85
  Scenario: The asset hash should change when a Javascript partial changes
86
86
  Given the Server is running at "asset-hash-app"
@@ -89,14 +89,14 @@ Feature: Assets get a file hash appended to their and references to them are upd
89
89
  function sprockets_sub_function() { }
90
90
  """
91
91
  When I go to "/partials/"
92
- Then I should see 'src="../javascripts/sprockets_base-0252a861.js'
93
- When I go to "/javascripts/sprockets_base-0252a861.js"
92
+ Then I should see 'src="../javascripts/sprockets_base-095c3f3f.js'
93
+ When I go to "/javascripts/sprockets_base-095c3f3f.js"
94
94
  Then I should see "sprockets_sub_function"
95
95
  And the file "source/javascripts/sprockets_sub.js" has the contents
96
96
  """
97
97
  function sprockets_sub2_function() { }
98
98
  """
99
99
  When I go to "/partials/"
100
- Then I should see 'src="../javascripts/sprockets_base-5121d891.js'
101
- When I go to "/javascripts/sprockets_base-5121d891.js"
100
+ Then I should see 'src="../javascripts/sprockets_base-095c3f3f.js'
101
+ When I go to "/javascripts/sprockets_base-095c3f3f.js"
102
102
  Then I should see "sprockets_sub2_function"
@@ -4,6 +4,11 @@ Feature: Sprockets
4
4
  Given the Server is running at "sprockets-app2"
5
5
  When I go to "/javascripts/sprockets_base.js"
6
6
  Then I should see "sprockets_sub_function"
7
+
8
+ Scenario: asset_path helper
9
+ Given the Server is running at "sprockets-app2"
10
+ When I go to "/javascripts/asset_path.js"
11
+ Then I should see "templates.js"
7
12
 
8
13
  Scenario: Sprockets JS require with custom :js_dir
9
14
  Given the Server is running at "sprockets-app"
@@ -20,6 +25,22 @@ Feature: Sprockets
20
25
  When I go to "/javascripts/multiple_engines.js"
21
26
  Then I should see "Hello One"
22
27
 
28
+ Scenario: Sprockets JS should only contain body when requested
29
+ Given the Server is running at "sprockets-app2"
30
+ When I go to "/javascripts/sprockets_base.js?body=1"
31
+ Then I should see "base"
32
+ And I should not see "sprockets_sub_function"
33
+
34
+ Scenario: Script tags should be provided individually while debugging assets
35
+ Given the Server is running at "sprockets-app-debug-assets"
36
+ When I go to "/index.html"
37
+ Then I should see
38
+ """
39
+ <script src="/javascripts/dependency2.js?body=1" type="text/javascript"></script>
40
+ <script src="/javascripts/dependency1.js?body=1" type="text/javascript"></script>
41
+ <script src="/javascripts/main.js?body=1" type="text/javascript"></script>
42
+ """
43
+
23
44
  Scenario: Multiple engine files should build correctly
24
45
  Given a successfully built app at "sprockets-app2"
25
46
  When I cd to "build"
@@ -12,4 +12,9 @@ Feature: Sprockets Gems
12
12
  Scenario: Sprockets can pull js from vendored assets
13
13
  Given the Server is running at "sprockets-app"
14
14
  When I go to "/library/js/vendored_include.js"
15
+ Then I should see "var vendored_js_included = true;"
16
+
17
+ Scenario: Sprockets can pull js from custom vendor dir
18
+ Given the Server is running at "asset-paths-app"
19
+ When I go to "/javascripts/vendored_include.js"
15
20
  Then I should see "var vendored_js_included = true;"
@@ -0,0 +1,3 @@
1
+ Then /^I should see$/ do |contents|
2
+ @browser.last_response.body.should include(contents)
3
+ end
@@ -0,0 +1 @@
1
+ set :js_assets_paths, ["#{root}/derp/javascripts/"]
@@ -0,0 +1 @@
1
+ var vendored_js_included = true;
@@ -0,0 +1 @@
1
+ //= require "vendored_js"
@@ -0,0 +1 @@
1
+ set :debug_assets, true
@@ -0,0 +1 @@
1
+ <%= javascript_include_tag "main" %>
@@ -0,0 +1,3 @@
1
+ //= require dependency2
2
+
3
+ function dependency1() {}
@@ -0,0 +1 @@
1
+ function dependency2() {}
@@ -0,0 +1,3 @@
1
+ //= require dependency1
2
+
3
+ function main() {}
@@ -0,0 +1,3 @@
1
+ //= require_self
2
+
3
+ templatesURL = "<%= asset_path(:js, :templates) %>";
@@ -11,7 +11,6 @@ module Middleman::Sprockets
11
11
  # Location of javascripts external to source directory.
12
12
  # @return [Array]
13
13
  # set :js_assets_paths, ["#{root}/assets/javascripts/", "/path/2/external/js/repository/"]
14
- app.set :js_assets_paths, []
15
14
 
16
15
  # Add class methods to context
17
16
  app.send :include, InstanceMethods
@@ -19,8 +18,12 @@ module Middleman::Sprockets
19
18
  require "middleman-sprockets/sass"
20
19
  app.register Middleman::Sprockets::Sass
21
20
 
21
+ app.after_configuration do
22
+ helpers JavascriptTagHelper
23
+ end
24
+
22
25
  # Once Middleman is setup
23
- app.ready do
26
+ app.after_configuration do
24
27
  ::Tilt.register ::Sprockets::EjsTemplate, 'ejs'
25
28
  ::Tilt.register ::Sprockets::EcoTemplate, 'eco'
26
29
 
@@ -93,9 +96,10 @@ module Middleman::Sprockets
93
96
  append_path app.css_dir
94
97
 
95
98
  # add custom assets paths to the scope
99
+
96
100
  app.js_assets_paths.each do |p|
97
101
  append_path p
98
- end
102
+ end if app.respond_to?(:js_assets_paths)
99
103
  end
100
104
 
101
105
  # Override Sprockets' default digest function to *not*
@@ -123,4 +127,32 @@ module Middleman::Sprockets
123
127
  # Clear cache on error
124
128
  alias :css_exception_response :javascript_exception_response
125
129
  end
130
+
131
+ module JavascriptTagHelper
132
+
133
+ # extend padrinos javascript_include_tag with debug functionality
134
+ # splits up script dependencies in individual files when
135
+ # configuration variable :debug_assets is set to true
136
+ def javascript_include_tag(*sources)
137
+ options = sources.extract_options!.symbolize_keys
138
+
139
+ if respond_to?(:debug_assets) && debug_assets
140
+
141
+ # loop through all sources and the dependencies and
142
+ # output each as script tag in the correct order
143
+ sources.map do |source|
144
+ dependencies_paths = sprockets[source].to_a.map do |dependency|
145
+ # if sprockets sees "?body=1" it only gives back the body
146
+ # of the script without the dependencies included
147
+ dependency.logical_path << "?body=1"
148
+ end
149
+
150
+ super(dependencies_paths)
151
+ end.join("")
152
+
153
+ else
154
+ super
155
+ end
156
+ end
157
+ end
126
158
  end
@@ -1,5 +1,5 @@
1
1
  module Middleman
2
2
  module Sprockets
3
- VERSION = "3.0.1"
3
+ VERSION = "3.0.2"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: middleman-sprockets
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.1
4
+ version: 3.0.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-09-04 00:00:00.000000000 Z
12
+ date: 2012-09-23 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: middleman-more
@@ -77,6 +77,7 @@ files:
77
77
  - features/sass_partials.feature
78
78
  - features/sprockets.feature
79
79
  - features/sprockets_gems.feature
80
+ - features/step_definitions/server_steps.rb
80
81
  - features/support/env.rb
81
82
  - fixtures/asset-hash-app/config.rb
82
83
  - fixtures/asset-hash-app/source/images/100px.gif
@@ -102,6 +103,9 @@ files:
102
103
  - fixtures/asset-hash-host-app/source/other.html.erb
103
104
  - fixtures/asset-hash-host-app/source/stylesheets/site.css.scss
104
105
  - fixtures/asset-hash-host-app/source/subdir/index.html.erb
106
+ - fixtures/asset-paths-app/config.rb
107
+ - fixtures/asset-paths-app/derp/javascripts/vendored_js.js
108
+ - fixtures/asset-paths-app/source/javascripts/vendored_include.js
105
109
  - fixtures/preview-app/config.rb
106
110
  - fixtures/preview-app/source/content.html.erb
107
111
  - fixtures/preview-app/source/layout.erb
@@ -110,6 +114,11 @@ files:
110
114
  - fixtures/preview-app/source/stylesheets/main.css.sass
111
115
  - fixtures/preview-app/source/stylesheets/main2.css.sass
112
116
  - fixtures/preview-app/source/stylesheets/plain.css.sass
117
+ - fixtures/sprockets-app-debug-assets/config.rb
118
+ - fixtures/sprockets-app-debug-assets/source/index.html.erb
119
+ - fixtures/sprockets-app-debug-assets/source/javascripts/dependency1.js
120
+ - fixtures/sprockets-app-debug-assets/source/javascripts/dependency2.js
121
+ - fixtures/sprockets-app-debug-assets/source/javascripts/main.js
113
122
  - fixtures/sprockets-app/.sass-cache/be37f3d65d619a3996ff80c3e286084336419f31/bootstrap_include.css.scssc
114
123
  - fixtures/sprockets-app/.sass-cache/be37f3d65d619a3996ff80c3e286084336419f31/sprockets_base1.css.scssc
115
124
  - fixtures/sprockets-app/.sass-cache/be37f3d65d619a3996ff80c3e286084336419f31/sprockets_base2.css.scssc
@@ -130,6 +139,7 @@ files:
130
139
  - fixtures/sprockets-app2/data/test2.json
131
140
  - fixtures/sprockets-app2/source/javascripts/_templates/test.jst.ejs
132
141
  - fixtures/sprockets-app2/source/javascripts/_templates/test2.jst.eco
142
+ - fixtures/sprockets-app2/source/javascripts/asset_path.js.erb
133
143
  - fixtures/sprockets-app2/source/javascripts/multiple_engines.js.coffee.erb
134
144
  - fixtures/sprockets-app2/source/javascripts/sprockets_base.js
135
145
  - fixtures/sprockets-app2/source/javascripts/sprockets_sub.js
@@ -157,7 +167,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
157
167
  version: '0'
158
168
  segments:
159
169
  - 0
160
- hash: -836714385759751023
170
+ hash: 905335292850793182
161
171
  required_rubygems_version: !ruby/object:Gem::Requirement
162
172
  none: false
163
173
  requirements:
@@ -166,10 +176,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
166
176
  version: '0'
167
177
  segments:
168
178
  - 0
169
- hash: -836714385759751023
179
+ hash: 905335292850793182
170
180
  requirements: []
171
181
  rubyforge_project: middleman-sprockets
172
- rubygems_version: 1.8.23
182
+ rubygems_version: 1.8.24
173
183
  signing_key:
174
184
  specification_version: 3
175
185
  summary: Sprockets support for Middleman
@@ -179,6 +189,7 @@ test_files:
179
189
  - features/sass_partials.feature
180
190
  - features/sprockets.feature
181
191
  - features/sprockets_gems.feature
192
+ - features/step_definitions/server_steps.rb
182
193
  - features/support/env.rb
183
194
  - fixtures/asset-hash-app/config.rb
184
195
  - fixtures/asset-hash-app/source/images/100px.gif
@@ -204,6 +215,9 @@ test_files:
204
215
  - fixtures/asset-hash-host-app/source/other.html.erb
205
216
  - fixtures/asset-hash-host-app/source/stylesheets/site.css.scss
206
217
  - fixtures/asset-hash-host-app/source/subdir/index.html.erb
218
+ - fixtures/asset-paths-app/config.rb
219
+ - fixtures/asset-paths-app/derp/javascripts/vendored_js.js
220
+ - fixtures/asset-paths-app/source/javascripts/vendored_include.js
207
221
  - fixtures/preview-app/config.rb
208
222
  - fixtures/preview-app/source/content.html.erb
209
223
  - fixtures/preview-app/source/layout.erb
@@ -212,6 +226,11 @@ test_files:
212
226
  - fixtures/preview-app/source/stylesheets/main.css.sass
213
227
  - fixtures/preview-app/source/stylesheets/main2.css.sass
214
228
  - fixtures/preview-app/source/stylesheets/plain.css.sass
229
+ - fixtures/sprockets-app-debug-assets/config.rb
230
+ - fixtures/sprockets-app-debug-assets/source/index.html.erb
231
+ - fixtures/sprockets-app-debug-assets/source/javascripts/dependency1.js
232
+ - fixtures/sprockets-app-debug-assets/source/javascripts/dependency2.js
233
+ - fixtures/sprockets-app-debug-assets/source/javascripts/main.js
215
234
  - fixtures/sprockets-app/.sass-cache/be37f3d65d619a3996ff80c3e286084336419f31/bootstrap_include.css.scssc
216
235
  - fixtures/sprockets-app/.sass-cache/be37f3d65d619a3996ff80c3e286084336419f31/sprockets_base1.css.scssc
217
236
  - fixtures/sprockets-app/.sass-cache/be37f3d65d619a3996ff80c3e286084336419f31/sprockets_base2.css.scssc
@@ -232,6 +251,7 @@ test_files:
232
251
  - fixtures/sprockets-app2/data/test2.json
233
252
  - fixtures/sprockets-app2/source/javascripts/_templates/test.jst.ejs
234
253
  - fixtures/sprockets-app2/source/javascripts/_templates/test2.jst.eco
254
+ - fixtures/sprockets-app2/source/javascripts/asset_path.js.erb
235
255
  - fixtures/sprockets-app2/source/javascripts/multiple_engines.js.coffee.erb
236
256
  - fixtures/sprockets-app2/source/javascripts/sprockets_base.js
237
257
  - fixtures/sprockets-app2/source/javascripts/sprockets_sub.js