2009-04-22 17 views
32

जैसा कि मैं इसे समझता हूं, रेल के विपरीत, सिनात्रा ढांचा, ओआरएम प्रदान नहीं करता है। उस स्थिति में, आप सिनात्रा ऐप में डीबी से कैसे बात करते हैं? या सिनात्रा केवल उन ऐप्स के लिए है जो डीबी का उपयोग नहीं करते हैं?सिनात्रा का उपयोग करते समय डेटाबेस से बात करने का सबसे अच्छा तरीका क्या है?

उत्तर

26

यदि आप ActiveRecord पसंद करते हैं, तो इसका उपयोग करें। या कुछ और। उदाहरण के लिए डाटामैपर। SQLite के साथ एआर के लिए, यह काम करता है:

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

क्योंकि 'activerecord' को इसके बजाय 'active_record की आवश्यकता है' को बहिष्कृत किया गया है। – tks

60

आप सिनात्रा का उपयोग कर रहे हैं, मैं DataMapper अत्यधिक पर्याप्त की अनुशंसा नहीं कर सकते हैं। मेरे पास कुछ रेल ऐप हैं जहां मैं ActiveRecord से फंस गया हूं, और मैं लगातार अपनी कमियों और डिज़ाइन त्रुटियों को शाप देता हूं। यदि आप सिनात्रा पर हैं, तो डेटामैपर एक बहुत ही व्यावहारिक विकल्प है।

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

मैं डेटामैपर पर एक नज़र डालेगा। कोड नमूना के लिए धन्यवाद। –

+0

जब आप 'DataMapper.setup (: डिफ़ॉल्ट, "sqlite3 :: memory")' का उपयोग करते हैं, तो क्या यह एक आईएम-मेमोरी डीबी है? आप डिस्क पर कैसे बने रहेंगे, या आप मौजूदा sqlite डीबी फ़ाइल कैसे खोलेंगे? – LoveMeSomeCode

+12

'DataMapper.setup (: डिफ़ॉल्ट," sqlite3: पथ/से/डीबी/file.db ")' –

0

यह आपके ऊपर है कि डेटाबेस के साथ संवाद कैसे करें, आप या तो ORMs या कुछ NoSQL एडाप्टर का चयन कर सकते हैं। वहाँ कई विकल्प उपलब्ध हैं, उनमें से कुछ विशेष रूप से सिनात्रा के लिए किए गए:

उदाहरण के लिए, वहाँ है Sinatra ActiveRecord Extension
मूल रूप से ब्लेक Mizerany, सिनात्रा
के निर्माता यह ActiveRecord सहायक तरीकों और रैक कार्यों

साथ सिनात्रा फैली द्वारा बनाई गई

एक और विकल्प Sinatra Sequel Extension है।
यह छोटा एक्सटेंशन डेटाबेस कॉन्फ़िगरेशन, माइग्रेशन, और सीक्वेल एडेप्टर सीधे सिनात्रा में जोड़ता है।

या सिनात्रा-रेडिस, या सिनात्रा-मोंगो, और इसी तरह। बस आप जो चाहते हैं उसे खोजें।

लेकिन आप किसी भी स्वतंत्र पुस्तकालय का स्वतंत्र रूप से उपयोग कर सकते हैं, Sinatra Recipes on databases देखें, जहां सिनात्रा के साथ लोकप्रिय डेटाबेस मैपर का उपयोग करने के कुछ उदाहरण सूचीबद्ध हैं। यद्यपि इसका उल्लेख किया गया है कि इसके लिए सुझाए गए अभ्यास डेटामैपर का उपयोग कर रहे हैं, मुझे संदेह है कि यह केवल वरीयता है, क्योंकि सिनात्रा में कुछ भी स्वयं ही इसका सुझाव नहीं देता है।

संबंधित मुद्दे

 संबंधित मुद्दे