未加载具有thin和nginx的已安装Sinatra应用程序的资产

时间:2012-01-16 05:33:27

标签: ruby-on-rails-3 routes sinatra resque

我有一个简单的Rails应用程序,其中Resque服务器安装在routes.rb中作为

require 'resque/server'
require 'resque_scheduler'


    MyApp::Application.routes.draw do

        authenticate :user do
            mount Resque::Server.new, :at => "/tasks"
        end
        ...
        ...

在路由中安装应用程序以使用基于设计的身份验证。但是,在生产环境中,当主Rails应用程序的资产正确加载时,不会为Resque服务器加载资产。

1 个答案:

答案 0 :(得分:2)

环顾四周后,这对我来说非常适合nginx和瘦身:

require 'resque/server'

class SecuredResqueServer < Resque::Server
  set :static, true
  set :root, Resque::Server.root
end

路线文件如下所示:

    require 'resque/server'
    require 'resque_scheduler'
    require './app/secured_resque_server'


    MyApp::Application.routes.draw do
    ...
    ...
    authenticate :user do
        mount SecuredResqueServer.new, :at => "/tasks"
    end
    ...
    ...

并改变

config.action_dispatch.x_sendfile_header = "X-Sendfile"

在production.rb到

config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect'

第三,在某些情况下,nginx配置为rails,如下所示:

server{
        ...
        ...
        location ~*\.(jpeg|jpg|gif|png|ico|css|bmp|js)$ {
                root /PATH_TO_APP/public;
        }
        ...
        ...
      }

其中 PATH_TO_APP 是应用程序根目录的路径。此类位置声明可防止从已安装的rake应用程序或引擎的任何其他位置加载资产。因此,需要删除/注释掉。

最后,请勿忘记Ctrl+F5强制重新加载页面:)