【发布时间】:2012-07-18 13:39:24
【问题描述】:
我的问题
假设我有这样的目录结构:
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。
【问题讨论】:
标签: ruby heroku rubygems bundler logstash