roadie 3.0.0 → 3.0.1

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: fb9d9810978beb19ef7c13d2ef8953827b418bb1
4
- data.tar.gz: db5db2dc87d93790b131fd0b3c515e9c24114525
3
+ metadata.gz: 3e46e63eac0d8ed2687129918a809ae20203b1e3
4
+ data.tar.gz: 5e6e1a556dbc197c61b5d209f85c123ae1075e1c
5
5
  SHA512:
6
- metadata.gz: 7cf63f4924682f07f21960926b8b804e9d82e7db8b8c90b2e658557983e9e098534841b823d162736a3d3cc973c23f568987db3e3911fbadcdc0234998c09587
7
- data.tar.gz: c65545723737f33444e7c2797a8b01b288d0945a556100217fe7b0f86748bcfbc00908e1cd2204ea21fe26b543f0ebbf40e510831ba681fa6f66cc43ec67e981
6
+ metadata.gz: 3dd556c62999f098e98863d52292b7bb80752695ba68fe9d2309c791334f5ae950b47717482a7f1a18fd00284f84c5eae404f7747d26287ee8a34891bd1c7759
7
+ data.tar.gz: 1bbd2fbc9ef860af00a4b1da17507e341679ee555e11447749103958383d5713fed349cd73b68e928103309283dea9342c35a49a69d7d1dfc4b549c1e3fe1d14
data/Changelog.md CHANGED
@@ -1,9 +1,20 @@
1
1
  ### dev
2
2
 
3
- [full changelog](https://github.com/Mange/roadie/compare/v3.0.0...master)
3
+ [full changelog](https://github.com/Mange/roadie/compare/v3.0.1...master)
4
4
 
5
5
  * Nothing yet.
6
6
 
7
+ ### 3.0.1
8
+
9
+ [full changelog](https://github.com/Mange/roadie/compare/v3.0.0...v3.0.1)
10
+
11
+ * Enhancements:
12
+ * `CssNotFound` can take a provider which will be shown in error messages.
13
+ * Bug fixes:
14
+ * URL rewriter no longer raises on absolute URLs that cannot be parsed by `URI`. Absolute URLs are completely ignored.
15
+ * URL rewriter supports urls without a scheme (like `//assets.myapp.com/foo`).
16
+ * URL rewriter no longer crashes on absolute URLs without a path (like `myapp://`).
17
+
7
18
  ### 3.0.0
8
19
 
9
20
  [full changelog](https://github.com/Mange/roadie/compare/v3.0.0.pre1...v3.0.0)
data/README.md CHANGED
@@ -107,7 +107,7 @@ Example:
107
107
 
108
108
  ```ruby
109
109
  # /home/user/foo/stylesheets/primary.css
110
- body { color: blue; }
110
+ body { color: green; }
111
111
 
112
112
  # /home/user/foo/script.rb
113
113
  html = <<-HTML
@@ -176,7 +176,7 @@ class UserAssetsProvider
176
176
  end
177
177
 
178
178
  def find_stylesheet!(name)
179
- find_stylesheet(name) or raise Roadie::CssNotFound.new(name)
179
+ find_stylesheet(name) or raise Roadie::CssNotFound.new(name, "does not match a user stylesheet", self)
180
180
  end
181
181
 
182
182
  # Instead of implementing #find_stylesheet!, you could also:
@@ -243,7 +243,7 @@ Tested with [Travis CI](http://travis-ci.org) using:
243
243
 
244
244
  Let me know if you want any other VM supported officially.
245
245
 
246
- Rubinius support is experimental since it it currently hindered by a Rubinius bug that will probably be fixed shortly.
246
+ Rubinius support is experimental since it is currently hindered by a Rubinius bug that will probably be fixed shortly.
247
247
 
248
248
  ### Versioning ###
249
249
 
@@ -274,7 +274,7 @@ Documentation
274
274
 
275
275
  * [Online documentation for gem](http://rubydoc.info/gems/roadie/frames)
276
276
  * [Online documentation for master](http://rubydoc.info/github/Mange/roadie/master/frames)
277
- * [Online documentation for Roadie 2.4](http://rubydoc.info/gems/roadie/2.4/frames)
277
+ * [Online documentation for Roadie 2.4.3](http://rubydoc.info/gems/roadie/2.4.3/frames)
278
278
  * [Changelog](https://github.com/Mange/roadie/blob/master/Changelog.md)
279
279
 
280
280
  Running specs
@@ -5,7 +5,7 @@ module Roadie
5
5
  # It helps you by declaring {#find_stylesheet!} in the terms of #find_stylesheet in your own class.
6
6
  module AssetProvider
7
7
  def find_stylesheet!(name)
8
- find_stylesheet(name) or raise CssNotFound, name
8
+ find_stylesheet(name) or raise CssNotFound.new(name, nil, self)
9
9
  end
10
10
  end
11
11
  end
data/lib/roadie/errors.rb CHANGED
@@ -40,18 +40,22 @@ module Roadie
40
40
  # The name of the stylesheet that cannot be found
41
41
  attr_reader :css_name
42
42
 
43
- def initialize(css_name, extra_message = nil)
43
+ # Provider used when finding
44
+ attr_reader :provider
45
+
46
+ # TODO: Change signature in the next major version of Roadie.
47
+ def initialize(css_name, extra_message = nil, provider = nil)
44
48
  @css_name = css_name
49
+ @provider = provider
45
50
  super build_message(extra_message)
46
51
  end
47
52
 
48
53
  private
49
54
  def build_message(extra_message)
50
- if extra_message
51
- %(Could not find stylesheet "#{css_name}": #{extra_message})
52
- else
53
- %(Could not find stylesheet "#{css_name}")
54
- end
55
+ message = %(Could not find stylesheet "#{css_name}")
56
+ message << ": #{extra_message}" if extra_message
57
+ message << "\nUsed provider:\n#{provider}" if provider
58
+ message
55
59
  end
56
60
  end
57
61
  end
@@ -30,8 +30,8 @@ module Roadie
30
30
  if File.exist? file_path
31
31
  Stylesheet.new file_path, File.read(file_path)
32
32
  else
33
- clean_name = File.basename file_path
34
- raise CssNotFound.new(clean_name, %{#{file_path} does not exist. (Original name was "#{name}")})
33
+ basename = File.basename file_path
34
+ raise CssNotFound.new(basename, %{#{file_path} does not exist. (Original name was "#{name}")}, self)
35
35
  end
36
36
  end
37
37
 
@@ -44,6 +44,14 @@ module Roadie
44
44
  nil
45
45
  end
46
46
 
47
+ def to_s
48
+ list = @providers.map { |provider|
49
+ # Indent every line one level
50
+ provider.to_s.split("\n").join("\n\t")
51
+ }
52
+ "ProviderList: [\n\t#{list.join(",\n\t")}\n]"
53
+ end
54
+
47
55
  # ProviderList can be coerced to an array. This makes Array#flatten work
48
56
  # with it, among other things.
49
57
  def to_ary() to_a end
@@ -105,7 +105,9 @@ module Roadie
105
105
  end
106
106
 
107
107
  def path_is_absolute?(path)
108
- not parse_path(path).relative?
108
+ # Ruby's URI is pretty unforgiving, but roadie aims to be. Don't involve
109
+ # URI for URLs that's easy to determine to be absolute.
110
+ path =~ %r{^(\w+:)?//} || !parse_path(path).relative?
109
111
  end
110
112
 
111
113
  def parse_path(path)
@@ -1,3 +1,3 @@
1
1
  module Roadie
2
- VERSION = '3.0.0'
2
+ VERSION = '3.0.1'
3
3
  end
@@ -13,5 +13,12 @@ module Roadie
13
13
  'Could not find stylesheet "file.css": directory is missing'
14
14
  )
15
15
  end
16
+
17
+ it "shows information about used provider when given" do
18
+ provider = double("Some cool provider")
19
+ expect(CssNotFound.new('style.css', nil, provider).message).to eq(
20
+ %(Could not find stylesheet "style.css"\nUsed provider:\n#{provider})
21
+ )
22
+ end
16
23
  end
17
24
  end
@@ -64,6 +64,20 @@ module Roadie
64
64
  }.to change(provider, :size).by(-1)
65
65
  end
66
66
 
67
+ it "has a readable string represenation" do
68
+ provider = double("Provider", to_s: "Some provider")
69
+ sublist = ProviderList.new([provider, provider])
70
+ list = ProviderList.new([provider, sublist, provider])
71
+ expect(list.to_s).to eql "ProviderList: [\n" +
72
+ "\tSome provider,\n" +
73
+ "\tProviderList: [\n" +
74
+ "\t\tSome provider,\n" +
75
+ "\t\tSome provider\n" +
76
+ "\t],\n" +
77
+ "\tSome provider\n" +
78
+ "]"
79
+ end
80
+
67
81
  describe "wrapping" do
68
82
  it "creates provider lists with the arguments" do
69
83
  expect(ProviderList.wrap(test_provider)).to be_instance_of(ProviderList)
@@ -84,6 +84,21 @@ module Roadie
84
84
  it "does not touch data: URIs" do
85
85
  expect(url("data:deadbeef", host: "example.com")).to eq("data:deadbeef")
86
86
  end
87
+
88
+ it "does not touch absolute URLs without schemes" do
89
+ expect(url("//assets.myapp.com/foo.jpg", host: "example.com")).to eq("//assets.myapp.com/foo.jpg")
90
+ end
91
+
92
+ it "does not touch custom schemes" do
93
+ expect(url("myapp://", host: "example.com")).to eq("myapp://")
94
+ end
95
+
96
+ it "does not care if absolute URLs have parse errors" do
97
+ # Pipe character is invalid inside URLs, but that does not stop a whole
98
+ # lot of templating/emailing systems for using them as template
99
+ # markers.
100
+ expect(url("https://foo.com/%|MARKETING_TOKEN|%", host: "example.com")).to eq("https://foo.com/%|MARKETING_TOKEN|%")
101
+ end
87
102
  end
88
103
 
89
104
  # URLs in resources that are not based inside the root requires that we may
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: roadie
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.0
4
+ version: 3.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Magnus Bergmark
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-06-27 00:00:00.000000000 Z
11
+ date: 2014-08-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: nokogiri