Back-End

23 mar, 2009

Aplicação web em um executável

Publicidade

Um tempo atrás estava brincando com Sinatra,
mostrando para um outro desenvolvedor como era simples fazer uma
aplicação pequena (muito pequena) com esse framework. Estava usando
Windows. Então me lembrei de um script que converte aplicações feitas em
Ruby para um arquivo executável (o clássico exe). Utilizei esse
conversor com uma aplicação feita com Sinatra, e funcionou!

Sinceramente não sei a utilização prática disto, mas serve como arte.

Neste artigo não vou escrever nenhum tutorial sobre Sinatra, nem mesmo
vou abordar suas funcionalidades. Para mais informações sobre esse
framework acesse o seu repositório no Github.

Primeiro instale a gem do Sinatra. Feito isso, vamos construir o
script com a aplicação web. Vale lembrar que é bem simples e serve
apenas para o exemplo. Crie um arquivo com o nome webapp.rb e adicione o seguinte conteúdo:

require 'rubygems'
require 'sinatra'

get '/' do '<h1>Olá!</h1>' end
get '/usuarios' do '<h2>Usuários</h2><p>Aparecerá uma lista aqui.</p>' end
get '/usuarios/:nome' do "<p>Olá #{params[:nome]}!</p>" end

Ao rodar esse script (ruby webapp.rb) o Sinatra vai
disponibilizar a aplicação na porta 4567, a porta padrão deste
framework. Acesse com o navegador os seguintes endereços: [http://localhost:4567/], [http://localhost:4567/usuarios] e [http://localhost:4567/usuarios/Seu+nome+aqui].

Se funcionou, verá respostas, com html bem simples, respectivamente:
?Olá?, ?Usuários? e ?Olá, Seu nome aqui?. Mude o nome em
?Seu+nome+aqui? para ver um resultado diferente.

Agora vamos transformar essa aplicação em um executável. Baixe o rubyscript2exe, esse é o script que fará a conversão. Segue aqui o link para download direto, já que o site é meio confuso. Baixe o arquivo para o mesmo diretório do webapp.rb.

Converter é mais simples que criar a aplicação web. Basta, via linha
de comando (os usuários do Windows geralmente têm medo desta parte),
executar o comando:

ruby rubyscript2exe.rb webapp.rb

Uma dica: Execute esse comando com a aplicação webapp rodando (ruby webapp.rb).
O conversor executa o script enquanto converte a aplicação, e como é um
servidor de aplicação, não tem fim. Com o script rodando, vai dar um
erro na hora de converter, mas ignore isso, tudo ficará bem.

Está pronto. Se tudo deu certo, foi criado um arquivo chamado webapp.exe.
Execute-o e acesse os mesmos endereços pelo navegador, aí está sua
aplicação. É possível utilizar recursos de banco, imagens, estilos ou
seja lá o que vai usar de recursos no script, já que o conversor busca
as dependências (outros scripts Ruby) para ?compilar?.

Se alguém encontrar uma utilidade para isso, me fale!