私が理解しているように、SinatraフレームワークはRailsとは異なり、ORMを提供しません。その場合、SinatraアプリでDBとどのように通信しますか?それとも、SinatraはDBを使用しないアプリ専用ですか?
ActiveRecordが好きなら、それを使ってください。または、他の何か。たとえば、データマッパー。 SQLiteを使用したARの場合、これは機能します。
require 'rubygems' # may not be needed, depending on platform
require 'sinatra'
require 'active_record'
class Article < ActiveRecord::Base
end
get '/' do
Article.establish_connection(
:adapter => "sqlite3",
:database => "hw.db"
)
Article.first.title
end
Sinatraを使用している場合、私はお勧めできません DataMapper 十分に。私はActiveRecordで立ち往生しているいくつかのRailsアプリを持っており、その欠点と設計上の欠陥を絶えず呪っています。Sinatraを使用している場合、DataMapperは非常に実用的な選択肢です。
require "rubygems"
require "sinatra"
require "datamapper"
DataMapper.setup(:default, "sqlite3::memory:")
class Post
include DataMapper::Resource
property :id, Integer, :serial => true
property :title, String
end
Post.auto_migrate!
first_post = Post.new
first_post.title = "First!"
first_post.save
get "/" do
Post.get(1).title
end
データベースとの通信方法はユーザー次第です。ORMまたはNoSQLアダプターのいずれかを選択できます。利用可能なオプションはたくさんありますが、そのうちのいくつかはシナトラのために特別に作られました。
たとえば、 Sinatra ActiveRecord Extension があります
元々はシナトラの作成者であるブレイクミゼラニーによって作成されました
ActiveRecordヘルパーメソッドとRakeタスクでSinatraを拡張します
別のオプションは Sinatra Sequel Extension です。
この小さな拡張機能は、データベース構成、移行、およびSequelアダプターをSinatraに直接追加します。
またはsinatra-redis、またはsinatra-mongoなど。欲しいものを検索するだけです。
ただし、独立したライブラリを自由に使用することもできます。 データベースのSinatraレシピ を確認してください。ここには、Sinatraで人気のあるデータベースマッパーを使用する方法の例がいくつかリストされています。これについて提案されている方法はDataMapperを使用しているとそこに記載されていますが、Sinatra自体にはこれを示唆していないため、これは単なる好みであると思われます。