2012-11-08 17 views
22

हाय मैं Heroku और GitHub पर मेरी रेल ऐप है और वर्तमान में मेरे अनुप्रयोग में एक मेलर उपयोग कर रहा हूँ:रेल: मेलर पासवर्ड सुरक्षित रूप से कैसे स्टोर करें?

ActionMailer::Base.smtp_settings = { 
    :address    => "smtp.gmail.com", 
    :port     => 587, 
    :user_name   => "[email protected]", 
    :password    => "PasswordShouldGoHere", 
    :authentication  => "plain", 
    :enable_starttls_auto => true 
} 

मैं अपने GitHub अकाउंट दिखाई दे सकता है मेरी ईमेल और पासवर्ड नहीं करना चाहते, क्योंकि लोगों को अभी कर सकते हैं लॉग इन करें और मेरी जानकारी चोरी करें। हालांकि, अगर मैं फर्जी पासवर्ड डालता हूं, तो मेलर को वितरित होने पर मेरा ऐप उसे होकोकू पर एक त्रुटि देगा। मुझे पता है कि मैं सिर्फ असली ईमेल और पासवर्ड को उसके पहले हीोकू पर धक्का दे सकता हूं और फिर इसे संपादित कर सकता हूं और अपने जीथ्यूब खाते पर फर्जी पासवर्ड डाल सकता हूं, लेकिन क्या कोई बेहतर तरीका है?

+0

पर्यावरण चर। –

+0

मैंने इसके बारे में पढ़ा है। क्या आप मुझे बता सकते हैं कि वास्तव में पर्यावरण चर कैसे निर्धारित किए जाते हैं? – Edmund

उत्तर

46

अन्य लोगों की तरह, आप ENV चर का उपयोग कर इस सुरक्षा को प्राप्त कर सकते हैं। यहां इसका तरीका बताया गया है:

config.action_mailer.smtp_settings = { 
    user_name: ENV["MAILER_EMAIL"], 
    password: ENV["MAILER_PASSWORD"] 
} 

अब, उत्पादन (Heroku) में, तुम सब करने की ज़रूरत follow this guide है। यह मूल रूप से अपने कंसोल खोलकर और इस टाइप के बराबर है:

heroku config:set [email protected] MAILER_PASSWORD=password 

विकास में, आप app_env_vars.rb की तरह एक विचारोत्तेजक नाम के साथ config/initializers फ़ोल्डर के अंदर एक फ़ाइल बना सकते हैं। यह अंदर, जगह निम्नलिखित:

ENV['MAILER_EMAIL'] = '[email protected]' 
ENV['MAILER_PASSWORD'] = 'password' 

अपने स्रोत नियंत्रण में धकेल दिया जा रहा से इस नई बनाई गई फ़ाइल को रोकने के लिए, आप इसे अपने .gitignore में जोड़ना चाहिए:

/config/initializers/app_env_vars.rb 

हालांकि, वहाँ क्योंकि प्रारंभकर्ता एक समस्या है फ़ाइलों को केवल पर्यावरण के बाद लोड किया जाता है, इसलिए करने के लिए एक आखिरी चीज है। अपने environment.rb फ़ाइल में जाओ औरYourapp::Application.initialize! से पहले निम्नलिखित जोड़ें:

# Load the app's custom environment variables here, before environments/*.rb 
app_env_vars = File.join(Rails.root, 'config', 'initializers', 'app_env_vars.rb') 
load(app_env_vars) if File.exists?(app_env_vars) 

आप काम हो गया!

हालांकि, अगर आपको यह सारी कॉन्फ़िगरेशन परेशानी मिलती है, तो मैं Figaro gem का उपयोग करने की सलाह देता हूं। यह सब कुछ मैंने वर्णित किया है और अधिक!

+0

मुझे यह समस्या है।नेट :: SMTPAuthentication Devise में त्रुटि :: PasswordsController # – xirukitepe

+2

@Ashitaka ग्रेट ट्यूटोरियल बनाएं! –

4

मैं कॉन्फ़िगरेशन सेटिंग्स प्रबंधित करने के लिए figaro gem का उपयोग करने की अनुशंसा करता हूं। यह स्टोर स्टोर करने के लिए ENV का उपयोग करता है और यह ठीक है कि हेरोोकू पर ऐप्स कॉन्फ़िगर किए गए हैं।

0

इस Rails Apps Tutorial पर एक नज़र डालें।

अनुभाग "एक जीमेल खाते का उपयोग करें" इस उदाहरण config पता चलता है:

config.action_mailer.smtp_settings = { 
    address: "smtp.gmail.com", 
    port: 587, 
    domain: "example.com", 
    authentication: "plain", 
    enable_starttls_auto: true, 
    user_name: ENV["GMAIL_USERNAME"], 
    password: ENV["GMAIL_PASSWORD"] 
} 

और अपने सर्वर पर ~/.bashrc में चर स्थापित करने का सुझाव देते हैं:

export GMAIL_USERNAME="[email protected]" 
export GMAIL_PASSWORD="secret*" 

आप उन्हें कहीं और स्थापित करने के लिए आवश्यकता हो सकती है यदि ऐप सर्वर पर्यावरण को ~/.bashrc से नहीं पढ़ता है। यह आपके ऐप सर्वर पर निर्भर करता है कि यह बहुत निर्भर है।

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