Sinatra를 사용하는 동안 데이터베이스와 대화하는 가장 좋은 방법은 무엇입니까?
문제
내가 이해 한 바와 같이, Sinatra 프레임 워크는 레일과 달리 ORM을 제공하지 않습니다. 이 경우 Sinatra 앱에서 DB와 어떻게 대화합니까? 아니면 Sinatra는 DB를 사용하지 않는 앱에 대해서만 있습니까?
해결책
ActiveRecord를 좋아한다면 사용하십시오. 또는 다른 것. 예를 들어 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
다른 팁
Sinatra를 사용하는 경우 추천 할 수 없습니다 Datamapper 충분히. 나는 ActiveRecord에 갇힌 몇 개의 레일 앱이 있으며, 그 단점과 디자인 결함을 끊임없이 저주하고 있습니다. 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를 위해 특별히 만들어졌습니다.
예를 들어, 있습니다 Sinatra Activerecord 확장
원래 Sinatra의 제작자 인 Blake Mizerany가 만들었습니다
그것은 activerecord 헬퍼 방법과 레이크 작업으로 Sinatra를 확장합니다.
또 다른 옵션입니다 시나트라 속편 확장.
이 작은 확장자는 데이터베이스 구성, 마이그레이션 및 속편 어댑터를 Sinatra에 바로 추가합니다.
또는 Sinatra-Redis 또는 Sinatra-Mongo 등. 원하는 것을 검색하십시오.
그러나 독립적 인 라이브러리를 자유롭게 사용할 수도 있습니다. 데이터베이스의 Sinatra 레시피, Sinatra와 함께 인기있는 데이터베이스 매퍼를 사용하는 방법에 대한 몇 가지 예가 나열되어 있습니다. 이에 대한 제안 된 관행이 Datamapper를 사용하고 있다고 언급되었지만, Sinatra 자체의 어떤 것도 이것을 제안하기 때문에 이것이 단순한 선호도라고 생각합니다.