おおいしつかさ


旅行とバイクとドライブと料理と宇宙が好き。
Ubie Discoveryのプログラマ。
Share:  このエントリーをはてなブックマークに追加

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

 あまり時間がなかったのだけど、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でも作られるのかと思っていたら、そんなものはなかった。ふーん。

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