Gostaria de poder enviar o código dev.myapp.com
para teste e depois www.myapp.com
para uso em produção. Isso é possível com Heroku?
Gostaria de poder enviar o código dev.myapp.com
para teste e depois www.myapp.com
para uso em produção. Isso é possível com Heroku?
Respostas:
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 git@heroku.com:staging-yourapp.git
git push origin staging
git remote add production git@heroku.com: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
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
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):
Create a CNAME record: dev.myapp.com
that points to: proxy.heroku.com
Etapa 3: configurar o Heroku para rotear dev.myapp.com para staging-myapp:
heroku domains:add dev.myapp.com --app staging-myapp
Depois que o registro CNAME tiver tempo para se propagar, você poderá executar seu aplicativo de teste em dev.myapp.com.
before_filter
gancho ao meu application_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.
As coisas estão mais fáceis agora. Veja como você faz isso ...
$ heroku create myapp --remote production
$ heroku create myapp-staging --remote staging
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:
$ heroku info --app myapp-staging
$ heroku info --remote staging
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:
$ heroku config:set RACK_ENV=staging RAILS_ENV=staging --remote staging
Se você tiver outras variáveis de configuração, também precisará passá-las para cada ambiente.
$ heroku config:set AWS_KEY=abc --remote staging
$ heroku config:set AWD_SECRET=123 --remote staging
...etc
Isso é uma grande dor, então eu apenas uso minha gem snappconfig e executo
$ rake heroku:config:load[myapp-staging]
para carregar os arquivos de configuração YAML do meu projeto no Heroku.
Agora, basta empurrar para o Heroku assim:
$ git push staging master
$ git push production master
e migre assim:
$ heroku run rake db:migrate --remote staging
$ heroku run rake db:migrate --remote production
(Consulte Gerenciando vários ambientes para um aplicativo | Centro de desenvolvimento Heroku para obter mais informações e atalhos.)
RAILS_ENV
and RACK_ENV
to staging
é 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/…
git push staging edge work
?