Setting Custom Headers for Assets in Rails on Heroku Cedar
asset-pipeline, heroku, ruby-on-rails
Solution
An easy way would be to use a rack plugin, something like this:
class RackAssetFilter
def initialize app
@app = app
end
def call env
@status, @headers, @body = @app.call env
if env['PATH_INFO'].starts_with?( "/assets/" )
@headers['X-Header-1'] = 'value'
# ...
end
return [@status, @headers, @body]
end
end
To enable it, in application.rb:
config.middleware.insert_before( ActionDispatch::Static, RackAssetFilter )
Keep in mind you need to declare or load the RackAssetFilter via require before you insert it into the middleware stack in application.rb
Problem
I have a cedar application that uses Rails 4.0 and the asset pipeline. I'd like to set custom headers for all assets from the asset pipeline. How can this be done?