自分メモ

Rails て AR のデータソースは Web API のレスポンスでも良いのか。
Fog と上手に組み合わせることができたら無敵な気がしてるんですが、これはやはり UI の勉強をしなさい、という事なのかどうか。

どこまでムダかは分からんが

今の方法ではなくて WebAPI なデータソースの AR なサブクラス、って作れたら面白げ。でっち上げてみて rails c で云々してみるか。

追記

手を動かしつつ諸々を控えてみることに。
とりあえず単純に model を追加してみることにします。属性ナシ、で作るとどうなるのかな。

$ rails g model VirtualMachine
     invoke  active_record
      create    db/migrate/20130914063000_create_virtual_machines.rb
      create    app/models/virtual_machine.rb
      invoke    rspec
      create      spec/models/virtual_machine_spec.rb
      invoke      factory_girl
      create        spec/factories/virtual_machines.rb

属性指定スルーでも migration は作られるのかw
試験とかどうすりゃ良いか微妙ですが、深く考えずに進めてみます。と、その前に Conn な model も属性追加するんだった。rails generate migration か。

rails generate migration add_provider_to_conn
      invoke  active_record
      create    db/migrate/20130914064108_add_provider_to_conn.rb

以下にして

class AddProviderToConn < ActiveRecord::Migration
  def change
    add_column :conns, :provider, :string
  end
end

以下を実行しとくのか。

$ bundle exec rake db:migrate
$ bundle exec rake db:test:prepare

ええと、scaffold で作成された model をこうして更新した場合、追従は手作業になるのかな。とりあえず development.sqlite3 に反映されているのは確認しました。
model には反映されていないので手動で修正を盛り込み。
つーことは app/views/conns 配下も同様なのか。つうかよくよく考えるに spec 配下完全スルーだよな。とりあえず諸々確認用のプロジェクトってことでユルくいきます。
とりあえず既存のデータに追加しとかなきゃね、ってことでローカルで確認。しかしこれ、テキストでも良いのだけれど、入力はテキストボックスじゃ駄目だな。つー事は別途もひとつ model の追加が必要になるのか。

とりあえず

データてきには何とかなりそげなので動かしてみたら何か動いた。ちょっとレスポンスがアレ。つうかこれ的なソレって redis で Hash で持つのが良いのか model にした方が良いのかな判断基準てきに微妙ですね。
つうかやっぱこれって cache すべき。

  def self.find_by_conn(conn)
    virtual_machines = Hash::new
    uri = URI.parse(conn.end_point)
    compute = Fog::Compute.new(:provider => conn.provider,
                               :cloudstack_api_key => conn.access_key,
                               :cloudstack_secret_access_key => conn.secret_access_key,
                               :cloudstack_host => uri.host,
                               :cloudstack_port => uri.port,
                               :cloudstack_path => uri.path,
                               :cloudstack_scheme => uri.scheme,
                               )
    virtual_machines[:conn] = conn
    virtual_machines[:virtual_machines] = compute.list_virtual_machines
    virtual_machines
  end

あと、cloudstack 限定だしorz
このあたりの抽象化は別途で考えないとアレ。

  • compute な接続情報を属性として持っておいて云々
  • virtual_machines も属性にしときゃ良いのかどうか
    • できれば private なナニ
  • Ruby のクラスの private member な定義の方法忘れたorz

そろそろ

メシ製造に着手するので離脱します。のでエントリ投入。