【问题标题】:Why can't I load Nokogiri?为什么我无法加载 Nokogiri?
【发布时间】:2013-05-31 15:02:49
【问题描述】:

我通过运行安装 Nokogiri 没有任何问题:

$ sudo gem install nokogiri
Building native extensions.  This could take a while...
Successfully installed nokogiri-1.5.9
1 gem installed
Installing ri documentation for nokogiri-1.5.9...
Installing RDoc documentation for nokogiri-1.5.9...

当我运行 nokogiri.rb 时:

#!/usr/bin/ruby -w

require 'nokogiri'

puts "Current directory is: #{ Dir.pwd }"
Dir.chdir("/home/askar/xml_files1") do |dirname|

  puts "Now in: #{ Dir.pwd }"
  xml_files = Dir.glob("ShipmentRequest*.xml")

  if xml_files.empty?
    puts "#{ dirname } is empty."
  else
    xml_files.each do |file|
      doc = Nokogiri::XML(open(file))
      # ... do something with the doc ...
    end
  end
end

我得到了错误:

$ ruby nokogiri.rb 
/home/askar/.rvm/rubies/ruby-1.9.3-p429/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require': cannot load such file -- nokogiri (LoadError)
  from /home/askar/.rvm/rubies/ruby-1.9.3-p429/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'

我使用的是 Ruby 1.9.3,但由于某种原因它指的是 Ruby 1.9.1。这可能是原因吗?

【问题讨论】:

  • 如果您使用 RVM 或 rbenv 管理您的 Ruby,切勿使用 sudo 安装 gem,除非您当前设置为使用“系统”Ruby。
  • @锡人。谢谢,我会记住的。
  • 为什么我被否决了?我在nokogiri.org/tutorials/installing_nokogiri.html 遵循安装说明,他们在那里使用“sudo”。
  • 我不确定您为什么被否决,但我可以说您在按照指示进行时没有进行健全性检查。 Nokogiri 网站上的说明与使用 RVM 或 rbenv 没有任何关系。作为 Ruby 环境的“管理员”,您必须了解自己的情况,并决定是否应该完全按照他们的指示行事,或者应用您环境的一些知识并排除他们的一些建议。您不能说“我这样做是因为他们说!”,而是必须排除没有意义的事情。这当然是一种学习体验,但你是老板。
  • @the Tin Man 我同意你的看法。但是 stackoverflow.com 不是大学。人们来这里是为了解决他们的问题和我犯的错误,我相信是可以原谅的。如果我问的是非建设性的或非常笼统的问题,我会理解的。我敢肯定,投反对票的管理员是他的主观​​意见,其他管理员不会投反对票。 :)

标签: ruby rvm nokogiri


【解决方案1】:

仔细观察,路径以/home/askar/.rvm/rubies/ruby-1.9.3-p429开头,所以加载路径应该是正确的。

您的问题是您使用了sudo,它将为系统红宝石安装gem。不用sudo再试一次,只是

gem install nokogiri

为当前的 rvm ruby​​ 安装 gems。

【讨论】:

  • 很高兴听到!很高兴我能帮上忙。
  • 注意,在再次安装 gem 之前,可能还需要运行 gem uninstall nokogiri 和/或 sudo uninstall nokogiri。无论如何,这是给我的。
  • 当我在没有sudo 的情况下执行此操作时,我遇到了 FilePermissionError (You don't have write permissions for the /var/lib/gems/2.3.0 directory)。如果我用sudo 来做这件事--然而--错误占上风。
  • @mauroc8:授予在文件夹上写入的权限(例如:sudo chmod -R 777 /var/lib/gems/2.3.0),那么它应该在没有sudo 的情况下工作。
猜你喜欢
  • 2011-09-27
  • 2018-02-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-26
  • 2015-08-25
  • 1970-01-01
相关资源
最近更新 更多