DBにレコード入った

投稿日:


これでさっき作成したモデル経由でDBにレコードが入った。
require 'net/http'
require 'rexml/document'

class ImportCalendar
  @@logger = Logger.new(File.join(RAILS_ROOT, "log", "import.log"))
  
  def self.logger
    @@logger
  end
  
  def self.execute()
    # @TODO
    # バッチ処理なのでorderbyを最適なものに変更
    result = 
      Net::HTTP.get('www.google.com',
                    '/calendar/feeds/' +
                    'fvijvohm91uifvd9hratehf65k@group.calendar.google.com/public/full/?' +
                    'max-results=1&futureevents=true&orderby=starttime&singleevents=true&sortorder=ascending&ctz=Asia/Tokyo')

    doc = REXML::Document.new(result)
    ent = CalendarEntry.new
    doc.elements.each('feed/entry') do |node|
      _id = node.elements['id'].text
      _updated = node.elements['updated'].text
      _title = node.elements['title'].text
      _content = node.elements['content'].text
      _link = node.elements['link'].attributes['href']
      _starttime = node.elements['gd:when'].attributes['startTime']
      _endtime = node.elements['gd:when'].attributes['endTime']
      _where = node.elements['gd:where'].attributes['valueString']
      
      ent.entry_id = _id
      ent.updated = _updated
      ent.title = _title
      ent.content = _content
      ent.link = _link
      ent.starttime = _starttime
      ent.endtime = _endtime
      ent.save
    end
  end
end


Modelクラス側にちゃんとした処理を書いて、バッチ起動クラスから叩くようにすればOKかな。