私は現在、私が働く環境は2つあります:development
はローカル、production
はHerokuです。ワークフローにステージング環境を追加する
Herokuにstaging
環境を追加して、アプリを実際にユーザーに公開する前に、すべてが期待どおりになることを確認したいと思います。好ましくは、staging
環境は、production
環境と全く同じ設定およびデータを有するべきである。
上記を達成するために必要なステップは何ですか?
私は現在、私が働く環境は2つあります:development
はローカル、production
はHerokuです。ワークフローにステージング環境を追加する
Herokuにstaging
環境を追加して、アプリを実際にユーザーに公開する前に、すべてが期待どおりになることを確認したいと思います。好ましくは、staging
環境は、production
環境と全く同じ設定およびデータを有するべきである。
上記を達成するために必要なステップは何ですか?
最初に、私はheroku git remotesをステージングとプロダクションとしてセットアップして、git pushステージング/プロダクションを使って各ステージに簡単にデプロイすることができます。このセットアップを使用してステージング環境を作成する方法を説明します。
config/environments/staging.rb
を作成heroku config:pull --remote production
heroku plugins:install git://github.com/ddollar/heroku-config.git
RACK_ENV=staging RAILS_ENV=staging
に追加することを忘れないでください。そうすれば、ステージング環境設定が使用されます。heroku fork -a production staging
とHerokuの環境(それらは、Herokuのは、あなたの代わりに生産/ステージングで欲しいappnamesある)ます。また、このチュートリアルを読むことができ、私はそれがHerokuの上に複数のENVSを始めるために使用されると思う:https://devcenter.heroku.com/articles/multiple-environments#managing-staging-and-production-configurations
が、私はそれを行うにはより速く、より簡単な方法であることがheroku fork -a PRODUCTION_APP_NAME NEW_STAGE_APP_NAME
を見つけました...これは、C新しいアプリケーションをreatesし、すべてをコピーします(postgresデータベースを含む)。その後、アドオンを理解していれば(たとえば、初心者層のデータベースなど)、アドオンを小さな計画にダウングレードしました。
実際、比較的新しいheroku pipeline:promote
を使用して、コンパイルされたスラッグをステージングからプロダクションに自動的に(そして非常に迅速に)管理することから始めました。 (つまり、コードスラグが同じであるので、設定や環境変数を経由して任意のENV固有の設定を前提としています。)
注berislavbabicで説明した手順は、Herokuののサイト上で次のガイドに従って、推奨されていないこと:https://devcenter.heroku.com/articles/multiple-environments#managing-staging-and-production-configurations
そこでは詳細を読むことができますが、ステージング環境を運用環境と同じに保ち、単にプロダクションからステージングにコピーするためにheroku forkを使用することをお勧めします。
詳細な説明はありがとうございます。私はステージング/プロダクションのリモートセットアップのコンセプトに頭を浮かべて始めました。それがいったん成立したら、生産/ステージング環境を分離する実際のメリットは何ですか?私は通常、2つのローカルブランチを持っています:マスター/開発、および開発がプッシュされ、ステージングリモートでレビューされたら、私は開発 - >マスターをマージし、プロダクションのリモートにプッシュします。 –
プロダクション環境でアプリケーションが実際にどのように実行されているかを確認し、プロダクトオーナーがプロダクションに入る前に機能をテストできるようにするには、プロダクション環境と同じステージング環境を用意する必要があります。 TDDが実際に捉えることができない問題のほとんどは、簡単にスキップできるcss回帰や、いつも厄介な資産がどこかに壊れることがあります。 短いものは、ステージングのenvを持って、プロダクションと同じ設定にする必要があります、あなたはサーバーの同じ獣を持っている必要はありません、ちょうどスタックが完全に同じであることを確認してください。 – berislavbabic
heroku config:pullコマンドを実行すると 'config:pull'がherokuコマンドではありません。数日前にmac用にtoolbeltをダウンロードしました:heroku-toolbelt/3.2.1(x86_64-darwin10.8.0)ruby/1.9.3 – jpwynn