Pregunta

Tengo una aplicación simple de rieles con servidor de resque montada en routes.rb como

require 'resque/server'
require 'resque_scheduler'


    MyApp::Application.routes.draw do

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

Montó la aplicación en rutas para usar la autenticación basada en dispositivos. Sin embargo, en la producción, los activos no se cargan para el servidor de resque, mientras que los activos para la aplicación principal de Rails se cargan correctamente.

¿Fue útil?

Solución

Después de mirar alrededor, esto funcionó para mí con Nginx y delgado:

require 'resque/server'

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

El archivo de rutas se ve de la siguiente manera:

    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
    ...
    ...

y cambiando

config.action_dispatch.x_sendfile_header = "X-Sendfile"

en producción.rb a

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

En tercer lugar, en algunos casos, Nginx está configurado para rieles de la siguiente manera:

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

Dónde Path_to_app es la ruta del directorio raíz de aplicación. Dicha declaración de ubicación evita que los activos se carguen desde cualquier otra ubicación para una aplicación o motor de rastrillo montado. Por lo tanto, esto debe eliminarse/comentarse.

Por último, no olvides hacer un Ctrl+F5 Para forzar la recarga de la página :)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top