我需要每分钟发出一个 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
问题是实际上只有一个仪表每分钟获取数据,而其他所有仪表都没有。这是我的内容cron.log
(它有问题,但我未能找到有关它的有用信息。)
我错过了什么?感谢您的任何见解。