Handle missing remote images without crashing
pascalwhoop opened this issue · 1 comments
pascalwhoop commented
[Cloundinary] parsing: https://bogus.net/not-real
Liquid Exception: undefined method `<' for nil:NilClass in /_layouts/readinglist.html
/home/pascalwhoop/Documents/Code/website/pascalbrokmeier.de/vendor/bundle/ruby/2.4.0/gems/jekyll-cloudinary-1.9.1/lib/jekyll/cloudinary.rb:260:in `render': undefined method `<' for nil:NilClass (NoMethodError)
from /home/pascalwhoop/Documents/Code/website/pascalbrokmeier.de/vendor/bundle/ruby/2.4.0/gems/liquid-4.0.0/lib/liquid/block_body.rb:109:in `render_node'
from /home/pascalwhoop/Documents/Code/website/pascalbrokmeier.de/vendor/bundle/ruby/2.4.0/gems/liquid-4.0.0/lib/liquid/block_body.rb:88:in `block in render'
from /home/pascalwhoop/Documents/Code/website/pascalbrokmeier.de/vendor/bundle/ruby/2.4.0/gems/liquid-4.0.0/lib/liquid/block_body.rb:75:in `each'
from /home/pascalwhoop/Documents/Code/website/pascalbrokmeier.de/vendor/bundle/ruby/2.4.0/gems/liquid-4.0.0/lib/liquid/block_body.rb:75:in `render'
from /home/pascalwhoop/Documents/Code/website/pascalbrokmeier.de/vendor/bundle/ruby/2.4.0/gems/liquid-4.0.0/lib/liquid/tags/if.rb:44:in `block (2 levels) in render'
from /home/pascalwhoop/Documents/Code/website/pascalbrokmeier.de/vendor/bundle/ruby/2.4.0/gems/liquid-4.0.0/lib/liquid/tags/if.rb:42:in `each'
from /home/pascalwhoop/Documents/Code/website/pascalbrokmeier.de/vendor/bundle/ruby/2.4.0/gems/liquid-4.0.0/lib/liquid/tags/if.rb:42:in `block in render'
from /home/pascalwhoop/Documents/Code/website/pascalbrokmeier.de/vendor/bundle/ruby/2.4.0/gems/liquid-4.0.0/lib/liquid/context.rb:123:in `stack'
from /home/pascalwhoop/Documents/Code/website/pascalbrokmeier.de/vendor/bundle/ruby/2.4.0/gems/liquid-4.0.0/lib/liquid/tags/if.rb:41:in `render'
from /home/pascalwhoop/Documents/Code/website/pascalbrokmeier.de/vendor/bundle/ruby/2.4.0/gems/liquid-4.0.0/lib/liquid/block_body.rb:109:in `render_node'
from /home/pascalwhoop/Documents/Code/website/pascalbrokmeier.de/vendor/bundle/ruby/2.4.0/gems/liquid-4.0.0/lib/liquid/block_body.rb:88:in `block in render'
from /home/pascalwhoop/Documents/Code/website/pascalbrokmeier.de/vendor/bundle/ruby/2.4.0/gems/liquid-4.0.0/lib/liquid/block_body.rb:75:in `each'
from /home/pascalwhoop/Documents/Code/website/pascalbrokmeier.de/vendor/bundle/ruby/2.4.0/gems/liquid-4.0.0/lib/liquid/block_body.rb:75:in `render'
from /home/pascalwhoop/Documents/Code/website/pascalbrokmeier.de/vendor/bundle/ruby/2.4.0/gems/liquid-4.0.0/lib/liquid/tags/for.rb:158:in `block (2 levels) in render_segment'
from /home/pascalwhoop/Documents/Code/website/pascalbrokmeier.de/vendor/bundle/ruby/2.4.0/gems/liquid-4.0.0/lib/liquid/tags/for.rb:156:in `each'
from /home/pascalwhoop/Documents/Code/website/pascalbrokmeier.de/vendor/bundle/ruby/2.4.0/gems/liquid-4.0.0/lib/liquid/tags/for.rb:156:in `each_with_index'
from /home/pascalwhoop/Documents/Code/website/pascalbrokmeier.de/vendor/bundle/ruby/2.4.0/gems/liquid-4.0.0/lib/liquid/tags/for.rb:156:in `block in render_segment'
from /home/pascalwhoop/Documents/Code/website/pascalbrokmeier.de/vendor/bundle/ruby/2.4.0/gems/liquid-4.0.0/lib/liquid/context.rb:123:in `stack'
from /home/pascalwhoop/Documents/Code/website/pascalbrokmeier.de/vendor/bundle/ruby/2.4.0/gems/liquid-4.0.0/lib/liquid/tags/for.rb:148:in `render_segment'
pascalwhoop commented
2 if natural_width.nil?
1 Jekyll.logger.warn("remote url doesn't exists " + image_dest_url)
0 return "<img src=\"#{image_dest_url}\" />"
1 end
this fixed it for me under line 200
(where it checks with FastImage if the remote exists)
Next question: I have 200 images like this, building is soooo slow. Anyone got any ideas how to cache this and avoid refetching all remote images on every load?