ActionDispatch:在Rails生产环境中是静态的



我希望使用ActionDispatch::Static在公共目录以外的目录中提供静态文件。它在开发中工作得很好,但在生产中我似乎不能得到相同的结果。

我有我的静态文件在/var/www/mysite.com-static。在初始化式中,我添加了以下内容:

Rails.application.config.middleware.insert_after Rack::SendFile, ActionDispatch::Static, '/var/www/mysite.com-static'

rake middleware输出如下:

use Raven::Rack
use Rack::Sendfile
use ActionDispatch::Static
use Rack::Lock
use #<ActiveSupport::Cache::Strategy::LocalCache::Middleware:0x00000005e61130>
use Rack::Runtime
...

为什么我在/var/www/myapp.com-static中请求的每个页面都得到404 ?

我最终解决了这个问题,在我的Rails应用程序的config.ru添加中间件。

require ::File.expand_path('../config/environment',  __FILE__)
# Added the following line
use ActionDispatch::Static, '/var/www/myapp.com-static'
run Rails.application

这是因为我在一个初始化器中设置了ActionDispatch::Static的路径,这个初始化器是在中间件已经挂载之后加载的。如果我正确地配置了我的加载顺序,Rails.application.config.middleware也会工作。

相关内容

  • 没有找到相关文章

最新更新