2011-09-30 9 views
1

私は、各プラットフォーム(libxmlなど)でビルドする必要があるものを除いて、できるだけ多くの宝石をベンダーしたいと思っていますが、時には宝石のサーバー上にある宝石ではなく、 。ベンダー/ gemsでgithubのコードを確実に使用するにはどうすればよいですか?

github gemをベンダー/ gemに直接クローンすることはできますか?私はできると思いますが、それはすでにgitリポジトリなので、私のアプリケーションコードに影響しますか?私はちょうどこれらの宝石のための定期的なgit pullsをしたいので、私はすべての宝石を更新する必要はありませんし、多分何かを壊す必要はありません。

答えて

6

vendor/gemsの使用は代わりにBundlerGemfileを使用することが推奨されていません。ベンダーシステムには、コンパイルされた拡張機能のサポートの欠如を含む多くの欠陥があったため、決して完全な解決策ではありませんでした。

必要に応じて、Gemfileでバージョンをロックする方がよいでしょう。出血のエッジバージョンを使用する場合は、バージョン宣言をコメントアウトしてGemfile.lockを削除し、bundle installを再度実行してください。

それは多くの場合、宝石の公開バージョンは、あなたがフォークと固定で修復する必要がある欠陥を持っている場合ですので、それはこれを追跡するのは簡単です:

gem 'broken-gem', :git => 'git://github.com/myname/broken-gem.git' 

ここでの利点は、Gemfileとして働くことがあります必要なバージョンの宝石のドキュメント、入手する場所vendor/gemsは、そのバージョンがどこから来たのか、暗闇の中に人々を残す。

+2

また、おそらく 'bundle package'コマンドが関係しています:http://gembundler.com/bundle_package.html –

+2

注意:Gemfile.lockを完全に削除しないでください。 '。この方法で、その宝石とその依存関係のみを更新し、他の宝石を以前のバージョンに修正します。 – Fabio

+0

これはかなり知っていると便利です。 – tadman

関連する問題