SlideShare uma empresa Scribd logo
1 de 24
Baixar para ler offline
Deploy de aplicações
Ruby com Mina
Ismael Stahelin
TDC Floripa 2014
1
Sobre
• Web developer (back and front-end)
• Atualmente na Celtec Rastreamento Ltda
• Desenvolvemos software de rastreamento de
veículos, cargas, etc.
• Usamos: Ruby, Rails, Postgres, Backbone.js,
Google Maps API, Redis, ...
• Estamos contratando :)
2
Sem mais demora...
3
Os 4 passos para o deploy
1. Criar o arquivo config/deploy.rb
2. Definir servidor, repositório, branch, etc.
3. Executar "mina setup" (somente 1 vez)
4. Executar "mina deploy"
4
Agora vamos aos
detalhes...
5
O que é Mina?
• Ferramenta de deploy (implantação)
• Usada também para automatizar a administração
do servidor
• É "rake based"
6
E o que é "rake based"?
• Fluxo de trabalho baseado em tarefas
• Pode seguir o fluxo ou executar tarefas específicas
(é aqui que entra a parte de automação do
servidor)
• Você conta com safe deploys
7
Um exemplo de tarefa
8
O que são safe deploys?
• Nada é alterado no servidor até que o build atual
seja concluído sem erros
• Você pode manter várias versões no servidor e
isso é configurável no seu deploy.rb
• Possui deploy locks para a sua proteção
9
O que são deploy locks?
• Controla os deploys baseado em lock files
• Deploy só inicia se conseguir pegar o lock file
• Garante que apenas 1 deploy ocorre a cada
momento (para cada aplicativo)
10
Parece ótimo mesmo, e
como eu uso essa
maravilha?
11
Usando o mina
• Instale via "gem install mina" ou via bundler com
"gem 'mina'" no seu group :development
• Inicialize em seu projeto com "mina init"
• Ajuste seu arquivo config/deploy.rb
12
Exemplo completo de
deploy.rb
https://gist.github.com/ismaels/
c72bb805ff91a5cab242
13
Entendo o mina init
• Cria um diretório config se não exisitr
• Cria um arquivo deploy.rb nesse diretório
• Esse arquivo possui todas as configurações para o
deploy da sua aplicação
14
Um exemplo...
Quase ao vivo
http://youtu.be/2R-RZfmjAlk
15
Olhando o deploy.rb de
perto
• É um rake file disfarçado :)
• Pode possuir quantas tasks forem necessárias,
mas possui 3 seções principais
• Definições, Ambiente e Deploy
16
Principais seções
17
Mina setup
• Precisa ser executado apenas 1 vez
• Cria a estrutura de diretórios no servidor para
implantar a aplicação
• Pode ser customizado no deploy.rb
18
Estrutura de diretórios no
servidor
19
Mina deploy
• Cria um diretório temporário para fazer o build do
projeto (tudo que está no bloco deploy)
• Move o diretório de build para releases
• Cria um link simbólico para current
• Executa o bloco "to :launch"
20
E se acontecer algum erro?
• Caso isso aconteça o link para o release path será
apagado (mas não a pasta da versão dentro de
releases)
• O bloco "to :clean" será executado caso tenho
sido definido
• Importante apagar ou mover a versão quebrada
que ficou no releases (você não vai querer ter no seu
histórico de versões uma que pode não funcionar)
21
Tips & Tricks (1)
• Certifique-se que o usuário de deploy possui
acesso de leitura e escrita nos diretórios
• Se precisar alterar a estrutura do server, melhor
apagar e começar do zero novamente
• Não esqueça de adicionar a chave ssh do seu
repositório no servidor antes de rodar mina deploy
22
Tips & Tricks (2)
• Você pode ter vários arquivos de deploy.rb (o
nome não importa)
• Use o parâmetro -f para indicar um arquivo com
nome diferente de deploy.rb ou em localização
diferente
• Use os parâmetros -v e -t para ter mais detalhes
da execução remota
23
Obrigado
stahelin.ismael@gmail.com
http://ismaelstahelin.com
http://github.com/ismaels
@ismaels
24

Mais conteúdo relacionado

Mais procurados

ASP.NET Core 2.0 - Reply - Outubro/2017
ASP.NET Core 2.0 - Reply - Outubro/2017ASP.NET Core 2.0 - Reply - Outubro/2017
ASP.NET Core 2.0 - Reply - Outubro/2017Renato Groff
 
ASP.NET Core 2.0 - .NET São Paulo - Outubro-2017
ASP.NET Core 2.0 - .NET São Paulo - Outubro-2017ASP.NET Core 2.0 - .NET São Paulo - Outubro-2017
ASP.NET Core 2.0 - .NET São Paulo - Outubro-2017Renato Groff
 
ASP.NET 5 - Novidades do Desenvolvimento Web em .NET
ASP.NET 5 - Novidades do Desenvolvimento Web em .NETASP.NET 5 - Novidades do Desenvolvimento Web em .NET
ASP.NET 5 - Novidades do Desenvolvimento Web em .NETRenato Groff
 
ASP.NET Core 2.0 - NESS - Outubro/2017
ASP.NET Core 2.0 - NESS - Outubro/2017ASP.NET Core 2.0 - NESS - Outubro/2017
ASP.NET Core 2.0 - NESS - Outubro/2017Renato Groff
 
Implementando APIs multiplataforma com ASP.NET Core 2.0 - .NET Conf Local 201...
Implementando APIs multiplataforma com ASP.NET Core 2.0 - .NET Conf Local 201...Implementando APIs multiplataforma com ASP.NET Core 2.0 - .NET Conf Local 201...
Implementando APIs multiplataforma com ASP.NET Core 2.0 - .NET Conf Local 201...Renato Groff
 
ASP.NET Core em Linux - Canal .NET Dev Week
ASP.NET Core em Linux - Canal .NET Dev WeekASP.NET Core em Linux - Canal .NET Dev Week
ASP.NET Core em Linux - Canal .NET Dev WeekRenato Groff
 
.NET Core e C# 7.0 - InterCon 2016
.NET Core e C# 7.0 - InterCon 2016.NET Core e C# 7.0 - InterCon 2016
.NET Core e C# 7.0 - InterCon 2016Renato Groff
 
1º Meetup Zabbix Meetup do Recife: Werneck Costa - UserParameters
1º Meetup Zabbix Meetup do Recife: Werneck Costa - UserParameters1º Meetup Zabbix Meetup do Recife: Werneck Costa - UserParameters
1º Meetup Zabbix Meetup do Recife: Werneck Costa - UserParametersZabbix BR
 
Escalando API's com NodeJS, Docker e RabbitMQ
Escalando API's com NodeJS, Docker e RabbitMQEscalando API's com NodeJS, Docker e RabbitMQ
Escalando API's com NodeJS, Docker e RabbitMQMatheus Fidelis
 
Evitando a fadiga com Laravel Homestead
Evitando a fadiga com Laravel HomesteadEvitando a fadiga com Laravel Homestead
Evitando a fadiga com Laravel HomesteadDanilo Esser
 
Docker Para Maiores - GDG Cabreúva
Docker Para Maiores - GDG CabreúvaDocker Para Maiores - GDG Cabreúva
Docker Para Maiores - GDG CabreúvaMatheus Fidelis
 
Um panorama sobre Padrões PSR, e como eles vem mudando o jeito que desenvolve...
Um panorama sobre Padrões PSR, e como eles vem mudando o jeito que desenvolve...Um panorama sobre Padrões PSR, e como eles vem mudando o jeito que desenvolve...
Um panorama sobre Padrões PSR, e como eles vem mudando o jeito que desenvolve...Felipe Abreu
 
Desenvolvimento web no Linux
Desenvolvimento web no LinuxDesenvolvimento web no Linux
Desenvolvimento web no LinuxEduardo Rozario
 
C# 7.0 e .NET Core - Canal .NET Dev Week
C# 7.0 e .NET Core - Canal .NET Dev WeekC# 7.0 e .NET Core - Canal .NET Dev Week
C# 7.0 e .NET Core - Canal .NET Dev WeekRenato Groff
 
Aplicações e serviços Web interoperáveis com o padrão Cross-Origin Resource S...
Aplicações e serviços Web interoperáveis com o padrão Cross-Origin Resource S...Aplicações e serviços Web interoperáveis com o padrão Cross-Origin Resource S...
Aplicações e serviços Web interoperáveis com o padrão Cross-Origin Resource S...MVP ShowCast
 
Integração de Sistemas usando tecnologias open source
Integração de Sistemas usando tecnologias open sourceIntegração de Sistemas usando tecnologias open source
Integração de Sistemas usando tecnologias open sourceTiago Peczenyj
 
Um novo .NET multiplataforma: ASP.NET Core, .NET Core e Entity Framework Core
Um novo .NET multiplataforma:ASP.NET Core, .NET Core e Entity Framework CoreUm novo .NET multiplataforma:ASP.NET Core, .NET Core e Entity Framework Core
Um novo .NET multiplataforma: ASP.NET Core, .NET Core e Entity Framework CoreRogério Moraes de Carvalho
 

Mais procurados (20)

ASP.NET Core 2.0 - Reply - Outubro/2017
ASP.NET Core 2.0 - Reply - Outubro/2017ASP.NET Core 2.0 - Reply - Outubro/2017
ASP.NET Core 2.0 - Reply - Outubro/2017
 
ASP.NET Core 2.0 - .NET São Paulo - Outubro-2017
ASP.NET Core 2.0 - .NET São Paulo - Outubro-2017ASP.NET Core 2.0 - .NET São Paulo - Outubro-2017
ASP.NET Core 2.0 - .NET São Paulo - Outubro-2017
 
ASP.NET 5 - Novidades do Desenvolvimento Web em .NET
ASP.NET 5 - Novidades do Desenvolvimento Web em .NETASP.NET 5 - Novidades do Desenvolvimento Web em .NET
ASP.NET 5 - Novidades do Desenvolvimento Web em .NET
 
ASP.NET Core 2.0 - NESS - Outubro/2017
ASP.NET Core 2.0 - NESS - Outubro/2017ASP.NET Core 2.0 - NESS - Outubro/2017
ASP.NET Core 2.0 - NESS - Outubro/2017
 
Implementando APIs multiplataforma com ASP.NET Core 2.0 - .NET Conf Local 201...
Implementando APIs multiplataforma com ASP.NET Core 2.0 - .NET Conf Local 201...Implementando APIs multiplataforma com ASP.NET Core 2.0 - .NET Conf Local 201...
Implementando APIs multiplataforma com ASP.NET Core 2.0 - .NET Conf Local 201...
 
ASP.NET Core em Linux - Canal .NET Dev Week
ASP.NET Core em Linux - Canal .NET Dev WeekASP.NET Core em Linux - Canal .NET Dev Week
ASP.NET Core em Linux - Canal .NET Dev Week
 
.NET Core e C# 7.0 - InterCon 2016
.NET Core e C# 7.0 - InterCon 2016.NET Core e C# 7.0 - InterCon 2016
.NET Core e C# 7.0 - InterCon 2016
 
1º Meetup Zabbix Meetup do Recife: Werneck Costa - UserParameters
1º Meetup Zabbix Meetup do Recife: Werneck Costa - UserParameters1º Meetup Zabbix Meetup do Recife: Werneck Costa - UserParameters
1º Meetup Zabbix Meetup do Recife: Werneck Costa - UserParameters
 
Escalando API's com NodeJS, Docker e RabbitMQ
Escalando API's com NodeJS, Docker e RabbitMQEscalando API's com NodeJS, Docker e RabbitMQ
Escalando API's com NodeJS, Docker e RabbitMQ
 
Evitando a fadiga com Laravel Homestead
Evitando a fadiga com Laravel HomesteadEvitando a fadiga com Laravel Homestead
Evitando a fadiga com Laravel Homestead
 
Docker Para Maiores - GDG Cabreúva
Docker Para Maiores - GDG CabreúvaDocker Para Maiores - GDG Cabreúva
Docker Para Maiores - GDG Cabreúva
 
Um panorama sobre Padrões PSR, e como eles vem mudando o jeito que desenvolve...
Um panorama sobre Padrões PSR, e como eles vem mudando o jeito que desenvolve...Um panorama sobre Padrões PSR, e como eles vem mudando o jeito que desenvolve...
Um panorama sobre Padrões PSR, e como eles vem mudando o jeito que desenvolve...
 
JBoss Fuse Workshop Desenvolvimento - Parte 1
JBoss Fuse Workshop Desenvolvimento - Parte 1JBoss Fuse Workshop Desenvolvimento - Parte 1
JBoss Fuse Workshop Desenvolvimento - Parte 1
 
ASP.NET vNext – MVC6
ASP.NET vNext – MVC6ASP.NET vNext – MVC6
ASP.NET vNext – MVC6
 
Desenvolvimento web no Linux
Desenvolvimento web no LinuxDesenvolvimento web no Linux
Desenvolvimento web no Linux
 
C# 7.0 e .NET Core - Canal .NET Dev Week
C# 7.0 e .NET Core - Canal .NET Dev WeekC# 7.0 e .NET Core - Canal .NET Dev Week
C# 7.0 e .NET Core - Canal .NET Dev Week
 
Aplicações e serviços Web interoperáveis com o padrão Cross-Origin Resource S...
Aplicações e serviços Web interoperáveis com o padrão Cross-Origin Resource S...Aplicações e serviços Web interoperáveis com o padrão Cross-Origin Resource S...
Aplicações e serviços Web interoperáveis com o padrão Cross-Origin Resource S...
 
Cake PHP
Cake PHPCake PHP
Cake PHP
 
Integração de Sistemas usando tecnologias open source
Integração de Sistemas usando tecnologias open sourceIntegração de Sistemas usando tecnologias open source
Integração de Sistemas usando tecnologias open source
 
Um novo .NET multiplataforma: ASP.NET Core, .NET Core e Entity Framework Core
Um novo .NET multiplataforma:ASP.NET Core, .NET Core e Entity Framework CoreUm novo .NET multiplataforma:ASP.NET Core, .NET Core e Entity Framework Core
Um novo .NET multiplataforma: ASP.NET Core, .NET Core e Entity Framework Core
 

Semelhante a Deploy de aplicações Ruby com Mina - TDC Floripa 2014

12 factor app. Melhor com Docker
12 factor app. Melhor com Docker12 factor app. Melhor com Docker
12 factor app. Melhor com DockerWellington Silva
 
Play Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem DorPlay Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem DorAllyson Barros
 
Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Ab...
Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Ab...Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Ab...
Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Ab...Renato Groff
 
Docker: Conceitos e Primeiros Passos na utilização de Containers - Programand...
Docker: Conceitos e Primeiros Passos na utilização de Containers - Programand...Docker: Conceitos e Primeiros Passos na utilização de Containers - Programand...
Docker: Conceitos e Primeiros Passos na utilização de Containers - Programand...Renato Groff
 
Docker: primeiros passos - Semana FCI - Mackenzie - Outubro-2019
Docker: primeiros passos - Semana FCI - Mackenzie - Outubro-2019Docker: primeiros passos - Semana FCI - Mackenzie - Outubro-2019
Docker: primeiros passos - Semana FCI - Mackenzie - Outubro-2019Renato Groff
 
Maven: Introdução
Maven: IntroduçãoMaven: Introdução
Maven: IntroduçãoJugVale
 
Iniciando com Ruby on Rails - Luiz Fernando Pimenta
Iniciando com Ruby on Rails - Luiz Fernando PimentaIniciando com Ruby on Rails - Luiz Fernando Pimenta
Iniciando com Ruby on Rails - Luiz Fernando Pimentamichel adriano medeiros
 
Web Training Aula 03: Introduction to Laravel
Web Training Aula 03: Introduction to LaravelWeb Training Aula 03: Introduction to Laravel
Web Training Aula 03: Introduction to LaravelMozDevz
 
Desenvolvimento Web multiplataforma com ASP.NET Core 2.2 e Docker - Open Sour...
Desenvolvimento Web multiplataforma com ASP.NET Core 2.2 e Docker - Open Sour...Desenvolvimento Web multiplataforma com ASP.NET Core 2.2 e Docker - Open Sour...
Desenvolvimento Web multiplataforma com ASP.NET Core 2.2 e Docker - Open Sour...Renato Groff
 
Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Se...
Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Se...Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Se...
Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Se...Renato Groff
 
Google App Engine e PHP
Google App Engine e PHPGoogle App Engine e PHP
Google App Engine e PHPLuiz Messias
 
Como automatizar Sistemas Legados utilizando ferramentas de DevOps
Como automatizar Sistemas Legados utilizando ferramentas de DevOpsComo automatizar Sistemas Legados utilizando ferramentas de DevOps
Como automatizar Sistemas Legados utilizando ferramentas de DevOpsRafael Salerno de Oliveira
 
Meetup Zabbix Day FMB - O que é o Zabbix
Meetup Zabbix Day FMB - O que é o ZabbixMeetup Zabbix Day FMB - O que é o Zabbix
Meetup Zabbix Day FMB - O que é o ZabbixJulio Pantarotto
 
Introdução ao Flyway
Introdução ao FlywayIntrodução ao Flyway
Introdução ao FlywayJadson Santos
 
Docker no Back e no Front - um exemplo com .NET Core e Angular - Campus Party...
Docker no Back e no Front - um exemplo com .NET Core e Angular - Campus Party...Docker no Back e no Front - um exemplo com .NET Core e Angular - Campus Party...
Docker no Back e no Front - um exemplo com .NET Core e Angular - Campus Party...Renato Groff
 

Semelhante a Deploy de aplicações Ruby com Mina - TDC Floripa 2014 (20)

12 factor app. Melhor com Docker
12 factor app. Melhor com Docker12 factor app. Melhor com Docker
12 factor app. Melhor com Docker
 
Play Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem DorPlay Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem Dor
 
Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Ab...
Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Ab...Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Ab...
Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Ab...
 
Docker: Conceitos e Primeiros Passos na utilização de Containers - Programand...
Docker: Conceitos e Primeiros Passos na utilização de Containers - Programand...Docker: Conceitos e Primeiros Passos na utilização de Containers - Programand...
Docker: Conceitos e Primeiros Passos na utilização de Containers - Programand...
 
Docker: primeiros passos - Semana FCI - Mackenzie - Outubro-2019
Docker: primeiros passos - Semana FCI - Mackenzie - Outubro-2019Docker: primeiros passos - Semana FCI - Mackenzie - Outubro-2019
Docker: primeiros passos - Semana FCI - Mackenzie - Outubro-2019
 
Maven 2
Maven 2Maven 2
Maven 2
 
Docker + Django
Docker + DjangoDocker + Django
Docker + Django
 
Maven: Introdução
Maven: IntroduçãoMaven: Introdução
Maven: Introdução
 
Iniciando com Ruby on Rails - Luiz Fernando Pimenta
Iniciando com Ruby on Rails - Luiz Fernando PimentaIniciando com Ruby on Rails - Luiz Fernando Pimenta
Iniciando com Ruby on Rails - Luiz Fernando Pimenta
 
Web Training Aula 03: Introduction to Laravel
Web Training Aula 03: Introduction to LaravelWeb Training Aula 03: Introduction to Laravel
Web Training Aula 03: Introduction to Laravel
 
Mastering Laravel
Mastering LaravelMastering Laravel
Mastering Laravel
 
Desenvolvimento Web multiplataforma com ASP.NET Core 2.2 e Docker - Open Sour...
Desenvolvimento Web multiplataforma com ASP.NET Core 2.2 e Docker - Open Sour...Desenvolvimento Web multiplataforma com ASP.NET Core 2.2 e Docker - Open Sour...
Desenvolvimento Web multiplataforma com ASP.NET Core 2.2 e Docker - Open Sour...
 
Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Se...
Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Se...Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Se...
Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Se...
 
De 0 a DevOps
De 0 a DevOpsDe 0 a DevOps
De 0 a DevOps
 
Google App Engine e PHP
Google App Engine e PHPGoogle App Engine e PHP
Google App Engine e PHP
 
Como automatizar Sistemas Legados utilizando ferramentas de DevOps
Como automatizar Sistemas Legados utilizando ferramentas de DevOpsComo automatizar Sistemas Legados utilizando ferramentas de DevOps
Como automatizar Sistemas Legados utilizando ferramentas de DevOps
 
Meetup Zabbix Day FMB - O que é o Zabbix
Meetup Zabbix Day FMB - O que é o ZabbixMeetup Zabbix Day FMB - O que é o Zabbix
Meetup Zabbix Day FMB - O que é o Zabbix
 
Introdução ao Flyway
Introdução ao FlywayIntrodução ao Flyway
Introdução ao Flyway
 
Ruby on Rails for beginners 2.0
Ruby on Rails for beginners 2.0Ruby on Rails for beginners 2.0
Ruby on Rails for beginners 2.0
 
Docker no Back e no Front - um exemplo com .NET Core e Angular - Campus Party...
Docker no Back e no Front - um exemplo com .NET Core e Angular - Campus Party...Docker no Back e no Front - um exemplo com .NET Core e Angular - Campus Party...
Docker no Back e no Front - um exemplo com .NET Core e Angular - Campus Party...
 

Deploy de aplicações Ruby com Mina - TDC Floripa 2014

  • 1. Deploy de aplicações Ruby com Mina Ismael Stahelin TDC Floripa 2014 1
  • 2. Sobre • Web developer (back and front-end) • Atualmente na Celtec Rastreamento Ltda • Desenvolvemos software de rastreamento de veículos, cargas, etc. • Usamos: Ruby, Rails, Postgres, Backbone.js, Google Maps API, Redis, ... • Estamos contratando :) 2
  • 4. Os 4 passos para o deploy 1. Criar o arquivo config/deploy.rb 2. Definir servidor, repositório, branch, etc. 3. Executar "mina setup" (somente 1 vez) 4. Executar "mina deploy" 4
  • 6. O que é Mina? • Ferramenta de deploy (implantação) • Usada também para automatizar a administração do servidor • É "rake based" 6
  • 7. E o que é "rake based"? • Fluxo de trabalho baseado em tarefas • Pode seguir o fluxo ou executar tarefas específicas (é aqui que entra a parte de automação do servidor) • Você conta com safe deploys 7
  • 8. Um exemplo de tarefa 8
  • 9. O que são safe deploys? • Nada é alterado no servidor até que o build atual seja concluído sem erros • Você pode manter várias versões no servidor e isso é configurável no seu deploy.rb • Possui deploy locks para a sua proteção 9
  • 10. O que são deploy locks? • Controla os deploys baseado em lock files • Deploy só inicia se conseguir pegar o lock file • Garante que apenas 1 deploy ocorre a cada momento (para cada aplicativo) 10
  • 11. Parece ótimo mesmo, e como eu uso essa maravilha? 11
  • 12. Usando o mina • Instale via "gem install mina" ou via bundler com "gem 'mina'" no seu group :development • Inicialize em seu projeto com "mina init" • Ajuste seu arquivo config/deploy.rb 12
  • 14. Entendo o mina init • Cria um diretório config se não exisitr • Cria um arquivo deploy.rb nesse diretório • Esse arquivo possui todas as configurações para o deploy da sua aplicação 14
  • 15. Um exemplo... Quase ao vivo http://youtu.be/2R-RZfmjAlk 15
  • 16. Olhando o deploy.rb de perto • É um rake file disfarçado :) • Pode possuir quantas tasks forem necessárias, mas possui 3 seções principais • Definições, Ambiente e Deploy 16
  • 18. Mina setup • Precisa ser executado apenas 1 vez • Cria a estrutura de diretórios no servidor para implantar a aplicação • Pode ser customizado no deploy.rb 18
  • 19. Estrutura de diretórios no servidor 19
  • 20. Mina deploy • Cria um diretório temporário para fazer o build do projeto (tudo que está no bloco deploy) • Move o diretório de build para releases • Cria um link simbólico para current • Executa o bloco "to :launch" 20
  • 21. E se acontecer algum erro? • Caso isso aconteça o link para o release path será apagado (mas não a pasta da versão dentro de releases) • O bloco "to :clean" será executado caso tenho sido definido • Importante apagar ou mover a versão quebrada que ficou no releases (você não vai querer ter no seu histórico de versões uma que pode não funcionar) 21
  • 22. Tips & Tricks (1) • Certifique-se que o usuário de deploy possui acesso de leitura e escrita nos diretórios • Se precisar alterar a estrutura do server, melhor apagar e começar do zero novamente • Não esqueça de adicionar a chave ssh do seu repositório no servidor antes de rodar mina deploy 22
  • 23. Tips & Tricks (2) • Você pode ter vários arquivos de deploy.rb (o nome não importa) • Use o parâmetro -f para indicar um arquivo com nome diferente de deploy.rb ou em localização diferente • Use os parâmetros -v e -t para ter mais detalhes da execução remota 23