首页 文章

让Bundler从加载了:path的gem / s中的Gemfile / s解析并加载依赖关系

提问于
浏览
2

这是我目前的情况:

我正在开发一个rails引擎(“awesome_engine”) . 我通过主机应用程序进行所有开发,即一个rails应用程序,它使用:path参数在其Gemfile中将此引擎指定为依赖项

gem "awesome_engine", :path => "awesome_engine"

这很有效 - 引擎gem文件夹相对于宿主应用程序的根目录在“awesome_engine”下 . 然而,“awesome_engine”引用了一个也在开发中的gem,“awesome_core” . awesome_engine / Gemfile因此读取:

gem "awesome_common", :path => "../awesome_core"

这个设置的问题似乎是Bundler在awesome_engine /中没有查找Gemfile,当它为主机rails应用程序创建应用程序包时,它只读取来自gemspec“awesome_engine”的依赖项,这对于任何一个gem来说都没问题你想要加载它的“无包装”状态,当你想同时处理相关宝石的图形时,这种状态并不是那么好

a)试图咬掉比我可以咀嚼更多的东西,并且应该在主机应用程序的Gemfile中转储“awesome_core”,同时它正在开发中并且对它感到高兴(我不会:-))

b)遗漏了一些关于如何让Bundler做到这一点的微不足道的事情

c)以上都不是(请注明: ________

谢谢!安德拉斯

ps:我知道Bundler不解析“awesome_engine / Gemfile”,因为a)如果我把垃圾放入其中主机应用程序中的捆绑安装仍然运行正常b)该文件中的其他任何依赖关系都不会出现在主机应用程序应用程序包中

1 回答

  • 1

    因此,当您通过(当前项目的)Gemfile指定gem时,假定您正在引用具有良好定义的依赖项的内容 . 这意味着期望有一个有效的.gemspec文件来命名这些依赖项 . 但是你已经知道了 .

    我对c)的建议是用 bundle gem 创建你的宝石,它以一种从.gemspec文件中抽取它的Gemfile信息的方式设置gem . 看看http://gembundler.com/v1.2/bundle_gem.html,只是生成一个测试宝石并阅读它的来源,这很清楚 .

    我希望能解决你的问题 .

相关问题