discourse/lib/middleware/missing_avatars.rb

27 lines
930 B
Ruby

# frozen_string_literal: true
module Middleware
# In development mode, it is common to use a database from a production site for testing
# with their data. Unfortunately, you can end up with dozens of missing avatar requests
# due to the files not being present locally. This middleware, only enabled in development
# mode, will replace those with an appropriate image.
class MissingAvatars
def initialize(app, settings = {})
@app = app
end
def call(env)
if (env["REQUEST_PATH"] =~ %r{^/uploads/default/avatars})
path = "#{Rails.root}/public#{env["REQUEST_PATH"]}"
unless File.exist?(path)
default_image = "#{Rails.root}/public/images/d-logo-sketch-small.png"
return 200, { "Content-Type" => "image/png" }, [File.read(default_image)]
end
end
status, headers, response = @app.call(env)
[status, headers, response]
end
end
end