Ruby on rails 无法要求将gems作为add\u development\u依赖项加载

Ruby on rails 无法要求将gems作为add\u development\u依赖项加载,ruby-on-rails,ruby,rubygems,Ruby On Rails,Ruby,Rubygems,在mygem.gemspec中,我有以下gem,我只想用于调试我的ruby gem- Gem::Specification.new do |s| ... s.add_development_dependency "pry" ... end 然后在我的Rails生成器文件中,我有require“pry”,但是我得到了以下错误- .rvm/gems/ruby-2.3.3/gems/activesupport-5.1.6/lib/active_support/dependencies.r

在mygem.gemspec中,我有以下gem,我只想用于调试我的ruby gem-

Gem::Specification.new do |s|
  ...
  s.add_development_dependency "pry"
  ...
end
然后在我的Rails生成器文件中,我有
require“pry”
,但是我得到了以下错误-

.rvm/gems/ruby-2.3.3/gems/activesupport-5.1.6/lib/active_support/dependencies.rb:292:in `require': cannot load such file -- pry (LoadError)
如果我将
add_development_dependency
更改为
add_dependency
,它会工作。我做错什么了吗

编辑:

lib/generators/mygem/install_generator.rb

需要“撬动”
模块MyGem
模块生成器
类InstallGenerator
全堆栈跟踪

$rails g mygem:安装
通过过程99478中的弹簧预紧器运行
.rvm/gems/ruby-2.3.3/gems/activesupport-5.1.6/lib/active\u support/dependencies.rb:292:在“require”中:无法加载这样的文件--pry(LoadError)
from.rvm/gems/ruby-2.3.3/gems/activesupport-5.1.6/lib/active\u support/dependencies.rb:292:in'block in require'
from.rvm/gems/ruby-2.3.3/gems/activesupport-5.1.6/lib/active\u support/dependencies.rb:258:in'load\u dependency'
from.rvm/gems/ruby-2.3.3/gems/activesupport-5.1.6/lib/active\u support/dependencies.rb:292:in'require'
从Projects/mygem/gem/mygem/lib/generators/cast/install_generator.rb:1:in`'
from.rvm/gems/ruby-2.3.3/gems/activesupport-5.1.6/lib/active\u support/dependencies.rb:292:in'require'
from.rvm/gems/ruby-2.3.3/gems/activesupport-5.1.6/lib/active\u support/dependencies.rb:292:in'block in require'
from.rvm/gems/ruby-2.3.3/gems/activesupport-5.1.6/lib/active\u support/dependencies.rb:258:in'load\u dependency'
from.rvm/gems/ruby-2.3.3/gems/activesupport-5.1.6/lib/active\u support/dependencies.rb:292:in'require'
from.rvm/gems/ruby-2.3.3/gems/railties-5.1.6/lib/rails/command/behavior.rb:82:在“查找中的块(2个级别)”中
from.rvm/gems/ruby-2.3.3/gems/railties-5.1.6/lib/rails/command/behavior.rb:78:in'each'
from.rvm/gems/ruby-2.3.3/gems/railties-5.1.6/lib/rails/command/behavior.rb:78:“查找中的块”中
from.rvm/gems/ruby-2.3.3/gems/railties-5.1.6/lib/rails/command/behavior.rb:77:in'each'
from.rvm/gems/ruby-2.3.3/gems/railties-5.1.6/lib/rails/command/behavior.rb:77:in'lookup'
from.rvm/gems/ruby-2.3.3/gems/railties-5.1.6/lib/rails/generators.rb:250:“按名称空间查找”
from.rvm/gems/ruby-2.3.3/gems/railties-5.1.6/lib/rails/generators.rb:267:in'invoke'
from.rvm/gems/ruby-2.3.3/gems/railties-5.1.6/lib/rails/commands/generate/generate_command.rb:24:in'perform'
from.rvm/gems/ruby-2.3.3/gems/thor-0.20.0/lib/thor/command.rb:27:in'run'
from.rvm/gems/ruby-2.3.3/gems/thor-0.20.0/lib/thor/invocation.rb:126:in“invoke_命令”
from.rvm/gems/ruby-2.3.3/gems/thor-0.20.0/lib/thor.rb:387:in'dispatch'
from.rvm/gems/ruby-2.3.3/gems/railties-5.1.6/lib/rails/command/base.rb:63:in'perform'
from.rvm/gems/ruby-2.3.3/gems/railties-5.1.6/lib/rails/command.rb:44:in'invoke'
from.rvm/gems/ruby-2.3.3/gems/railties-5.1.6/lib/rails/commands.rb:16:in`'
from.rvm/gems/ruby-2.3.3/gems/activesupport-5.1.6/lib/active\u support/dependencies.rb:292:in'require'
from.rvm/gems/ruby-2.3.3/gems/activesupport-5.1.6/lib/active\u support/dependencies.rb:292:in'block in require'
from.rvm/gems/ruby-2.3.3/gems/activesupport-5.1.6/lib/active\u support/dependencies.rb:258:in'load\u dependency'
from.rvm/gems/ruby-2.3.3/gems/activesupport-5.1.6/lib/active\u support/dependencies.rb:292:in'require'
来自Projects/mygem/themes/sample/bin/rails:9:in`'
from.rvm/gems/ruby-2.3.3/gems/activesupport-5.1.6/lib/active\u support/dependencies.rb:286:in'load'
from.rvm/gems/ruby-2.3.3/gems/activesupport-5.1.6/lib/active\u support/dependencies.rb:286:in'block in load'
from.rvm/gems/ruby-2.3.3/gems/activesupport-5.1.6/lib/active\u support/dependencies.rb:258:in'load\u dependency'
from.rvm/gems/ruby-2.3.3/gems/activesupport-5.1.6/lib/active\u support/dependencies.rb:286:in'load'
from.rvm/rubies/ruby-2.3.3/lib/ruby/site\u ruby/2.3.0/rubygems/core\u ext/kernel\u require.rb:59:in'require'
from.rvm/rubies/ruby-2.3.3/lib/ruby/site\u ruby/2.3.0/rubygems/core\u ext/kernel\u require.rb:59:in'require'
from-e:1:in`'
编辑:


下面是一个有问题的示例gem-

将其添加到项目根目录中的gem文件中:

group :development, :test do
  gem 'pry'
end
当然,我要跑了

bundle install

我认为您误解了“开发依赖性”的含义:(这与
rails
环境无关,因为大多数gem不依赖
rails
或环境标志)

:

声明依赖项

运行时与开发

RubyGems提供了两种主要的依赖关系“类型”:运行时和开发。运行时依赖关系是您的gem工作所需要的(例如需要activesupport的rails)

当有人想要修改您的gem时,开发依赖项非常有用。当您指定开发依赖项时,另一个开发人员可以运行gem安装--dev your_gem,RubyGems将获取这两组依赖项(运行时和开发)。典型的开发依赖关系包括测试框架和构建系统

在gemspec中设置依赖项很容易。只需使用添加运行时依赖项添加开发依赖项

因此,由于您的gem需要
pry
才能工作,根据您的设计,那么
pry
将是一个运行时依赖项。或者,您需要在代码周围设置一些陷阱来确定

  • a) 是否定义了
    Rails
    ?及
  • b) 我们是否处于
    开发环境中?
    环境中?及
  • c)
    Pry
    是否已定义?或
  • d) 我们可以加载
    pry
    (从
    LoadError
    中解救出来)吗

您运行什么命令来获取此错误?我是在使用mygem的rails应用程序中运行rails g mygem:install时得到的。
安装发电机.rbgroup :development, :test do
  gem 'pry'
end
bundle install
Gem::Specification.new do |s|
  s.name = "hola"
  s.version = "2.0.0"
  s.add_runtime_dependency "daemons", ["= 1.1.0"]
  s.add_development_dependency "bourne", [">= 0"]