我写了一颗宝石。在我的宝石的gemspec文件中,我有类似以下内容:
spec.add_development_dependency "aws-sdk-mturk", '~> 1.3'
在我的一个宝石文件中,我有:
require 'aws-sdk-mturk'
此宝石未发布到rubygems.org。这是我私人git帐户上的私人宝石。所以我想将其添加到我的Rails项目中,所以我在Gemfile中做到了:
gem "my_gem", git: "https://git.mygitlab.net/myuser/mygem.git", branch: "master"
我注意到在Gemfile.lock中运行bundle install
然后运行bundle update --source mygem
时,它没有显示任何依赖项,包括aws-sdk-mturk。
因此,当我尝试运行Rails应用程序时,出现此错误:
gems/activesupport-4.2.7.1/lib/active_support/dependencies.rb:274:in `require': cannot load such file -- aws-sdk-mturk (LoadError)
bundler / Rails应用程序什么时候不读取我的私人gem的.gemspec依赖项?
答案 0 :(得分:0)
答案 1 :(得分:0)
如果您的代码在运行时需要此其他gem,请将add_development_dependency
更改为add_runtime_dependency
。
引用https://guides.rubygems.org/patterns/#declaring-dependencies
运行时与开发
RubyGems提供了两种主要的依赖性“类型”:运行时和开发。运行时依赖性是您的gem需要工作的东西 (例如需要ActiveSupport的导轨)。
开发依赖项在有人要修改您的gem时很有用。当您指定开发依赖项时, 另一个开发人员可以运行gem install --dev your_gem,而RubyGems将 获取两组依赖项(运行时和开发)。典型 开发依赖项包括测试框架和构建系统。