2011-03-16 4 views
0

Ruby on Rails를 처음 사용하면서 데이터를 스크랩하고 데이터베이스에 삽입하는 크롤러를 만들고 싶었습니다. 나는 현재 Heroku를 사용하고 있으므로 데이터베이스에 직접 액세스 할 수 없으며 크롤러 스크립트를 RoR 프레임 워크에 통합하는 가장 좋은 방법이 무엇인지 궁금해하고 있습니다. 스크립트를 실행하기 위해 시간별 또는 매일 cron을 사용합니다.Rails 데이터베이스에 삽입

답변

0

나는 1 2의 옵션을 건의 할 것입니다 :

  1. 다음 다른 도우미 당신이 작업을 수행 할 (어떤 레일처럼, 액티브) 라이브러리, 크론과 함께 require rubygems를 사용하는 루비 스크립트를 사용하여 그 스크립트.

  2. 레일스를 사용하여 웹 응용 프로그램을 제공하는 경우 해당 컴퓨터의 wget (이상)이 레일스 인스턴스에 요청을 올바르게 매핑 할 수 있도록 호스트의 파일을 사용하십시오. 거기에서 웹 응용 프로그램으로 설정하고 CRON에서 wget 명령을 사용하십시오. 굉장히 효율적이지는 않지만, 기존 설정을 기반으로 빠르고 더러운 것을 찾고 있다면 멋지게 작동합니다. STDOUTSTDERR/dev/null으로 보내서 CRON 파일을 축적하지 않도록하십시오.

2

Heroku에서 Rails를 사용하는 경우 Datamapper 또는 ActiveRecord와 같은 ORM 어댑터를 사용할 수 있습니다. 그러면 데이터베이스에 액세스 할 수 있지만 기본적으로 계층을 통해 액세스 할 수 있습니다. 원시 SQL을 데이타베이스로 보내야 할 필요는 있지만, ORM은 필요한 모든 것을 제공하기 때문에 대개 권장하지 않습니다.

당신은 기본적으로 레일즈 애플리케이션 내에서 정상적인 모델과 테이블의 관련 필드를 생성합니다.

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]) 

사용할 수 ... 당신의 모델을 사용하여 레코드를 만들 수 있습니다 때마다 (https://github.com/javan/whenever)에 당신의 cronjobs를 관리하지만 Heroku 전에 내가 Heroku에 어떤 것도 설정하지 않은 이후로 그것이 작동하는 방법을 잘 모르겠습니다.