Gem загружается в IRB, но не консоль - PullRequest
6 голосов
/ 07 ноября 2010

Этот сводит меня с ума.Я могу загрузить камень через irb:

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

Камень (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

И пакет согласен

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, и установка пакета завершается без жалоб.

Это проект, который я перемещаю из windows в Ubuntu.На окнах он работает нормально (как ни странно!), Поэтому я уверен, что это среда.

Ответы [ 2 ]

14 голосов
/ 07 ноября 2010

require возвращает false, если этот файл уже был загружен. Попробуйте это в своем сеансе irb, выполнив оператор require дважды подряд. Второй вернет false:

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

Если файл не может быть найден, require вызовет вместо этого LoadError.

Ваше сообщение об исключении (Нет такого файла для загрузки - Nokogiri), создает впечатление, что для чего-то требуется «Nokogiri» вместо «nokogiri», что может быть проблемой в чувствительной к регистру операционной системе.

1 голос
/ 07 ноября 2010

Убедитесь, что это требуется в вашем Gemfile, и выполните установку пакета.

Правка - Попробуйте потребовать рубины, а затем нокогири.

...