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
. 기본값을 설정하는 방법이 있습니까? (이 너무 본격적인 SO 질문 할 대상으로 보인다 C / A 코멘트 B로 물어.)
이것은 나와 같은 초보자 인 경우 알아야 할 모든 것을 설명합니다. http://devcenter.heroku.com/articles/multiple-environments
원래 질문의 핵심 부분은 스테이징 앱을 기본 앱 (www.myapp.com)의 하위 도메인 (dev.myapp.com)에 연결하는 것입니다. 이것은 어떤 답변에서도 다루어지지 않았습니다.
1 단계 : Luke Bayes의 답변에 표시된대로 앱의 프로덕션 ( 'myapp') 및 스테이징 ( 'staging-myapp') 버전을 모두 구성합니다.
2 단계 : 도메인 관리 시스템 (예 : GoDaddy)에서 :
Create a CNAME record: dev.myapp.com
that points to: proxy.heroku.com
3 단계 : dev.myapp.com을 staging-myapp로 라우팅하도록 Heroku를 구성합니다.
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
이렇게하면 각 앱에 대해 명명 된 원격 저장소가 생성되며 .git/config
.
이제 중 하나를 사용할 수 있습니다 --app 또는 --remote 특정 응용 프로그램을 대상으로 스위치를 :
$ heroku info --app myapp-staging
$ heroku info --remote staging
Rails 앱의 경우 Heroku는 기본적으로 '프로덕션'환경을 사용합니다 . 스테이징 앱을 스테이징 환경에서 실행하려면 프로젝트에서 환경을 만들고 앱 에서 해당하는 RAILS_ENV 및 RAKE_ENV 환경 변수를 설정합니다.
$ 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
Heroku가 낙담된다. 준비 "와 설정 / 환경 / staging.rb와이 아닌 배포 RAILS_ENV = 준비와 Heroku가 응용 프로그램에 좋은 연습을 만들"이 같은 다른 사용자 환경을 만들기 위해 유혹 할 수있다 " . 대신 항상 프로덕션 모드에서 실행하고 구성 변수를 설정하여 모든 동작을 수정하는 것이 좋습니다. " 자세한 내용은 여기 : devcenter.heroku.com/articles/…
git push staging edge work
습니까?