ひきつづきRoR on GAE/Jを色々みているところ。
このソースとか見てみた。(人生初git)
ぽかぽか陽気 - ずっと君のターン
このインフラを試すために、YARBLという小さいアプリケーションを作成した。このアプリではブログを作成して記事を投稿できる。コメントやその他のステキな機能はなんにも用意されていない。それでもこれは実際に動作している。YARBLではBeeUとBumbleを使用した。BeeUを使って管理者としてログインしたユーザーだけが実際に記事投稿したりブログを変更できるようにしている。これらの機能のサポートはGoogle UserServiceを使えば非常に簡単だった。
モデルとかもこんな感じだったり。
class Blog
include Bumble
ds :name, :owner_id, :created_at
belongs_to :owner, Person
has_many :posts, :Post, :blog_id, :iorder => :created_at
end
よくわからんですが、key-valueコーディング的な何かを意識しなくてもそのまま出来ちゃってるっぽい。
どうなってるのやら。
lib/bumble/bumble.rbってのがあって、
require 'java'
module Bumble
module DS
import com.google.appengine.api.datastore.DatastoreServiceFactory
import com.google.appengine.api.datastore.Entity
import com.google.appengine.api.datastore.FetchOptions
import com.google.appengine.api.datastore.KeyFactory
import com.google.appengine.api.datastore.Key
import com.google.appengine.api.datastore.EntityNotFoundException
import com.google.appengine.api.datastore.Query
import com.google.appengine.api.datastore.Text
Service = DatastoreServiceFactory.datastore_service
end
とか
# returns either an object matching the conditions, or nil
def find(conditions = {})
query = DS::Query.new(self.name)
conditions.each do |k, v|
query = query.add_filter(k.to_s, DS::Query::FilterOperator::EQUAL, v)
end
result = DS::Service.prepare(query).asSingleEntity
if result
create_from_entity(result)
else
result
end
end
とかとか。GAEのJava用ライブラリに渡してるだけっぽい。でもこんなのとか正直なんのこっちゃ。
# defines zero or more data store attributes - will create attribute accessors for these
def ds(*names)
names.each do |name|
self.class_eval <
def #{name}
if defined?(@#{name})
@#{name}
else
@#{name} = __ds_get(#{name.inspect})
end
end
def #{name}=(value)
__ds_set(#{name.inspect}, value)
@#{name} = value
end
DEF
end
end
みたいなゆるいエントリはやっぱこっちに書く感じだなあ
Blogの主はこの本書いた人みたいですな。

著者:Ola Bini
販売元:Apress
発売日:2007-09-24
クチコミを見る
コメント