繁体   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