MouseOver Studio

MouseOver Studio header image 2

Deploys mais poderosos, simples e rápidos na Locaweb com Inploy

outubro 17th, 2009 por Diego Carrion · 7 comentários

Tenho um servidor compartilhado na Locaweb onde de vez em quando subo aplicações para serem visualizadas por clientes. Ate o dia de ontem a melhor opção para realizar deploys nos servidores da Locaweb era utilizar a gem Locarails, do Akita, mas a partir de hoje o Inploy conta com um template chamado Locaweb, pelo que dependendo do caso, pode ser uma melhor opção que a anterior.

Umas das coisas que de cara ja não gosto no Locarails é que utiliza o Capistrano por debaixo dos panos. Eu ja expliquei por que não gosto muito do Capistrano mas em poucas palavras nesse caso isso se resume a ter um monte de pastas releases que não me servem para nada, ter tarefas como cap deploy e cap deploy:migration que não fazem muito sentido e para finalizar, ter um monstro chamado de receita.

Para entender melhor meu ultimo argumento podem visualizar esse gist, onde se encontra o arquivo deploy.rb configurado para trabalhar com Inploy e configurado para trabalhar com Locarails. Como podem ver, com o Inploy o arquivo de configuração fica bem mais simples e ainda faz mas coisas, aquelas que o Inploy faz por padrão, como por exemplo fazer um parse dos arquivos .less caso o plugin more exista. Essa funcionalidade foi adicionada também hoje.

Outra coisa que não gosto do Locarails é que por padrão ele funciona como modo “copy”, então fica copiando tudo o repositorio em cada deploy e ainda copia coisas que não deveria, como por exemplo arquivos de upload ou outros que se encontram no .gitconfig e não estão na lista de exclusão. Essa lista de exclusão pode ser configurada mas configurar é muito chato. Como resultado disso os deploy são mais demorados.

Como solução a isso, os colaboradores do Locarails parece que recentemente contornaram esse problema adicionando um modo “git”. Na minha máquina no chegou a funcionar mas foi excelente porque vendo o código percebi que tem um jeito muito possivelmente melhor de levar o repositorio para o servidor que o jeito atual utilizado pelo Inploy. A grão vantagem de utilizar Git no deploy é que em cada um somente vão as mudanzas, pelo que os deploys resultam ser bem mais rápidos.

Como puderam ver no arquivo de configuração, para utilizar Inploy na Locaweb basta declarar no arquivo de configuração (config/deploy.rb) que queremos utilizar o template :locaweb, o usuario e o host:

deploy.template = :locaweb
deploy.application = "hebraika"
deploy.user = 'dcrec1'
deploy.hosts = ['host.us']

Caso queiramos mandar a aplicação para uma pasta diferente de /home/:user/rails_app/:application, podemos configurar ela com deploy.path.

Gravei um pequeno video onde mostro muito rapidamente como utilizar o Inploy para realizar um deploy na Locaweb. Acho que o video esta bem claro mas se existir alguma duvida, não duvidar em questionar:

Deploy easily to Locaweb with Inploy from Diego Carrion on Vimeo.

Finalmente, queria deixar claro que eu acho o Locarails uma excelente solução para quem quer trabalhar com Capistrano, devido a que tira a responsabilidade de ter que configurar muita coisa. As coisas pelas quais eu não gosto do Locarais não são culpa dos colaboradores é sim do Capistrano, que era sem duvida a melhor opção na epoca em qual foi criado o plugin.

Se você gostou do plugin ou ele foi de alguma utilidade para você, considera me recomendar no Working With Rails. Para ficar mais perto das novidades, não deixa de me seguir no Twitter.

Tags: Inploy · plugin · rails

7 respostas ate agora ↓

  • 1 Douglas - dorô // out 19, 2009 at 5:02 pm

    Interessante. Farei um teste em um próximo projeto para testar. O locarails da uma certa dor de cabeça para configura a primeira vez, mas depois é só “cap deploy” e já era, isso que acho legal.

    Parabéns pela iniciativa.

  • 2 Edipo // out 20, 2009 at 8:35 am

    Ola, parabens pelo trabalho, entao, to testando aqui e da o seguinte erro quando executo o primeiro comando:

    mv: inter-device move failed: `/tmp/edipo_rails’ to `/home/bitside1/rails_app/edipo_rails'; unable to remove target: Is a directory

    Não sei se tem algo haver com o fato de eu ter o rails congelado nessa demo….

    O que vc acha ?

    Abraço

  • 3 Diego Carrion // out 20, 2009 at 10:54 am

    @Edipo parece que no teu hosting da Locaweb, a pasta /tmp e tua pasta home estão em devises diferentes é isso gera o problema no move.

    Acabei de subir um commint onde este problema deveria estar corregido. Se não resolver, por favor me avisa ou caso voce queria corregir, é so me enviar um pull request.

    Obrigado pelo feedback.

  • 4 Alexandre Kenji // out 25, 2009 at 10:39 am

    Oi, Diego, estou tentando usar o inploy mas não esta funcionado legal no locaweb, faço o inploy:remote:setup sem problema mas quando faço inploy:remote:update as alterações não aparece la na locaweb mas se eu fizer “git log” aparece o commit , sera que alguma problema de versao do git ?????

    Abraço

  • 5 Diego Carrion // out 25, 2009 at 1:48 pm

    Oi Alexandre, voce fez alguma modificação na Locaweb e não comitou a mudança? Quando isso acontece, o git pull não consegue realizar o merge direito e algumas alterações se perdem, ja aconteceu comigo.

    Qualquer coisa pode me adicionar no gtalk/msn para te ajudar a resolver o problema: dc.rec1@gmail .

  • 6 edipofederle // dez 19, 2009 at 11:55 am

    Diego estou com o mesmo problema citado pelo Alexandre … nao consegui resolver tambem..

  • 7 Diego Carrion // dez 19, 2009 at 2:21 pm

    @edipofederle

    A estrategia que o Inploy::Locaweb esta utilizando para atulizar o código na Locaweb aparentemente não funciona com a última versão do Git e isso causa os problemas. Vou tentar lançar o patch ainda hoje, estarei dando noticias.

    Obrigado pelo feedback.

Deixar um comentário