Rails生产环境中的ActionDispatch :: Static

时间:2015-05-20 16:28:51

标签: ruby-on-rails actiondispatch

我希望使用ActionDispatch::Static在public以外的目录中提供静态文件。它在开发中非常有效,但我似乎无法在生产中获得相同的结果。

我在/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?

1 个答案:

答案 0 :(得分:0)

我最终解决了这个问题,在我的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也会有效。