2009-04-22 18 views

risposta

26

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

poiché "activerecord" è obsoleto, utilizzare "require active_record". – tks

60

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

Dare un'occhiata a DataMapper. Grazie per il codice di esempio. –

+0

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

+12

'DataMapper.setup (: default," sqlite3: path/to/db/file.db ")' –

0

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.

Problemi correlati