2014-02-19 3 views
1

난 그냥 모델 응용 프로그램/모델/post.rb와 레일 응용 프로그램을 만들었으며 스크레이퍼를 작성했습니다 스크레이퍼/base_scraper.rb (클래스 BaseScraper) 해시 변수에 대상 사이트에서 데이터를 수집 데이터. 이제 데이터 값을 포스트 모델에 삽입하고 싶습니다. Rails에서 올바르게 수행하는 방법? 나는 레이크에 관해서는 들었지만 제대로 활용하는 방법은 모른다. 도와주세요, 제발!Rails 앱에 내 스크레이퍼를 통합하는 방법은 무엇입니까?

답변

6

가정 한 포스트와 data 해시에 저장되어있는 키의 각이 유효 Post 필드 (COLUMN_NAME)되는 data 상점, 당신은 단순히이 작업을 수행 할 수있다 :

Post.create(data) 

당신이 전체를 실행하려면

# scraper.rake 
namespace :scraper do 
    desc "Run scraper" 
    task :run => :environment do 
    data = BaseScraper.your_collect_data_class_method 
    Post.create(data) if data 
    end 
end 

task :default => 'scraper:run' 

을 그리고와 레이크 작업으로 콘솔에서 실행 : 콘솔에서 프로세스를 다음과 프로세스의 lib/tasks 디렉토리 아래의 레이크 작업을 만들 수 있습니다

물론 scrapers dir이 레일로드 경로에 있다고 가정합니다. 그렇지 않은 경우 application.rb 파일에 추가하십시오.

# application.rb 
... 
module YourApp 
    class Application < Rails::Application 
    ... 
    config.autoload_paths += Dir["#{config.root}/scrapers/"] 
    ... 
    end 
end 
+0

나는 scrapers/base_scraper.rb에 Post 클래스를 가져올 필요가 없습니다. –

+2

코드에 문제가 있습니다 :'task : run'을'task : run => : environment'로 변경하여 레일즈 모델 등을 자동으로로드하십시오. –

+0

맞습니다. @maximgladkov : fixed! –

관련 문제