2009-04-22 13 views

Respuesta

26

Si te gusta ActiveRecord, úsalo. O algo mas. Datamapper, por ejemplo. Para AR con SQLite, esto funciona:

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 
+9

dado que 'activerecord' está en desuso, use 'require active_record' en su lugar. – tks

60

Si está utilizando Sinatra, no puedo recomendar lo suficiente DataMapper. Tengo un par de aplicaciones de Rails en las que estoy atascado con ActiveRecord, y maldigo constantemente sus fallas y defectos de diseño. Si estás en Sinatra, DataMapper es una opción muy práctica.

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 
+0

Echaré un vistazo a DataMapper. Gracias por la muestra de código. –

+0

cuando usa 'DataMapper.setup (: predeterminado, "sqlite3 :: memory")', ¿eso es una memoria db db? ¿Cómo persistiría eso en el disco, o cómo abriría un archivo sqlite db existente? – LoveMeSomeCode

+12

'DataMapper.setup (: predeterminado," sqlite3: ruta/a/db/archivo.db ")' –

0

Depende de usted cómo comunicarse con una base de datos, puede elegir cualquiera de los ORM o algún adaptador NoSQL. Hay muchas opciones disponibles, algunos de ellos fueron hechos especialmente para Sinatra:

Por ejemplo, no es Sinatra ActiveRecord Extension
Originalmente creada por Blake Mizerany, creador de Sinatra
Se extiende Sinatra con métodos auxiliares ActiveRecord y tareas Rake

Otra opción es Sinatra Sequel Extension.
Esta pequeña extensión agrega configuración de base de datos, migraciones y adaptadores de Sequel directamente a Sinatra.

O sinatra-redis, o sinatra-mongo, y así sucesivamente. Solo busca lo que quieras.

Pero también puede utilizar libremente cualquier biblioteca independiente, consulte Sinatra Recipes on databases, donde se enumeran algunos ejemplos de cómo utilizar los mapeadores de bases de datos populares con Sinatra. Aunque se menciona allí que la práctica sugerida para esto es usar DataMapper, sospecho que esto es una mera preferencia, porque nada en Sinatra sugiere esto.

Cuestiones relacionadas