mirror of
https://github.com/discourse/discourse.git
synced 2024-11-26 17:53:44 +08:00
In development mode, if an avatar is missing just serve up a placeholder
This commit is contained in:
parent
1806a7d4b3
commit
18e719b0af
|
@ -43,7 +43,9 @@ Discourse::Application.configure do
|
|||
config.enable_mini_profiler = true
|
||||
|
||||
require 'middleware/turbo_dev'
|
||||
require 'middleware/missing_avatars'
|
||||
config.middleware.insert 0, Middleware::TurboDev
|
||||
config.middleware.insert 1, Middleware::MissingAvatars
|
||||
|
||||
config.enable_anon_caching = false
|
||||
end
|
||||
|
|
26
lib/middleware/missing_avatars.rb
Normal file
26
lib/middleware/missing_avatars.rb
Normal file
|
@ -0,0 +1,26 @@
|
|||
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'] =~ /^\/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
|
Loading…
Reference in New Issue
Block a user