der*_*use 0 ruby hpricot block
以下代码完美无缺.
@doc = open(link) { |f| Hpricot(f) }
Run Code Online (Sandbox Code Playgroud)
但是我想使用下面的代码,它似乎与Hpricot块不匹配(例如@doc是一个TempFile对象,而不是Hpricot文档对象)
@doc = resolve_link(link) { |f| Hpricot(f) }
def resolve_link(link)
begin
return open(link)
rescue
logger.debug("#{$!} for link #{link}")
raise Exceptions::ErrorResolvingLink.new("Cannot resolve link #{link}.")
end
end
Run Code Online (Sandbox Code Playgroud)
知道如何让代码的第二个版本工作吗?
你正在resolve_link用一个块来调用,但是你没有将该块传递给open.试试这个:
def resolve_link(link, &block)
begin
return open(link, &block)
#...
Run Code Online (Sandbox Code Playgroud)