じゃあ今回はActiveResourceでもやってみようかな。とは言っても僕も使ったことないので調べながらヨチヨチと
そもそもActiveResourceってなに?
READMEを和訳されてる方がいらっしゃったので拝読
Active ResourceのREADMEを翻訳してみました
なるほど、リモートにあるRESTリソースにマッピングね。
うん、よくわかんない
要は、RESTfulなAPIをActiveResourceで簡単に扱えますよ、ってことっぽい
まぁ、考えるより体で覚えろっていうじゃない。
とにかくやってみる
RESTfulなwebapiを提供しているサービスといえば、やっぱりtwitterが有名かな。toytterはtwitterもどきなわけだし、toytterで発言したら、twitterにも一緒に発言するようにしちゃおう
twitterの投稿APIも日本語訳を参考に
認証はベーシック認証らしいので、投稿用のAPIは次の様になる
http://(id):(pass)@twitter.com/statuses/update.(json|xml)
それに対応したActiveResourceなTwitterクラスはこんな感じ
class Twitter < ActiveResource::Base USER = "hoge" PASS = "pass" self.site = "http://#{USER}:#{PASS}@twitter.com" class Status < Twitter end end
ActiveResource::Baseを継承させて、APIのURLをself.siteに入れる。statusesは対象のリソース名?なので、ここで設定するurlは/statusesは入れない。
その代わりに、Twitter::Statusクラスを定義してあげればいい。
script/consoleから
> Twitter::Status.post(:update, :status => "activeresource test")
ってやるだけで、Twitterに投稿できる。
これをtoytterでの投稿時に呼ぶようにする。このままじゃ全てのtoytterユーザーが一つのtwitterアカウントで投稿することになるけど、そこはご愛嬌
toytterのuser_controller.rbのupdateメソッドのところに入れる
def update Status.create :user_id => current_user.id, :desc => params[:desc] Twitter::Status.post(:update, :status => params[:desc]) redirect_to "/" end
これでtoytter内で発言すると、twitterにも同じ内容が投稿されるようになりました。
超簡単
押忍
※このエントリはZDNETブロガーにより投稿されたものです。朝日インタラクティブ および ZDNET編集部の見解・意向を示すものではありません。