0

1分ごとに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

問題は、実際には1分ごとに1つのメーターだけがデータを取得し、他のすべてのメーターはそれなしで残されることです。これは私のコンテンツですcron.log(問題はありますが、役立つ情報を見つけることができませんでした)。

私は何が欠けていますか?洞察をありがとう。

4

1 に答える 1

0

わかった。電話をかけるために与えられたURLは間違っていました。すべてがスムーズに機能するようになりました。

他の人の情報(コード、キー、URLなど)に依存している場合は、その情報について特に詳しく調べてください。あなたがすることになっていない何かをしようとする日よりも、それをするのに数分を失う方が良いです。

于 2013-02-13T13:27:22.943 に答える