roadie-rails 1.0.2 → 1.0.3
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/Changelog.md +13 -1
- data/README.md +17 -0
- data/lib/roadie/rails/asset_pipeline_provider.rb +10 -1
- data/lib/roadie/rails/options.rb +7 -2
- data/lib/roadie/rails/railtie.rb +1 -1
- data/lib/roadie/rails/version.rb +1 -1
- data/spec/lib/roadie/rails/asset_pipeline_provider_spec.rb +15 -0
- data/spec/lib/roadie/rails/options_spec.rb +8 -0
- data/spec/lib/roadie/rails/railtie_spec.rb +13 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6af45ff8198c174ab196aa56d43b41c9a6fe4beb
|
4
|
+
data.tar.gz: 1dccbfa2e869c0e4bdac53aa5216d7dc943586a6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: abc12ed74b832165ae530fd1a177e543ee09aafca39674923d52479aa0d916f9385e9a233a6de436e0bf73b1ca2f7d19ce31816f88432c0ab99f20eb49e337c2
|
7
|
+
data.tar.gz: 5c5863831c581517ab0c7e6f1a6cc3623f3690e2c5538e305184c9bac0ad2e2c184e119e4019918f7c222fc8653924b1d66f4ba039125650e6c78136373b38e2
|
data/Changelog.md
CHANGED
@@ -1,6 +1,18 @@
|
|
1
1
|
### development version
|
2
2
|
|
3
|
-
[full changelog](https://github.com/Mange/roadie/compare/v1.0.
|
3
|
+
[full changelog](https://github.com/Mange/roadie/compare/v1.0.3...master)
|
4
|
+
|
5
|
+
* Nothing yet
|
6
|
+
|
7
|
+
### 1.0.3
|
8
|
+
|
9
|
+
[full changelog](https://github.com/Mange/roadie/compare/v1.0.2...v1.0.3)
|
10
|
+
|
11
|
+
* Bug fixes
|
12
|
+
* Don't change `asset_providers` of a `Roadie::Document` when applying Options with no `asset_providers` set.
|
13
|
+
* Support assets inside subdirectories.
|
14
|
+
* Don't add `AssetPipelineProvider` when asset pipeline is unavailable (e.g. inside Rails engines).
|
15
|
+
* Raise error when initializing `AssetPipelineProvider` with `nil` provider.
|
4
16
|
|
5
17
|
### 1.0.2
|
6
18
|
|
data/README.md
CHANGED
@@ -254,6 +254,23 @@ class Admin::EmailsController < AdminController
|
|
254
254
|
end
|
255
255
|
```
|
256
256
|
|
257
|
+
## Known issues ##
|
258
|
+
|
259
|
+
Roadie will not be able to find your stylesheets if you have an `asset_host` configured and will ignore those lines when inlining.
|
260
|
+
|
261
|
+
A workaround for this is to not use `asset_host` in your mailers:
|
262
|
+
|
263
|
+
```ruby
|
264
|
+
config.action_controller.asset_host = # ...
|
265
|
+
config.action_mailer.asset_host = nil
|
266
|
+
|
267
|
+
# or
|
268
|
+
|
269
|
+
class MyMailer < ActionMailer::Base
|
270
|
+
self.asset_host = nil
|
271
|
+
end
|
272
|
+
```
|
273
|
+
|
257
274
|
## Build status ##
|
258
275
|
|
259
276
|
Tested with [Travis CI](http://travis-ci.org) using [almost all combinations of](http://travis-ci.org/#!/Mange/roadie-rails):
|
@@ -5,6 +5,7 @@ module Roadie
|
|
5
5
|
attr_reader :pipeline
|
6
6
|
|
7
7
|
def initialize(pipeline)
|
8
|
+
raise ArgumentError, "You need to pass a pipeline to initialize AssetPipelineProvider" unless pipeline
|
8
9
|
super()
|
9
10
|
@pipeline = pipeline
|
10
11
|
end
|
@@ -17,7 +18,15 @@ module Roadie
|
|
17
18
|
|
18
19
|
private
|
19
20
|
def normalize_asset_name(href)
|
20
|
-
|
21
|
+
remove_asset_prefix href.split('?').first
|
22
|
+
end
|
23
|
+
|
24
|
+
def remove_asset_prefix(path)
|
25
|
+
path.sub(Regexp.new("^#{Regexp.quote(asset_prefix)}/?"), "")
|
26
|
+
end
|
27
|
+
|
28
|
+
def asset_prefix
|
29
|
+
::Rails.application.try(:config).try(:assets).try(:prefix) || "/assets"
|
21
30
|
end
|
22
31
|
end
|
23
32
|
end
|
data/lib/roadie/rails/options.rb
CHANGED
@@ -30,6 +30,9 @@ module Roadie
|
|
30
30
|
def asset_providers=(providers)
|
31
31
|
if providers
|
32
32
|
@asset_providers = ProviderList.wrap providers
|
33
|
+
# TODO: Raise an error when setting to nil in order to make this not a silent error.
|
34
|
+
# else
|
35
|
+
# raise ArgumentError, "Cannot set asset_providers to nil. Set to Roadie::NullProvider if you want no external assets inlined."
|
33
36
|
end
|
34
37
|
end
|
35
38
|
|
@@ -37,7 +40,9 @@ module Roadie
|
|
37
40
|
document.url_options = url_options
|
38
41
|
document.before_transformation = before_transformation
|
39
42
|
document.after_transformation = after_transformation
|
40
|
-
|
43
|
+
# #asset_providers default to nil in this class and it's the one option
|
44
|
+
# that is not allowed to be nil on Document.
|
45
|
+
document.asset_providers = asset_providers if asset_providers
|
41
46
|
end
|
42
47
|
|
43
48
|
def merge(options)
|
@@ -78,7 +83,7 @@ module Roadie
|
|
78
83
|
|
79
84
|
def combine_providers(first, second)
|
80
85
|
combine_nilable(first, second) do |a, b|
|
81
|
-
ProviderList.new
|
86
|
+
ProviderList.new(a.to_a + Array.wrap(b))
|
82
87
|
end
|
83
88
|
end
|
84
89
|
|
data/lib/roadie/rails/railtie.rb
CHANGED
@@ -13,7 +13,7 @@ module Roadie
|
|
13
13
|
# Saying config.assets.enabled here does not work in Rails 3.1-3.2, but
|
14
14
|
# APP.config.assets work. There is a difference between "config" and
|
15
15
|
# "app.config" on those versions.
|
16
|
-
if app.config.respond_to?(:assets) && app.config.assets.enabled != false
|
16
|
+
if app.config.respond_to?(:assets) && app.config.assets.enabled != false && app.assets
|
17
17
|
config.roadie.asset_providers << AssetPipelineProvider.new(app.assets)
|
18
18
|
end
|
19
19
|
end
|
data/lib/roadie/rails/version.rb
CHANGED
@@ -6,6 +6,12 @@ module Roadie
|
|
6
6
|
describe AssetPipelineProvider do
|
7
7
|
let(:pipeline) { FakePipeline.new }
|
8
8
|
|
9
|
+
it "requires a passed pipeline" do
|
10
|
+
expect {
|
11
|
+
AssetPipelineProvider.new(nil)
|
12
|
+
}.to raise_error(ArgumentError)
|
13
|
+
end
|
14
|
+
|
9
15
|
it_behaves_like "roadie asset provider", valid_name: "existing.css", invalid_name: "bad.css" do
|
10
16
|
subject { AssetPipelineProvider.new(pipeline) }
|
11
17
|
before do
|
@@ -28,6 +34,15 @@ module Roadie
|
|
28
34
|
provider = AssetPipelineProvider.new(pipeline)
|
29
35
|
expect(provider.find_stylesheet("/assets/good.css?body=1")).not_to be_nil
|
30
36
|
end
|
37
|
+
|
38
|
+
it "supports stylesheets inside subdirectories" do
|
39
|
+
pipeline.add_asset "sub/deep.css", "/path/to/sub/deep.css.scss", "body { color: green; }"
|
40
|
+
provider = AssetPipelineProvider.new(pipeline)
|
41
|
+
|
42
|
+
stylesheet = provider.find_stylesheet("sub/deep.css")
|
43
|
+
expect(stylesheet.name).to eq("/path/to/sub/deep.css.scss (live compiled)")
|
44
|
+
expect(stylesheet.to_s).to eq("body{color:green}")
|
45
|
+
end
|
31
46
|
end
|
32
47
|
|
33
48
|
class FakePipeline
|
@@ -131,6 +131,14 @@ module Roadie
|
|
131
131
|
expect(options.asset_providers.to_a).to eq([provider])
|
132
132
|
end
|
133
133
|
end
|
134
|
+
|
135
|
+
describe "applying to a document" do
|
136
|
+
it "does not change the default asset_providers if option is never set" do
|
137
|
+
fake_document = OpenStruct.new(asset_providers: "original")
|
138
|
+
Options.new.apply_to(fake_document)
|
139
|
+
expect(fake_document.asset_providers).to eq("original")
|
140
|
+
end
|
141
|
+
end
|
134
142
|
end
|
135
143
|
end
|
136
144
|
end
|
@@ -42,6 +42,19 @@ module Roadie
|
|
42
42
|
expect(providers[1]).to be_instance_of(AssetPipelineProvider)
|
43
43
|
expect(providers[1].pipeline).to eq(asset_pipeline)
|
44
44
|
end
|
45
|
+
|
46
|
+
# This happens inside a Rails engine as the parent app is the one
|
47
|
+
# holding on to the pipeline.
|
48
|
+
it "gets no AssetPipelineProvider if assets are enabled but not available" do
|
49
|
+
rails_application.config.assets = ActiveSupport::OrderedOptions.new(enabled: true)
|
50
|
+
allow(rails_application).to receive(:assets).and_return nil
|
51
|
+
|
52
|
+
run_initializer
|
53
|
+
|
54
|
+
providers = Railtie.config.roadie.asset_providers.to_a
|
55
|
+
expect(providers).to have(1).item
|
56
|
+
expect(providers[0]).to be_instance_of(FilesystemProvider)
|
57
|
+
end
|
45
58
|
end
|
46
59
|
end
|
47
60
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: roadie-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.3
|
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-
|
11
|
+
date: 2014-08-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: roadie
|