ローカルで開発している別の gem を必要とする Sinatra アプリケーションがあります。開発中にローカルの gem コードを使用するように Bundler を構成するのに問題がありますが、本番環境ではベンダーの gem コードを使用します。
理想的には次のようなことができますが、Bundler では同じ gem を 2 回指定することはできません。
# Doesn't work:
group :development do
gem 'awesome', :path => "~/code/awesome"
end
group :production do
gem 'awesome', :path => "vendor/gems/awesome-0.0.1"
end
それまでの間、gem を手動で販売し、デプロイするたびに Gemfile 内の gem ソースを更新することに頼っていましたが、これは非常に面倒です。私のワークフローは次のとおりです。
- 開発中にローカルの gem を指す (
gem 'awesome', :path => "~/code/awesome"
) - デプロイの準備ができたら、gem を展開します。
vendor/gems
- Gemfile を更新して、ベンダーの gem (
gem 'awesome', :path => "vendor/gems/awesome-0.0.1"
)を指すようにします - 実行
bundle install
(Gemfile.lock を更新するため) - コードをデプロイする
- ステップ 1 に戻ります。
面倒くさい!単純に Rake タスクを記述して現在のセットアップを自動化するよりも、もっとクリーンなことをしたいと思っています。
このシナリオに最適なワークフローは何ですか?