Adicione as seguintes gems ao seu projeto Rails:
gem 'capistrano'
gem 'capistrano-ext'
Caso você ainda não tenha um arquivo de deploy, gere-o com o comando (Execute o comando na raiz do projeto):
sauron@mordor:$ capify .
No arquivo de deploy (config/deploy.rb), adicione as seguintes linhas no ínicio do arquivo:
require "bundler/capistrano"
set :stages, %w(staging production)
set :default_stage, 'staging'
require 'capistrano/ext/multistage'
Neste caso estou configurando dois ambientes: staging e production. Também defino o ambiente staging como o padrão.
Para fazer o deploy, execute o comando desta forma:
sauron@mordor:$ cap staging deploy
ou
sauron@mordor:$ cap production deploy
Se você não especificar o ambiente no comando de deploy, vai ser utilizado o ambiente padrão (default_stage):
sauron@mordor:$ cap deploy
// Vai fazer deploy no ambiente staging, porque ele está definido como padrão
Agora que temos os dois ambientes configurados (staging e production), precisamos alterar a configuração do staging para que seja criado uma área específica para testes, separada da área de produção.
Crie um diretório deploy dentro do diretório config do seu projeto:
sauron@mordor:$ mkdir config/deploy
Dentro deste diretório crie dois arquivos, production.rb e staging.rb:
sauron@mordor:$ touch config/deploy/production.rb
sauron@mordor:$ touch config/deploy/staging.rb
A configuração de deploy do ambiente de produção (production) vai ser a mesma que está no arquivo de deploy original (config/deploy.rb), então deixaremos o arquivo production.rb em branco.
Nas configurações do ambiente de testes (staging), faremos as alterações necessárias:
set :application, 'teste.exemplo.com'
set :database, 'teste_exemplo'
set :rails_env, 'staging'
set :user, 'ubuntu'
set :use_sudo, false
set :scm, :git
set :repository, "git://github.com/projeto/exemplo.git"
set :branch, 'teste'
set :deploy_via, :remote_cache
set :deploy_to, "/home/#{user}/www/#{application}"
set :shared_path, "/home/#{user}/www/#{application}/shared"
set :git_enable_submodules, true
set :keep_releases, 10
Essas são as alterações que eu faço para diferenciar o ambiente de testes do ambiente de produção, sendo as principais mudar o nome da aplicação (para que o deploy seja feito em outro diretório e não sobrescreva o deploy de produção), mudar o banco, o rails_env e o branch do git.
Nenhum comentário:
Postar um comentário