-
-
Save juggy/768696 to your computer and use it in GitHub Desktop.
ActionController::Base.asset_host = Proc.new { |source, request| | |
if request.env["REQUEST_PATH"].include? ".pdf" | |
"file://#{Rails.root.join('public')}" | |
else | |
"#{request.protocol}#{request.host_with_port}" | |
end | |
} |
Where do you place this block if you want to get pdfkit to work in rails 3.1? Did you have to create a new initializer file and place it in there? I can't seem to get pdfs to load and the issue that you were having looks like the same one that I am having.
@ ciopte7 Yes you create a new initializer.
this does not work for me: I've got the following error, can you help me please? I use Rails 3.0.10, and I'm trying to make PDKKit to work because of broken pipe error
ActionView::Template::Error (undefined method include?' for nil:NilClass): 7: <h1><%= @post.title %></h1> 8: <% if @post.headpic.file? %> 9: <div style="float:left;margin-top:5px;padding-right:5px;"> 10: <%= image_tag @post.headpic.url(:original) %> 11: <div class="image_cc">© <%= @post.headpic_copyright %></div> 12: </div> 13: <% end %> config/initializers/assets.rb:2:in
block in <top (required)>'
@gasova It looks like you are trying to generate the pdf without going through the pdfkit middleware. If the request does not have a request path, it means you might not even go through rack... How are you calling this?
You can use root_url option with the same effect
PDFKit.configure do |config|
config.root_url = "file://#{Rails.root.join('public')}"
end
@timurvafin not sure. I believe root_url is for relative paths. If my html or css is requiring a file at full url (http://domain.com/file) then it won't work.
@juggy, think solution with asset_host will not work either b/c it's used only by assets helpers which generate only paths (without proto & domain)
Think again. Asset hosts are there in production to roll out things like cloudfront and multiple assets servers. It can be used to avoid pipelining of assets in the rowser also (using asset1, asset2 hosts for example) . This particular gist is used in production for 2 of our apps for more than a year without any glitches.
Thank you for the gist!
Here is correct version with slash at the end for root_url option. Works for me too on heroku.
PDFKit.configure do |config|
config.root_url = "file://#{Rails.root.join('public')}/"
end
If you use the OP's method:
consider using this instead
if request.path.include? ".pdf"
Hi Juggy,
First of all, thanks for this useful tip.
It works fine with both rails' css and image tags, but how do you do for pics within css like:
Thanks in advance!
Edit: I asked the question here: http://stackoverflow.com/questions/7275988/no-pics-in-my-pdf-created-with-pdfkit-on-heroku