簡體   English   中英

Delayed_Job scraper在開發中工作,但在Heroku上沒有

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM