我正在创建一个 gem(我们称之为它mygem
),它本质上是一个 Sinatra 服务器,旨在安装在基于 Rack 的应用程序中。
在我的 gem 的 gemspec 文件中,我有以下内容:
gem.add_dependency 'kss'
在我的 gem 的 Gemfile 中,我有以下内容
source 'https://rubygems.org'
gemspec
gem "kss", :path => "/Users/me/code/kss"
现在,当从mygem
's 文件夹中运行服务器时,这完全符合预期:它不会获取 kss 依赖项,而是会在我的本地驱动器上查找并加载该版本。
当我添加mygem
到 Rails 测试应用程序 Gemfile 时,问题就出现了。在我的 Rails 测试应用程序 Gemfile 中,我有以下行:
gem "mygem", :path => "/Users/me/code/mygem"
我希望在 abundle install
上,Bundler 将加载mygem
及其依赖项;但是对于kss
依赖项,Bundler 实际上并没有加载本地依赖项,而是提取到 rubygems 以查找并加载它。我假设是因为在这种情况下,它只是从 gemspec 行中读取,而不包括我的依赖项覆盖。
我能做些什么来解决这种行为吗?我非常希望能够在本地运行和测试这些东西,但是 Bundler 似乎无法识别来自更高级别应用程序的依赖项覆盖。
如果我以错误的方式处理此问题,我完全愿意接受任何建议或更改。