mileszs / wicked_pdf

PDF generator (from HTML) plugin for Ruby on Rails
http://www.mileszs.com/wicked-pdf-plugin
MIT License
3.54k stars 647 forks source link

wicked_pdf_stylesheet_link_tag 'application' throwing 404 error #420

Open u007 opened 9 years ago

u007 commented 9 years ago

Ive encountered a strange error using wicked_pdf, ive never has the same issue on my mac, but on my production centos 6.6 vps, it throws 404 error on the line:

wicked_pdf_stylesheet_link_tag 'application' 

im using

gem 'rails', '4.1.6'
gem 'wkhtmltopdf-binary'
gem 'wicked_pdf', '~> 0.11.0'

ive tried to add application.css.scss or application.css into initializer/assets.rb

Rails.application.config.assets.version = '1.1'
# Precompile additional assets.
# application.js, application.css, and all non-JS/CSS in app/assets folder are already added.
# Rails.application.config.assets.precompile += %w( search.js )

Rails.application.config.assets.precompile += %w(*.svg *.eot *.woff *.ttf *.gif *.png *.ico)
Rails.application.config.assets.precompile += %w(application.css *.js *.css *.js.coffee)

but still does not work, anyone have any clue what can be done?

full trace showing:

/usr/local/rvm/rubies/ruby-2.1.5/lib/ruby/2.1.0/open-uri.rb:353:in open_http'
/usr/local/rvm/rubies/ruby-2.1.5/lib/ruby/2.1.0/open-uri.rb:724:inbuffer_open' /usr/local/rvm/rubies/ruby-2.1.5/lib/ruby/2.1.0/open-uri.rb:210:in block in open_loop'
/usr/local/rvm/rubies/ruby-2.1.5/lib/ruby/2.1.0/open-uri.rb:208:incatch' /usr/local/rvm/rubies/ruby-2.1.5/lib/ruby/2.1.0/open-uri.rb:208:in open_loop'
/usr/local/rvm/rubies/ruby-2.1.5/lib/ruby/2.1.0/open-uri.rb:149:inopen_uri' /usr/local/rvm/rubies/ruby-2.1.5/lib/ruby/2.1.0/open-uri.rb:704:in open'
/usr/local/rvm/rubies/ruby-2.1.5/lib/ruby/2.1.0/open-uri.rb:34:inopen' wicked_pdf (0.11.0) lib/wicked_pdf/wicked_pdf_helper.rb:111:in read_from_uri'
wicked_pdf (0.11.0) lib/wicked_pdf/wicked_pdf_helper.rb:100:inread_asset' wicked_pdf (0.11.0) lib/wicked_pdf/wicked_pdf_helper.rb:40:in block in wicked_pdf_stylesheet_link_tag'
wicked_pdf (0.11.0) lib/wicked_pdf/wicked_pdf_helper.rb:38:incollect' wicked_pdf (0.11.0) lib/wicked_pdf/wicked_pdf_helper.rb:38:in wicked_pdf_stylesheet_link_tag'
app/views/layouts/pdf.html.slim:5:in_app_views_layouts_pdf_html_slim___1321156534865974876_43089880' actionview (4.1.6) lib/action_view/template.rb:145:in block in render'
activesupport (4.1.6) lib/active_support/notifications.rb:161:ininstrument' actionview (4.1.6) lib/action_view/template.rb:339:in instrument'
actionview (4.1.6) lib/action_view/template.rb:143:inrender' actionview (4.1.6) lib/action_view/renderer/template_renderer.rb:67:in render_with_layout'
actionview (4.1.6) lib/action_view/renderer/template_renderer.rb:53:inrender_template' actionview (4.1.6) lib/action_view/renderer/template_renderer.rb:17:in render'
actionview (4.1.6) lib/action_view/renderer/renderer.rb:42:inrender_template' actionview (4.1.6) lib/action_view/renderer/renderer.rb:23:in render'
actionview (4.1.6) lib/action_view/rendering.rb:99:in_render_template' actionpack (4.1.6) lib/action_controller/metal/streaming.rb:217:in _render_template'
actionview (4.1.6) lib/action_view/rendering.rb:82:inrender_to_body' actionpack (4.1.6) lib/action_controller/metal/rendering.rb:32:in render_to_body'
actionpack (4.1.6) lib/action_controller/metal/renderers.rb:32:inrender_to_body' actionpack (4.1.6) lib/abstract_controller/rendering.rb:43:in render_to_string'
actionpack (4.1.6) lib/action_controller/metal/rendering.rb:21:inrender_to_string' wicked_pdf (0.11.0) lib/wicked_pdf/pdf_helper.rb:34:in render_to_string_with_wicked_pdf'
wicked_pdf (0.11.0) lib/wicked_pdf/pdf_helper.rb:61:inmake_pdf' wicked_pdf (0.11.0) lib/wicked_pdf/pdf_helper.rb:32:in render_to_string_with_wicked_pdf'
app/controllers/concerns/has_pdf_response.rb:15:inrespond_to_pdf' app/controllers/quotations_controller.rb:23:in block (2 levels) in show'
actionpack (4.1.6) lib/action_controller/metal/mime_responds.rb:258:incall' actionpack (4.1.6) lib/action_controller/metal/mime_responds.rb:258:in respond_to'
app/controllers/quotations_controller.rb:20:inshow' actionpack (4.1.6) lib/action_controller/metal/implicit_render.rb:4:in send_action'
actionpack (4.1.6) lib/abstract_controller/base.rb:189:inprocess_action' actionpack (4.1.6) lib/action_controller/metal/rendering.rb:10:in process_action'
actionpack (4.1.6) lib/abstract_controller/callbacks.rb:20:inblock in process_action' activesupport (4.1.6) lib/active_support/callbacks.rb:113:in call'
activesupport (4.1.6) lib/active_support/callbacks.rb:113:incall' activesupport (4.1.6) lib/active_support/callbacks.rb:166:in block in halting'
activesupport (4.1.6) lib/active_support/callbacks.rb:166:incall' activesupport (4.1.6) lib/active_support/callbacks.rb:166:in block in halting'
activesupport (4.1.6) lib/active_support/callbacks.rb:149:incall' activesupport (4.1.6) lib/active_support/callbacks.rb:149:in block in halting_and_conditional'
activesupport (4.1.6) lib/active_support/callbacks.rb:229:incall' activesupport (4.1.6) lib/active_support/callbacks.rb:229:in block in halting'
activesupport (4.1.6) lib/active_support/callbacks.rb:229:incall' activesupport (4.1.6) lib/active_support/callbacks.rb:229:in block in halting'
activesupport (4.1.6) lib/active_support/callbacks.rb:166:incall' activesupport (4.1.6) lib/active_support/callbacks.rb:166:in block in halting'
activesupport (4.1.6) lib/active_support/callbacks.rb:166:incall' activesupport (4.1.6) lib/active_support/callbacks.rb:166:in block in halting'
activesupport (4.1.6) lib/active_support/callbacks.rb:166:incall' activesupport (4.1.6) lib/active_support/callbacks.rb:166:in block in halting'
activesupport (4.1.6) lib/active_support/callbacks.rb:229:incall' activesupport (4.1.6) lib/active_support/callbacks.rb:229:in block in halting'
activesupport (4.1.6) lib/active_support/callbacks.rb:166:incall' activesupport (4.1.6) lib/active_support/callbacks.rb:166:in block in halting'
activesupport (4.1.6) lib/active_support/callbacks.rb:166:incall' activesupport (4.1.6) lib/active_support/callbacks.rb:166:in block in halting'
activesupport (4.1.6) lib/active_support/callbacks.rb:229:incall' activesupport (4.1.6) lib/active_support/callbacks.rb:229:in block in halting'
activesupport (4.1.6) lib/active_support/callbacks.rb:166:incall' activesupport (4.1.6) lib/active_support/callbacks.rb:166:in block in halting'
activesupport (4.1.6) lib/active_support/callbacks.rb:166:incall' activesupport (4.1.6) lib/active_support/callbacks.rb:166:in block in halting'
activesupport (4.1.6) lib/active_support/callbacks.rb:166:incall' activesupport (4.1.6) lib/active_support/callbacks.rb:166:in block in halting'
activesupport (4.1.6) lib/active_support/callbacks.rb:166:incall' activesupport (4.1.6) lib/active_support/callbacks.rb:166:in block in halting'
activesupport (4.1.6) lib/active_support/callbacks.rb:86:incall' activesupport (4.1.6) lib/active_support/callbacks.rb:86:in run_callbacks'
actionpack (4.1.6) lib/abstract_controller/callbacks.rb:19:inprocess_action' actionpack (4.1.6) lib/action_controller/metal/rescue.rb:29:in process_action'
actionpack (4.1.6) lib/action_controller/metal/instrumentation.rb:31:inblock in process_action' activesupport (4.1.6) lib/active_support/notifications.rb:159:in block in instrument'
activesupport (4.1.6) lib/active_support/notifications/instrumenter.rb:20:ininstrument' activesupport (4.1.6) lib/active_support/notifications.rb:159:in instrument'
actionpack (4.1.6) lib/action_controller/metal/instrumentation.rb:30:inprocess_action' actionpack (4.1.6) lib/action_controller/metal/params_wrapper.rb:250:in process_action'
activerecord (4.1.6) lib/active_record/railties/controller_runtime.rb:18:inprocess_action' actionpack (4.1.6) lib/abstract_controller/base.rb:136:in process'
actionview (4.1.6) lib/action_view/rendering.rb:30:inprocess' actionpack (4.1.6) lib/action_controller/metal.rb:196:in dispatch'
actionpack (4.1.6) lib/action_controller/metal/rack_delegation.rb:13:indispatch' actionpack (4.1.6) lib/action_controller/metal.rb:232:in block in action'
actionpack (4.1.6) lib/action_dispatch/routing/route_set.rb:82:incall' actionpack (4.1.6) lib/action_dispatch/routing/route_set.rb:82:in dispatch'
actionpack (4.1.6) lib/action_dispatch/routing/route_set.rb:50:incall' actionpack (4.1.6) lib/action_dispatch/journey/router.rb:73:in block in call'
actionpack (4.1.6) lib/action_dispatch/journey/router.rb:59:ineach' actionpack (4.1.6) lib/action_dispatch/journey/router.rb:59:in call'
actionpack (4.1.6) lib/action_dispatch/routing/route_set.rb:678:incall' rack-pjax (0.8.0) lib/rack/pjax.rb:12:in call'
warden (1.2.3) lib/warden/manager.rb:35:inblock in call' warden (1.2.3) lib/warden/manager.rb:34:in catch'
warden (1.2.3) lib/warden/manager.rb:34:incall' rack (1.5.2) lib/rack/etag.rb:23:in call'
rack (1.5.2) lib/rack/conditionalget.rb:25:incall' rack (1.5.2) lib/rack/head.rb:11:in call'
remotipart (1.2.1) lib/remotipart/middleware.rb:27:incall' actionpack (4.1.6) lib/action_dispatch/middleware/params_parser.rb:27:in call'
actionpack (4.1.6) lib/action_dispatch/middleware/flash.rb:254:incall' rack (1.5.2) lib/rack/session/abstract/id.rb:225:in context'
rack (1.5.2) lib/rack/session/abstract/id.rb:220:incall' actionpack (4.1.6) lib/action_dispatch/middleware/cookies.rb:560:in call'
activerecord (4.1.6) lib/active_record/query_cache.rb:36:incall' activerecord (4.1.6) lib/active_record/connection_adapters/abstract/connection_pool.rb:621:in call'
actionpack (4.1.6) lib/action_dispatch/middleware/callbacks.rb:29:inblock in call' activesupport (4.1.6) lib/active_support/callbacks.rb:82:in run_callbacks'
actionpack (4.1.6) lib/action_dispatch/middleware/callbacks.rb:27:incall' actionpack (4.1.6) lib/action_dispatch/middleware/reloader.rb:73:in call'
actionpack (4.1.6) lib/action_dispatch/middleware/remote_ip.rb:76:incall' actionpack (4.1.6) lib/action_dispatch/middleware/debug_exceptions.rb:17:in call'
actionpack (4.1.6) lib/action_dispatch/middleware/show_exceptions.rb:30:incall' railties (4.1.6) lib/rails/rack/logger.rb:38:in call_app'
railties (4.1.6) lib/rails/rack/logger.rb:20:inblock in call' activesupport (4.1.6) lib/active_support/tagged_logging.rb:68:in block in tagged'
activesupport (4.1.6) lib/active_support/tagged_logging.rb:26:intagged' activesupport (4.1.6) lib/active_support/tagged_logging.rb:68:in tagged'
railties (4.1.6) lib/rails/rack/logger.rb:20:incall' actionpack (4.1.6) lib/action_dispatch/middleware/request_id.rb:21:in call'
rack (1.5.2) lib/rack/methodoverride.rb:21:incall' rack (1.5.2) lib/rack/runtime.rb:17:in call'
activesupport (4.1.6) lib/active_support/cache/strategy/local_cache_middleware.rb:26:incall' rack (1.5.2) lib/rack/lock.rb:17:in call'
actionpack (4.1.6) lib/action_dispatch/middleware/static.rb:64:incall' rack (1.5.2) lib/rack/sendfile.rb:112:in call'
railties (4.1.6) lib/rails/engine.rb:514:incall' railties (4.1.6) lib/rails/application.rb:144:in call'
passenger (4.0.56) lib/phusion_passenger/rack/thread_handler_extension.rb:74:inprocess_request' passenger (4.0.56) lib/phusion_passenger/request_handler/thread_handler.rb:141:in accept_and_process_next_request'
passenger (4.0.56) lib/phusion_passenger/request_handler/thread_handler.rb:109:inmain_loop' passenger (4.0.56) lib/phusion_passenger/request_handler.rb:455:in `block (3 levels) in start_threads'
u007 commented 9 years ago

after debugging, i found that wicked_pdf_stylesheet_link_tag did not try to get the digested url for application.css. can someone tell me where went wrong? is it a bug on production?

ive this in my production.rb

config.serve_static_assets = true

  # Compress JavaScripts and CSS.
  config.assets.js_compressor = :uglifier
  # config.assets.css_compressor = :sass

  # Do not fallback to assets pipeline if a precompiled asset is missed.
  config.assets.compile = false

  # Generate digests for assets URLs.
  config.assets.digest = true
unixmonkey commented 9 years ago

If it's trying to get the undigested version, then you should precompile first.

https://github.com/mileszs/wicked_pdf#asset-pipeline-usage

config.assets.precompile += ['application.css.scss']
gkop commented 9 years ago

Indeed, in my case @unixmonkey is 100% correct that wicked_pdf tried to get the undigested version when my css wasn't compiled, but tried the correct digested version when my css was compiled. It's an easy trap to fall into because the failure mode is silent :/

u007 commented 9 years ago

hi, isnt application automatically added to precompile in rails 4?

gkop commented 9 years ago

That's a good point @u007 , yes, the example above isn't great. But if you follow the link cited, the README example shows explicitly precompiling pdf.css, which is representative of the solution to my problem.

Wangjiaji007 commented 7 years ago

@u007 hi, how did you solve it finally?

u007 commented 7 years ago

@Wangjiaji007 add the assets to to config/initializers/assets.rb, example:

Rails.application.config.assets.precompile += %w( pdf.css pdf.js  )