插入Rails数据库

时间:2011-03-16 22:05:00

标签: ruby-on-rails ruby database heroku insertion

我是Ruby on Rails的新手,想要创建一个抓取数据并将其插入数据库的抓取工具。我目前正在使用Heroku,所以我无法直接访问数据库,并想知道将爬虫脚本集成到RoR框架的最佳方法是什么。我会使用每小时或每天的cron来运行脚本。

2 个答案:

答案 0 :(得分:2)

如果您在Heroku上使用Rails,您可以使用DataMpper或ActiveRecord等ORM适配器。然后,这使您可以访问您的数据库,但通过基本层。如果您需要将原始sql发送到数据库,您通常不建议这样做,因为ORM提供了您需要的所有内容。

您基本上只需在正常的rails应用程序中创建模型,并在表格中创建相关字段。

rails g model page meta_title:string page_title:string

rake db:migrate # This has to be run on heroku too "heroku rake db:migrate" after you have pushed your code up

然后在您的抓取工具脚本中,您只需使用您的模型即可创建记录...

Page.create(:title => crawler[:title], :meta_title => crawler[:meta_title])

通常你可以使用Whenever(https://github.com/javan/whenever)管理你的cronjobs,但是在Heroku上我不知道它是如何工作的,因为我之前没有在Heroku上设置任何东西。

答案 1 :(得分:0)

我建议2个选项中的一个:

  1. 使用一个使用require rubygems的ruby脚本以及您想要完成任务的其他帮助程序库(如Rails,ActiveRecord等),然后使用cron该脚本。

  2. 如果您使用Rails也提供Web应用程序,请使用计算机的hosts文件,以便该计算机上的wget(或类似)正确地将请求映射到该rails实例;从那里,只需将其设置为Web应用程序,并在您的CRON中使用wget命令。效率不是很高,但如果您只是根据现有的设置寻找快速和脏的东西,那就可以很好地工作。只需确保将STDOUTSTDERR发送到/dev/null,这样您就不会最终收集CRON文件了。