Sinatra를 사용하는 동안 데이터베이스와 대화하는 가장 좋은 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/777724

  •  13-09-2019
  •  | 
  •  

문제

내가 이해 한 바와 같이, 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 자체의 어떤 것도 이것을 제안하기 때문에 이것이 단순한 선호도라고 생각합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top