বেশিরভাগ সময়, আমি প্রকল্পের মূল ডিরেক্টরিতে ডেভলপমেন্ট অ্যাপ্লিকেশন কনফিগারেশন সঞ্চয় করি:
app
|-- config.json
তবে এটি সর্বোত্তম পন্থা বলে মনে হচ্ছে না, যেহেতু এই কনফিগারেশনটি সংস্করণ নিয়ন্ত্রণ সিস্টেমে সঞ্চিত রয়েছে - সম্ভবত ফলস্বরূপ ব্যবহারকারীর নাম, পাসওয়ার্ড এবং অন্যান্য সংবেদনশীল স্টাফের ফলস্বরূপ।
12 ফ্যাক্টর অ্যাপ্লিকেশন গাইড কনফিগারেশন ফাইলগুলি পুরোপুরি বাদ দেওয়ার এবং কনফিগারেশন সেটআপের জন্য পরিবেশ পরিবর্তনশীলগুলি ব্যবহার করার পরামর্শ দেয়:
... পরিবেশের ভেরিয়েবলগুলিতে কনফিগার স্টোর। এনভ ভার্সগুলি কোনও কোড পরিবর্তন না করেই মোতায়েনের মধ্যে পরিবর্তন করা সহজ; কনফিগারেশন ফাইলের বিপরীতে, এগুলি ঘটনাক্রমে কোড রেপোতে চেক হওয়ার খুব কম সম্ভাবনা রয়েছে; এবং কাস্টম কনফিগারেশন ফাইলগুলি, বা জাভা সিস্টেমের বৈশিষ্ট্যগুলির মতো অন্যান্য কনফিগারেশনের মতো নয়, এগুলি একটি ভাষা- এবং ওএস-অজোনস্টিক স্ট্যান্ডার্ড।
এটি আমার কাছে সত্যিই দুর্দান্ত লাগছে, তবে একটি স্টোর কীভাবে পরিবেশের পরিবর্তনশীলগুলিকে উত্স নিয়ন্ত্রণে পরীক্ষা না করে বলেছে? এবং অ্যাপগুলিতে এই পরিবর্তনগুলি পাস করার জন্য আমি কোন সরঞ্জামগুলি ব্যবহার করতে পারি? এখানে কয়েক ডজন কনফিগার বিকল্প থাকতে পারে এবং আপনি যখন অ্যাপটি চালু করেন ততবার হাত দিয়ে এগুলি টাইপ করা খুব ভাল না - তাই এগুলি কোথাও কোথাও কোনও ধরণের ফাইলে সংরক্ষণ করতে হবে। এইভাবে বলা ফাইলটি উত্স নিয়ন্ত্রণে শেষ হবে এবং আমরা যেখানে শুরু করেছি সেখানে ফিরে আসি।
কনফিগারেশন বিকল্পগুলি পরিচালনা করার জন্য কি সর্বজনীনভাবে গৃহীত উপায় আছে, যার উত্স নিয়ন্ত্রণে স্থানীয় কনফিগারেশন সংরক্ষণ করার ঝুঁকি নেই?
.gitignore
যেখানে আমি ফাইল বা ফোল্ডারগুলি সংজ্ঞায়িত করতে পারি যা সংস্করণ নিয়ন্ত্রণে পরীক্ষা করা উচিত নয়। যেমনটি আপনি বলেছিলেন যে এনভ ভার্সগুলি সত্যই সহায়তা করবে সেদিকে আমি দেখতে পাচ্ছি না, তবে এগুলি স্থাপনের জন্য আপনার কাছে একটি স্ক্রিপ্ট রয়েছে এবং প্রকল্পের সাথে একত্রে সংরক্ষণ করা উচিত বা আপনার সিস্টেমে এটি 'কোথাও' রয়েছে (হোম ডিরেক্টরি বা মেশিনগুলির প্রারম্ভকালেও স্ক্রিপ্টগুলি) যা নিজেরাই পুরোপুরি সমস্যা তৈরি করে বলে মনে হয়, বিশেষত যদি প্রচুর কনফিগারেশন প্রয়োজন হয়। যে কোনও ক্ষেত্রে আমি কনফিগার ফাইলগুলিকে বিভক্ত করব যাতে গোপনীয় তথ্য বিভিন্ন ফাইলে যায়।