Prev: [ANN] Duby 0.0.3 released
Next: Why private #binding?
From: Martin Han on 9 Jun 2010 20:37 May i seek your help for captioned case ? I am test the script named test.rb by command "ruby test.rb" and it pass. Then i converte it as rake task. The rake task pass on rails 2.3.5 but fail on rails 3 beta4 with error msg: "no such file to load -- nokogiri" ============================ env :rails 3 beta4, ruby 1.8.7, ubuntu ============================ test.rb ============================ require 'rubygems' require 'nokogiri' require 'open-uri' require "iconv" url = "http://www.bugutang.com" doc = Nokogiri::HTML(open(url)) doc.css("title").each do |c| puts Iconv.iconv("GBK//IGNORE", "UTF-8//IGNORE", c.content) end ============================ claw.rake ============================ desc "Fetch product " task :claw => :environment do require 'rubygems' require 'nokogiri' require 'open-uri' require "iconv" url = "http://www.bugutang.com" doc = Nokogiri::HTML(open(url)) doc.css("title").each do |c| puts Iconv.iconv("GBK//IGNORE", "UTF-8//IGNORE", c.content) end end ============================ here is the environment : RubyGems Environment: - RUBYGEMS VERSION: 1.3.7 - RUBY VERSION: 1.8.7 (2008-08-11 patchlevel 72) [x86_64-linux] - INSTALLATION DIRECTORY: /usr/lib/ruby/gems/1.8 - RUBY EXECUTABLE: /usr/bin/ruby1.8 - EXECUTABLE DIRECTORY: /usr/bin - RUBYGEMS PLATFORMS: - ruby - x86_64-linux - GEM PATHS: - /usr/lib/ruby/gems/1.8 - /home/bugu/.gem/ruby/1.8 - GEM CONFIGURATION: - :update_sources => true - :verbose => true - :benchmark => false - :backtrace => false - :bulk_threshold => 1000 - REMOTE SOURCES: - http://rubygems.org/ *** LOCAL GEMS *** nokogiri (1.4.2) Authors: Aaron Patterson, Mike Dalessio Rubyforge: http://rubyforge.org/projects/nokogiri Homepage: http://nokogiri.org Installed at: /usr/lib/ruby/gems/1.8 Any help ? Ben Bleything wrote: > 2010/2/5 Jun Young <juneng603(a)gmail.com>: >> it makes my script working. but, I am still wondering why it didn't >> work. >> >> I installed the library by using gems. why I have to load 'rubygems' >> library also before calling 'nokogiri'?? > > Because that is how it works :) > > RubyGems is a packaging system. It works by manipulating Ruby's load > path to include the lib directories of any gems you have installed... > but to make that work, you must include RubyGems in your script. > Starting with Ruby 1.9, RubyGems is built-in to Ruby, so you won't > need to do that any more, but while you're using Ruby 1.8, you'll need > to require rubygems whenever you want to use a gem. > > As an alternative, you can set the environment variable RUBYOPT to > 'rubygems': > > [11:24:29] ben(a)folio (master) > ~ $ cat d.rb > require 'nokogiri' > puts "nokogiri loaded successfully" > > [11:24:34] ben(a)folio (master) > ~ $ ruby d.rb > d.rb:1:in `require': no such file to load -- nokogiri (LoadError) > from d.rb:1 > > [11:24:36] ben(a)folio (master) > ~ $ export RUBYOPT="rubygems" > > [11:24:42] ben(a)folio (master) > ~ $ ruby d.rb > nokogiri loaded successfully -- Posted via http://www.ruby-forum.com/.
|
Pages: 1 Prev: [ANN] Duby 0.0.3 released Next: Why private #binding? |