Criando um ambiente de staging no heroku para nossa rails app
Criado em: 21/11/2013
É uma boa prática termos um ambiente que rode no heroku, mas que não seja o ambiente de produção, este ambiente é chamado de staging, um ambiente que é o mais proximo de produção.
Primeiro temos que criar uma app de staging no heroku, dado que nossa app tenha o nome de myapp
crie uma heroku app com o nome de myapp-staging
para isto podemos utilizar do heroku fork
.
$ heroku fork -a myapp myapp-staging
Primeiro temos que dizer ao rails que temos um ambiente de staging para isso temos que criar o config/environments/staging.rb
. Simplesmente cria o arquivo config/environments/staging.rb
com o mesmo conteúdo do config/environments/production.rb
apenas trocando o log_level
para :debug
.
Myapp::Application.configure do
# ...
config.log_level = :debug
end
No heroku agora utilizamos a gem rails_12factor
, no entanto ele apenas recomenda o uso em :production
, devemos incluir o nosso ambiente de staging aqui também no nosso Gemfile.
gem "rails_12factor", '0.0.2', group: [:production, :staging]
Como este ambiente é um ambiente para apenas os usuários que desejamos visualizar, como os colaboradores do nosso sistema, colocamos um basic auth apenas no ambiente de staging.
class ApplicationController < ActionController::Base
#...
http_basic_authenticate_with :name => "name", :password => "secret" if Rails.env.staging?
end
Para finalizar definimos as variaveis de ambiente no heroku, devemos definir o RACK_ENV
e o RAILS_ENV
.
$ heroku config:set RACK_ENV=staging RAILS_ENV=staging --app myapp-staging
Caso estejamos utilizando serviços como Amazon S3, Facebook etc. É uma boa pratica termos um bucket exclusivo de staging no caso da S3 e uma app do facebook para staging, assim como qualquer outro serviço que estejamos utilizando.
Adicione as variaveis de ambiente destes serviços como S3(AMAZON_S3_BUCKET
, AMAZON_ACCESS_KEY_ID
, AMAZON_SECRET_ACCESS_KEY
), Facebook(FACEBOOK_APP_KEY
, FACEBOOK_APP_SECRET
) e qualquer outra variável de ambiente necessária para a sua app funcionar.
Deste modo temos uma app que é bem próxima de produção, assim reduzimos a chance de termos alguma surpresa desagradável.
Comentários
Comentários powered by Disqus