কম্পিউটার টিউটোরিয়াল

ম্যাক সিস্টেম রুবি এড়িয়ে চলুন: সঠিক বিকল্প বেছে নিন

কেউ আপনাকে একবার বলতে পারেন, "সিস্টেম রুবি ব্যবহার করবেন না।" এটি ভালো পরামর্শ, কিন্তু কেন? জানি ফেলা যাক।

আপনার কাছে কোন রুবি আছে?

macOS-এ একটি "সিস্টেম রুবি" প্রি-ইনস্টল্ড থাকে।

which কমান্ড ব্যবহার করুন রুবি কোথায় ইনস্টল্ড তা দেখতে:

$ which ruby /usr/bin/ruby 

আপনি যদি /usr/bin/ruby দেখেন, তবে এটি প্রি-ইনস্টল্ড macOS সিস্টেম রুবি।

সিস্টেম রুবি সিস্টেম অ্যাডমিন স্ক্রিপ্ট চালানোর জন্য ব্যবহার করা যেতে পারে, যতক্ষণ না আপনি সিস্টেম রুবি আপডেট করার চেষ্টা করেন বা জেম যোগ করেন।

কিন্তু রুবি প্রজেক্ট ডেভেলপ করার সময় আপনি এটি ব্যবহার করতে চান না।

ডেভেলপমেন্টের জন্য রুবি

রুবি দিয়ে প্রজেক্ট ডেভেলপ করার জন্য, আপনার হোমব্রু দিয়ে রুবি ইনস্টল করা উচিত বা asdf, chruby, rbenv, বা rvm-এর মতো একটি ভার্সন ম্যানেজার ব্যবহার করা উচিত।

যদি আপনি একাধিক প্রজেক্ট জাগল করেন এবং সব একসাথে আপডেট করতে না পারেন তবে ভার্সন ম্যানেজার সাহায্য করে। ভার্সন ম্যানেজার তুলনা এবং রুবি ইনস্টল করার সেরা উপায় জানতে আমার আর্টিকেল "Install Ruby on a Mac" দেখুন।

কিন্তু কেন macOS ডিফল্ট রুবি ব্যবহার করা উচিত নয়? চলুন দেখি ডেভেলপমেন্টের জন্য ম্যাক ডিফল্ট রুবি ব্যবহার করা খারাপ ধারণা কেন।

জেম ইনস্টলেশনের ঝামেলা

RubyGems হল রেডিমেড সফটওয়্যার লাইব্রেরি যা রুবিতে ডেভেলপমেন্টকে সহজ এবং মজेदार করে তোলে। অধিকাংশ রুবি প্রজেক্ট কমপক্ষে কিছু জেম ব্যবহার করে।

আপনি যদি ম্যাক সিস্টেম রুবি ব্যবহার করেন, gem install চালালে জেমগুলো সিস্টেম রুবি ডিরেক্টরি /Library/Ruby/Gems/2.6.0-এ সংরক্ষণ করার চেষ্টা করবে। সেই ডিরেক্টরিটি root-এর মালিকানা, সিস্টেম সুপারইউজার। সাধারণ ব্যবহারকারীদের সেখানে লিখার অনুমতি নেই (আপনি সত্যিই এই ফোল্ডার পরিবর্তন করা উচিত নয়)।

আপনি যদি জেম ইনস্টল করার চেষ্টা করেন, যেমন gem install rails, তবে পারমিশন এরর পাবেন:

ERROR: While executing gem ... (Gem::FilePermissionError) You don't have write permissions for the /Library/Ruby/Gems/2.6.0 directory 

এটি সিস্টেম সিকিউরিটি লঙ্ঘন করে

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

$ sudo gem install rails 

আপনি যেকোনো সময় sudo চালাতে যাচ্ছেন, আপনাকে থেমে যেতে হবে এবং জিজ্ঞেস করতে হবে আপনি কি নিজের পায়ে আপনি গুলি मारছেন।

এই ক্ষেত্রে, আপনাকে sudo দরকার কারণ আপনি OS দ্বারা পরিচালিত সিস্টেম ফাইল পরিবর্তন করছেন। এটি করবেন না! আপনি সিস্টেমকে ভাঙা বা কমপ্রোমাইজড অবস্থায় রেখে দিতে পারেন। এর চেয়ে খারাপ, একটি জেমে ম্যালিশিয়াস কোড থাকতে পারে যা আপনার কম্পিউটারের সাথে ছेड়ছাড় করতে পারে।

জেম ম্যানেজমেন্ট

অনুভবী ডেভেলপাররা জেম ইনস্টল এবং তাদের ডিপেন্ডেন্সি ম্যানেজ করতে Bundler ব্যবহার করে।

কল্পনা করুন আপনার প্রজেক্টগুলো একটি জেমের বিভিন্ন ভার্সন ব্যবহার করে (হয়তো আপনার প্রজেক্টের মাঝপথে একটি নতুন জেম রিলিজ হয়েছে)। অথবা আপনার প্রজেক্টের দুটি ভিন্ন জেম একটি ডিপেন্ডেন্ট জেমের বিভিন্ন ভার্সনের উপর নির্ভরশীল হতে পারে।

Bundler আপনার প্রজেক্ট ডিরেক্টরিতে একটি Gemfile ব্যবহার করে আপনার প্রয়োজনীয় জেমগুলো ট্র্যাক করে। আপনি যদি সিস্টেম রুবির সাথে sudo ব্যবহার করে জেম ইনস্টল করেন, তবে আপনি সিস্টেম রুবি ডিরেক্টরিতে অসামঞ্জস্যপূর্ণ জেমের একটি গুলগুলি দিয়ে শেষ হবেন।

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

সর্বশেষ রুবি ব্যবহার করুন

আপনি যখন একটি প্রজেক্ট শুরু করেন, সর্বশেষ রুবি রিলিজ ব্যবহার করুন (লেখার সময় এটি ৩.০)।

macOS Catalina বা Big Sur-এ সিস্টেম রুবি হল রুবি ২.৬.৩, যা পুরনো। আপনি যদি রুবি নতুন শিখতে শুরু করেন, হোমব্রু দিয়ে ইনস্টল করুন এবং রুবি ৩.০-এ একটি প্রজেক্টে কাজ করুন। আপনি যখন অন্য একটি প্রজেক্ট শুরু করবেন, তবে ভার্সন ম্যানেজার ইনস্টল করার সময় হতে পারে যাতে আপনি ভিন্ন রুবি ভার্সনवाले প্রজেক্টগুলো জাগল করতে পারেন।

Big Sur-এর পর macOS

macOS Big Sur এখন বর্তমান ভার্সন। অ্যাপল বলে:

"পাইথন, রুবি, এবং পার্লের মতো স্ক্রিপ্টিং ল্যাঙ্গুয়েজ রানটাইম macOS-এ লিগ্যাসি সফটওয়্যারের সাথে সামঞ্জস্যের জন্য অন্তর্ভুক্ত। ভবিষ্যতের macOS-এ স্ক্রিপ্টিং ল্যাঙ্গুয়েজ রানটাইম ডিফল্টভাবে থাকবে না, এবং আপনাকে অতিরিক্ত প্যাকেজ ইনস্টল করতে হতে পারে।"

আপনি যদি ২০২১-এর শেষে এটি পড়ছেন, তবে সিস্টেম রুবি ইতিমধ্যে চলে গেছে হতে পারে। যদি না হয়, হোমব্রু বা ভার্সন ম্যানেজার দিয়ে রুবি ইনস্টল করে নিজেকে প্রস্তুত রাখুন।

রুবির আনন্দ লিন

Rails-এ ওয়েব অ্যাপ্লিকেশন বিল্ড করার পরিকল্পনা করে থাকা ডেভেলপারদের জন্য, আমি একটি গাইড লিখেছি, "Install Rails on a Mac", যা "Install Ruby on a Mac"-র বাইরে যেতে Node-র পাশাপাশি রুবির সাথে কাজ করার জন্য ভার্সন ম্যানেজার বেছে নেওয়া দেখায়।

রুবিতে কোডিংয়ের আনন্দ লিন!畢竟, এটি প্রোগ্রামার সুখের জন্য সমর্পিত একটি ভাষা হিসেবে পরিচিত। কিন্তু মনে রাখবেন, সিস্টেম রুবি macOS-র জন্য আছে, আপনার জন্য নয়।

  1. Mac-এ Windows 10 ইনস্টল করার সম্পূর্ণ গাইড

  2. macOS 'Java command line tool requires JDK' এরর সমাধান: ধাপে ধাপে গাইড

  3. ম্যাক টাস্ক ম্যানেজার: এক্টিভিটি মনিটর দক্ষতার সাথে ব্যবহার করুন

  4. ম্যাক হেডফোন জ্যাককে লাইন-ইন অডিও ইনপুট হিসেবে ব্যবহার করুন