2010-12-10 10 views
7

पर संग्रहीत आवेदन रेल, ओपन सोर्स और जल्द ही उत्पादन वातावरण में तैनात करने के लिए तैयार है, मेरे पास कुछ सुरक्षा विचार हैं।ओपन सोर्स रेल के लिए सुरक्षा प्रबंधन 3 गीथब

database.yml को संभालने के लिए कैसे, बहुत अच्छी द्वारा कवर किया जाता how-to-manage-rails-database-yml

लेकिन देखने की मेरी बात से है कि एक सार्वजनिक GitHub भंडार में होस्ट नहीं किया जाना चाहिए एक सामान्य रेल आवेदन में अधिक विन्यास सेटिंग्स हैं और उत्पादन के लिए तैनात उदाहरण के लिए

  • devise.rb -> config.pepper
  • secret_token.rb -> Application.config.secret_token
  • Capistrano -> deploy.rb
  • ...

जोड़ना config/****/* से .gitignore न केवल नए डेवलपर्स को बंडल इंस्टॉल से रोक देगा, डीबी: बनाएं, डीबी: माइग्रेट, रेल सर्वर लेकिन प्रारंभिक के साथ एक नया मणि है तो उत्पादन कॉन्फ़िगरेशन को अद्यतित रखने के लिए भी जमाना एलईडी।

एक और संभावना पर्यावरण.मिल को संवेदनशील कॉन्फ़िगरेशन के साथ जोड़ देगा, जैसे डेटाबेस.आईएमएल जहां प्रारंभकर्ताओं में संवेदनशील कॉन्फ़िगरेशन ओवरराइड किया जाएगा?

इससे साफ चेकआउट के बाद उठना और चलना आसान हो जाएगा और उत्पादन वातावरण को बनाए रखना आसान होगा।

कोई भी विचार ऊपर मेरी समस्याओं का समाधान कैसे करें?

उत्तर

5

मैं आमतौर पर इन फ़ाइलों में "सुरक्षित" डेटा डालता हूं, जो आमतौर पर विकास उद्देश्यों के लिए काम करेगा। लेकिन उत्पादन में मैं Capistrano के साथ किसी अन्य स्थान पर फ़ाइलें सिमलिंक, इस तरह:

invoke_command "ln -sf #{shared_path}/database.yml #{release_path}/config/database.yml" 

तो उत्पादन सर्वर में मैं फ़ाइलों कि स्रोत नियंत्रण में फ़ाइलों को ओवरराइड का एक समूह है। मैं database.yml.example के साथ भी काम नहीं करता, केवल कुछ सेन डिफ़ॉल्ट database.yml है कि डेवलपर्स विकास और परीक्षण में उपयोग करने के लिए सहमत हैं।

अलग-अलग सेटिंग के लिए, API कुंजी की तरह, मैं आमतौर पर एक config/settings.yml बना सकते हैं और प्रारंभकर्ता अंदर से उन्हें पढ़ने: अपने त्वरित उत्तर के लिए

SETTINGS = YAML.load(IO.read(Rails.root.join("config", "settings.yml"))) 
YourApp::Application.config.secret_token = SETTINGS["secret_token"] 
+0

धन्यवाद और यह अच्छा लगता है कि अपने समाधान मेरी काल्पनिक एक के समान है। क्या वेनिला रेल साइट में कोई अन्य संवेदनशील सेटिंग्स हैं? मैं आपके समाधान को आज़मा दूंगा, यह आसान है और मुझे लगता है कि यह मेरी आवश्यकताओं को पूरा करने के लिए फिट होगा। – orjan

+0

मुझे नहीं पता कि सिमलिंक आपके लिए कैसे काम कर सकता है जब आप "टोपी तैनाती: माइग्रेशन" चला रहे हैं क्योंकि रिलीज के खिलाफ चल रहे हैं और वर्तमान डीआईआर नहीं? मुझे symlink को> run "ln -nfs # {shared_path} /config/database.yml # {release_path} /config/database.yml" में बदलने की आवश्यकता है < orjan

+0

woops, आपका अधिकार :) – iain

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