Проблема с установкой Nokogiri Gem без Rails: «Не удалось найти «Nokogiri …»

#ruby #ruby-on-rails-3 #rake #nokogiri #bundler

#ruby #ruby-on-rails-3 #грабли #nokogiri #пакет

Вопрос:

Nokogiri находится в моем файле gem. Bundle install возвращает ожидаемый результат:

 Using nokogiri (1.4.4) 
Your bundle is complete! Use `bundle show [gemname]` to see where a bundled gem is installed.
  

При попытке выполнить db: create: all я получаю следующую ошибку:

 rake db:create:all
Could not find nokogiri-1.4.4 in any of the sources
  

Если я протестирую в irb, я также получу ожидаемый результат.

 irb(main):003:0> require "rubygems"
=> true
irb(main):004:0> require "nokogiri"
=> true
  

Я несколько раз удалял и устанавливал nokogiri вместе с его зависимостями.

Я использую:

Rails 3.0.6 Ruby 1.8.7

Буду признателен за любую помощь.

РЕДАКТИРОВАТЬ: 25.04.11, 15: 02 EDT

Для комментария ниже: Строка Gemfile для nokogiri является

 gem "nokogiri", '1.4.4', :require => "nokogiri"
  

Комментарии:

1. Как выглядит ваш Gemfile?

2. Что у вас GEM_HOME установлено? Вполне возможно, что он установлен в каком-то необычном месте и Ruby не может его найти. Rakefile использует Gemfile , но в вашем irb примере этого нет.

3. Как мне проверить, что также установлено в моем GEM_HOME?

Ответ №1:

Я провел тест с учетом вашего случая.
Мой Gemfile выглядит следующим образом:

 gem "nokogiri", '1.4.4', :require => "nokogiri"
  

А затем rake db:migrate все работало просто отлично

Комментарии:

1. Nokogiri уже был в gemfile, но я добавил сегмент «:require => «nokogiri»». Оба Rake db: migrate и Rake db:create: all по-прежнему возвращают: «Не удалось найти nokogiri-1.4.4 ни в одном из источников»

2. У меня это сработало. Я думаю, проблема, возможно, заключалась в том, что, хотя у меня был nokogiri gem, он был там только как зависимость от capybara или одного из других драгоценных камней, который был в :test блоке моего Gemfile, и поэтому он не появлялся в моей среде разработки.

Ответ №2:

Это может быть рискованно, но вы могли бы попробовать:

 bundle install --no-deployment
  

Если вы находитесь в режиме развертывания, Rails будет искать ваши драгоценные камни в каталоге поставщика, а не в обычном месте установки. Это может вызвать ошибку такого рода.