每当没有运行方法没关系

时间:2013-02-12 20:56:03

标签: ruby-on-rails ruby-on-rails-3 cron whenever

我需要每分钟发出一次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

我正在使用Whenever for this。这就是我的schedule.rb看起来像

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

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

问题在于,实际上每分钟只有一个仪表获取其数据,而其他所有仪表都没有它。 This is cron.log的内容(它有问题,但我找不到有用的信息。)

我错过了什么?感谢您的任何见解。

1 个答案:

答案 0 :(得分:0)

我明白了。我被给予拨打电话的网址是错误的。 现在一切顺利。

如果您依赖其他人的信息(如代码,密钥,网址),请确保对该信息更加好奇。最好是失去一些时间来做这件事,而不是一天试图做一些你不应该做的事情。