Utilizando outra porta, outro IP e permitindo que usuário da rede acessem sua aplicação Rails externamente
Olá leitores, voltamos aqui com mais uma dica rápida que pode economizar algum tempo. Estou brincando com uma aplicação em Webview para Android que para fins de teste está consumindo api de uma aplicação local. O problema que na máquina virtual do Android o localhost é o próprio device, sendo que o IP da máquina hospedeira é o 10.0.2.2. Procurei alguma saída para o empasse como ambientes distintos como development/staging/production, mas não encontrei.
Depois do terceiro dia tendo que desenvolver local com um IP e quando enviar o aplicativo para o emulador ter que alterar esse IP, fui atrás de uma solução, como eu poderia fazer com que em meu ambiente DEV o IP 10.0.2.2 respondesse como localhost? bom ainda não consegui, mas acabei achando uma informação bacana.
Uma já comum, quando você quer rodar duas aplicações Rails na mesma máquina? fácil, só alterar a porta:
$ rails s -p 3001
E caso você queira que alterar o endereço padrão da aplicação Rails? tão fácil como usando a opção --bind ou -b:
$ rails s -b 10.0.0.1
E caso você queria disponibilizar sua aplicação para os usuários de sua rede local? a dica é use a porta 80 que por padrão é aberta para fora (você pode também abrir outra porta em seu iptables, mas assim é mais fácil)
$ rails s -p 80
caso você não tenha permissão e esteja utilizando o RVM faça assim:
$ rvmsudo rails s -p 80
Qualquer dúvida ou sugestão, comente. Grande abraço.