A quanto ho capito, il framework Sinatra, a differenza di Rails, non fornisce un ORM. In tal caso, come parli con un DB in un'app di Sinatra? O è Sinatra solo per le app che non usano un DB?Qual è il modo migliore per parlare con un database mentre usi Sinatra?
risposta
Se ti piace ActiveRecord, usa quello. O qualcos'altro. Datamapper, per esempio. Per AR con SQLite, questo funziona:
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
Se stai usando Sinatra, non posso raccomandare DataMapper vivamente. Ho un paio di app Rails in cui sono bloccato con ActiveRecord e continuo a maledire le sue imperfezioni e difetti di progettazione. Se sei su Sinatra, DataMapper è una scelta molto pratica.
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
Dare un'occhiata a DataMapper. Grazie per il codice di esempio. –
quando usi 'DataMapper.setup (: default, "sqlite3 :: memoria")', è un db im-memory? Come vorresti persistere su disco, o come vorresti aprire un file db sqlite esistente? – LoveMeSomeCode
'DataMapper.setup (: default," sqlite3: path/to/db/file.db ")' –
Spetta all'utente decidere come comunicare con un database, è possibile scegliere tra uno degli ORM o un adattatore NoSQL. Ci sono molte opzioni disponibili, alcune delle quali sono state fatte apposta per Sinatra:
Ad esempio, v'è Sinatra ActiveRecord Extension
Originariamente creato da Blake Mizerany, creatore di Sinatra
Si estende Sinatra con metodi di supporto ActiveRecord e compiti Rake
Un'altra opzione è Sinatra Sequel Extension.
Questa piccola estensione aggiunge la configurazione del database, le migrazioni e gli adattatori Sequel direttamente in Sinatra.
O sinatra-redis, o sinatra-mongo, e così via. Cerca solo quello che vuoi.
Ma si può anche utilizzare liberamente qualsiasi libreria indipendente, controlla la Sinatra Recipes on databases, in cui è elencato un paio di esempi di come utilizzare mapper di database popolari con Sinatra. Anche se è stato detto che la pratica suggerita per questo sta usando DataMapper, sospetto che questa sia una semplice preferenza, perché nulla in Sinatra stesso suggerisce questo.
- 1. Qual è il database "migliore" per l'embedded?
- 2. Qual è il modo migliore per testare un'app per rails?
- 3. Qual è un modo migliore per convertire una semplice app sinatra in pagine html statiche?
- 4. Qual è il modo migliore per sviluppare un progetto C# con un backend MySQL?
- 5. Qual è il modo migliore per supportare più database per un prodotto .NET?
- 6. Qual è il modo migliore per iniziare con PyQt 5?
- 7. qual è il modo migliore per stampare informazioni con R?
- 8. Qual è il modo migliore per eseguire codice Java sandboxed?
- 9. Qual è il modo migliore per costruire un NSCompoundPredicate complesso?
- 10. Qual è il modo migliore per aggiungereObserver/removeObserver con NSNotificationCenter?
- 11. Qual è il modo migliore per chiudere un ramo Mercurial?
- 12. Qual è il modo migliore per memorizzare un array in un database relazionale?
- 13. Qual è il modo migliore per documentare il codice f #?
- 14. C'è un modo per parlare con OneNote tramite il codice?
- 15. Qual è il modo migliore per creare una ricerca whois?
- 16. Qual è il modo migliore per ridimensionare un oggetto BitmapData?
- 17. Qual è il modo migliore per memorizzare un database MySQL nel controllo del codice sorgente?
- 18. Qual è il modo migliore per esportare enormi cataloghi Magento
- 19. Qual è il modo migliore per seminare un database in Rails?
- 20. Il modo migliore per copiare un database (SQL Server 2008)
- 21. Qual è il modo migliore per memorizzare un valore in denaro nel database?
- 22. Qual è il modo migliore per inizializzare un attore dal database
- 23. qual è il modo migliore per conservare intervallo di tempo in un database del server SQL
- 24. Qual è il modo migliore per memorizzare singoli dati non ripetibili in un database?
- 25. Qual è il modo migliore per effettuare backup automatici?
- 26. Qual è il modo migliore per "ripristinare" le modifiche?
- 27. Qual è il modo migliore per riutilizzare il parser Lua?
- 28. Qual è il modo migliore per creare prodotti interni?
- 29. Qual è il modo migliore per allegare il database esistente a sql localdb?
- 30. Il modo migliore per evitare la duplicazione nel database mysql
poiché "activerecord" è obsoleto, utilizzare "require active_record". – tks