কম্পিউটার

জাহাজে আপনার রেল অ্যাপটি কীভাবে কনফিগার করবেন

আপনি আপনার প্রথম প্রোডাকশন অ্যাপ চালু করতে প্রস্তুত, এবং এটি কিছু বাহ্যিক পরিষেবার সাথে কথা বলার সময়। আপনাকে এখনও সবকিছু গুছিয়ে নিতে হবে। তাহলে আপনার ডেভ মেশিনে জিনিসগুলিকে আরও জটিল না করে উৎপাদনে আপনার পরিষেবাগুলি কনফিগার করার সর্বোত্তম উপায় কী?

আপনার পরিবেশ সেট আপ করুন

প্রোডাকশন অ্যাপ্লিকেশানগুলি কনফিগার করতে, আজকের সেরা অনুশীলন হল পরিবেশের ভেরিয়েবলগুলি ব্যবহার করা (যেগুলি ENV["REDIS_HOST"] - জিনিস খুঁজছি)।

কিন্তু কেন?

  • আপনার প্রোডাকশন কীগুলি দুর্ঘটনাক্রমে কমিট করা কঠিন৷

    আপনি মনোযোগ না দিলে, আপনি git push করতে পারেন গুরুত্বপূর্ণ গোপন কী সহ একটি ফাইল। এবং এটি একটি ব্যয়বহুল ভুল হতে পারে৷

  • কনফিগারেশন হল পরিবেশের ভেরিয়েবলের জন্য।

    এনভায়রনমেন্ট ভেরিয়েবল হল প্রায় সব ধরনের সিস্টেমে অ্যাপ কনফিগার করার একটি সাধারণ উপায়। অন্যান্য অনেক প্রোগ্রাম (যেমন রুবি) কনফিগারেশনের জন্য এনভায়রনমেন্ট ভেরিয়েবল ব্যবহার করে, তাই এটি শুধুমাত্র আপনার নিজের অ্যাপে চেষ্টা করাই বোধগম্য।

  • পরিবেশ ভেরিয়েবলগুলি উত্পাদনে সেট আপ করা সহজ৷

    Heroku একটি ওয়েব UI এবং সহজে পরিবেশ ভেরিয়েবল সেট করার জন্য একটি কমান্ড লাইন টুল আছে। এবং আপনি যদি নিজের সার্ভার তৈরি করেন, শেফ এবং ডকারের মতো সার্ভার পরিচালনার সরঞ্জামগুলি পরিবেশের ভেরিয়েবল সেট করা সহজ করে তোলে৷

এটি রেলের পাশে দেখতে কেমন?

পরিবেশ ভেরিয়েবলের উপর নির্ভর করে এমন একটি অ্যাপ নিজেকে কনফিগার করতে পারে:

config/my_service.yml
production:
  host: <%= ENV["MY_SERVICE_HOST"] %>
  port: <%= ENV["MY_SERVICE_PORT"] %>
config/initializers/my_service.rb
my_service_config = Rails.application.config_for(:my_service)
    
my_service = MyService.new(my_service_config["host"], my_service_config["port"])

আরম্ভকারী Rails 4.2 এর config_for ব্যবহার করে সঠিক .yml খোঁজার পদ্ধতি ফাইল করুন এবং সঠিক পরিবেশ বাছাই করুন।

তারপর, config_for ERB চালায় my_service.yml এর ভিতরে কোড , এবং MY_SERVICE_HOST দখল করে এবং MY_SERVICE_PORT পরিবেশের বাইরে। এটি সেই মানগুলিকে MyService-এ পাস করে .

আপনি শুধুমাত্র ENV["MY_SERVICE_HOST"] থেকে আরম্ভকারী পড়তে পারেন। সরাসরি কিন্তু আমি তাদের .yml এ রাখতে পছন্দ করি ফাইল, কারণগুলির জন্য আপনি এক মিনিটের মধ্যে দেখতে পাবেন।

ডেভেলপমেন্টে আপনার অ্যাপের কনফিগারেশন

এনভায়রনমেন্ট ভেরিয়েবল উৎপাদনের জন্য ঠিক আছে। কিন্তু একবার আপনি আপনার প্রোডাকশন কনফিগারেশন সেট আপ করলে, আপনি কীভাবে ডেভেলপমেন্ট এবং টেস্ট মোড পরিচালনা করবেন?

আপনার স্বল্প কিছু সু্যোগ আছে। কিন্তু আমি সাধারণত Rails' config/secrets.yml-এ কনভেনশন অনুসরণ করি :উৎপাদনে এনভায়রনমেন্ট ভেরিয়েবল ব্যবহার করুন এবং ডেভেলপমেন্ট এবং টেস্টে হার্ডকোড অ-গোপন মান ব্যবহার করুন।

বিকাশ এবং পরীক্ষার পরিবেশের সাথে, config/my_service.yml এই মত দেখতে পারে:

config/my_service.yml
production:
  host: <%= ENV["MY_SERVICE_HOST"] %>
  port: <%= ENV["MY_SERVICE_PORT"] %>
  
development:
  host: localhost
  port: 8081
  
test:
  host: localhost
  port: 8081

আশ্চর্যজনকভাবে যথেষ্ট, ইনিশিয়ালাইজার ঠিক একই থাকতে পারে। এই ফাইলের মানগুলি বিকাশ এবং পরীক্ষার পরিবেশে ব্যবহার করা হবে, এবং উত্পাদন পরিবেশ পরিবেশ ভেরিয়েবল থেকে এর মানগুলি পাবে৷

কিন্তু আপনি কেন এই মানগুলিকে হার্ডকোড করবেন?

  • কনফিগারেশন মানগুলি দেখতে এবং পরিবর্তন করা সহজ৷

    আপনি নতুন বৈশিষ্ট্যগুলির সাথে পরীক্ষা করার সাথে সাথে আপনার কনফিগারেশনকে পরিবর্তন করতে পারেন, যা আপনি বিকাশে চান তবে উত্পাদনে তেমন কিছু নয়৷

  • নতুন কারো পক্ষে শুরু করা সহজ৷

    আপনার প্রয়োজনীয় সমস্ত নমুনা কনফিগার আপনার গিট সংগ্রহস্থলে চেক করা হলে, একটি নতুন ডেভকে কেবল আপনার অ্যাপ ক্লোন করতে হবে এবং চালাতে হবে। অ্যাপ্লিকেশানটি কাজ করার জন্য সঠিক মানগুলি সেট করে তাদের ঘোরাঘুরি করতে হবে না৷

  • আপনাকে বিরোধপূর্ণ পরিবেশের ভেরিয়েবল নিয়ে চিন্তা করতে হবে না।

    আপনি সম্ভবত আপনার ডেভ মেশিনে একটি একক প্রোডাকশন মেশিনে স্থাপন করার চেয়ে আরও বেশি অ্যাপে কাজ করবেন। আপনি যদি সেই সমস্ত অ্যাপ কনফিগার করার জন্য সিস্টেম-ওয়াইড এনভায়রনমেন্ট ভেরিয়েবল ব্যবহার করেন, তাহলে তাদের মধ্যে দুটি একে অপরের উপর ধাক্কা খাবে।

সুতরাং, উৎপাদনে পরিবেশ ভেরিয়েবল ব্যবহার করার চেষ্টা করুন এবং হার্ডকোড .yml বিকাশে কনফিগার করুন। এটি সহজ, এটি পঠনযোগ্য, এবং ঠিক এই ধরণের কনফিগার ফাইলগুলির সাথে ডিল করার জন্য রেলের অন্তর্নির্মিত সমর্থন রয়েছে৷

বিকাশের জন্য আরেকটি বিকল্প

ডেভেলপমেন্ট মোডে কনফিগারেশন পরিচালনা করার আরেকটি উপায় আছে:dotenv। এটি ঝরঝরে দেখায়, কিন্তু আমি এখনও আমার নিজের একটি অ্যাপে এটি চেষ্টা করিনি৷

dotenv এর সাথে, আপনি .env নামের একটি ফাইলে পরিবেশের ভেরিয়েবল রাখতে পারেন আপনার Rails অ্যাপের রুট ডিরেক্টরিতে, এবং সেই মানগুলি আপনার অ্যাপ দ্বারা তুলে নেওয়া হবে। এটি চমৎকার, কারণ আপনার উন্নয়ন পরিবেশ আপনার উত্পাদন পরিবেশের মতো কাজ করে। বাগগুলি এড়াতে এটি একটি ভাল উপায় যা শুধুমাত্র উত্পাদনে ঘটে।

এটি এমন কিছু যা আমি একদিন চেষ্টা করব। কিন্তু আপাতত, আমি .yml এর চেয়ে বেশি সুবিধাজনক কিছু খুঁজে পাইনি এবং config_for .

বেশিরভাগ প্রোডাকশন অ্যাপের কোনো না কোনো কনফিগারেশন প্রয়োজন। সুতরাং আপনি যখন আপনার পরবর্তী অ্যাপ স্থাপন করবেন, .yml ব্যবহার করার চেষ্টা করুন ফাইলগুলি, এটি কনফিগার করার জন্য, উৎপাদনে পরিবেশের ভেরিয়েবল দ্বারা পপুলেট। আপনি নমনীয়তা, সরলতা এবং নির্ভরযোগ্যতা পাবেন যা আপনি আশা করছেন।

আপনি কি আপনার প্রোডাকশন অ্যাপস কনফিগার করতে চান এমন একটি ভিন্ন উপায় আছে? একটি মন্তব্য করুন, আমি এটি সম্পর্কে শুনতে চাই!


  1. আপনার রেল অ্যাপ পরীক্ষা করার জন্য একটি ডকার কন্টেইনার সেট আপ করুন

  2. উইন্ডোজ 11 এ কীভাবে আপনার ফোন অ্যাপটি নিষ্ক্রিয় করবেন

  3. আপনার পিসিতে টেলিগ্রাম কীভাবে ব্যবহার করবেন

  4. Windows 10-এ আপনার ফোন অ্যাপ কীভাবে ব্যবহার করবেন?