From 9ec869f5754f205c79307bbf2483a943bcb8768e Mon Sep 17 00:00:00 2001 From: Martin Date: Mon, 17 Dec 2018 23:38:32 +0100 Subject: [PATCH 1/2] change parsing image from path I've been in situation when path looked like this `/path/picture.2015-229-jpg --- lib/image_placeholder/middleware.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/image_placeholder/middleware.rb b/lib/image_placeholder/middleware.rb index 0b69ff4..20011a1 100644 --- a/lib/image_placeholder/middleware.rb +++ b/lib/image_placeholder/middleware.rb @@ -47,7 +47,7 @@ def not_found?(status) end def image?(path) - @image_extensions.include? File.extname(path)[1, 3] + @image_extensions.any? { |i| File.extname(path).include? i } end def matched_size(path) From 5e76e1bd1462b520370fd5cd27fb21de6ba9bae0 Mon Sep 17 00:00:00 2001 From: Martin Date: Mon, 17 Dec 2018 23:49:07 +0100 Subject: [PATCH 2/2] added support for older Rack --- lib/image_placeholder/middleware.rb | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/lib/image_placeholder/middleware.rb b/lib/image_placeholder/middleware.rb index 20011a1..2601797 100644 --- a/lib/image_placeholder/middleware.rb +++ b/lib/image_placeholder/middleware.rb @@ -24,14 +24,17 @@ def call(env) def serve_placeholder_image(size = 100) net_response = Net::HTTP.get_response(URI("https://#{@host}/#{size}")) - rack_response = Rack::Response.new(net_response.body, net_response.code.to_i) safe_headers = net_response.to_hash .reject { |key, _| hop_by_hop_header_fields.include?(key.downcase) } .reject { |key, _| key.downcase == 'content-length' } - - safe_headers.each do |key, values| - values.each do |value| - rack_response.add_header(key, value) + if Rack.version < '1.6' + rack_response = Rack::Response.new(net_response.body, net_response.code.to_i, safe_headers) + else + rack_response = Rack::Response.new(net_response.body, net_response.code.to_i) + safe_headers.each do |key, values| + values.each do |value| + rack_response.add_header(key, value) + end end end rack_response.finish