Kodu dev.myapp.com
test etmek için ve daha sonra www.myapp.com
üretim kullanımı için gönderebilmek istiyorum . Bu Heroku ile mümkün mü?
Kodu dev.myapp.com
test etmek için ve daha sonra www.myapp.com
üretim kullanımı için gönderebilmek istiyorum . Bu Heroku ile mümkün mü?
Yanıtlar:
Heroku arayüzünüz aslında bir Git dalı. Heroku cevheri, API'leri aracılığıyla bazı işler yapar, ancak Git deponuzda, bu yalnızca yeni bir uzak daldır.
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
Heroku'da birden fazla uygulama kurduğunuzda, Git deponuzu şu şekilde yapılandırabilmelisiniz:
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
Genellikle 'çalışan' bir dalda çalışıyorum ve ustam için Github kullanıyorum.
Bunun sizin için geçerli olduğunu varsayarsak, dağıtım iş akışınız muhtemelen şuna benzer:
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
komutlarınızın --app staging
veya eklemesi gerekir --app production
. Varsayılan ayarlamanın herhangi bir yolu var mı? (Yorum olarak sormak, çünkü bu, tam teşekküllü bir SO sorusu olmak için fazla hedeflenmiş görünüyor.)
Bu, benim gibi bir aceminiz varsa bilmeniz gereken her şeyi açıklıyor: http://devcenter.heroku.com/articles/multiple-environment
Orijinal sorunun önemli bir kısmı, hazırlık uygulamasını ana uygulamanın (www.myapp.com) bir alt etki alanına (dev.myapp.com) bağlamakla ilgilidir. Bu yanıtların hiçbirinde ele alınmadı.
Adım 1: Uygulamanızın hem üretim ("uygulamam") hem de aşamalı ("staging-myapp") sürümlerini Luke Bayes'in yanıtında belirtildiği gibi yapılandırın
2. Adım: Etki alanı yönetim sisteminizde (ör. GoDaddy):
Create a CNAME record: dev.myapp.com
that points to: proxy.heroku.com
Adım 3: Heroku'yu dev.myapp.com'u staging-myapp'a yönlendirecek şekilde yapılandırın:
heroku domains:add dev.myapp.com --app staging-myapp
CNAME kaydının yayılması için zaman bulduktan sonra, hazırlama uygulamanızı dev.myapp.com adresinde çalıştırabilirsiniz.
before_filter
kanca application_controller
ekledim ve ardından uygulamayı bir 'yönetici olmayan' bakış açısından görebilmek için bir yönetici çerezi ayarladım. Benim için oldukça iyi çalışıyor.
Heroku_san'ı kontrol etmelisiniz
Heroku'daki ortamlarla hokkabazlık yapmak oldukça iyi bir iş çıkarır.
Artık işler daha kolay. İşte bunu nasıl yapıyorsun ...
$ heroku create myapp --remote production
$ heroku create myapp-staging --remote staging
Bu, içinde görebileceğiniz her uygulama için adlandırılmış uzak depolar oluşturacaktır .git/config
.
Artık belirli bir uygulamayı hedeflemek için --app veya --remote anahtarlarını kullanabilirsiniz:
$ heroku info --app myapp-staging
$ heroku info --remote staging
Rails uygulamaları için Heroku varsayılan olarak "üretim" ortamına ayarlanır . Hazırlama uygulamanızın bir hazırlık ortamında çalışmasını istiyorsanız , ortamı projenizde oluşturun ve uygulamada ilgili RAILS_ENV ve RAKE_ENV ortam değişkenlerini ayarlayın :
$ heroku config:set RACK_ENV=staging RAILS_ENV=staging --remote staging
Başka yapılandırma değişkenleriniz varsa, bunları her ortam için de aktarmanız gerekir.
$ heroku config:set AWS_KEY=abc --remote staging
$ heroku config:set AWD_SECRET=123 --remote staging
...etc
Yine de bu çok büyük bir acı bu yüzden sadece snappconfig taşımı kullanıyorum ve
$ rake heroku:config:load[myapp-staging]
projemin YAML yapılandırma dosyalarını Heroku'ya yüklemek için.
Şimdi Heroku'ya şu şekilde itin:
$ git push staging master
$ git push production master
ve şu şekilde göç edin:
$ heroku run rake db:migrate --remote staging
$ heroku run rake db:migrate --remote production
(Daha fazla bilgi ve kısayollar için Bir Uygulama İçin Birden Fazla Ortamı Yönetme | Heroku Geliştirici Merkezi'ne bakın.)
RAILS_ENV
ve RACK_ENV
yapma staging
, Heroku tarafından önerilmiyor: "" staging "gibi başka bir özel ortam oluşturmak ve bir config / environment / staging.rb oluşturmak ve RAILS_ENV = staging ile bir Heroku uygulamasına dağıtmak cazip gelebilir. Bu iyi bir uygulama değildir. . Bunun yerine, her zaman üretim modunda çalışmanızı ve yapılandırma değişkenlerinizi ayarlayarak herhangi bir davranışı değiştirmenizi öneririz. " Bununla
git push staging edge work
?