2011-09-08 18 views
15

पर डेटाबेस कनेक्शन वाह मैं दिनों में इस पर अटक गया हूं। मुझे Heroku पर डेटाबेस.मिल से कनेक्ट करने में समस्या हो रही है। मैं सीडर और रूबी पर हूं 1.9.2। मेरे देव और परीक्षण डीबीएस sqlite3 हैं और prod डीबी cedar नियमों का सामना करने के लिए postgreSQL है।हेरोकू

Rails.env.production? ? (env = "production") : (env = "development") 
dbconfig = YAML::load(File.open('config/database.yml'))[env] 
ActiveRecord::Base.establish_connection(dbconfig) 

सभी स्थानीय में अच्छी तरह से चला जाता है लेकिन जब मैं Heroku करने के लिए धक्का, मैं:

ArgumentError: syntax error on line 17, col 0: `adapter = uri.scheme' 
from /usr/local/lib/ruby/1.9.1/syck.rb:135:in `load' 

ऐसा लगता है कि Heroku की तरह मेरे डेटाबेस पसंद नहीं करता यहाँ मेरी रूबी स्क्रिप्ट में कोड है। YML। यहाँ एक अवलोकन है:

development: 
    adapter: sqlite3 
    database: db/development.sqlite3 
    pool: 5 
    timeout: 5000 

test: 
    adapter: sqlite3 
    database: db/test.sqlite3 
    pool: 5 
    timeout: 5000 

production: 
    adapter: postgresql 
    encoding: unicode 
    database: foo 
    port: 5432 
    host: foobar.amazonaws.com 
    username: foo 
    password: bar 
+0

क्या आपने कभी डेटाबेस से कनेक्ट करने का प्रबंधन किया है? जवाब वास्तव में कनेक्ट करने के लिए एक पूर्ण समाधान शामिल नहीं प्रतीत होता है। – baash05

उत्तर

27

पहले, Heroku अधिलेखित कर देता है अपने config/database.yml अपनी ही Heroku विशेष संस्करण के साथ। इस प्रकार हेरोकू स्वचालित रूप से आपके एप्लिकेशन को अपने पोस्टग्रेस्क्ल डेटाबेस से जोड़ता है। अपने स्वयं के posgresql डेटाबेस के बारे में हेरोोकू को बताने के लिए, आपको सही config variables सेट करना चाहिए और आप अपने भंडार में config/database.yml से उत्पादन डेटाबेस छोड़ सकते हैं क्योंकि हेरोोकू वैसे भी इसे अनदेखा कर देगा।

दूसरा, config/database.yml फ़ाइल एक ईआरबी टेम्पलेट एक वाईएएमएल फ़ाइल के लिए है। आप पहले YAML के माध्यम से आउटपुट चलाने से पहले मूल्यांकन राशि (ईआरबी) के माध्यम से फ़ाइल सामग्री चला सकते हैं।

+0

ठीक है तो अगर मैं उत्पादन में हेरोकू साझा डीबी रखना चाहता हूं तो मैं उपर्युक्त तीन पंक्तियों को हटा दूं और हेरोोकू को डीबी का प्रबंधन करने दें। धन्यवाद! – PEF

+0

सही। यदि आप हेरोोक पोस्टग्रेस एडन (हेरोकू के माध्यम से साझा और समर्पित डेटाबेस) का उपयोग करना चाहते हैं, तो कुछ भी नहीं करें। यदि आप अमेज़ॅन आरडीएस एडन का उपयोग करना चाहते हैं, तो कुछ भी नहीं करें। उन दोनों एडॉन्स ने आपके एप्लिकेशन के 'DATABASE_URL' कॉन्फ़िगर चर को सेट किया है, जो हेरोकू की 'config/database.yml' पार्स है। यदि आप अपने डेटाबेस सर्वर का उपयोग करना चाहते हैं, तो आपको अपने एप्लिकेशन के 'DATABASE_URL' कॉन्फ़िगरेशन चर को अपने डेटाबेस सर्वर पर इंगित करने के लिए सेट करना चाहिए, और आपको अपने' config/database.yml' को स्पर्श नहीं करना चाहिए। – yfeldblum

+8

यदि आप देखना चाहते हैं कि उसके कॉन्फ़िगरेशन/डेटाबेस.आईएमएल में उसकेोकू क्या रखता है तो बस "heroku run bash" और "cat config/database.yml" करें;) –