Como faço para configurar minha API REST do Sinatra em um servidor?

5

Sou um desenvolvedor iOS principalmente. Ao criar meu aplicativo atual, precisei de um servidor que tivesse uma API REST com algumas solicitações GET. Passei um tempinho aprendendo Ruby, e consegui usar o Sinatra, um framework web simples. Posso executar meu script de servidor e acessá-lo em um navegador em localhost:4567 , com uma solicitação sendo localhost:4567/hello , por exemplo.

Aqui é onde eu me sinto fora da minha profundidade. Eu configurei um droplet do Ubuntu na DigitalOcean, e decidi configurar todas as ferramentas necessárias via linha de comando, até que eu pudesse executar novamente o meu servidor, agora neste droplet.

O problema é que eu não pude acessar meu servidor via droplet.ip.address:4567 , e um pouco de pesquisa me levou a descobrir que eu preciso do Passenger e de um Servidor HTTP Apache para ser configurado, e não com instruções simples .

Estou passando por aqui e não me sinto confortável. Deve haver uma maneira melhor para eu pegar meu pequeno grupo de arquivos ruby e rodar isso em um servidor, do que eu fazendo isso. Mas eu não tenho ideia do que estou fazendo.

Qualquer ajuda ou conselho seria muito apreciado.

    
por Andrew 06.01.2016 / 03:50
fonte

1 resposta

1

O problema é que o padrão Sinatra se liga ao "localhost" que só é acessível pelo mesmo "ip" .Se você tenta acessar de fora do droplet, você precisa vinculá-lo a < strong> 0.0.0.0 . Naturalmente, minha resposta é válida apenas para ambientes de desenvolvimento. Se você configurar como um ambiente produtivo, as instruções que você mencionou devem ser seguidas.

Sobre como configurar o bing para 0.0.0.0, você pode encontrar mais informações aqui link .

:bind - server hostname or IP address String specifying the hostname or IP address of the interface to listen on when the :run setting is enabled. The default value in the development environment is 'localhost' which means the server is only available from the local machine. In other environments the default is '0.0.0.0', which causes the server to listen on all available interfaces.

To listen on all interfaces in the development environment (for example if you want to test from other computers in your local network) use:

set :bind, '0.0.0.0'

Eu aprendi isso da maneira mais difícil, mas com o Rails, eu escrevi sobre isso aqui ( link ).

Como ambos contam com o Rack, esse link é confirmado causou a mudança no Sinatra & Rails (e qualquer outro framework Web que depende do Rack) tem esse comportamento.

    
por 06.01.2016 / 13:12
fonte