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でも作られるのかと思っていたら、そんなものはなかった。ふーん。
とりあえず、今日はここまで。明日はビューをやってみよう。