2011-03-07 71 views
0

如何爲rake任務創建後臺任務。我希望它每15分鐘運行一次。如何創建rake任務的後臺任務?

我在LIB /任務

desc "Importer statistikker" 
namespace :reklamer do 
    task :iqmedier => :environment do 
      require 'Mechanize' 
      agent = WWW::Mechanize.new 
      agent.get("http://www.iqmedier.dk") 
      form = agent.page.forms.first 
      form.Username = 'username' 
      form.Password = 'password' 
      form.submit 

      agent.page.link_with(:href => "/Publisher/Stats").click 

      form = agent.page.forms.first 
      form.submit 

      @stats = agent.page.search('//tr')[-2].search('td').map{ |n| n.text } 

      @existing = Reklamer.where(dato: @stats[0]).first 
      if @existing.nil? 
       Reklamer.create!(:virksomhed => 'Iqmedier', :dato => @stats[0], :unik_klik => @stats[1], :klik => @stats[2], :unik_vis => @stats[3], :vis => @stats[4], :leads => @stats[5], :ordre => @stats[6], :cpc => @stats[7], :earn => @stats[8]) 
      elsif @existing.dato != Date.today 
      Reklamer.create!(:virksomhed => 'Iqmedier', :dato => Date.today, :unik_klik => 0, :klik => 0, :unik_vis => 0, :vis => 0, :leads => 0, :ordre => 0, :cpc => 0, :earn => 0) 
      else 
      @existing.update_attributes!(:unik_klik => @stats[1], :klik => @stats[2].to_i, :unik_vis => @stats[3], :vis => @stats[4], :leads => @stats[5], :ordre => @stats[6], :cpc => @stats[7], :earn => @stats[8]) 
      end 
    end 
end 

回答

1

statistik.rake根據您的架構,在Linux世界中最簡單的辦法是建立一個cron作業:

/etc/cron.d和棍子創建一個文件這在它:

*/15 * * * * your_app_user cd /your/app/path; rake reklamer:iqmedier RAILS_ENV=production 

這將運行,每15分鐘(由於*/15)的工作。

+0

我正在使用Windows 7 – 2011-03-07 11:53:04

+0

哦...對不起,不知道Windows 7中的作業。 – Wukerplank 2011-03-07 11:54:11

+1

然後你可以使用Windows調度程序http://windows.microsoft.com/en-US/windows7/schedule -a-task或者安裝一個類似windows的cron。這些是最簡單的解決方案。 – Jean 2011-03-07 11:55:17