シナトラを使用しているデータベースに話をするための最良の方法は何ですか?
質問
私の理解では、シナトラフレームワークは、Railsのとは違って、ORMを提供していません。その場合には、どのようにシナトラアプリでDBに話をしますか?またはシナトラが唯一のDBを使用しないアプリケーションのためにあるのですか?
解決
は、それを使用します。または、他の何か。 DataMapperの、例えば。 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
他のヒント
、私は非常に十分な DataMapperのにお勧めすることはできません。私はActiveRecordのでこだわっているカップルのRailsのアプリケーションを持っている、と私は常にその欠点と設計上の欠陥をのろいです。あなたはシナトラにしている場合は、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
それはあなたがオームズの一つまたはいくつかのNoSQLアダプタのどちらかを選択することができ、データベースと通信する方法をあなた次第です。利用できる多くのオプションは、そのうちのいくつかは、シナトラのために特別に作られた、あります:
たとえば、シナトラActiveRecordの拡張の
があります
もともとはブレイクMizerany、シナトラ
の作成者によって作成されました
これは、ActiveRecordのヘルパーメソッドとのRakeタスクでシナトラを拡張
別のオプションは、シナトラ続編拡張である。
この小さな拡張は右シナトラにデータベース構成、移行、および続編アダプタを追加します。
またはSO上シナトラ-のRedis、またはシナトラ・モンゴ、と。ちょうどあなたが欲しいものを検索します。
しかし、あなたは同様に自由にデータベースにシナトラレシピrel="nofollow">の 、シナトラで人気のあるデータベースマッパーを使用する方法の例をいくつか記載されています。それは、このための提案練習はDataMapperのを使用していることが挙げられるが、私はシナトラ自体には何もこのことを示唆していないので、これは、単なる好みであることを疑うます。