我正在尝试让我在 Rails 应用程序中安装的 gem。我可以在从命令行运行的 Ruby 程序中要求 gem 很好:
require 'nokogiri'
但是当我尝试在我的一个 Rails 控制器中做同样的事情时,它会出错,说“没有要加载的文件——nokogiri”。
我尝试使用 lib/nokogiri.rb 文件的完整路径,但由于找不到“nokogiri/native”而失败。
我正在尝试让我在 Rails 应用程序中安装的 gem。我可以在从命令行运行的 Ruby 程序中要求 gem 很好:
require 'nokogiri'
但是当我尝试在我的一个 Rails 控制器中做同样的事情时,它会出错,说“没有要加载的文件——nokogiri”。
我尝试使用 lib/nokogiri.rb 文件的完整路径,但由于找不到“nokogiri/native”而失败。
更好的是,将以下内容放在您的 environment.rb 文件中:
Rails::Initializer.run do |config|
...
config.gem :nokogiri
...
end
这将告诉 Rails 你依赖于那个特定的 gem。它还允许您指定特定版本,并且它会自动保持所有 gem 同步,或者如果您愿意,可以将它们解压缩到 vendor/gems 中。
我有一个类似的错误,但只是忘记将以下内容放在我的 environment.rb 文件中:(注意引号"nokogiri"
)
Rails::Initializer.run do |config|
...
config.gem "nokogiri"
...
end
好的,我想通了。这听起来很愚蠢……但是哦,好吧……
事实证明,我的机器上安装了两次 ruby。我使用 InstantRails 为我的测试应用程序提供服务,它预装了 ruby 安装包。我有另一个安装,但是在此之外,这里安装了 nokogiri,而不是安装在 InstantRails 中。
无论如何,他们在不同的地方寻找宝石。
尝试以下
require 'rubygems'
gem 'nokogiri'
如果您使用某种形式的 *nix,那么您在安装 gem 时是否遇到任何错误,特别是指出 gem 不在路径上的错误。如果您以自己而不是 root 身份安装了 gem,并且您的 gem 路径中没有您的个人 gem 库,则可能会发生这种情况。
如果您总是使用
sudo gem install some_gem_name
那么你不应该遇到这个问题。