ฉันต้องการที่จะสามารถพุชโค้ดเพื่อdev.myapp.com
ทดสอบและจากนั้นไปที่www.myapp.com
สำหรับการใช้งานจริง เป็นไปได้กับ Heroku หรือไม่?
ฉันต้องการที่จะสามารถพุชโค้ดเพื่อdev.myapp.com
ทดสอบและจากนั้นไปที่www.myapp.com
สำหรับการใช้งานจริง เป็นไปได้กับ Heroku หรือไม่?
คำตอบ:
ส่วนต่อประสานกับ Heroku เป็นสาขา Git เป็นหลัก Heroku gem ทำงานบางอย่างผ่าน API ของพวกเขา แต่ภายในที่เก็บ Git ของคุณเป็นเพียงสาขาระยะไกลใหม่
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 คุณควรจะสามารถกำหนดค่าที่เก็บ Git ของคุณได้ดังนี้:
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
ฉันมักจะทำงานในสาขา 'ที่ทำงาน' และใช้ Github สำหรับเจ้านายของฉัน
สมมติว่าเป็นกรณีของคุณขั้นตอนการปรับใช้ของคุณอาจมีลักษณะดังนี้:
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
คำสั่งต้องรวมหรือ--app staging
--app production
มีวิธีใดบ้างในการตั้งค่าเริ่มต้น? (การถามเป็นความคิดเห็น b / c สิ่งนี้ดูเหมือนจะเป็นเป้าหมายมากเกินไปที่จะเป็นคำถาม SO เต็มรูปแบบ)
สิ่งนี้อธิบายทุกสิ่งที่คุณจำเป็นต้องรู้หากคุณเป็นมือใหม่อย่างฉัน: http://devcenter.heroku.com/articles/multiple-environment
ส่วนสำคัญของคำถามเดิมคือการเชื่อมโยงแอป staging กับโดเมนย่อย (dev.myapp.com) ของแอปหลัก (www.myapp.com) สิ่งนี้ยังไม่ได้รับการกล่าวถึงในคำตอบใด ๆ
ขั้นตอนที่ 1: กำหนดค่าเวอร์ชันการผลิต ('myapp') และการจัดเตรียม ('staging-myapp') ของแอปของคุณตามที่ Luke Bayes ระบุไว้ในคำตอบ
ขั้นตอนที่ 2: ในระบบจัดการโดเมนของคุณ (เช่น GoDaddy):
Create a CNAME record: dev.myapp.com
that points to: proxy.heroku.com
ขั้นตอนที่ 3: กำหนดค่า Heroku เพื่อกำหนดเส้นทาง dev.myapp.com ไปยัง staging-myapp:
heroku domains:add dev.myapp.com --app staging-myapp
หลังจากที่ระเบียน CNAME มีเวลาเผยแพร่คุณจะสามารถเรียกใช้แอปการแสดงละครได้ที่ dev.myapp.com
before_filter
เบ็ดเพื่อapplication_controller
จับทุกอย่างในการจัดเตรียมและบังคับให้ผู้ใช้เข้าสู่ระบบในฐานะผู้ดูแลระบบจากนั้นตั้งค่าคุกกี้ผู้ดูแลระบบเพื่อให้ฉันยังสามารถเห็นแอปจากมุมมองของ 'ไม่ใช่ผู้ดูแลระบบ' ทำงานได้ดีสำหรับฉัน
คุณควรตรวจสอบheroku_san
มันเล่นกลกับสภาพแวดล้อมบน heroku ได้ดีทีเดียว
ตอนนี้สิ่งต่างๆง่ายขึ้น นี่คือวิธีการทำ ...
$ heroku create myapp --remote production
$ heroku create myapp-staging --remote staging
สิ่งนี้จะสร้างชื่อ repos ระยะไกลสำหรับแต่ละแอปซึ่งคุณสามารถดู.git/config
ได้
ตอนนี้คุณสามารถใช้ทั้ง--appหรือ--remoteสวิทช์ที่จะกำหนดเป้าหมายโดยเฉพาะอย่างยิ่งแอป:
$ heroku info --app myapp-staging
$ heroku info --remote staging
สำหรับแอพพลิเค Rails, Heroku ค่าเริ่มต้นที่ "การผลิต" สภาพแวดล้อม หากคุณต้องการแอปการแสดงละครของคุณจะทำงานในสภาพแวดล้อมการเตรียมการสร้างสภาพแวดล้อมในโครงการของคุณและการตั้งค่าที่สอดคล้องRAILS_ENVและRAKE_ENVตัวแปรสภาพแวดล้อมใน app:
$ heroku config:set RACK_ENV=staging RAILS_ENV=staging --remote staging
หากคุณมีตัวแปรการกำหนดค่าอื่น ๆ คุณจะต้องส่งผ่านตัวแปรเหล่านี้สำหรับแต่ละสภาพแวดล้อมด้วย
$ heroku config:set AWS_KEY=abc --remote staging
$ heroku config:set AWD_SECRET=123 --remote staging
...etc
นั่นเป็นความเจ็บปวดอย่างมาก แต่ฉันก็แค่ใช้snappconfig gem แล้ววิ่ง
$ rake heroku:config:load[myapp-staging]
เพื่อโหลดไฟล์กำหนดค่า YAML ของโปรเจ็กต์ของฉันลงใน Heroku
ตอนนี้คุณแค่กดไปที่ Heroku ดังนี้:
$ git push staging master
$ git push production master
และโยกย้ายเช่นนี้:
$ heroku run rake db:migrate --remote staging
$ heroku run rake db:migrate --remote production
(ดูการจัดการหลายสภาพแวดล้อมสำหรับแอป | Heroku Dev Centerสำหรับข้อมูลเพิ่มเติมและทางลัด)
RAILS_ENV
และสิ่งที่RACK_ENV
ต้องทำstaging
: "อาจเป็นเรื่องยากที่จะสร้างสภาพแวดล้อมที่กำหนดเองอื่นเช่น" การจัดเตรียม "และสร้าง config / environment / staging.rb และปรับใช้กับแอป Heroku ด้วย RAILS_ENV = staging นี่ไม่ใช่แนวทางปฏิบัติที่ดี แต่เราขอแนะนำให้ทำงานในโหมดการใช้งานจริงเสมอและแก้ไขพฤติกรรมโดยการตั้งค่า config vars ของคุณ " เพิ่มเติมได้ที่นี่: devcenter.heroku.com/articles/…
git push staging edge work
?