[英]Delayed_Job scraper works in development but not on Heroku
這是刮刀的代碼
class Scrape
def perform
url = "# a long url"
agent = Mechanize.new
agent.get(url)
while(agent.page.link_with(:text => "Next Page \u00BB")) do
agent.page.search(".content").each do |item|
puts "."
House.create!({
# attributes...
})
end
agent.page.link_with(:text => "Next Page \u00BB").click
end
end
end
在我的本地環境中,我只需鍵入即可在rails控制台中運行它
Scrape.new.delay.perform # to queue the job
rake jobs:work
它完美無缺。
然而,在Heroku控制台中運行類似的(運行工作而不是rake作業:工作)似乎沒有做任何事情。 我嘗試在Heroku日志中記錄一些行,我可以將url變量記錄下來(因此該方法至少被調用)但是“。” 每次我們運行while循環時都會顯示,而且數據庫中沒有創建Houses。
任何想法有什么可能是錯的?
我自己解決了這個問題,雖然相當模糊。 我在我的本地環境中使用ruby 1.9.2但是我將應用程序部署在ruby 1.8.7堆棧上。
重要的區別是兩個ruby版本之間的字符編碼的變化,這意味着Mechanize無法找到與unicode編碼字符“\\ u00BB”的鏈接,因此沒有做任何抓取。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.