Delayed_Job scraper在开发中工作,但在Heroku上没有

时间:2011-05-07 19:29:51

标签: ruby-on-rails ruby-on-rails-3 heroku delayed-job

以下是刮刀的代码

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。

任何想法可能有什么问题?

1 个答案:

答案 0 :(得分:2)

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

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