轨道上的红宝石 - 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

在我的本地环境中,我只需键入即可在 rails 控制台中运行它

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

它工作得很好。

但是,在 Heroku 控制台中运行类似的操作(运行工人而不是 rake jobs:work)似乎没有任何作用。我尝试在 Heroku 日志中记录一些行,我可以让 url 变量记录(因此该方法至少被调用),但每次我们运行 while 循环时都会显示的"."永远不会出现,也没有在数据库中创建房屋。

有人知道可能出了什么问题吗?

自己解决了这个问题,虽然很晦涩的错误。我在本地环境中使用 ruby 1.9.2,但我将应用程序部署在 ruby 1.8.7 堆栈上。

重要的区别在于两个 ruby 版本之间的字符编码变化,这意味着 Mechanize 找不到与 unicode 编码字符"\u00BB"的链接,因此没有进行任何抓取。

相关内容

  • 没有找到相关文章

最新更新