Как мне включить установленный Ruby Geme в Rails?
-
22-08-2019 - |
Вопрос
Я пытаюсь заставить установленный мной драгоценный камень работать в приложении Rails.Я могу запросить драгоценный камень в программе Ruby, которую запускаю из командной строки, используя:
require 'nokogiri'
Но когда я пытаюсь сделать то же самое на одном из моих контроллеров Rails, появляется ошибка: «Нет такого файла для загрузки — nokogiri».
Я попытался использовать полный путь к файлу lib/nokogiri.rb, но это не удалось, поскольку не удалось найти «nokogiri/native».
Решение
Лучше поместите в файл Environment.rb следующее:
Rails::Initializer.run do |config|
...
config.gem :nokogiri
...
end
Это сообщит Rails, что вы зависите от этого конкретного драгоценного камня.Он также позволяет вам указывать конкретные версии и автоматически синхронизировать все ваши драгоценные камни или распаковывать их в поставщики/гемы, если вы того пожелаете.
Другие советы
У меня была аналогичная ошибка, но я просто забыл поместить следующее в файл Environment.rb:(обратите внимание на цитируемое "nokogiri"
)
Rails::Initializer.run do |config|
...
config.gem "nokogiri"
...
end
Хорошо, я понял это.Это прозвучит довольно глупо... ну да ладно...
Оказывается, на моей машине было две установки Ruby.Я использую InstantRails для обслуживания своих тестовых приложений, и он поставляется с установленным Ruby.Однако помимо этой у меня была еще одна установка, и именно здесь был установлен nokogiri, а не при установке в InstantRails.
В любом случае драгоценные камни они искали в разных местах.
Попробуйте следующее
require 'rubygems'
gem 'nokogiri'
Если вы используете какую-либо версию *nix, то возникали ли у вас какие-либо ошибки при установке драгоценного камня, в частности ошибки о том, что драгоценный камень не находился на пути.Это может произойти, если вы установили драгоценный камень как самостоятельно, а не как root, и у вас нет личной библиотеки драгоценных камней в вашем пути к драгоценному камню.
Если вы всегда устанавливаете свои драгоценные камни, используя
sudo gem install some_gem_name
тогда у вас не должно возникнуть этой проблемы.