我的问题
假设我有一个这样的目录结构:
app/
core/
bin/
runner
Gemfile
...
Gemfile
lib/
“核心”是一个拥有自己的 Gemfile 和 Gemfile.lock 的应用程序。我不想以任何方式修改核心。app/Gemfile 是我的核心插件的一部分,它也有一个 Gemfile(列出了它自己的依赖于 core/Gemfile 的附加项)。
我可以从 app/core/ 和 app/ 目录“捆绑安装”。
如何从 app/ 目录运行 core/bin/runner,使其包含 app/core/Gemfile 和 app/Gemfile 中的所有 Ruby gem?
背景
我正在使用 C Ruby 为 Logstash 编写插件。Logstash 包含自己的 Gemfile;获取所有依赖项后,总包大小约为 40MB。
我想在 Heroku 中运行 Logstash。为了避免将 40MB 的内容放入 Git,我已经分叉了 Ruby buildpack (https://github.com/inscitiv/heroku-buildpack-logstash) 并对其进行了修改以下载 Logstash,解压缩并使用它的 Gemfile。
这工作正常,但我坚持使用 Logstash 提供的 Gemfile。对于我的插件,我想添加我的插件将使用的新依赖项;我真的不想分叉 Logstash 并更改其 Gemfile 以完成此操作。
相反,我想将 Logstash 解压到它自己的目录 (logstash/) 中,然后我想在它上面覆盖我的插件代码,包括用于依赖项的 Gemfile。然后我想运行一个 Heroku“worker”进程,它将运行 logstash,指定“。” 作为插件目录,并且可以访问两个 Gemfile 中的所有 gem。