私の質問
次のようなディレクトリ構造があるとします。
app/
core/
bin/
runner
Gemfile
...
Gemfile
lib/
「コア」は、独自のGemfileとGemfile.lockを持つアプリケーションです。コアを変更したくありません。app / Gemfileはコアへのプラグインの一部であり、Gemfileもあります(core / Gemfileに追加される独自の依存関係を一覧表示します)。
app /core/およびapp/ディレクトリから「バンドルインストール」できます。
app / core /Gemfileとapp/Gemfileの両方からのすべてのRubygemが含まれるように、app/ディレクトリからcore/ bin / runnerを実行するにはどうすればよいですか?
バックグラウンド
CRubyを使用してLogstashのプラグインを作成しています。Logstashには独自のGemfileが含まれています。すべての依存関係がフェッチされると、パッケージの合計サイズは約40MBになります。
LogstashをHerokuで実行したいと思います。40MBのものをGitに入れないようにするために、Rubyビルドパック(https://github.com/inscitiv/heroku-buildpack-logstash)をフォークし、Logstashをダウンロードして解凍し、Gemfileを使用するように変更しました。
これは正常に機能しますが、Logstashによって提供されるGemfileでスタックしています。プラグインについては、プラグインが使用する新しい依存関係を追加したいと思います。これを実現するために、LogstashをフォークしてGemfileを変更したくはありません。
代わりに、Logstashを独自のディレクトリ(logstash /)に解凍してから、依存関係のGemfileを含むプラグインコードをその上にオーバーレイします。次に、「。」を指定してlogstashを実行するHeroku「worker」プロセスを実行します。プラグインディレクトリとして、両方のGemfileからすべてのgemにアクセスできます。