如何调试gem安装失败的原因?
我正在尝试使用gem install geoutm
。 Github存储库没有问题页面,所以我试图自己解决问题,然后提交拉取请求。 这是问题:
$ gem install geoutm 获取:geoutm-1.0.1.gem(100%) 已成功安装geoutm-1.0.1 错误:执行gem时...(TypeError) 没有将Array隐式转换为String
它说“成功安装”,但试图要求gem失败。 详细安装不是更有用:
$ gem install geoutm --verbose HEAD https://rubygems.org/latest_specs.4.8.gz 302暂时移动 HEAD https://s3.amazonaws.com/production.s3.rubygems.org/latest_specs.4.8.gz 200好的 获取https://rubygems.org/latest_specs.4.8.gz 302暂时移动 获取https://s3.amazonaws.com/production.s3.rubygems.org/latest_specs.4.8.gz 200好的 安装gem geoutm-1.0.1 /home/tomas/.rvm/gems/ruby-2.0.0-p247/gems/geoutm-1.0.1/spec/latlon_spec.rb /home/tomas/.rvm/gems/ruby-2.0.0-p247/gems/geoutm-1.0.1/spec/geoutm_spec.rb /home/tomas/.rvm/gems/ruby-2.0.0-p247/gems/geoutm-1.0.1/spec/spec_helper.rb /home/tomas/.rvm/gems/ruby-2.0.0-p247/gems/geoutm-1.0.1/spec/utm_spec.rb /home/tomas/.rvm/gems/ruby-2.0.0-p247/gems/geoutm-1.0.1/spec/testdata.yaml /home/tomas/.rvm/gems/ruby-2.0.0-p247/gems/geoutm-1.0.1/spec/spec.opts /home/tomas/.rvm/gems/ruby-2.0.0-p247/gems/geoutm-1.0.1/spec/ellipsoid_spec.rb /home/tomas/.rvm/gems/ruby-2.0.0-p247/gems/geoutm-1.0.1/lib/geoutm/utm_zones.rb /home/tomas/.rvm/gems/ruby-2.0.0-p247/gems/geoutm-1.0.1/lib/geoutm/geo_utm_exception.rb /home/tomas/.rvm/gems/ruby-2.0.0-p247/gems/geoutm-1.0.1/lib/geoutm/utm.rb /home/tomas/.rvm/gems/ruby-2.0.0-p247/gems/geoutm-1.0.1/lib/geoutm/ellipsoid.rb /home/tomas/.rvm/gems/ruby-2.0.0-p247/gems/geoutm-1.0.1/lib/geoutm/latlon.rb /home/tomas/.rvm/gems/ruby-2.0.0-p247/gems/geoutm-1.0.1/lib/geoutm.rb /home/tomas/.rvm/gems/ruby-2.0.0-p247/gems/geoutm-1.0.1/LICENCE /home/tomas/.rvm/gems/ruby-2.0.0-p247/gems/geoutm-1.0.1/README.rdoc /home/tomas/.rvm/gems/ruby-2.0.0-p247/gems/geoutm-1.0.1/History.txt 已成功安装geoutm-1.0.1 错误:执行gem时...(TypeError) 没有将Array隐式转换为String
手动下载并在没有安装的情况下使用时,gem可以完美地工作。
问题是我不知道如何找出类型错误发生的位置。 我找不到任何安装日志或更详细的输出标志。 知道如何弄清楚这个错误吗?
使用来自的输出
$ gem install --backtrace ...
你还可以做
$ byebug /home/tallakt/.rvm/rubies/ruby-2.0.0-p0/bin/gem install geoutm-1.0.1.gem
里面的byebyg类型:
(byebug) break /home/tallakt/.rvm/gems/ruby-2.0.0-p0/gems/rdoc-4.0.1/lib/rdoc/rubygems_hook.rb:171 Created breakpoint 1 at /home/tallakt/.rvm/gems/ruby-2.0.0-p0/gems/rdoc-4.0.1/lib/rdoc/rubygems_hook.rb:171 (byebug) c
我正在努力找到geoutm中的错误,但是现在可以使用
$ gem install -N geoutm
跳过RDoc生成
感谢Arup Rakshit的评论,我尝试了这个命令:
gem install geoutm --debug --backtrace --verbose
我得到了一个很好的错误回溯:
/home/tomas/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/rdoc/options.rb:407中的exception`TypeError' - 没有将Array隐式转换为String 错误:执行gem时...(TypeError) 没有将Array隐式转换为String /home/tomas/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/rdoc/options.rb:407:in“存在吗?” /home/tomas/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/rdoc/options.rb:407:in,clock in check_files' /home/tomas/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/rdoc/options.rb:406:in“delete_if” /home/tomas/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/rdoc/options.rb:406:in`check_files' /home/tomas/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/rdoc/options.rb:480:in“finish” /home/tomas/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/rdoc/options.rb:1037:in“parse” /home/tomas/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/rdoc/rubygems_hook.rb:162:in,clock in generate' /home/tomas/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/rdoc/rubygems_hook.rb:159:in`chdir' /home/tomas/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/rdoc/rubygems_hook.rb:159:in“generate” /home/tomas/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/rdoc/rubygems_hook.rb:54:inclock in generation_hook' /home/tomas/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/rdoc/rubygems_hook.rb:53:in“each” /home/tomas/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/rdoc/rubygems_hook.rb:53:in'generation_hook' /home/tomas/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/site_ruby/2.0.0/rubygems/dependency_installer.rb:382:in`call' /home/tomas/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/site_ruby/2.0.0/rubygems/dependency_installer.rb:382:in“block(安装中的2个级别)” /home/tomas/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/site_ruby/2.0.0/rubygems/dependency_installer.rb:381:in“each” /home/tomas/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/site_ruby/2.0.0/rubygems/dependency_installer.rb:381:in“block in install” /home/tomas/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/site_ruby/2.0.0/rubygems/dependency_installer.rb:401:in`in_background' /home/tomas/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/site_ruby/2.0.0/rubygems/dependency_installer.rb:380:in`install' /home/tomas/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/site_ruby/2.0.0/rubygems/commands/install_command.rb:166:in“block in execute” /home/tomas/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/site_ruby/2.0.0/rubygems/commands/install_command.rb:158:in“each” /home/tomas/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/site_ruby/2.0.0/rubygems/commands/install_command.rb:158:in`execu' /home/tomas/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/site_ruby/2.0.0/rubygems/command.rb:305:in`invoke_with_build_args' /home/tomas/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/site_ruby/2.0.0/rubygems/command_manager.rb:170:in,process_args' /home/tomas/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/site_ruby/2.0.0/rubygems/command_manager.rb:130:in“run” /home/tomas/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/site_ruby/2.0.0/rubygems/gem_runner.rb:60:in'run' /home/tomas/.rvm/rubies/ruby-2.0.0-p247/bin/gem:22:in“”