私は、Heroku への専門的な展開方法論を確立しようとしています。つまり、次のことを意味します。
- 展開を小規模かつ頻繁に維持することで、ダウンタイムを最小限に抑えます (反復的/アジャイル アプローチ)
- 可能な限り自動化して、適切に考えていないためにファットフィンガーリングや潜在的に破壊的なコマンドを実行することを心配する必要がないようにします (つまり、本番システムでの「heroku run rake db:reset」)。
- エラーが発生した場合に、運用システムを以前のバージョンに簡単に (そして即座に) ロールバックできるように、単純なバージョン管理を可能にします。
- 本番システムを可能な限り模倣したテスト環境を最初に確立します。
- エラーが発生した場合に備えて、DB がバックアップされていることを確認してください
capistrano は Heroku では使えないので、私の考えでは、次善の策はすべての自動展開を処理する Ruby スクリプトを作成することです。https://gist.github.com/362873のように、これに rake タスクを使用している人を見たことがありますが、rake がこの種の機能のために本当に作られているとは思いませんでした。純粋な Ruby スクリプトは、rake タスクの代替として推奨されますか?
heroku にデプロイするのは非常に簡単ですが、専門的なものにする (つまり、ユーザーがエラー ページを表示しないようにする) には、人的エラーを補うために自動化する必要があります。そして、常に「git push heroku master」、「heroku run db:migrate」と入力しなければならないのは少し古くなります。
私はそれを1行の展開にしようとしていますが、これまでのところ、HerokuまたはSOに関する有用なチュートリアルを実際に見たことがありません。
私は実際に独自の展開スクリプト コードを作成することに問題はありませんが、長期的なベスト プラクティスが何であるかについて困惑しています: rake タスク、ruby スクリプト、または私が見つけていないサードパーティ ユーティリティ。
Rails と Heroku を使用しているプロの開発チームが数多くあることは確かですが、彼らがどのように展開プロセスを実装しているかについての詳細は見ていません。
通常は自分で開発を行い、他のメンバーがデプロイを担当しますが、今はデプロイの側面も学ぼうとしています。