Según tengo entendido, el framework Sinatra, a diferencia de Rails, no proporciona un ORM. En ese caso, ¿cómo hablas con un DB en una aplicación Sinatra? ¿O es Sinatra solo para aplicaciones que no usan una base de datos?¿Cuál es la mejor manera de hablar con una base de datos mientras usa Sinatra?
Respuesta
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
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
Echaré un vistazo a DataMapper. Gracias por la muestra de código. –
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
'DataMapper.setup (: predeterminado," sqlite3: ruta/a/db/archivo.db ")' –
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.
- 1. ¿Cuál es la mejor manera de perfilar una aplicación Sinatra?
- 2. ¿Cuál es la mejor manera de almacenar datos de tendencia?
- 3. ¿Cuál es la mejor manera de usar mongoDB con node.js?
- 4. ¿Cuál es la mejor manera de asegurar una cadena de conexión de base de datos?
- 5. ¿Cuál es la mejor manera de convertir una aplicación simple de sinatra a páginas html estáticas?
- 6. ¿Cuál es la mejor manera de hacer conexiones de base de datos por usuario en Rails
- 7. ¿Cuál es la mejor manera de actualizar datos en una tabla mientras está en uso sin bloquear la tabla?
- 8. ¿Cuál es la mejor manera de conectar y usar una base de datos sqlite desde C#
- 9. ¿Cuál es la mejor manera de copiar una base de datos?
- 10. ¿Cuál es la mejor manera de perfilar una base de datos sqlserver 2005 para el rendimiento?
- 11. ¿Cuál es la mejor manera de almacenar archivos multimedia en una base de datos?
- 12. ¿La mejor manera de guardar una respuesta en Sinatra?
- 13. ¿Cuál es la mejor manera de sincronizar de una manera desde una base de datos del servidor al iPhone?
- 14. Fitnesse- ¿Deberían las pruebas hablar con la base de datos?
- 15. ¿Cuál es la mejor manera de migrar datos en django
- 16. ¿Cuál es la mejor manera de almacenar un valor monetario en la base de datos?
- 17. ¿Cuál es la mejor base de datos de objetos Java?
- 18. ¿Cuál es la "mejor" base de datos para incrustado?
- 19. ¿Cuál es la mejor manera de construir una NSCompoundPredicate compleja?
- 20. ¿Cuál es la mejor manera de diseñar este problema particular de base de datos/SQL?
- 21. ¿Cuál es la mejor manera de almacenar información de zona horaria en mi base de datos?
- 22. ¿Cuál es la mejor manera de usar SOAP con Ruby?
- 23. ¿Cuál es la mejor forma de archivar datos en una base de datos Oracle?
- 24. ¿Cuál es la mejor manera de validar datos en mongo?
- 25. ¿Cuál es la mejor manera de trabajar con datos de SQL Server de forma no programática?
- 26. ¿Cuál es la mejor base de datos para usar con un programa Java?
- 27. ¿Cuál es la mejor forma de almacenar datos individuales no repetitivos en una base de datos?
- 28. ¿Cuál es la mejor manera de visualizar una DataTable mientras se depura?
- 29. ¿Cuál es la mejor manera de almacenar/recuperar datos para un escritorio sin usar una base de datos?
- 30. ¿Cuál es la mejor manera de administrar la concurrencia en una aplicación de acceso a la base de datos?
dado que 'activerecord' está en desuso, use 'require active_record' en su lugar. – tks