代码之家  ›  专栏  ›  技术社区  ›  lambinator

在irb中加载Gem,但不加载控制台

  •  6
  • lambinator  · 技术社区  · 14 年前

    steve@server:/var/www/listings$ irb
    irb(main):001:0> Gem.path
    => ["/home/steve/.gem/ruby/1.9.1", "/usr/local/ruby/lib/ruby/gems/1.9.1"]
    irb(main):002:0> require 'nokogiri'
    => true
    

    但我无法通过rails控制台加载它:

    irb(main):001:0> Gem.path
    => ["/home/steve/.gem/ruby/1.9.1", "/usr/local/ruby/lib/ruby/gems/1.9.1"]
    irb(main):002:0> require 'nokogiri'
    => false
    

    gem(nokogiri)已安装

    steve@server:/var/www/listings$ gem which nokogiri
    /usr/local/ruby/lib/ruby/gems/1.9.1/gems/nokogiri-1.4.3.1/lib/nokogiri.rb
    

    bundle同意

    steve@server:/var/www/listings$ bundle show nokogiri
    /usr/local/ruby/lib/ruby/gems/1.9.1/gems/nokogiri-1.4.3.1
    

    /usr/local/ruby/lib/ruby/gems/1.9.1/gems/activesupport-3.0.1/lib/active_support/dependencies.rb:304:in `rescue in depend_on': No such file to load -- Nokogiri (LoadError)
    

    其他环境信息:

    steve@server:/var/www/listings$ ruby --version
    ruby 1.9.2p0 (2010-08-18 revision 29036) [i686-linux]
    steve@server:/var/www/listings$ rails --version
    Rails 3.0.1
    steve@server:/var/www/listings$ gem env
    RubyGems Environment:
      - RUBYGEMS VERSION: 1.3.7
      - RUBY VERSION: 1.9.2 (2010-08-18 patchlevel 0) [i686-linux]
      - INSTALLATION DIRECTORY: /usr/local/ruby/lib/ruby/gems/1.9.1
      - RUBY EXECUTABLE: /usr/local/ruby/bin/ruby
      - EXECUTABLE DIRECTORY: /usr/local/ruby/bin
      - RUBYGEMS PLATFORMS:
        - ruby
        - x86-linux
      - GEM PATHS:
         - /usr/local/ruby/lib/ruby/gems/1.9.1
         - /home/steve/.gem/ruby/1.9.1
      - GEM CONFIGURATION:
         - :update_sources => true
         - :verbose => true
         - :benchmark => false
         - :backtrace => false
         - :bulk_threshold => 1000
      - REMOTE SOURCES:
         - http://rubygems.org/
    

    有什么建议吗??

    顺便说一句,Nokogiri在Gemfile中,bundle安装完成了,没有任何抱怨。

    2 回复  |  直到 14 年前
        1
  •  15
  •   jason.rickman    14 年前

    如果已加载该文件,则require返回false。在irb会话中通过连续执行两次require语句来尝试它。第二个将返回false:

    irb(main):001:0> require 'nokogiri'
    => true
    irb(main):002:0> require 'nokogiri'
    => false
    

    您的异常消息(没有要加载的此类文件——Nokogiri)使其看起来需要“Nokogiri”而不是“Nokogiri”,这在区分大小写的操作系统上可能是一个问题。

        2
  •  1
  •   tsimon    14 年前

    编辑-尝试要求rubygems,然后nokogiri。