2013-02-12 33 views
0

我需要每分鐘做一個XML請求,然後將數據存儲在一個Medida對象。每個Meter對象有很多Medidas(測量)。每當不運行方法好

class Meter < ActiveRecord::Base 

    has_one :user_type 
    has_one :user 
    has_many :medidas 
    attr_accessible :user_type_id, :user_id, :address, :etc 


    def read_data 
     u = User.find(self.user_id) 
     Medida.get_data(self.address,u.user_key, self.id) 
    end 


    class << self 
    def all_read_data 
     meters = Meter.all 
     meters.each do |meter| 
     meter.read_data 
     end 
    end 
    end 
end 

Medidas.rb看起來像

class Medida < ActiveRecord::Base 
    belongs_to :meter 
    attr_accessible :some_attr 

    class << self 
    def get_data(address,user_key, meter_id) 
     url="some_url_with#{variables}.xml?#{a_key}" 

     response = HTTParty.get(url) 

     hash = Hash.from_xml(response.to_s) 
     hash = Medida.some_funct(hash) 
     data = hash["ekmMeterReads"]["meter"]["read"] 

     #Save hash to bd 
    end 
    #def some_funct 
    end 
end 

我使用的是每當這個。這是我schedule.rb看起來像

set :output, "#{path}/log/cron.log" 

every 1.minutes do 
    runner "Meter.all_read_data, :environment => 'development' 
end 

的問題是,實際上只有一米的得到每分鐘的數據和所有其他人都離開了,沒有它。 This is我的cron.log的內容(它有問題,但我沒有找到有用的信息。)

我在想什麼?感謝您的任何見解。

+0

如果您在Rail控制檯中運行'Meter.all_read_data',是否會出現該錯誤? – 2013-02-12 21:56:14

+0

它設法只保存一米(同一個),然後,檢索一個用戶(意思是進入'read_data'),然後失敗並出現這個錯誤(與cron.log中的錯誤相同): ' EOFError:到達文件結尾 – Sebastialonso 2013-02-13 12:43:14

回答

0

我明白了。我給這個電話的網址是錯誤的。 現在一切正常。

如果您依賴別人的信息(如代碼,密鑰,網址),請確保對這些信息有額外的好奇心。最好是失去一些分鐘,而不是一天試圖做一些你不應該做的事情。