我在应用程序中创建了一个类:
require 'nokogiri'
require 'csv'
require 'open-uri'
class Scraper
def self.test_method
url = "http://london.craigslist.co.uk/"
doc = Nokogiri::HTML(open(url))
Rails.logger.debug doc.to_yaml
end
end
在rails控制台中调用它时:Scraper.test_method
我得到一个空的节点缓存。但是,如果我直接在控制台中运行该方法的各个行,则响应是具有完整节点缓存的有效Nokogiri::HTML::Document
对象。
控制台和应用程序有什么不同?
--- !ruby/object:Nokogiri::HTML::Document
decorators:
node_cache: []
errors:
- !ruby/exception:Nokogiri::XML::SyntaxError
message: |
Tag article invalid
domain: 5
code: 801
level: 2
file: /var/folders/lt/18lgdxts4052x8rf8xhf32v00000gn/T/open-uri20131218-62789-1tuxgqp
line: 50
str1: article
str2:
str3:
int1: 0
column: 28
- !ruby/exception:Nokogiri::XML::SyntaxError
message: |
Tag section invalid
domain: 5
code: 801
level: 2
file: /var/folders/lt/18lgdxts4052x8rf8xhf32v00000gn/T/open-uri20131218-62789-1tuxgqp
line: 51
str1: section
str2:
str3:
int1: 0
column: 23
- !ruby/exception:Nokogiri::XML::SyntaxError
message: |
Tag header invalid
domain: 5
code: 801
level: 2
file: /var/folders/lt/18lgdxts4052x8rf8xhf32v00000gn/T/open-uri20131218-62789-1tuxgqp
line: 161
str1: header
str2:
str3:
int1: 0
column: 36
- !ruby/exception:Nokogiri::XML::SyntaxError
message: |
Tag footer invalid
domain: 5
code: 801
level: 2
file: /var/folders/lt/18lgdxts4052x8rf8xhf32v00000gn/T/open-uri20131218-62789-1tuxgqp
line: 678
str1: footer
str2:
str3:
int1: 0
column: 9
答案 0 :(得分:1)
Scraper#test_method
中的最后一行是Rails.logger
行,返回nil,导致您的方法返回nil。您需要在方法结束时使用return doc
(或仅doc
),以便返回该结果。