Sua interface com o Heroku é essencialmente um branch do Git. A gem Heroku faz algum trabalho por meio de sua API, mas dentro do seu repositório Git, é apenas um novo branch remoto.
heroku create yourapp # production
git br -D heroku # delete the default branch
heroku create staging-yourapp # staging
git br -D heroku # delete the default branch
Depois de configurar vários aplicativos no Heroku, você deve ser capaz de configurar seu repositório Git assim:
git remote add staging [email protected]:staging-yourapp.git
git push origin staging
git remote add production [email protected]:yourapp.git
git push origin production
Eu geralmente trabalho em um branch 'funcional' e uso o Github como meu mestre.
Supondo que seja o seu caso, seu fluxo de trabalho de implantação provavelmente seria algo como:
git co -b working
# do some work
# push to github:
git co master
git merge working
git push
# push to staging:
git co staging
git merge master
git push origin staging
# push to production
git co production
git merge master
git push origin production
git push staging edge work
?heroku create yourapp --remote your-remote
heroku
comandos precisam incluir--app staging
ou--app production
. Existe alguma maneira de definir um padrão? (Perguntar como um comentário b / c parece muito direcionado para ser uma pergunta SO completa.)Isso explica tudo que você precisa saber se você for um novato como eu: http://devcenter.heroku.com/articles/multiple-environments
fonte
Uma parte fundamental da questão original é sobre como vincular o aplicativo de teste a um subdomínio (dev.myapp.com) do aplicativo principal (www.myapp.com). Isso não foi abordado em nenhuma das respostas.
Etapa 1: configure as versões de produção ('myapp') e de teste ('staging-myapp') de seu aplicativo, conforme indicado na resposta de Luke Bayes
Etapa 2: Em seu sistema de gerenciamento de domínio (por exemplo, GoDaddy):
Etapa 3: configurar o Heroku para rotear dev.myapp.com para staging-myapp:
Depois que o registro CNAME tiver tempo para se propagar, você poderá executar seu aplicativo de teste em dev.myapp.com.
fonte
before_filter
gancho ao meuapplication_controller
para pegar TUDO no teste e forçar o usuário a fazer o login como administrador, em seguida, configurei um cookie de administrador para que eu ainda possa ver o aplicativo do ponto de vista de um 'não administrador'. Funcionando muito bem para mim.Você deve verificar o heroku_san
Ele faz um bom trabalho ao lidar com ambientes no heroku.
fonte
As coisas estão mais fáceis agora. Veja como você faz isso ...
Crie um aplicativo para cada ambiente
Isso criará repositórios remotos nomeados para cada aplicativo, que você pode ver em
.git/config
.Agora você pode usar as opções --app ou --remote para direcionar um aplicativo específico:
Definir ambientes Rails
Para aplicativos Rails, o padrão do Heroku é o ambiente de "produção" . Se você deseja que seu aplicativo de teste seja executado em um ambiente de teste, crie o ambiente em seu projeto e defina as variáveis de ambiente RAILS_ENV e RAKE_ENV correspondentes no aplicativo:
Configurar ambientes
Se você tiver outras variáveis de configuração, também precisará passá-las para cada ambiente.
Isso é uma grande dor, então eu apenas uso minha gem snappconfig e executo
para carregar os arquivos de configuração YAML do meu projeto no Heroku.
Implantar
Agora, basta empurrar para o Heroku assim:
e migre assim:
(Consulte Gerenciando vários ambientes para um aplicativo | Centro de desenvolvimento Heroku para obter mais informações e atalhos.)
fonte
RAILS_ENV
andRACK_ENV
tostaging
é desencorajado pelo Heroku: "Pode ser tentador criar outro ambiente personalizado, como“ staging ”e criar um config / environment / staging.rb e implantar em um aplicativo Heroku com RAILS_ENV = staging. Esta não é uma boa prática . Em vez disso, recomendamos sempre executar no modo de produção e modificar qualquer comportamento, definindo seus vars de configuração. " Mais sobre isso aqui: devcenter.heroku.com/articles/…