33 votes

Quelle est la meilleure façon de communiquer avec une base de données en utilisant Sinatra ?

Si je comprends bien, le framework Sinatra, contrairement à Rails, ne fournit pas d'ORM. Dans ce cas, comment parler à une base de données dans une application Sinatra ? Ou Sinatra est-il uniquement destiné aux applications qui n'utilisent pas de base de données ?

60voto

Bob Aman Points 19110

Si vous utilisez Sinatra, je ne peux pas recommander DataMapper assez bien. J'ai quelques applications Rails où je suis coincé avec ActiveRecord, et je suis constamment en train de maudire ses lacunes et ses défauts de conception. Si vous êtes sur Sinatra, DataMapper est un choix très pratique.

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

29voto

Mike Woodhouse Points 27748

Si vous aimez ActiveRecord, utilisez-le. Ou quelque chose d'autre. Datamapper, par exemple. Pour AR avec SQLite, cela fonctionne :

require 'rubygems' # may not be needed, depending on platform
require 'sinatra'
require 'activerecord'

class Article < ActiveRecord::Base
end

get '/' do
  Article.establish_connection(
    :adapter => "sqlite3",
    :database => "hw.db"
  )
  Article.first.title
end

0voto

user Points 1438

C'est à vous de décider comment communiquer avec une base de données, vous pouvez choisir l'un des ORM ou un adaptateur NoSQL. Il existe de nombreuses options, dont certaines ont été spécialement conçues pour Sinatra :

Par exemple, il y a Extension Sinatra ActiveRecord
Créé à l'origine par Blake Mizerany, créateur de Sinatra.
Il étend Sinatra avec des méthodes d'aide ActiveRecord et des tâches Rake.

Une autre option est Sinatra Sequel Extension .
Cette petite extension ajoute la configuration des bases de données, les migrations et les adaptateurs Sequel directement dans Sinatra.

Ou sinatra-redis, ou sinatra-mongo, et ainsi de suite. Il suffit de chercher ce que vous voulez.

Mais vous pouvez tout aussi bien utiliser librement n'importe quelle bibliothèque indépendante, vérifier la Recettes de Sinatra sur les bases de données où figurent quelques exemples d'utilisation de mappeurs de bases de données populaires avec Sinatra. Bien qu'il y soit mentionné que la pratique suggérée pour cela est d'utiliser DataMapper, je soupçonne qu'il s'agit d'une simple préférence, car rien dans Sinatra lui-même ne le suggère.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X