wicked_pdf 2.8.0 → 2.8.1
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 +6 -1
- data/README.md +3 -3
- data/generators/wicked_pdf/templates/wicked_pdf.rb +4 -4
- data/lib/wicked_pdf/version.rb +1 -1
- data/lib/wicked_pdf/wicked_pdf_helper/assets.rb +20 -1
- data/lib/wicked_pdf.rb +1 -0
- data/test/fixtures/subdirectory/nested.js +1 -0
- data/test/functional/wicked_pdf_helper_assets_test.rb +68 -0
- data/test/test_helper.rb +5 -0
- metadata +4 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: a0ccf42076502bc818ca5387b97d300bad8ebf99c0ecdcc024ea1a2e4d2c45a6
|
|
4
|
+
data.tar.gz: aaa9779f4c8ee4baf5b6e5ce27d7ebd7396e6b565c59263fc0a7db6f6e0518e9
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: d2e93a8024b529dadccf861026e916c4d75270d821f038bb4c5dd8d12f1bd73bae451ba288fc62e7e10d35380a573a4d554c8da0d39c2490c6ca38b6666590a7
|
|
7
|
+
data.tar.gz: 5624cbb405350aa731ffc9910e70d286dabdb833b15a38235f2b933a842e3c6ce9342001bd779a72abac668fe84455f32f9cb58cdad7417e62e2fcec6817856f
|
data/CHANGELOG.md
CHANGED
|
@@ -2,11 +2,16 @@
|
|
|
2
2
|
All notable changes to this project should be documented in this file.
|
|
3
3
|
This project attempts to adhere to [Semantic Versioning](http://semver.org/).
|
|
4
4
|
|
|
5
|
-
## [[master branch] - Unreleased changes](https://github.com/mileszs/wicked_pdf/compare/2.8.
|
|
5
|
+
## [[master branch] - Unreleased changes](https://github.com/mileszs/wicked_pdf/compare/2.8.1...HEAD)
|
|
6
6
|
### Breaking Changes
|
|
7
7
|
### New Features
|
|
8
8
|
### Fixes
|
|
9
9
|
|
|
10
|
+
## [2.8.1]
|
|
11
|
+
### Fixes
|
|
12
|
+
- [Explicitly require OpenStruct, which isn't loaded by default anymore in new versions of Rake](https://github.com/mileszs/wicked_pdf/pull/1110)
|
|
13
|
+
- [Ensure assets without extensions are handled correctly](https://github.com/mileszs/wicked_pdf/pull/1115)
|
|
14
|
+
|
|
10
15
|
## [2.8.0]
|
|
11
16
|
### New Features
|
|
12
17
|
- [Add New config option `raise_on_missing_assets`](https://github.com/mileszs/wicked_pdf/pull/1094)
|
data/README.md
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
Wicked PDF uses the shell utility [wkhtmltopdf](http://wkhtmltopdf.org) to serve a PDF file to a user from HTML. In other words, rather than dealing with a PDF generation DSL of some sort, you simply write an HTML view as you would normally, then let Wicked PDF take care of the hard stuff.
|
|
6
6
|
|
|
7
|
-
_Wicked PDF has been verified to work on Ruby versions 2.2 through 2
|
|
7
|
+
_Wicked PDF has been verified to work on Ruby versions 2.2 through 3.2; Rails 4 through 7.0_
|
|
8
8
|
|
|
9
9
|
### Installation
|
|
10
10
|
|
|
@@ -43,9 +43,9 @@ If your wkhtmltopdf executable is not on your webserver's path, you can configur
|
|
|
43
43
|
|
|
44
44
|
```ruby
|
|
45
45
|
WickedPdf.configure do |c|
|
|
46
|
-
c.exe_path = '/usr/local/bin/wkhtmltopdf'
|
|
46
|
+
c.exe_path = '/usr/local/bin/wkhtmltopdf'
|
|
47
47
|
c.enable_local_file_access = true
|
|
48
|
-
|
|
48
|
+
end
|
|
49
49
|
```
|
|
50
50
|
|
|
51
51
|
For more information about `wkhtmltopdf`, see the project's [homepage](http://wkhtmltopdf.org/).
|
|
@@ -11,20 +11,20 @@
|
|
|
11
11
|
WickedPdf.configure do |config|
|
|
12
12
|
# Path to the wkhtmltopdf executable: This usually isn't needed if using
|
|
13
13
|
# one of the wkhtmltopdf-binary family of gems.
|
|
14
|
-
# config.exe_path = '/usr/local/bin/wkhtmltopdf'
|
|
14
|
+
# config.exe_path = '/usr/local/bin/wkhtmltopdf'
|
|
15
15
|
# or
|
|
16
16
|
# config.exe_path = Gem.bin_path('wkhtmltopdf-binary', 'wkhtmltopdf')
|
|
17
17
|
|
|
18
18
|
# Needed for wkhtmltopdf 0.12.6+ to use many wicked_pdf asset helpers
|
|
19
|
-
# config.enable_local_file_access = true
|
|
19
|
+
# config.enable_local_file_access = true
|
|
20
20
|
|
|
21
21
|
# Layout file to be used for all PDFs
|
|
22
22
|
# (but can be overridden in `render :pdf` calls)
|
|
23
|
-
# config.layout = 'pdf.html'
|
|
23
|
+
# config.layout = 'pdf.html'
|
|
24
24
|
|
|
25
25
|
# Using wkhtmltopdf without an X server can be achieved by enabling the
|
|
26
26
|
# 'use_xvfb' flag. This will wrap all wkhtmltopdf commands around the
|
|
27
27
|
# 'xvfb-run' command, in order to simulate an X server.
|
|
28
28
|
#
|
|
29
|
-
# config.use_xvfb = true
|
|
29
|
+
# config.use_xvfb = true
|
|
30
30
|
end
|
data/lib/wicked_pdf/version.rb
CHANGED
|
@@ -202,13 +202,32 @@ class WickedPdf
|
|
|
202
202
|
elsif defined?(Propshaft::Assembly) && Rails.application.assets.is_a?(Propshaft::Assembly)
|
|
203
203
|
PropshaftAsset.new(Rails.application.assets.load_path.find(path))
|
|
204
204
|
elsif Rails.application.respond_to?(:assets_manifest)
|
|
205
|
-
|
|
205
|
+
relative_asset_path = get_asset_path_from_manifest(path)
|
|
206
|
+
return unless relative_asset_path
|
|
207
|
+
|
|
208
|
+
asset_path = File.join(Rails.application.assets_manifest.dir, relative_asset_path)
|
|
206
209
|
LocalAsset.new(asset_path) if File.file?(asset_path)
|
|
207
210
|
else
|
|
208
211
|
SprocketsEnvironment.find_asset(path, :base_path => Rails.application.root.to_s)
|
|
209
212
|
end
|
|
210
213
|
end
|
|
211
214
|
|
|
215
|
+
def get_asset_path_from_manifest(path)
|
|
216
|
+
assets = Rails.application.assets_manifest.assets
|
|
217
|
+
|
|
218
|
+
if File.extname(path).empty?
|
|
219
|
+
assets.find do |asset, _v|
|
|
220
|
+
directory = File.dirname(asset)
|
|
221
|
+
asset_path = File.basename(asset, File.extname(asset))
|
|
222
|
+
asset_path = File.join(directory, asset_path) if directory != '.'
|
|
223
|
+
|
|
224
|
+
asset_path == path
|
|
225
|
+
end&.last
|
|
226
|
+
else
|
|
227
|
+
assets[path]
|
|
228
|
+
end
|
|
229
|
+
end
|
|
230
|
+
|
|
212
231
|
# will prepend a http or default_protocol to a protocol relative URL
|
|
213
232
|
# or when no protcol is set.
|
|
214
233
|
def prepend_protocol(source)
|
data/lib/wicked_pdf.rb
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
// Nested js
|
|
@@ -11,6 +11,10 @@ class WickedPdfHelperAssetsTest < ActionView::TestCase
|
|
|
11
11
|
|
|
12
12
|
teardown do
|
|
13
13
|
WickedPdf.config = @saved_config
|
|
14
|
+
|
|
15
|
+
# @see freerange/mocha#331
|
|
16
|
+
Rails.application.unstub(:assets)
|
|
17
|
+
Rails.application.unstub(:assets_manifest)
|
|
14
18
|
end
|
|
15
19
|
|
|
16
20
|
if Rails::VERSION::MAJOR > 3 || (Rails::VERSION::MAJOR == 3 && Rails::VERSION::MINOR > 0)
|
|
@@ -18,12 +22,61 @@ class WickedPdfHelperAssetsTest < ActionView::TestCase
|
|
|
18
22
|
assert_match %r{data:text\/css;base64,.+}, wicked_pdf_asset_base64('wicked.css')
|
|
19
23
|
end
|
|
20
24
|
|
|
25
|
+
test 'wicked_pdf_asset_base64 works without file extension when using sprockets' do
|
|
26
|
+
assert_match %r{data:application\/javascript;base64,.+}, wicked_pdf_asset_base64('wicked')
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
test 'wicked_pdf_asset_base64 works with nested files and without file extension when using sprockets' do
|
|
30
|
+
assert_match %r{data:application\/javascript;base64,.+}, wicked_pdf_asset_base64('subdirectory/nested')
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
test 'wicked_pdf_asset_base64 works without file extension when using asset manifest' do
|
|
34
|
+
stub_manifest = OpenStruct.new(
|
|
35
|
+
:dir => Rails.root.join('app/assets'),
|
|
36
|
+
:assets => { 'wicked.css' => 'stylesheets/wicked.css', 'wicked.js' => 'javascripts/wicked.js' }
|
|
37
|
+
)
|
|
38
|
+
Rails.application.stubs(:assets).returns(nil)
|
|
39
|
+
Rails.application.stubs(:assets_manifest).returns(stub_manifest)
|
|
40
|
+
|
|
41
|
+
assert_match %r{data:text\/css;base64,.+}, wicked_pdf_asset_base64('wicked')
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
test 'wicked_pdf_asset_base64 works with nested files and without file extension when using asset manifest' do
|
|
45
|
+
stub_manifest = OpenStruct.new(
|
|
46
|
+
:dir => Rails.root.join('app/assets'),
|
|
47
|
+
:assets => { 'subdirectory/nested.js' => 'javascripts/subdirectory/nested.js' }
|
|
48
|
+
)
|
|
49
|
+
Rails.application.stubs(:assets).returns(nil)
|
|
50
|
+
Rails.application.stubs(:assets_manifest).returns(stub_manifest)
|
|
51
|
+
|
|
52
|
+
assert_match %r{data:text\/javascript;base64,.+}, wicked_pdf_asset_base64('subdirectory/nested')
|
|
53
|
+
end
|
|
54
|
+
|
|
21
55
|
test 'wicked_pdf_stylesheet_link_tag should inline the stylesheets passed in' do
|
|
22
56
|
Rails.configuration.assets.expects(:compile => true)
|
|
23
57
|
assert_equal "<style type='text/css'>/* Wicked styles */\n\n</style>",
|
|
24
58
|
wicked_pdf_stylesheet_link_tag('wicked')
|
|
25
59
|
end
|
|
26
60
|
|
|
61
|
+
test 'wicked_pdf_stylesheet_link_tag should work without file extension when using sprockets' do
|
|
62
|
+
Rails.configuration.assets.expects(:compile => true)
|
|
63
|
+
assert_equal "<style type='text/css'>/* Wicked styles */\n\n</style>",
|
|
64
|
+
wicked_pdf_stylesheet_link_tag('wicked')
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
test 'wicked_pdf_stylesheet_link_tag should work without file extension when using asset manifest' do
|
|
68
|
+
stub_manifest = OpenStruct.new(
|
|
69
|
+
:dir => Rails.root.join('app/assets'),
|
|
70
|
+
:assets => { 'wicked.css' => 'stylesheets/wicked.css', 'wicked.js' => 'javascripts/wicked.js' }
|
|
71
|
+
)
|
|
72
|
+
|
|
73
|
+
Rails.application.stubs(:assets).returns(nil)
|
|
74
|
+
Rails.application.stubs(:assets_manifest).returns(stub_manifest)
|
|
75
|
+
|
|
76
|
+
assert_equal "<style type='text/css'>/* Wicked styles */\n</style>",
|
|
77
|
+
wicked_pdf_stylesheet_link_tag('wicked')
|
|
78
|
+
end
|
|
79
|
+
|
|
27
80
|
test 'wicked_pdf_stylesheet_link_tag should raise if the stylesheet is not available and config is set' do
|
|
28
81
|
Rails.configuration.assets.expects(:compile => true)
|
|
29
82
|
WickedPdf.config[:raise_on_missing_assets] = true
|
|
@@ -60,6 +113,21 @@ class WickedPdfHelperAssetsTest < ActionView::TestCase
|
|
|
60
113
|
wicked_pdf_stylesheet_link_tag('https://www.example.com/wicked.css')
|
|
61
114
|
end
|
|
62
115
|
|
|
116
|
+
test 'wicked_pdf_stylesheet_link_tag should inline the stylesheets passed in when assets are remote and using asset manifest' do
|
|
117
|
+
stub_manifest = OpenStruct.new(
|
|
118
|
+
:dir => Rails.root.join('app/assets'),
|
|
119
|
+
:assets => { 'wicked.css' => 'stylesheets/wicked.css', 'wicked.js' => 'javascripts/wicked.js' }
|
|
120
|
+
)
|
|
121
|
+
|
|
122
|
+
Rails.application.stubs(:assets).returns(nil)
|
|
123
|
+
Rails.application.stubs(:assets_manifest).returns(stub_manifest)
|
|
124
|
+
|
|
125
|
+
stub_request(:get, 'https://www.example.com/wicked.css').to_return(:status => 200, :body => '/* Wicked styles */')
|
|
126
|
+
expects(:precompiled_or_absolute_asset? => true).twice
|
|
127
|
+
assert_equal "<style type='text/css'>/* Wicked styles */</style>",
|
|
128
|
+
wicked_pdf_stylesheet_link_tag('https://www.example.com/wicked.css')
|
|
129
|
+
end
|
|
130
|
+
|
|
63
131
|
test 'wicked_pdf_stylesheet_link_tag should raise if remote assets are not available and config is set' do
|
|
64
132
|
WickedPdf.config[:raise_on_missing_assets] = true
|
|
65
133
|
stub_request(:get, 'https://www.example.com/wicked.css').to_return(:status => 404, :body => 'File not found')
|
data/test/test_helper.rb
CHANGED
|
@@ -27,6 +27,11 @@ if (assets_dir = Rails.root.join('app/assets')) && File.directory?(assets_dir)
|
|
|
27
27
|
source = File.read('test/fixtures/wicked.js')
|
|
28
28
|
File.open(destination, 'w') { |f| f.write(source) }
|
|
29
29
|
|
|
30
|
+
Dir.mkdir(js_dir.join('subdirectory')) unless File.directory?(js_dir.join('subdirectory'))
|
|
31
|
+
destination = js_dir.join('subdirectory/nested.js')
|
|
32
|
+
source = File.read('test/fixtures/subdirectory/nested.js')
|
|
33
|
+
File.open(destination, 'w') { |f| f.write(source) }
|
|
34
|
+
|
|
30
35
|
config_dir = assets_dir.join('config')
|
|
31
36
|
Dir.mkdir(config_dir) unless File.directory?(config_dir)
|
|
32
37
|
source = File.read('test/fixtures/manifest.js')
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: wicked_pdf
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 2.8.
|
|
4
|
+
version: 2.8.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Miles Z. Sterrett
|
|
@@ -9,7 +9,7 @@ authors:
|
|
|
9
9
|
autorequire:
|
|
10
10
|
bindir: bin
|
|
11
11
|
cert_chain: []
|
|
12
|
-
date: 2024-
|
|
12
|
+
date: 2024-08-10 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
|
14
14
|
- !ruby/object:Gem::Dependency
|
|
15
15
|
name: activesupport
|
|
@@ -182,6 +182,7 @@ files:
|
|
|
182
182
|
- test/fixtures/database.yml
|
|
183
183
|
- test/fixtures/document_with_long_line.html
|
|
184
184
|
- test/fixtures/manifest.js
|
|
185
|
+
- test/fixtures/subdirectory/nested.js
|
|
185
186
|
- test/fixtures/wicked.css
|
|
186
187
|
- test/fixtures/wicked.js
|
|
187
188
|
- test/functional/pdf_helper_test.rb
|
|
@@ -222,6 +223,7 @@ test_files:
|
|
|
222
223
|
- test/fixtures/database.yml
|
|
223
224
|
- test/fixtures/document_with_long_line.html
|
|
224
225
|
- test/fixtures/manifest.js
|
|
226
|
+
- test/fixtures/subdirectory/nested.js
|
|
225
227
|
- test/fixtures/wicked.css
|
|
226
228
|
- test/fixtures/wicked.js
|
|
227
229
|
- test/functional/pdf_helper_test.rb
|