middleman-sprockets 3.4.2 → 3.5.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e1697d1fc6a0d15e0a0972225640f0bde0c508ed
4
- data.tar.gz: 8dbea3b68dd39c3bc585a6dc8ca5c83d45970a0b
3
+ metadata.gz: 0f72f296a723b4ff315df8ae5613bebd5a7338a5
4
+ data.tar.gz: 23a9b9ea030bdc0dc0de50d17614896ac1e2cbaf
5
5
  SHA512:
6
- metadata.gz: bc617d09a4cb8807e82cb4bee1df19500cc46f2c9a49b6663dd93495cd6d7707d7368f0acadae0c6e274f211025e0703e3ff211266501c0b89fe8162719f33a6
7
- data.tar.gz: 83c8ee6dce12439c9a6209c8bddfd3741b786b34665bfb8013ee8d70d87d57a63243d4e958a797fe2d6349ec19be4dab30978b6776caaeb7ef6806c6af3f955a
6
+ metadata.gz: 6edd63315b2d4ffc601ce01fa4fe8a54595b5e9c4d70691552195fce9f754b9ac07af4f07e78d98132c1e884b5f8b8ee6dea711a90f7f705241fc6f259dca324
7
+ data.tar.gz: 0f51a95dba5ea25569b8a6a6e140d73b7f615c936a595e2d098c51db9b4606775e575f17d7bf3ce8f61340546adf6ef86a4be7342fea61b96af6c979cf2eda2d
data/.travis.yml CHANGED
@@ -1,16 +1,21 @@
1
+ language: ruby
2
+ cache: bundler
3
+ sudo: false
4
+ env: TEST=true
5
+
1
6
  rvm:
2
- - 1.9.3
3
7
  - 2.0.0
4
- - 2.1.1
5
- - 2.1.2
6
- - jruby-19mode
8
+ - 2.1
9
+ - 2.2.5
10
+ - 2.3.1
11
+ - ruby-head
7
12
 
8
13
  gemfile:
9
14
  - Gemfile
10
15
 
11
16
  script: "bundle exec rake test"
12
17
 
13
- env: TEST=true
14
-
15
18
  matrix:
16
- fast_finish: true
19
+ fast_finish: true
20
+ allow_failures:
21
+ - rvm: ruby-head
data/CHANGELOG.md CHANGED
@@ -1,3 +1,8 @@
1
+ 3.5.0
2
+ ===
3
+
4
+ * Allow ignoring paths from imported gems [@zach-capalbo](https://github.com/middleman/middleman-sprockets/pull/118)
5
+
1
6
  3.4.2
2
7
  ===
3
8
 
data/Gemfile CHANGED
@@ -9,9 +9,8 @@ gem "rake", "~> 10.0.3", :require => false
9
9
  gem "yard", "~> 0.8.0", :require => false
10
10
 
11
11
  # Test tools
12
- gem "cucumber"
13
- gem "fivemat", "~> 1.2.1"
14
- gem "aruba"
12
+ gem "cucumber", "~> 2.0"
13
+ gem "aruba", "~> 0.10.0"
15
14
  gem "rspec", "~> 3.0"
16
15
  gem "builder", "~> 3.0"
17
16
  gem "simplecov"
@@ -27,6 +26,7 @@ gem "jquery_mobile_rails", "1.4.1", :require => false
27
26
  gem "ejs", "~> 1.1.1"
28
27
  gem "eco", "~> 1.0.0"
29
28
  gem "erubis", "~> 2.7.0"
29
+ gem "pry-byebug"
30
30
 
31
31
  # Code Quality
32
32
  gem "cane", :platforms => [:mri_19, :mri_20], :require => false
data/README.md CHANGED
@@ -71,6 +71,14 @@ Be careful if you are using `bower`-components which place their assets in
71
71
  need to use the `#import_asset`-call with the block to place it in the correct
72
72
  directory.
73
73
 
74
+ **Ignoring imported assets**
75
+
76
+ Sometimes you may not wish to include all assets from an asset gem. For example lets take the jquery-mobile gem, it includes a bunch of images that you may not want included in your build. Pass a regex to match the path to `sprockets.ignore_path`. Like, `append_path`, you may add multiple.
77
+
78
+ ```ruby
79
+ sprockets.ignore_path /jquery\-mobile/
80
+ ```
81
+
74
82
  ## Build & Dependency Status
75
83
 
76
84
  [![Gem Version](https://badge.fury.io/rb/middleman-sprockets.png)][gem]
data/Rakefile CHANGED
@@ -10,7 +10,7 @@ Cucumber::Rake::Task.new(:cucumber, 'Run features that should pass') do |t|
10
10
  exempt_tags = ["--tags ~@wip"]
11
11
  exempt_tags << "--tags ~@new " unless Middleman::VERSION.start_with?("3.1")
12
12
  exempt_tags << "--tags ~@old " unless Middleman::VERSION.start_with?("3.0")
13
- t.cucumber_opts = "--color #{exempt_tags.join(" ")} --strict --format #{ENV['CUCUMBER_FORMAT'] || 'Fivemat'}"
13
+ t.cucumber_opts = "--color #{exempt_tags.join(" ")} --strict"
14
14
  end
15
15
 
16
16
  RSpec::Core::RakeTask.new(:spec) do |t|
@@ -0,0 +1,19 @@
1
+ Feature: Ignoring Imported Assets
2
+ Background: App with imported assets ignoring some of them
3
+ Given a fixture app "sprockets-app"
4
+ And a file named "config.rb" with:
5
+ """
6
+ set :js_dir, "library/js"
7
+ set :css_dir, "library/css"
8
+
9
+ sprockets.ignore_path /jquery/
10
+ """
11
+ And the Server is running
12
+
13
+ Scenario: Imported jquery assets are not in the sitemap (but others are)
14
+ Then the sitemap should not include "/images/jquery-mobile/ajax-loader.gif"
15
+ And the sitemap should include "/fonts/bootstrap/glyphicons-halflings-regular.eot"
16
+
17
+ Scenario: Assets from imported gem can still be required
18
+ When I go to "/library/js/jquery_include.js"
19
+ Then I should see "window.jQuery ="
@@ -107,9 +107,9 @@ Feature: Sprockets
107
107
  Then I should see 'src="/library/images/cat.jpg"'
108
108
  And I should see 'src="/library/images/cat-2.jpg"'
109
109
  When I go to "/library/images/cat.jpg"
110
- Then I should get a response with status "200"
110
+ Then the status code should be "200"
111
111
  When I go to "/library/images/cat-2.jpg"
112
- Then I should get a response with status "200"
112
+ Then the status code should be "200"
113
113
 
114
114
  Scenario: Assets built through import_asset are built with the right extension
115
115
  Given a successfully built app at "sprockets-app"
@@ -45,7 +45,7 @@ Feature: Sprockets Gems
45
45
  Scenario: JS/CSS from gems aren't aumatically in the site
46
46
  Given the Server is running at "jquery-mobile-app"
47
47
  When I go to "/javascripts/jquery.mobile.js"
48
- Then I should get a response with status "404"
48
+ Then the status code should be "404"
49
49
 
50
50
  Scenario: JS/CSS from gems can be declared to be accessible
51
51
  Given a fixture app "jquery-mobile-app"
@@ -57,11 +57,11 @@ Feature: Sprockets Gems
57
57
  """
58
58
  And the Server is running at "jquery-mobile-app"
59
59
  When I go to "/javascripts/jquery.mobile.js"
60
- Then I should get a response with status "200"
60
+ Then the status code should be "200"
61
61
 
62
62
  Scenario: JS/CSS from gems are accessible when debugging assets and they are required
63
63
  Given the Server is running at "sprockets-app-debug-assets"
64
64
  And the Server is running at "sprockets-app-debug-assets"
65
65
  When I go to "/index.html"
66
66
  When I go to "/javascripts/bootstrap/alert.js?body=1"
67
- Then I should get a response with status "200"
67
+ Then the status code should be "200"
@@ -1,7 +1,16 @@
1
- Then /^I should get a response with status "(.*?)"$/ do |status|
2
- (@last_response || @browser.last_response).status.should == status.to_i
3
- end
4
-
5
1
  Given /^wait a second$/ do
6
2
  sleep(1)
7
3
  end
4
+
5
+ Given /^binding\.pry$/ do
6
+ require "pry"
7
+ binding.pry
8
+ end
9
+
10
+ Then /^the sitemap should not include "([^\"]*)"$/ do |path|
11
+ expect( @server_inst.sitemap.resources.map(&:url) ).not_to include path
12
+ end
13
+
14
+ Then /^the sitemap should include "([^\"]*)"$/ do |path|
15
+ expect( @server_inst.sitemap.resources.map(&:url) ).to include path
16
+ end
@@ -37,6 +37,10 @@ module Middleman
37
37
  asset.pathname
38
38
  end
39
39
 
40
+ def exist?
41
+ File.exist?(asset.pathname)
42
+ end
43
+
40
44
  def type
41
45
  @type ||= if is_image?
42
46
  :image
@@ -9,11 +9,13 @@ module Middleman
9
9
  attr_reader :imported_assets
10
10
  attr_reader :appended_paths
11
11
  attr_reader :prepended_paths
12
+ attr_reader :ignored_paths
12
13
 
13
14
  def initialize(options={})
14
15
  @imported_assets = []
15
16
  @appended_paths = []
16
17
  @prepended_paths = []
18
+ @ignored_paths = []
17
19
  end
18
20
 
19
21
  def method_missing?(method)
@@ -45,6 +47,10 @@ module Middleman
45
47
  def prepend_path(path)
46
48
  @prepended_paths << path
47
49
  end
50
+
51
+ def ignore_path(path)
52
+ @ignored_paths << path
53
+ end
48
54
  end
49
55
  end
50
56
  end
@@ -1,3 +1,5 @@
1
+ require "middleman-sprockets/asset"
2
+
1
3
  module Middleman
2
4
  module Sprockets
3
5
  # Generic Middleman Sprockets env
@@ -55,6 +57,18 @@ module Middleman
55
57
  end
56
58
  end
57
59
 
60
+ # Make sure all the defined imported assets still exist
61
+ def prune_imported_assets!
62
+ @imported_assets = @imported_assets.select do |a|
63
+ begin
64
+ a = Middleman::Sprockets::Asset.new(@app, a.logical_path, self)
65
+ a.exist?
66
+ rescue
67
+ false
68
+ end
69
+ end
70
+ end
71
+
58
72
  # Add our own customizations to the Sprockets context class
59
73
  def enhance_context_class!
60
74
  app = @app
@@ -234,7 +248,7 @@ module Middleman
234
248
  args << asset_logical_path
235
249
  args << determine_output_dir if block_given?
236
250
 
237
- imported_assets << ImportedAsset.new(*args)
251
+ @imported_assets << ImportedAsset.new(*args)
238
252
 
239
253
  @app.sitemap.rebuild_resource_list!(:sprockets_import_asset)
240
254
  end
@@ -75,6 +75,7 @@ module Middleman
75
75
  @environment = ::Middleman::Sprockets::Environment.new(app, :debug_assets => debug_assets)
76
76
  config_environment.apply_to_environment(@environment)
77
77
 
78
+ @config_environment = config_environment
78
79
  append_paths_from_gems
79
80
  import_images_and_fonts_from_gems
80
81
 
@@ -95,6 +96,7 @@ module Middleman
95
96
  def manipulate_resource_list(resources)
96
97
  resources_list = []
97
98
 
99
+ environment.prune_imported_assets!
98
100
  environment.imported_assets.each do |imported_asset|
99
101
  asset = Middleman::Sprockets::Asset.new @app, imported_asset.logical_path, environment
100
102
  if imported_asset.output_path
@@ -143,8 +145,11 @@ module Middleman
143
145
  end
144
146
 
145
147
  def import_images_and_fonts_from_gems
146
- trusted_paths = environment.paths.select { |p| p.end_with?('images') || p.end_with?('fonts') }
147
- trusted_paths.each do |load_path|
148
+ environment.paths
149
+ .reject { |p| p.start_with?(app.source_dir) }
150
+ .reject { |p| @config_environment.ignored_paths.any?{|r| r.match(p)}}
151
+ .select { |p| p.end_with?('images') || p.end_with?('fonts') }
152
+ .each do |load_path|
148
153
  environment.each_entry(load_path) do |path|
149
154
  if path.file? && !path.basename.to_s.start_with?('_')
150
155
  logical_path = path.sub /^#{load_path}/, ''
@@ -1,5 +1,5 @@
1
1
  module Middleman
2
2
  module Sprockets
3
- VERSION = "3.4.2"
3
+ VERSION = "3.5.0"
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.4.2
4
+ version: 3.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Thomas Reynolds
@@ -10,62 +10,62 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2015-02-25 00:00:00.000000000 Z
13
+ date: 2016-09-20 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: middleman-core
17
17
  requirement: !ruby/object:Gem::Requirement
18
18
  requirements:
19
- - - '>='
19
+ - - ">="
20
20
  - !ruby/object:Gem::Version
21
21
  version: '3.3'
22
22
  type: :runtime
23
23
  prerelease: false
24
24
  version_requirements: !ruby/object:Gem::Requirement
25
25
  requirements:
26
- - - '>='
26
+ - - ">="
27
27
  - !ruby/object:Gem::Version
28
28
  version: '3.3'
29
29
  - !ruby/object:Gem::Dependency
30
30
  name: sprockets
31
31
  requirement: !ruby/object:Gem::Requirement
32
32
  requirements:
33
- - - ~>
33
+ - - "~>"
34
34
  - !ruby/object:Gem::Version
35
35
  version: 2.12.1
36
36
  type: :runtime
37
37
  prerelease: false
38
38
  version_requirements: !ruby/object:Gem::Requirement
39
39
  requirements:
40
- - - ~>
40
+ - - "~>"
41
41
  - !ruby/object:Gem::Version
42
42
  version: 2.12.1
43
43
  - !ruby/object:Gem::Dependency
44
44
  name: sprockets-sass
45
45
  requirement: !ruby/object:Gem::Requirement
46
46
  requirements:
47
- - - ~>
47
+ - - "~>"
48
48
  - !ruby/object:Gem::Version
49
49
  version: 1.3.0
50
50
  type: :runtime
51
51
  prerelease: false
52
52
  version_requirements: !ruby/object:Gem::Requirement
53
53
  requirements:
54
- - - ~>
54
+ - - "~>"
55
55
  - !ruby/object:Gem::Version
56
56
  version: 1.3.0
57
57
  - !ruby/object:Gem::Dependency
58
58
  name: sprockets-helpers
59
59
  requirement: !ruby/object:Gem::Requirement
60
60
  requirements:
61
- - - ~>
61
+ - - "~>"
62
62
  - !ruby/object:Gem::Version
63
63
  version: 1.1.0
64
64
  type: :runtime
65
65
  prerelease: false
66
66
  version_requirements: !ruby/object:Gem::Requirement
67
67
  requirements:
68
- - - ~>
68
+ - - "~>"
69
69
  - !ruby/object:Gem::Version
70
70
  version: 1.1.0
71
71
  description: Sprockets support for Middleman
@@ -77,10 +77,10 @@ executables: []
77
77
  extensions: []
78
78
  extra_rdoc_files: []
79
79
  files:
80
- - .gitignore
81
- - .rspec
82
- - .simplecov
83
- - .travis.yml
80
+ - ".gitignore"
81
+ - ".rspec"
82
+ - ".simplecov"
83
+ - ".travis.yml"
84
84
  - CHANGELOG.md
85
85
  - CONTRIBUTING.md
86
86
  - Gemfile
@@ -90,6 +90,7 @@ files:
90
90
  - features/asset_hash-3.0.feature
91
91
  - features/asset_hash.feature
92
92
  - features/bower.feature
93
+ - features/ignore_imported_paths.feature
93
94
  - features/jst.feature
94
95
  - features/long_filenames.feature
95
96
  - features/sass_globs.feature
@@ -258,17 +259,17 @@ require_paths:
258
259
  - lib
259
260
  required_ruby_version: !ruby/object:Gem::Requirement
260
261
  requirements:
261
- - - '>='
262
+ - - ">="
262
263
  - !ruby/object:Gem::Version
263
264
  version: '0'
264
265
  required_rubygems_version: !ruby/object:Gem::Requirement
265
266
  requirements:
266
- - - '>='
267
+ - - ">="
267
268
  - !ruby/object:Gem::Version
268
269
  version: '0'
269
270
  requirements: []
270
271
  rubyforge_project:
271
- rubygems_version: 2.2.2
272
+ rubygems_version: 2.4.8
272
273
  signing_key:
273
274
  specification_version: 4
274
275
  summary: Sprockets support for Middleman
@@ -276,6 +277,7 @@ test_files:
276
277
  - features/asset_hash-3.0.feature
277
278
  - features/asset_hash.feature
278
279
  - features/bower.feature
280
+ - features/ignore_imported_paths.feature
279
281
  - features/jst.feature
280
282
  - features/long_filenames.feature
281
283
  - features/sass_globs.feature