テストのために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 [email protected]:staging-yourapp.git
git Push Origin staging
git remote add production [email protected]: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
これは、私のような初心者の場合に知っておく必要があるすべてのことを説明しています。 http://devcenter.heroku.com/articles/multiple-environments
元の質問の重要な部分は、ステージングアプリをメインアプリ(www.myapp.com)のサブドメイン(dev.myapp.com)にリンクすることです。これはどの回答でも対処されていません。
ステップ1:生産( 'myapp')およびステージング( 'staging-myapp')バージョンの両方をアプリの構成(Luke Bayesの回答に示されているように)
ステップ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でステージングアプリを実行できるようになります。
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
For Rails apps、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 をご覧ください。)