2013-09-27 9 views
6

मेरे पास डेटाबेस और अनुयायी डेटाबेस के साथ उसकेोकू पर तैनात रेल ऐप पर रूबी है।क्या आप अनुयायी डीबी पर हेरोकू कंसोल चला सकते हैं?

मैं आम तौर पर डेटा को देखने के लिए "हेरोकू रन रेल कंसोल" करता हूं, और मुझे आश्चर्य है कि अगर मैं अनुयायी डेटाबेस पर ऐसा कर सकता हूं तो मैं गलती से चीजों को लिख/हटा नहीं सकता हूं। मुझे पता है कि यह आसान होना चाहिए, लेकिन मुझे इस पर प्रलेखन प्रतीत नहीं होता।

धन्यवाद!

उत्तर

-1

एक डेटाबेस अनुयायी मास्टर डेटाबेस की एकमात्र प्रतिलिपि है जो मास्टर डेटाबेस डेटा के साथ अद्यतित रहता है। चूंकि लिखते हैं और अन्य डेटा संशोधनों को मास्टर डेटाबेस में प्रतिबद्ध किया जाता है, अनुवर्ती डेटाबेस में वास्तविक समय में, परिवर्तनों को स्ट्रीम किया जाता है।

स्रोत - https://devcenter.heroku.com/articles/heroku-postgres-follower-databases

+0

धन्यवाद, लेकिन मेरे सवाल का मैं अनुयायी डेटाबेस पर सांत्वना चलाने के लिए कि क्या कर सकते हैं (ताकि केवल पढ़ने कंसोल में अनुमति दी जाती है, और मैं गलती से मास्टर पर चीजों को नष्ट नहीं है) है। – David

4

आप अपने स्थानीय कंसोल से ऐसा कर सकते हैं। बस इसे आग लगाना:

rails console 

फिर आपको उसके अनुयायी डेटाबेस के लिए उसके जानकारी डेटाबेस की कनेक्शन जानकारी चाहिए। आप इसे https://postgres.heroku.com/databases/ से पुनर्प्राप्त कर सकते हैं। बस प्रासंगिक डेटाबेस क्लिक करें और निम्न जानकारी के साथ एक हैश आवंटित:

ActiveRecord::Base.establish_connection(follower_db) 

अब किसी भी प्रश्न आप कंसोल में प्रवेश पर चलाया जाएगा:

follower_db = {:adapter => "postgresql", 
:host  => "myhost", 
:username => "myuser", 
:password => "mypass", 
:database => "somedatabase"} 

अब कंसोल से इस दूरस्थ डेटाबेस से कनेक्ट यह डीबी

+3

यदि आप 'heroku config' चलाते हैं तो आप अनुयायी का नाम ढूंढ सकते हैं और फिर इसे सीधे कोड में कॉल कर सकते हैं: 'ActiveRecord :: Base.establish_connection (ENV [' HEROKU_POSTGRESQL_FOLLOWER_URL ']) ' –

0

कंसोल निश्चित रूप से इसकी जगह है, लेकिन यदि मैं यह जांचना चाहता हूं कि डेटाबेस में कौन सा डेटा है तो मैं सीधे ActiveRecord आदि के बिना उस पर सीधे देखना पसंद करूंगा। मुझे कई उदाहरण मिल गए हैं जहां कंसोल का उपयोग करने के लिए आप जेनरेट किए गए एसक्यूएल को किसी भी तरह से सुनिश्चित करने के लिए जांचते हैं कि कोई स्कोप नहीं है (उदाहरण के लिए) फिसल रहा है।

मैं सुझाव दूंगा कि आप उपयोग करने की आदत में शामिल होने का प्रयास करें कंसोल के बजाय एक एसक्यूएल इंटरफ़ेस (PgAdminIII शायद) - यदि आप क्लाइंट से कनेक्ट करने में परेशानी नहीं करना चाहते हैं तो एक हेरोकू डेटाकलिप भी काम करेगा (हालांकि psql कनेक्शन स्ट्रिंग आपको डेटाबेस पेज से दी गई है)।

0

अगर आप गलती से सैंडबॉक्स झंडा

heroku run console --sandbox --app app-name 

साथ सामान को हटाने, सांत्वना चलाने के बारे में चिंतित हैं, तो आपके परिवर्तन वापस लुढ़का दिया जाएगा जब आपका सत्र समाप्त नहीं।

0

यह आपके हेरोकू ऐप में FOLLOWER_DATABASE_URL पर्यावरण चर से अनुयायी डेटाबेस प्रमाण-पत्रों का उपयोग करेगा जो एक रेल कंसोल शुरू करने के लिए है जो सीधे प्रचारित डेटाबेस के बजाय अनुयायी को जोड़ता है। आम तौर पर रेल को DATABASE_URL से डिफ़ॉल्ट रूप से पढ़ने के लिए सेट किया जाता है, और यह आपके कंसोल सत्र की अवधि के लिए इसे एक अलग मान पर सेट करता है।

heroku run 'DATABASE_URL=$FOLLOWER_DATABASE_URL rails console'

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