এনভায়রনমেন্ট ভেরিয়েবল হল একটি কি/ভ্যালু পেয়ার, এটি এইরকম দেখায়:
KEY=VALUE
আমরা এই ভেরিয়েবলগুলো ব্যবহার করি আপনার কম্পিউটারের সকল প্রোগ্রামের মাঝে কনফিগারেশন অপশন শেয়ার করার জন্য।
সেজন্য এটি শিখা গুরুত্বপূর্ণ যে এগুলো কীভাবে কাজ করে এবং কীভাবে আপনার রুবি প্রোগ্রাম থেকে ENV স্পেশাল ভেরিয়েবল ব্যবহার করে এ্যাক্সেস করতে হয়।
এনভায়রনমেন্ট ভেরিয়েবলের উদাহরণ:
- আপনার ডিফল্ট এডিটর কনফিগার করা
- রুবিকে বলা জেম কোথায় পাবে (
GEM_PATH/GEM_HOME) - API কী আপনার অ্যাপ্লিকেশনে পাস করা, সোর্স কন্ট্রোল (git)-এ কমিট না করে
- নিশ্চিত করা আপনার অপারেটিং সিস্টেম কোথায় বাইনারি ফাইল (.exe উইন্ডোজে) খুঁজবে
- রেলসকে টেস্ট/ডেভেলপমেন্ট/প্রোডাকশন মোডে শুরু করা
আপনি লিনাক্স/ম্যাক-এ env কমান্ড এবং উইন্ডোজে set কমান্ড দিয়ে আপনার সকল এনভায়রনমেন্ট ভেরিয়েবলের তালিকা পেতে পারেন।
উদাহরণ:
PWD=/home/jesus SHELL=/usr/bin/zsh RUBY_ENGINE=ruby RUBY_VERSION=2.6.0 GEM_ROOT=/opt/rubies/ruby-2.6.0/lib/ruby/gems/2.6.0 # ...
তালিকাটি খুব লম্বা হতে পারে, কিন্তু আপনাকে এটি মেমোরাইজ করতে হবে না।
আপনি gem env কমান্ড দিয়ে সকল জেম-স্পেসিফিক ভেরিয়েবল ও কনফিগারেশন প্রিন্ট করতে পারেন।
এখন:
আপনি যদি রুবি থেকে এই এনভায়রনমেন্ট ভেরিয়েবলগুলো অ্যাক্সেস করতে চান তবে একটি স্পেশাল অবজেক্ট আছে যা আপনি ব্যবহার করতে পারেন।
চলুন খুঁজে বের করি কীভাবে এটি কাজ করে!
রুবিতে এনভায়রনমেন্ট ভেরিয়েবল ব্যবহার করা
রুবিতে এই ENV অবজেক্ট আছে যা একটি হ্যাশের মতো বিহ্যেইভ করে এবং আপনাকে আপনার কাছে উপলব্ধ সকল এনভায়রনমেন্ট ভেরিয়েবলে অ্যাক্সেস দেয়।
এখানে কিছু উদাহরণ…
আপনি কতটি কি আছে তা জানতে পারেন:
ENV.size # 48
তালিকা পান:
ENV.keys
এবং স্পেসিফিক কি অ্যাক্সেস করুন:
ENV["GEM_HOME"] # "/home/jesus/.gem/ruby/2.6.0"
আপনি map এবং select-এর মতো মেথডও ব্যবহার করতে পারেন:
ENV.select { |k,v| k.size < 4 } কিন্তু আপনি রুবির বাইরে এই এনভায়রনমেন্ট ভেরিয়েবলগুলো কীভাবে সেট করবেন?
এনভায়রনমেন্ট ভেরিয়েবল কীভাবে সেট করবেন
আপনি একটি একবারের ব্যবহারের জন্য একটি এনভায়রনমেন্ট ভেরিয়েবল সেট করতে পারেন।
এভাবে:
API_KEY=1 ruby -e 'p ENV["API_KEY"]'
এটি একটি টার্মিনালে ব্যবহার করুন, irb-এর বাইরে, তাহলে রুবি এই API_KEY ভ্যালুতে অ্যাক্সেস পাবে।
এটি API কী জন্য সহায়ক, কিন্তু রেলস মোড সেট করার জন্যও।
উদাহরণ:
RAILS_ENV=production rails console
মনে রাখবেন:
এটি এই স্পেসিফিক এনভায়রনমেন্ট ভেরিয়েবলটি এই প্রসেসের জন্য সেট করে যা আপনি এখন লঞ্চ করছেন।
অর্থাৎ যদি আমি API_KEY=1 <command> করি…
এটি শুধু সেই কমান্ডের জন্য কাজ করবে!
আপনি যদি এই ভেরিয়েবলটি আপনার বর্তমান টার্মিনাল সেশন থেকে লঞ্চ করা সকল অন্যান্য কমান্ডে ব্যবহার করতে চান।
এভাবে করুন:
export API_KEY=1
এখন আপনি যদি করেন:
ruby -e 'p ENV["API_KEY"]'
আপনি 1 পাবেন, প্রিফিক্সড ভেরিয়েবল ছাড়াও।
সতর্কতা:
আপনার রুবি অ্যাপ্লিকেশনের ভিতরে কনফিগারেশনের জন্য ENV ব্যবহার করবেন না, এটিই এর উদ্দেশ্য নয়। ENV শুধু রুবির বাইরে থেকে আসা এক্সটার্নাল কনফিগারেশন পড়ার জন্য।
আন্তরিক কনফিগারেশন অপশনের জন্য dry-configurable মতো জেম ট্রাই করুন।
এনভায়রনমেন্ট ভেরিয়েবল গুরুত্বপূর্ণ অ্যাট্রিবিউট
আপনি এই অ্যাট্রিবিউটগুলো সহায়ক পাবেন কারণ এগুলো (সম্ভবত অপ্রত্যাশিত) আচরণ ব্যাখ্যা করে।
- স্ন্যাপশটিং, এনভায়রনমেন্ট ভেরিয়েবল সেট হয় যখন আপনি একটি প্রোগ্রাম লঞ্চ করেন এবং বাইরের পরিবর্তনগুলো থেকে প্রভাবিত হয় না
- ক্লোজড এনভায়রনমেন্ট, একটি প্রসেসের ভিতরে ভেরিয়েবল পরিবর্তন করা (আপনার রুবি প্রোগ্রাম একটি প্রসেস) প্রসেসের বাইরের এনভায়রনমেন্ট ভেরিয়েবল পরিবর্তন করে না
- এনভায়রনমেন্ট ভেরিয়েবল পার্মানেন্ট নয়, আপনি যখন আপনার কম্পিউটার রিবুট করেন, বা এমনকি আপনার টার্মিনাল বন্ধ করেন, এনভায়রনমেন্ট ভেরিয়েবলে পরিবর্তন হারিয়ে যায় (অনেক সময়
exportলিনাক্স + ম্যাক /setউইন্ডোজ-এ ব্যবহার করলেও)
এগুলো মনে রাখুন!
রেলস ক্রেডেনশিয়ালস
রেলস ৫.২ একটি নতুন সিস্টেম চালু করেছে API কী ম্যানেজ করতে সাহায্য করার জন্য।
এটি কাজ করে ক্রেডেনশিয়ালগুলো সরাসরি config/credentials.yml.enc-এ সংরক্ষণ করে, এটি একটি এনক্রিপ্টেড ফাইল যা আপনি শুধু পড়তে পারেন যদি আপনার কাছে master.key ফাইল থাকে।
আইডিয়া হল আপনি শুধু credentials.yml.enc কমিট করবেন এবং কী প্রাইভেট রাখবেন।
নতুন ক্রেডেনশিয়াল কীভাবে যোগ করবেন?
খুব, আপনি সরাসরি .enc ফাইল এডিট করতে পারবেন না।
এই কমান্ডটি ব্যবহার করুন:
bin/rails credentials:edit
এটি একটি YAML ফাইল, সঠিকভাবে ফরম্যাট করুন।
এখন:
আপনি আপনার রেলস অ্যাপ থেকে ক্রেডেনশিয়াল পড়তে পারেন এইভাবে…
Rails.application.credentials.github_api_key
ভিডিও টিউটোরিয়াল দেখুন
সারাংশ
আপনি এনভায়রনমেন্ট ভেরিয়েবল সম্পর্কে শিখেছেন, একটি উপকারী টুল যা আপনাকে আপনার অপারেটিং সিস্টেম কনফিগারেশন ম্যানেজ করতে এবং আপনার API কী প্রাইভেট রাখতে দেয়।

এই আর্টিকেল আপনার বন্ধুদের সাথে শেয়ার করুন যাতে আরও মানুষ এটি খুঁজে পায় 🙂
পড়ার জন্য ধন্যবাদ!