2013-05-31 191 views
7

我安装引入nokogiri没有任何问题,运行:为什么我不能加载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。这可能是原因吗?

+2

如果您使用RVM或rbenv来管理您的Rubies,请不要使用'sudo'来安装宝石,除非您当前设置为使用“系统”Ruby。 –

+0

@锡匠。谢谢,我会记住。 – Askar

+0

我为什么被拒绝投票?我在http://nokogiri.org/tutorials/installing_nokogiri.html上阅读安装说明,他们在那里使用“sudo”。 – Askar

回答

7

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

你的问题是你使用了sudo这将为系统ruby做一个gem安装。不用sudo,只需

gem install nokogiri 

为当前rvm ruby​​安装gems。

+0

太棒了!它的工作,然后我重新安装没有“sudo” – Askar

+0

很好听!很高兴我能帮上忙。 –

+0

注意,在再次安装gem之前,可能还需要运行'gem uninstall nokogiri'和/或'sudo uninstall nokogiri'。无论如何,这对我来说都是。 – 2017-01-31 19:52:05