2011-05-07 57 views
0

下面是刮板delayed_job的刮板工作在發展,但不是在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 

在我的本地環境,我可以在鐵軌控制檯運行的代碼,只需鍵入

Scrape.new.delay.perform # to queue the job 
rake jobs:work 

和它的工作原理完美。

然而,在Heroku控制檯中運行類似的(與工作人員運行而不是耙工作:工作)似乎沒有任何作用。我嘗試在Heroku日誌中記錄一些行,並且我可以獲取url變量以記錄日誌(因此該方法至少會被調用),但「。」在每次我們運行while循環時都會顯示,並且在數據庫中不會創建房屋。

任何有什麼想法可能是錯的?

回答

2

雖然我自己解決了這個問題,但是這個問題很隱蔽。我在本地環境中使用ruby 1.9.2,但是我已經將應用程序部署在1.8.7的紅寶石上。

重要的區別是兩個ruby版本之間字符編碼的變化,這意味着Mechanize找不到與unicode編碼的字符「\ u00BB」的鏈接,因此沒有做任何刮擦。

相關問題