【问题标题】:Assets not loaded for a mounted Sinatra app with thin and nginx未为使用 Thin 和 nginx 安装的 Sinatra 应用程序加载资产
【发布时间】:2012-01-17 11:51:55
【问题描述】:

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

require 'resque/server'
require 'resque_scheduler'


    MyApp::Application.routes.draw do

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

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

【问题讨论】:

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


    【解决方案1】:

    环顾四周后,这对我有用 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 强制重新加载页面:)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-08-16
      • 1970-01-01
      • 2010-10-08
      • 1970-01-01
      • 1970-01-01
      • 2015-08-29
      • 2013-03-14
      相关资源
      最近更新 更多