hi, is it possible to add static and dynamic HTTP response headers in unicorn.conf.rb? i''d like to add the hostname of the worker for debugging and a timestamp, when the request was worked on. currently this is done in nginx, which should be stripped from the stack. i''d like to keep it out of the webapp itself, because it''s infrastructure. cheers pille _______________________________________________ Unicorn mailing list - mongrel-unicorn@rubyforge.org http://rubyforge.org/mailman/listinfo/mongrel-unicorn Do not quote signatures (like this one) or top post when replying
pille <pille+unicorn+mailinglist@struction.de> wrote:> hi, > > is it possible to add static and dynamic HTTP response headers in > unicorn.conf.rb?No, but it is easily possible with a Rack config.ru> i''d like to add the hostname of the worker for debugging and a > timestamp, when the request was worked on. > > currently this is done in nginx, which should be stripped from the stack. > i''d like to keep it out of the webapp itself, because it''s infrastructure.Can you consider config.ru infrastructure? unicorn tries to do as much generically via Rack as possible. The following (totally untested) middleware should work: ------------------------8<------------------------ require ''time'' require ''socket'' require ''rack/utils'' # Usage (in config.ru) # require ''name/of/this/file'' # use ExtraHeaders # # other middlewares ... # run YourApp.new class ExtraHeaders def initialize(app) @app = app end def call(env) start = Time.now.httpdate status, headers, body = @app.call(env) headers = Rack::Utils::HeaderHash.new(headers) headers["X-Hostname"] = Socket.gethostname headers["X-Start"] = start [ status, headers, body ] end end ------------------------8<------------------------ _______________________________________________ Unicorn mailing list - mongrel-unicorn@rubyforge.org http://rubyforge.org/mailman/listinfo/mongrel-unicorn Do not quote signatures (like this one) or top post when replying
eric, thanks for your comprehensive help! pille _______________________________________________ Unicorn mailing list - mongrel-unicorn@rubyforge.org http://rubyforge.org/mailman/listinfo/mongrel-unicorn Do not quote signatures (like this one) or top post when replying
Wow! Awesome answer, you rock! Enviado desde el movil El 12/05/2013, a las 21:20, Eric Wong <normalperson@yhbt.net> escribió:> pille <pille+unicorn+mailinglist@struction.de> wrote: >> hi, >> >> is it possible to add static and dynamic HTTP response headers in >> unicorn.conf.rb? > > No, but it is easily possible with a Rack config.ru > >> i'd like to add the hostname of the worker for debugging and a >> timestamp, when the request was worked on. >> >> currently this is done in nginx, which should be stripped from the stack. >> i'd like to keep it out of the webapp itself, because it's infrastructure. > > Can you consider config.ru infrastructure? unicorn tries to do as > much generically via Rack as possible. > > The following (totally untested) middleware should work: > ------------------------8<------------------------ > require 'time' > require 'socket' > require 'rack/utils' > > # Usage (in config.ru) > # require 'name/of/this/file' > # use ExtraHeaders > # # other middlewares ... > # run YourApp.new > class ExtraHeaders > def initialize(app) > @app = app > end > > def call(env) > start = Time.now.httpdate > status, headers, body = @app.call(env) > headers = Rack::Utils::HeaderHash.new(headers) > headers["X-Hostname"] = Socket.gethostname > headers["X-Start"] = start > [ status, headers, body ] > end > end > ------------------------8<------------------------ > _______________________________________________ > Unicorn mailing list - mongrel-unicorn@rubyforge.org > http://rubyforge.org/mailman/listinfo/mongrel-unicorn > Do not quote signatures (like this one) or top post when replying_______________________________________________ Unicorn mailing list - mongrel-unicorn@rubyforge.org http://rubyforge.org/mailman/listinfo/mongrel-unicorn Do not quote signatures (like this one) or top post when replying