【问题标题】:irb doesn't load gem that I createdirb 不加载我创建的 gem
【发布时间】:2012-06-06 20:55:37
【问题描述】:

我在1.9 模式下使用jruby

➜  nittresults git:(master) ✗ ruby -v
jruby 1.6.7.2 (ruby-1.9.2-p312) (2012-05-01 26e08ba) (Java HotSpot(TM) 64-Bit Server VM 1.6.0_24) [darwin-x86_64-java]
➜  nittresults git:(master) ✗ which gem
gem: aliased to jruby --1.9 -S gem
➜  nittresults git:(master) ✗ which irb
irb: aliased to jruby --1.9 -S irb

我创建了一个 gem nittresults,安装后我无法在 irb 中加载它。错误信息如下所示

➜  nittresults git:(master) ✗ gem list | grep -i nitt
nittresults (0.0.1)
➜  nittresults git:(master) ✗ irb
irb(main):001:0> require 'nittresults'
LoadError: no such file to load -- nittresults
    from org/jruby/RubyKernel.java:1042:in `require'
    from /Library/Frameworks/JRuby.framework/Versions/Current/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:36:in `require'
    from (irb):1:in `evaluate'
    from org/jruby/RubyKernel.java:1088:in `eval'
    from org/jruby/RubyKernel.java:1410:in `loop'
    from org/jruby/RubyKernel.java:1197:in `catch'
    from org/jruby/RubyKernel.java:1197:in `catch'
    from /Library/Frameworks/JRuby.framework/Versions/Current/bin/jirb:13:in `(root)'

如何让它加载到 irb 中? 我在osx雪豹10.6.8上。

这是输出 og gem env

RubyGems Environment:
  - RUBYGEMS VERSION: 1.8.24
  - RUBY VERSION: 1.9.2 (2012-05-01 patchlevel 312) [java]
  - INSTALLATION DIRECTORY: /Library/Frameworks/JRuby.framework/Gems/1.9
  - RUBY EXECUTABLE: /Library/Frameworks/JRuby.framework/Versions/Current/bin/jruby
  - EXECUTABLE DIRECTORY: /Library/Frameworks/JRuby.framework/Versions/Current/bin
  - RUBYGEMS PLATFORMS:
    - ruby
    - universal-java-1.6
  - GEM PATHS:
     - /Library/Frameworks/JRuby.framework/Gems/1.9
     - /Users/User/.gem/jruby/1.9
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :benchmark => false
     - :backtrace => false
     - :bulk_threshold => 1000
     - "install" => "--no-rdoc --no-ri"
     - "update" => "--no-rdoc --no-ri"
  - REMOTE SOURCES:
     - http://rubygems.org/

这是puts $:的输出

➜  nittresults git:(master) ✗ irb      
irb(main):001:0> puts $:
/Library/Frameworks/JRuby.framework/Versions/Current/lib/ruby/site_ruby/1.9
/Library/Frameworks/JRuby.framework/Versions/Current/lib/ruby/site_ruby/shared
/Library/Frameworks/JRuby.framework/Versions/Current/lib/ruby/site_ruby/1.8
/Library/Frameworks/JRuby.framework/Versions/Current/lib/ruby/1.9
=> nil

【问题讨论】:

  • 为什么你的 1.9 ruby​​ 从 1.8 加载 ruby​​gems?看看你的错误,路径通向v1.8 ruby​​gems...不对。
  • 我可以检查哪些信息来解决这个问题?
  • gem env 输出添加到您的问题中。另外,您是否定义了GEM_HOMEGEM_PATH 环境变量(echo $GEM_HOME $GEM_PATH)?
  • 我已经添加了gem env 的输出,GEM_HOME 和 GEM_PATH 没有设置。
  • @Casper,我已经发布了这些。关于可能出现的问题有什么建议吗?

标签: ruby gem jruby irb


【解决方案1】:

您需要先激活 ruby​​gems:

require 'rubygems'
gem 'nittresults'
require 'nittresults'

【讨论】:

  • 他使用的是 1.9,不需要require 'rubygems'(尽管在 JRuby 中可能不同?)。
  • 他的装置有些可疑。检查错误,它来自 ruby​​ 1.8 中的库..
  • 在这种情况下安装确实损坏了,使用 rbenv 进行全新安装修复了这个问题。 @Casper 你可以添加这个作为答案吗?
猜你喜欢
  • 2011-05-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多