依存関係を見つけるために Bundler の Gemfile に依存する gem があります (それらは github:enterprise でホストされています)。ライブラリとして使用できるようにし、バイナリも提供したいと考えています。
現在、バイナリがバンドルされた宝石をロードできる独自のディレクトリから実行している場合、バイナリとして正常に動作します。ただし、別のディレクトリから実行すると、依存関係が見つかりません (依存関係は独自の rvm gemset にあります)。Rubygems は依存関係を見つけることができないため、gem としてインストールできません (現在、依存関係は .gemspec にリストされており、Gemfile のどこにあるかが示されています)。
私は現在 を試してbundle package
いますが、すべての gem を vendor/cache ディレクトリに配置しました。私が知る限り、これは依存関係を .gemspec から削除し、代わりに Gemfile に入れる必要があることを意味します (Rubygems はベンダー提供されているため、依存関係をインストールすべきではないため)。これは、この gem を使用するすべてのコードが、これらの依存関係を認識し、それらを Gemspecs に追加する必要があることを意味しますが、私はそれで問題ありません。これは、.gemspec を変更してビルド時にベンダーの gem を含めるようにすればうまくいくと思います。また、バイナリがベンダーの gem をロード パスの先頭に設定するようにロード パスを管理できれば、それを使用するすべてのコードがライブラリはこれらをロード パスに追加しないため、インストールしたバージョンを取得します。
残念ながら、私はそれを行う方法がわかりません (すべての gemspecs を読んで、それらrequire_paths
を に追加するためにそれらを反映するまで$LOAD_PATH
)、これがこの状況を処理する正しい方法であるかどうかはよくわかりません。
では、Gem を見つけるために Bundler が必要な場合に、lib として使用できる、または単にバイナリとして使用できる gem を作成するにはどうすればよいでしょうか?