这是我目前的情况:
我正在开发一个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”的依赖项,这对于任何你想要以“未打包”状态加载的单个宝石,当你想同时处理相关宝石的图形时,这个宝石并不是那么好
我是
a)尝试咬掉比我能咀嚼更多的东西,并且应该在主机应用程序的Gemfile中转储“awesome_core”,同时它正在开发中并且对它感到满意(我不会:-))
b)遗漏了一些关于如何让Bundler这样做的微不足道的事情
c)以上都不是(请注明: _ __ _ ____ )
谢谢! 安德拉斯
ps:我知道Bundler不会解析“awesome_engine / Gemfile”,因为a)如果我把垃圾放入其中主机应用程序中的bundle install仍然可以运行良好b)该文件中没有其他依赖关系最终在主机应用程序中应用包答案 0 :(得分:1)
因此,当您通过(当前项目的)Gemfile指定gem时,假定您正在引用具有明确定义的依赖项的内容。这意味着期望有一个有效的.gemspec文件来命名这些依赖项。但是你已经知道了。
我对c)的建议是用bundle gem
创建你的宝石,它设置宝石的方式是从.gemspec文件中提取它的Gemfile信息。看看http://gembundler.com/v1.2/bundle_gem.html并生成测试宝石并阅读其来源,这很清楚。
我希望能解决你的问题。