2

我正在尝试让我在 Rails 应用程序中安装的 gem。我可以在从命令行运行的 Ruby 程序中要求 gem 很好:

require 'nokogiri'

但是当我尝试在我的一个 Rails 控制器中做同样的事情时,它会出错,说“没有要加载的文件——nokogiri”。

我尝试使用 lib/nokogiri.rb 文件的完整路径,但由于找不到“nokogiri/native”而失败。

4

4 回答 4

3

更好的是,将以下内容放在您的 environment.rb 文件中:

Rails::Initializer.run do |config|
  ...
  config.gem :nokogiri
  ...
end

这将告诉 Rails 你依赖于那个特定的 gem。它还允许您指定特定版本,并且它会自动保持所有 gem 同步,或者如果您愿意,可以将它们解压缩到 vendor/gems 中。

于 2009-03-28T23:08:02.540 回答
2

我有一个类似的错误,但只是忘记将以下内容放在我的 environment.rb 文件中:(注意引号"nokogiri"

Rails::Initializer.run do |config|
  ...
  config.gem "nokogiri"
  ...
end
于 2010-09-30T01:48:47.683 回答
1

好的,我想通了。这听起来很愚蠢……但是哦,好吧……

事实证明,我的机器上安装了两次 ruby​​。我使用 InstantRails 为我的测试应用程序提供服务,它预装了 ruby​​ 安装包。我有另一个安装,但是在此之外,这里安装了 nokogiri,而不是安装在 InstantRails 中。

无论如何,他们在不同的地方寻找宝石。

于 2009-03-28T23:32:54.760 回答
0

尝试以下

require 'rubygems'  
gem 'nokogiri'  

如果您使用某种形式的 *nix,那么您在安装 gem 时是否遇到任何错误,特别是指出 gem 不在路径上的错误。如果您以自己而不是 root 身份安装了 gem,并且您的 gem 路径中没有您的个人 gem 库,则可能会发生这种情况。

如果您总是使用

sudo gem install some_gem_name 

那么你不应该遇到这个问题。

于 2009-03-28T22:59:07.773 回答