nhoizey/jekyll-cloudinary

Handle missing remote images without crashing

pascalwhoop opened this issue · 1 comments

[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'

  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?