読者です 読者をやめる 読者になる 読者になる

〜Gauche on Railsへの道〜 2. ActiveRecord 風のものを作る。その1

Gauche

いよいよ Railsらしい ActiveRecordを作る事にしました。今日はイントロ・・・・

Gauche のオブジェクトシステム

Gauche のオブジェクトシステムは、CLOS(Common Lisp Object System)を影響を大きく受けています。CLOSの考え方は C++, Java, Ruby 等とは大きく違います。

http://practical-scheme.net/gauche/man/gauche-refj_62.html#SEC167

Gauche on Railsの active-record の仕様

クラス名は lisp っぽく - でつなぐ事にします。active-record の仕様ですがこんな感じになると思います。

(define-class <todo> (<active-record>))
(set! todo (make <todo> :due "2008/02/12" :task "打ち合わせ"))
(task-of todo)                    # => "打ち合わせ"
(set! (due-of todo) "2008/02/22")
(save todo)                       # todoをtodosテーブルに格納
(find <todo> 1)                # todosテーブルのid=1のレコードを取得

これは、以下の Ruby コードに対応します

class Todo << ActiveRecord; end
todo = Todo.new(:due => "2008/02/12", :task =>"打ち合わせ")
todo.task               # => "打ち合わせ"
todo.due = "2008/02/22"
todo.save               # todoをtodosテーブルに格納
Todo.find(1)           # todosテーブルのid=1のレコードを取得


.