Как лучше всего общаться с базой данных при использовании Sinatra? - PullRequest
33 голосов
/ 22 апреля 2009

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

Ответы [ 3 ]

59 голосов
/ 24 апреля 2009

Если вы используете Sinatra, я не могу рекомендовать DataMapper достаточно высоко. У меня есть пара приложений Rails, где я застрял с ActiveRecord, и я постоянно ругаю его недостатки и недостатки дизайна. Если вы на Синатре, 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
28 голосов
/ 22 апреля 2009

Если вам нравится 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
0 голосов
/ 24 июля 2015

Вам решать, как взаимодействовать с базой данных, вы можете выбрать один из ORM или какой-либо адаптер NoSQL. Доступно много вариантов, некоторые из них были сделаны специально для Синатры:

Например, есть Расширение Sinatra ActiveRecord
Первоначально созданный Блейк Мизерани, создатель Синатры
Он расширяет Sinatra с помощью вспомогательных методов ActiveRecord и задач Rake

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

Или синатра-редис, или синатра-монго, и так далее. Просто найдите то, что вы хотите.

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

...