Активы не загружены для смонтированного приложения Sinatra с thin и nginx - PullRequest
1 голос
/ 16 января 2012

У меня есть простое приложение 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
        ...
        ...

Смонтированное приложение в маршрутах для использования аутентификации на основе устройства.Однако в процессе работы ресурсы не загружаются для сервера Resque, а ресурсы для основного приложения Rails загружаются правильно.

1 Ответ

2 голосов
/ 17 января 2012

После осмотра это сработало для меня с nginx и thin:

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"

в производстве. От

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

В-третьих, в некоторых случаях nginx конфигурируется для рельсов следующим образом:

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

Где PATH_TO_APP - путь к корневому каталогу приложения. Такое объявление местоположения предотвращает загрузку ресурсов из любого другого местоположения для смонтированного приложения или движка граблей. Следовательно, это необходимо удалить / закомментировать.

Наконец, не забудьте сделать Ctrl+F5 для принудительной перезагрузки страницы:)

...