okTwitterでの発言をsqlite3に溜めるようにした

今はただのproxyだけど、とりあえず溜めるようにしてみた。
さっそくActiveRecordを使って、発言内容と日時を保存してる。DBのファイルのパーミッションがterminalで実行してる時のユーザとapache経由でcgiとして起動してる時のユーザ両方で読めるようにするのに気づくまでが長かった。何事もプラクティスだな。

#!/usr/bin/ruby
require 'cgi'
require 'rubygems'
require 'twitter'
require 'active_record'

print "Content-Type: text/xml\n\n"

c = CGI.new
message = Kconv.kconv(c['message'],Kconv::UTF8)

if message == ""
  puts '<twit><status>error</status><message>message is empty</message></twit>'
  exit(true)
end

twit = Twitter::Base.new("dnp","password")
twit.update(message)
puts '<twit><status>success</status><message>' << message << '</message></twit>'

ActiveRecord::Base.establish_connection(
                                        :adapter => 'sqlite3',
                                        :dbfile => '/var/sqlite3/oktwitter'
                                        )

class UpdatesInit < ActiveRecord::Migration
  def self.up
    create_table(:updates){|t|
      t.column :text, :string, :limit => 200, :null => false
      t.column :time, :int, :null => false
     }
  end

  def self.down
    drop_table :updates
  end
end

# model
class Update < ActiveRecord::Base
  def to_s
    return  "#{id}@#{time}: #{text}"
  end
end

Update.create(
              :text => message,
              :time => Time.now.to_i
              )