解决方法
Rails不使用Rack :: Static,它有自己的版本,
ActionDispatch::Static
.你应该看到它,如果你运行rake中间件.
这只是添加到Rails中间件堆栈if config.serve_static_assets
is true.这个设置为defaults to true,但是默认生成了config/environments/production.rb
turns if off.
这个想法是,在开发过程中,您有一个简单的单一过程,您可以运行并检查一切正常,并且性能不是问题,但是当部署到生产时,您可以配置Web服务器(通常为Apache或Nginx)来服务于静态文件,因为它比Ruby好得多.
如果您使用Heroku,他们最新的Cedar堆栈不会为静态文件使用单独的Web服务器,所以作为deploy process的一部分,他们会注入一个Rails plugin to serve static assets.所有这个插件都是将serve_static_assets设置为true.