Каков наилучший способ взаимодействия с базой данных при использовании Sinatra?

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

  •  13-09-2019
  •  | 
  •  

Вопрос

Насколько я понимаю, фреймворк Sinatra, в отличие от Rails, не предоставляет ORM.В таком случае, как вы общаетесь с базой данных в приложении Sinatra?Или Sinatra предназначена только для приложений, которые не используют базу данных?

Это было полезно?

Решение

Если вам нравится ActiveRecord, используйте это.Или что-то еще.Datamapper, например.Для AR с SQLite это работает:

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, я не могу рекомендовать Преобразователь данных достаточно высоко.У меня есть пара приложений Rails, в которых я застрял с 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
Он расширяет Sinatra вспомогательными методами ActiveRecord и задачами Rake

Другим вариантом является Продолжение Сиквела Синатры.
Это небольшое расширение добавляет конфигурацию базы данных, миграции и адаптеры продолжения прямо в Sinatra.

Или синатра-редис, или синатра-монго, и так далее.Просто ищите то, что вам нужно.

Но вы также можете свободно пользоваться любой независимой библиотекой, ознакомьтесь с Рецепты Синатры в базах данных, где приведена пара примеров того, как использовать популярные картографы баз данных с Sinatra.Хотя там упоминается, что рекомендуемой практикой для этого является использование DataMapper, я подозреваю, что это простое предпочтение, потому что ничто в самой Sinatra не предполагает этого.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top