webフレームワークのWavesを試してみた

Tsukasa OISHI

 あまり時間がなかったのだけど、Rubyで書かれたwebフレームワークのWavesをチュートリアルに従って試してみました。
 まずはインストール。

sudo gem install waves

アプリの作成。

waves blog

つづいて configuration/default.rbでDBの設定をします。Railsでいうところのconfig/database.ymlと同じかな。

module Blogs
  module Configurations
    class Default < Waves::Configurations::Default
      database :host => "localhost", :adapter => 'mysql', :database => 'blogs',
        :user => 'root', :password => ''
    end
  end
end

つづいてmigrationの作成。

rake schema:migration name=initial_schema

すると、schema/migrations/001_initial_schema.rbにmigrationファイルが作成される。このあたりはRailsとほぼ一緒だね。Rails同様、作りたいテーブルのカラムを定義する。

class InitialSchema < Sequel::Migration

  def up
    create_table :entries do
      primary_key :id
      text :name
      text :title
      text :summary
      text :content
    end
  end

  def down
    drop_table :entries
  end
end

こんな感じ。primary_keyは明示的に指定してやんないといけないのかな。Railsよりは書きやすいです。
それからmigrateの実行。

rake schema:migrate

DBを確認すると、確かにentriesテーブルが作成されています。

それからコンソールで確認してみる。このirbみたいなやつはRailsにもあるけど、ぼくはほとんど使ったことがありません。

[tsukasa@] $ waves-console 
irb(main):001:0> M=Blog::Models
=> Blog::Models
irb(main):002:0> M::Entry.all
=> []

どうやら、Blogという名前空間の下に、すべてのモジュールが存在しているよう。Blog::Modelsで、すべてのModelを指し示していて、さらにその下にEntryというクラスが存在している。Wavesも、テーブル名は複数形、モデルは単数形の名前になるみたい。

irb(main):002:0> E = Blog::Models::Entry
=> Blog::Models::Entry
irb(main):003:0> E.create :title => "article title", :name => "tsukasa", :content => "yes", :summary => "y"
=> #<Blog::Models::Entry @values={:content=>"yes", :summary=>"y", :name=>"tsukasa", :title=>"article title", :id=>1}>

こんな感じで、モデルのインスタンスを作成できる。
そして、てっきりmodelsディレクトリの下にentry.rbでも作られるのかと思っていたら、そんなものはなかった。ふーん。

とりあえず、今日はここまで。明日はビューをやってみよう。