2016-04-29 6 views
5

मेरी स्थानीय मशीन पर, मैं डेटाबेस.इम्ल फ़ाइल में सभी संवेदनशील जानकारी के लिए पर्यावरण चर सेट करना चाहता हूं। मेरे फ़ाइल इस तरह दिखता है:डेटाबेस.एमएलएल फ़ाइल में रेल पर्यावरण चर कैसे सेट करें?

default: &default 
    adapter: mysql2 
    encoding: utf8 
    pool: 5 
    username: <%= ENV['DATABASE_USERNAME'] %> 
    password: <%= ENV['DATABASE_PASSWORD'] %> 
    socket: <%= ENV['SOCKET'] %> 

development: 
    <<: *default 
    database: <%= ENV['DEVELOPMENT_DATABASE'] %> 

test: 
    <<: *default 
    database: #JetStreamIQ-2_0_test 

production: 
    <<: *default 
    database: <%= ENV['PRODUCTION_DATABASE'] %> 
    username: <%= ENV['DATABASE_USERNAME'] %> 
    password: <%= ENV['DATABASE_PASSWORD'] %> 

मैंने सोचा था कि मैं सिर्फ अपनी Bashrc फाइल में इन वातावरण चर सेट कर सकते हैं, लेकिन यह काम करने लगता है। मेरे .bashrc फ़ाइल इस तरह दिखता है:

export DATABASE_USERNAME="root" 
export DATABASE_PASSWORD="*****" 
export SOCKET="/var/run/mysqld/mysqld.sock" 
export DEVELOPMENT_DATABASE="shoppe_development" 
export PRODUCTION_DATABASE="#" 

जब मैं

rails s 

साथ अपने सर्वर चलाने मैं एक त्रुटि मिलेगा जिसमें बताया गया:

Access denied for user 'root'@'localhost' (using password: YES) 

मैं समझता हूँ कि वहाँ के साथ एक समस्या यह है कि डेटाबेस उपयोगकर्ता नाम और पासवर्ड जिस तरह से मैंने अपना डेटाबेस.आईएमएल फ़ाइल कॉन्फ़िगर किया है, लेकिन मुझे यकीन नहीं है कि यह क्या है।

क्या मुझे कुछ बड़ा याद आ रहा है? कोई भी सहायताकाफी प्रशंसनीय होगी।

धन्यवाद!

उत्तर

1

क्या यह एक टाइपो है या आप वास्तव में JETSTREAMIQ_DATABASE_PASSWORD सेट कर रहे हैं लेकिन फिर DATABASE_PASSWORD का उपयोग अपने database.yml में कर रहे हैं? क्योंकि वह ऐसा करेगा।

क्या आप mysql कमांड लाइन ऐप का उपयोग करके सीधे वास्तविक मानों का उपयोग करके mysql से कनेक्ट कर सकते हैं?

+0

कोई टाइपो नहीं था; इसके बारे में खेद है, मैंने अभी अपनी पोस्ट संपादित की है। हां, मैं अपने bashrc फ़ाइल में मानों से जुड़ सकता हूं अगर मैं बस mysql कमांड लाइन का उपयोग करते समय उन्हें दर्ज करता हूं। – Mark

11

मैं यहां कुछ सुझाव देना चाहता हूं।

  1. आप जो भी प्राप्त कर रहे हैं उसका परीक्षण करने के लिए आप erb के माध्यम से डेटाबेस.मिल चला सकते हैं। उदाहरण के लिए, erb config/database.yml। यह आपको यह निर्धारित करने में मदद करेगा कि समस्या क्या हो सकती है।

  2. आप set कमांड के साथ अपने खोल में हर पर्यावरण चर सेट सेट कर सकते हैं। यह आपको यह पुष्टि करने की अनुमति देगा कि आप जिस पर्यावरण चर की अपेक्षा कर रहे हैं उसे सेट किया जा रहा है (.bashrc में)।

आशा है कि यह सहायक होगा।

+2

यह 'erb config/database.yml' कमांड के साथ एक अच्छी चाल है। मुझे नहीं पता था कि आप ऐसा कर सकते हैं। जब मैं उस आदेश को चलाता हूं, तो यह दिखाता है कि जिन क्षेत्रों में मैंने पर्यावरण चर परिभाषित किया है वे खाली हैं। – Mark

2

यह पता चला है कि मैंने अपनी bashrc फ़ाइल संपादित करने के बाद, मुझे उस टर्मिनल सत्र से बाहर निकलने की आवश्यकता है और परिवर्तनों को अंतिम रूप देने के लिए एक और टर्मिनल खोलना होगा:/मैंने ऐसा करने के बाद मेरा आवेदन पूरी तरह से शुरू किया। अपने रेल सर्वर के रूप में एक ही टर्मिनल में

source /path/to/.bashrc 

:

+1

आप सही हैं - '.bashrc' केवल तभी लोड होता है जब आप लॉग इन करते हैं, इसलिए एक नया टर्मिनल सत्र शुरू करना आपके परिवर्तनों को देखने का एक तरीका है। वैकल्पिक रूप से आप 'कर सकते हैं। ।bashrc' को आपके सत्र को पुनरारंभ किए बिना फ़ाइल लोड करने के लिए। – Brian

+0

ओह शांत, टिप के लिए धन्यवाद! – Mark

0

आप न अपने टर्मिनल को पुनः आरंभ करना चाहते हैं, तो आप सिर्फ अपने .bashrc फ़ाइल को निष्पादित करने की जरूरत है।

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