我一直在研究一些方法並在控制檯中測試它們。問題是在服務器上運行時發生錯誤。具體地,第一方法下面觸發此NoMethod
錯誤:Rails webscraper在控制檯中工作,但不是服務器
undefined method `text' for nil:NilClass
下面的代碼。它來自webpage.rb文件,它有一個uri列。
def download_page_title
page_as_xml.at_css('title').text
end
def page_as_xml
page_as_xml ||= Nokogiri::HTML(open(page_uri))
end
def page_uri
base_uri = Site.find_by_id(self.site_id).homepage #always has "/" at end
if self.url == base_uri
page_uri = base_uri
else
page_uri = "#{base_uri}#{self.url}"
end
end
任何想法我做錯了什麼?此外,任何想法爲什麼事情順利在控制檯,但在服務器上出軌?
編輯:這裏是我在控制檯中做的一個例子。
1.9.3p194 :262 > a = Webpage.new(url: "http://www.cnn.com/", site_id:165)
=> #<Webpage id: nil, url: "http://www.cnn.com/", site_id: 165, created_at: nil, updated_at: nil, title: nil>
1.9.3p194 :263 > a.download_page_title
Site Load (0.3ms) SELECT "sites".* FROM "sites" WHERE "sites"."id" = 165 LIMIT 1
=> "CNN.com - Breaking News, U.S., World, Weather, Entertainment & Video News"
你究竟在工作的控制檯上運行了什麼? – Dty 2012-07-24 15:52:54
如果我建立了一個新的網站,給它一個像「http://www.cnn.com」這樣的網址,然後保存,那麼我可以成功調用download_page_title方法。 – 2012-07-24 15:56:26