Merbの開発がなかなか進展しないのでSinatraをちょっと触ってみたところ、
DataMapper、Herokuとの組み合わせが非常に簡単でいい感じでした。

blog.rb
ruby>>
require "rubygems"
require "sinatra"
require "dm-core"
require "haml"

DataMapper::setup(:default, ENV['DATABASE_URL'] || 'sqlite3:db.sqlite3')

class Post
include DataMapper::Resource
property :id, Serial
property :content, Text
auto_upgrade!
end

get "/" do
@posts = Post.all(:order => [:id.desc])
haml :index
end

post "/" do
Post.create(params)
redirect "/"
end

END
@@ index
%h1 Hello, Sinatra!
%ul

  • @posts.each do |post|
    %li= post.content
    %form{:method => :post}
    %textarea{:name => :content}
    %input{:type => :submit, :value => "Post"}
    <<--

config.ru
ruby>>
require "blog.rb"
run Sinatra::Application
<<--

ローカルで起動するには

pre>>
% ruby blog.rb
<<--

もしくは

pre>>
% rack
<<--

でok. rubyの場合はhttp://localhost:4567、Rackの場合は http://localhost:9292 にアクセス。

これをHerokuにデプロイすると、
http://sinatora-blog.heroku.com/
こんな感じで動きます。

posted by genki genki on Tue 14 Jul 2009 at 14:56 with 2 comments
takuma104 takuma104 07/31 18:30
おー、Sinatra+DataMapperいいかんじですねえ。まださわり始めなのですが、DataMapperのシンプルかつ強力さはいろいろ読んでてぐっときてます。

ちなみに、こまかいのですが、このまま $ ruby blog.rb した時、sqlite3ファイルが保存されない(というか生成されない)現象が手元で出ました。(dm-core-0.9.11あたり) DataMapperのログにも何も出ないので、DataMapperのコード追ってみたところ、

DataObjects::URI.parse("sqlite3://db.sqlite3").path # => ""

というのが原因のようです。(この path の値で sqlite3_open しているので、この場合、空文字列のファイル名でファイル生成とかになってるのかな。。)

ので、この場合スキーマの定義は

"sqlite3://#{Dir.pwd}/db.sqlite3"

とかしたほうがよさげです。
瀧内元気 瀧内元気 07/31 18:44
> スキーマの定義

おお、どうもです!

修正しておきました。
Contents rssrss
光ファイバーを二次元振動させて走査するAR用ディスプレイ
因果の取り違え
Swift2's defer for CoffeeScript
mongodb-3.0からcreateIndexのdropDupsが無くなったらしい
mongodb-3.0以降のWiredTigerの設定を動的に変更する方法
一般楕円の高速生成アルゴリズムへの道標
farro mantecatoのレシピ
Droonga関連の記事のまとめ
RuntimeErrorの特定のメッセージに限定してrescueする方法
jQueryでscriptタグを実行せずにappendする
Tags
coffeescriptdefergroongajsmemonodenodejs
Comments rssrss
瀧内元気 瀧内元気: MacOS版は以下にあります genki/ViMouse 01/16 05:40
dsjf dsjf: https://gist.github.com/6bf1bf2c3cbb5eb6e7a7 これでも出... 01/08 23:23
瀧内元気 瀧内元気: おお、チェックしてみます。thx! 12/24 05:23
overisland overisland: Reeder for iPhone もこの UI を実装していますね。 12/24 05:13
瀧内元気 瀧内元気: その情報は見たのですが、以下のサイトによると、現在はまた必要になってるっぽいんですよね。 http:... 12/01 12:20
tkawa tkawa: http://devcenter.heroku.com/articles/rails31_herok... 12/01 10:47
瀧内元気 瀧内元気: どもー。いまはgithubに置いてあります https://github.com/genki/irb... 07/10 08:31
ともち ともち: こんにちは! すばらしいプログラムをありがとうございます。しかし、merbiのドメイン、切れているみ... 07/10 02:30
Services from s21g
YOMU Web小説リーダー
Web小説を音声で楽しむ読み上げリーダー
補助探
公開されている補助金・助成金情報を集約し、条件に合う制度を探しやすくするサービスです。
jotter.me
個人開発者のためのホスティング一体型ノートサービス
ハンドミラー
iPhone向けの手鏡アプリ
ツイプロ(twpro)
Twitterプロフィールの高速検索エンジン