Attività non caricate per un'app Sinatra montata con sottile e nginx
-
28-10-2019 - |
Domanda
Ho una semplice app di binari con server resque montato routes.rb
come
require 'resque/server'
require 'resque_scheduler'
MyApp::Application.routes.draw do
authenticate :user do
mount Resque::Server.new, :at => "/tasks"
end
...
...
Montato l'app nei percorsi per utilizzare l'autenticazione basata su idei. In produzione, tuttavia, le risorse non vengono caricate per il server Resque mentre le risorse per il carico dell'app principale delle rotaie.
Soluzione
Dopo essersi guardato intorno, ha funzionato per me con nginx e sottile:
require 'resque/server'
class SecuredResqueServer < Resque::Server
set :static, true
set :root, Resque::Server.root
end
Il file dei percorsi sembra segue:
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
...
...
e cambiare
config.action_dispatch.x_sendfile_header = "X-Sendfile"
in produzione.rb to
config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect'
In terzo luogo, in alcuni casi Nginx è configurato per i binari come segue:
server{
...
...
location ~*\.(jpeg|jpg|gif|png|ico|css|bmp|js)$ {
root /PATH_TO_APP/public;
}
...
...
}
Dove Path_to_app è il percorso della directory radice dell'applicazione. Tale dichiarazione di posizione impedisce il caricamento di attività da qualsiasi altra posizione per un'app o un motore a rastrello montato. Questo pertanto, deve essere rimosso/commentato.
Infine, non dimenticare di fare un Ctrl+F5
per forzare ricaricare la pagina :)