api 確認とか ActiveResource 確認とか

curl でレスポンスを確認できたのですが、ActiveResource の試験の方法を調査する必要あり。とりあえずやらなきゃ、なのは

  • ActiveResource な model クラスの作成
  • controller の作成
    • とりあえず index アクションのみ実装の方向
  • それぞれの試験作成

scaffold で作って云々、な方が良いのかなぁ。

例えば

cloudstack な VM の一覧は以下で取得できるんですが

http://fuga.jp/client/api?command=listVirtualMachines

この場合、http://fuga.jp/client/api?command= な site (ここは基本的に固定だな) に対して listVirtualMachines というモデルなオブジェクトを要求する形になるのか。
ええと、rails の REPL ってどうやって動かすんだったかいな。とりあえず簡単な model クラス作って動作確認する必要あり。

class listVirtualMachines < ActiveResource::Base
  self.site = 'http://fuga.jp/'
end

上記を作成して rails console から云々してみりゃ良いのか。REPL って本当に有り難いッスよね。有り難や有り難や。
とは言え、きちんと rails で作った方が良いですね。

$ rails generate model CloudStackAPI
      invoke  active_record
      create    db/migrate/20111210121948_create_cloud_stack_apis.rb
      create    app/models/cloud_stack_api.rb
      invoke    rspec
      create      spec/models/cloud_stack_api_spec.rb
$

で、以下に修正して

class CloudStackApi < ActiveRecord::Base
  self.site = 'http://hoge.jp/'
end

う、site が云々って叱られるな。あ、ActiveResource にしてないしorz
修正してリトライ。

$ rails c
Loading development environment (Rails 3.0.9)
ruby-1.9.2-p180 :001 > CloudStackApi
 => CloudStackApi 
ruby-1.9.2-p180 :002 > CloudStackApi.find(:from => '/client/api?command=listVirtualMachines')
ActiveResource::ClientError: Failed.  Response code = 432.  Response message = Unknown API command: listVirtualMachines%22%7D.xml.
(ry

う。どうもこれはパラメータが微妙らしい。リトライしてみます。

ruby-1.9.2-p180 :010 > CloudStackApi.find(:from => '/client/api', :params => {:command => 'listVirtualMachines'})
ActiveResource::ClientError: Failed.  Response code = 432.  Response message = Invalid request, no command sent.

うーん。以下のコマンドは返事が戻ってくるんだけどなぁ。

$ curl http://fuga.jp/client/api?command=listVirtualMachines

で、よくよく見てみたら以下で、な模様orz

ruby-1.9.2-p180 :017 > CloudStackApi.find(:one, :from => '/client/api', :params => {:command => 'listVirtualMachines'})

戻りが大量すぎで一体何が戻ってきてるのかは不明。どっかに出力を redirect できんかのう。一応配列になってるカンジなのは分かるんですがどうしたものか。