Deploy de Aplicações Rails na locaweb é com Inploy
Posted in Ruby/Rails on December 20th, 2009 by Edipo L Federle – 7 CommentsAcredito que a parte onde se tem mais problemas para quem está começando à adotar Rails é na hora de realizar o Deploy da aplicação ou “colocar no ar”.
Todos sabemos que existe o Capistrano, sinceramente só o nome dele me assusta, mas não podemos tirar os méritos dessa ferramenta, que por sinal é uma grande contribuição para a comunidade Rails. Capistrano é difícil de ser usado, é difícil de ser configurado e a documentação não é de grande ajuda nessa hora.
Então o Akita como sempre deu um jeito e criou o locarails, uma ótima opção que utiliza o capistrano por baixo dos panos, e faz com quem não saiba nada de Capistrano configure sua aplicação para realizar deploy na locaweb facilmente.
Eu venho utilizando o locarails a um tempo, realmente ele tira toda a responsabilidade de você na hora de configurar o Capistrano. Certamente o locarails me ajudou muito, agradeço muito a ele, agradeço ao Akita pela contribuição para a comunidade.
O locarails inicialmente realiza o Deploy via estratégia copy(também podemos usar com git, eu não consegui), ou seja, à cada “cap deploy” que você realiza ele irá copiar tudo para o servidor novamente, isso pode não ser problema quando não se tem muita coisa para se enviar, mas tratando de algo com um pouco mais tamanho pode se tornar bastante demorado. Outra coisa que o capistrano faz é lhe deixar com uma estrutura de pastas no servidor um tanto desnecessária, em alguns casos, você irá ter current, release , shared, ok, você pode querer voltar para uma versão antiga e sem os releases não seria possível voltar para o último deploy realizado, pessoalmente eu nunca precisei fazer isso, a única vez que fiz foi para teste
.
Bom isso foi um pouco do locarails, QUERO DEIXAR CLARO AQUI, que de forma alguma estou dizendo que o locarails é ruim ou algo assim, muito pelo contrario, acho ele ótimo, como disse me ajudou muito já(e ainda ajuda), mas agora tenho uma nova ferramenta que tentarei usar como pardão, e ela é o Inploy…..
Inploy
O Inploy é um plugin criado pelo Diego Carrion que torna o deploy de aplicações Rails ainda mais fácil, rápida e poderosa.
Passei a testar ele a algum tempo mas não tinha sucesso ao usar na locaweb, até que hoje após uma longa conversar com o Diego no GTalk ele me guiou através dos passos, durrante o processor tivemos um erro, Diego acabou achando num método no template para o locaweb a falta de uma linha,(que já foi commitada por ele), apartir dai tudo passou a funcionar perfeitamtne, o deploy está funcinando perfeitamente aqui.
Uma coisa que gostei muito no Inploy é que ele faz o uso do GIT, isso realmente trás grandes benifícios, logo quando queremos atualizar nossa aplicação não será enviada novamente, criando aquela coisa toda de pastas e tudo mais, ele irá somente enviar as mudanças realizadas, isso torna as coisas realmente muito mais rápidas, e isso faz possível tambem voltar para versões antigas, já que estamos utilizando git.
Vou explicar abaixo como fazer o deploy na locaweb usando o Inploy,1 e falar juntamente dos erros e dúvidas que tive durante a configuração.
ATENCAO 0: Você deve tar usando git em seu projeto.
Instalação
A duas formas de se instalar, via plugin ou via gem.
Como plugin dentro da sua aplicação:
script/plugin install git://github.com/dcrec1/inploy.git
como gem:
sudo gem install inploy
Configurando
Partindo que você optou por instalar o plugin, você irá ganhar dentro da pasta conf um arquivo chamado deploy.rb abrindo ele:
Como vamos fazer o deploy na locaweb vamos utilizar a opção de template, nosso arquivo ficará assim:
Bom acho que não tem muito o que falar sobre essas linhas, as linhas que tirei são porque não vamos usar o github, segundo o Diego, a locaweb tem alguns problemas ao usar ele, à ultima linha que removemos é onde a aplicação irá ficar, sem essa linha vai para o pardão da locaweb que é rails_app, caso queira mudar utilize a linha e especifique o local que você deseja.
Muita atenção, isso aconteceu comigo, eu me esqueci de colocar a primeira linha assim:
deploy.template = :locaweb #CERTO
ao invés disso coloquei assim:
deploy.template :locaweb#ERRADO
ATENÇÃO 1 – Seu projeto deve tar usando git já.
Pronto feito isso você já está pronto para realizar a primeira tarefa. No terminal dentro da pasta da sua aplicação execute o seguinte:
ATENÇÃO 2 – Comando é para ser executado locamente.
rake inploy:remote:setup
Ok configurado, isso deve criar a pasta com a sua aplicação lá no servidor,(na pasta rails_app), também irá rodar todas as terefas necesárias como db:migrate, instalar gems, criar o link simbólico em public_html, e muitas outras tarefas(veja a lista completa no github).
Nesse momento sua aplicação já está no ar.
Atualizando Aplicação
Digamos que agora você realizou uma modificações em sua aplicação e está pronto para enviar para produção, como fazer? Simples, realize o commit necessário, e rode outra tarefa do inploy:
ATENCAO 3 – Novamente locamente.
rake inploy:remote:update
Pronto ele irá subir somente as modificações feitas, e realizar as terefas necesárias como restartar o servidor. Nesse momento sua app está com o código atualizado.
Bom pessoal, somente disse o básico para você fazer o deploy e atualizar o projeto, obviamente o Inploy inclue outras várias opções que devem ser olhadas e testadas com mais calma.
Novamente queria deixar aqui meus agradecimentos ao Diego pela ajuda, e pelo ótima trabalho que fez com o inploy.
É isso, até logo.