Pergunta

Estou tentando escrever um aplicativo Sinatra que será executado em um servidor de passageiros compartilhado. Por enquanto, eu ficaria feliz em conseguir um "Hello World", mas algo não está funcionando bem. Eu tenho:

config.ru

require 'vendor/sinatra-lib/sinatra.rb'
set :environment, :production
disable :run

require 'myapp.rb'
run Sinatra::Application

myApp.rb

get '/' do
  "Hello world!"
end

E, é claro, todos os Libs de apoio que eu preciso para Sinatra estão sob /fornecedor /Sinatra-Lib. Eu posso acumular essa carga exata na minha máquina local e ela funciona como um campeão. No entanto, na máquina remota, recebo respostas de 0 bytes para qualquer URL que tento visitar. Observe que eu tenho um diretório público e posso visualizar as páginas com sucesso, então acho que o rack ainda está respondendo. Além disso, posso executar um aplicativo básico de rack sem problemas, portanto, o rack deve ser configurado corretamente (pelo menos, corretamente para executar aplicativos de rack).

Neste ponto, a única coisa que consigo pensar é verificar a versão do rack, etc., no servidor remoto. Não tenho controle total sobre a caixa, então não tenho saída de log para compartilhar. Posso tentar persegui -lo, se for importante, mas espero que algo salte para alguém.

Foi útil?

Solução 2

Obrigado a todos por tocar, acabou sendo um problema de dependência - o servidor para o qual fui implantado estava executando uma versão do rack que era antiga para apoiar Sinatra. Muitas outras coisas boas em que pensar, no entanto.

Outras dicas

Eu acho que o problema é que os outros arquivos Sinatra não estão no Dir do Load. Tente renomear vendor/sinatra-lib em vendor/sinatra, e se ainda não funcionar, tente adicionar isso no topo do seu config.ru, ao invés de require 'vendor/...'

$: << 'vendor/sinatra'
require 'sinatra'

Uma pequena nota lateral: você não é obrigado a passar na extensão do arquivo (.rb) para require, então você poderia fazer require 'myapp' ao invés de require 'myapp.rb'.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top