自定义 gem 依赖项未添加到 Gemfile.lock?
Custom gem dependencies not added to Gemfile.lock?
我写了一个gem。在我的 Gem 的 gemspec 文件中,我有这样的东西:
spec.add_development_dependency "aws-sdk-mturk", '~> 1.3'
在我的 Gem 的一个文件中,我有:
require 'aws-sdk-mturk'
此 gem 未发布到 rubygems.org。它是我私人 git 帐户中的私人 gem。所以我想把它添加到我的 Rails 项目中,所以我在 Gem 文件中做了这个:
gem "my_gem", git: "https://git.mygitlab.net/myuser/mygem.git", branch: "master"
而且我注意到当我 运行 bundle install
然后随后 bundle update --source mygem
,在 Gemfile.lock 它没有显示任何依赖项,包括 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/the Rails 应用程序不读取我私有 gem 的 .gemspec 依赖项?
更改为 add_runtime_dependency
而不是 add_development_dependency
。
来自docs
Development dependencies aren't installed by default and aren't
activated when a gem is required.
如果您的代码在运行时需要另一个 gem,请将 add_development_dependency
更改为 add_runtime_dependency
。
引自https://guides.rubygems.org/patterns/#declaring-dependencies
Runtime vs. development
RubyGems provides two main “types” of dependencies: runtime and development. Runtime dependencies are what your gem needs to work
(such as rails needing activesupport).
Development dependencies are useful for when someone wants to make modifications to your gem. When you specify development dependencies,
another developer can run gem install --dev your_gem and RubyGems will
grab both sets of dependencies (runtime and development). Typical
development dependencies include test frameworks and build systems.
我写了一个gem。在我的 Gem 的 gemspec 文件中,我有这样的东西:
spec.add_development_dependency "aws-sdk-mturk", '~> 1.3'
在我的 Gem 的一个文件中,我有:
require 'aws-sdk-mturk'
此 gem 未发布到 rubygems.org。它是我私人 git 帐户中的私人 gem。所以我想把它添加到我的 Rails 项目中,所以我在 Gem 文件中做了这个:
gem "my_gem", git: "https://git.mygitlab.net/myuser/mygem.git", branch: "master"
而且我注意到当我 运行 bundle install
然后随后 bundle update --source mygem
,在 Gemfile.lock 它没有显示任何依赖项,包括 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/the Rails 应用程序不读取我私有 gem 的 .gemspec 依赖项?
更改为 add_runtime_dependency
而不是 add_development_dependency
。
来自docs
Development dependencies aren't installed by default and aren't activated when a gem is required.
如果您的代码在运行时需要另一个 gem,请将 add_development_dependency
更改为 add_runtime_dependency
。
引自https://guides.rubygems.org/patterns/#declaring-dependencies
Runtime vs. development
RubyGems provides two main “types” of dependencies: runtime and development. Runtime dependencies are what your gem needs to work (such as rails needing activesupport).
Development dependencies are useful for when someone wants to make modifications to your gem. When you specify development dependencies, another developer can run gem install --dev your_gem and RubyGems will grab both sets of dependencies (runtime and development). Typical development dependencies include test frameworks and build systems.