私はローカルに開発している別の宝石を必要とするSinatraアプリケーションを持っています。開発中に私の地元の宝石コードを使用するようにBundlerを設定するのに問題がありますが、私の製造元の宝石コードは製造中です。開発中に異なるGemソースを使用するようにBundler/Gemfileを設定するにはどうすればよいですか?
理想的には、私はこのような何かを行うことができますが、バンドラーはあなたが二度同じ宝石を指定することはできません:私は手動で宝石のソースを更新宝石&をvendoringに頼ってきた一方
# 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
私が展開するたびにGemfileで、これはかなり面倒です。私のワークフローはこれです:開発中、私の地元の宝石へ
- ポイント(
gem 'awesome', :path => "~/code/awesome"
) vendor/gems
- 更新Gemfileに、アンパック宝石を展開する準備が宝石をvendoredを指すようにすると(
gem 'awesome', :path => "vendor/gems/awesome-0.0.1"
) - ラン
bundle install
(Gemfile.lockを更新する) - 展開コード
- 戻るステップ1.
どのような面倒です!私は現在の設定を自動化するためにRakeタスクを書くよりも綺麗なことをしたいと思っています。
このシナリオにはどのようなワークフローが最適ですか?
この記事で先に提案したことを試してみましたが、大部分は問題ありません。問題は、私がデプロイするとき、Gemfile.lockがローカルのgemを参照していることです(最後の2つのコードサンプルを参照)。 Gemfile.lockをgitから完全に除外したり、配備したり、配備したりすることはできますが、これらのオプションのいずれかが最良の方法であるかどうかはわかりません。 –
ええ、私は同じことを達成したいが、これを行うためのきれいな方法がないようだ。 –