কম্পিউটার

একটি RubyGem এর ভিতরের অংশ

বৃত্তাকার বাচ্চাদের জড়ো করুন, এবং দাদাকে সেই পুরানো দিনের পথগুলি বর্ণনা করতে দিন যখন জীবন কঠিন ছিল, এবং রত্নগুলি স্থাপন করা ছিল মাথাব্যথার কারণ, চুল টানানো, দাঁতের অগ্নিপরীক্ষা।

ফিরে যখন আমি সবেমাত্র রুবিতে শুরু করছিলাম, সেখানে কোনও বান্ডলার ছিল না এবং রত্নগুলিকে শক্তভাবে ইনস্টল করতে হয়েছিল। রেলে, এর অর্থ rake gems:install চালানো এক মিলিয়ন বার, পথে আসা বাগগুলি ঠিক করা, যতক্ষণ না কমান্ডটি কোনও ত্রুটি ছাড়াই পাস না হয়৷ আজ, আমরা পুরানো স্কুলের মতো একটি রত্ন তৈরি করতে যাচ্ছি, রত্নগুলি কী এবং সেগুলি কীভাবে কাজ করে তা দেখার পরে৷

রত্ন, তারা কি?

RubyGems হল অন্য লোকেদের লেখা কার্যকারিতা সহ আপনার নিজস্ব কোড প্রসারিত করার একটি সহজ উপায়। উদাহরণস্বরূপ, আপনার নিজের প্রমাণীকরণ/অনুমোদন কোড লেখার পরিবর্তে, আপনি ডিভাইস ব্যবহার করতে পারেন, অথবা আপনি যদি আপলোড করা চিত্রগুলিকে পুনরায় আকার দিতে চান তবে আপনি CarrierWave ব্যবহার করতে পারেন। এটি আপনাকে পুনরায় ব্যবহারযোগ্য কোড লিখতে দেয় যা আপনি অন্য লোকেদের সাথে ভাগ করতে পারেন৷

কিন্তু তারা কিভাবে কাজ করে?

এর সবচেয়ে মৌলিক আকারে, একটি রত্ন একটি কোড এবং একটি <name>.gemspec ধারণকারী জিপ-আপ ডিরেক্টরি ছাড়া আর কিছুই নয় ফাইল এই .gemspec ফাইলটিতে রত্ন সম্পর্কে মেটাডেটা রয়েছে যেমন এর নাম, কোন ফাইলগুলি লোড করতে হবে এবং এর নির্ভরতা।

gem install অথবা bundle কমান্ড উৎস থেকে জিপ ফাইল ডাউনলোড করে এবং আপনার হার্ড ড্রাইভে এটি নিষ্কাশন করে। আপনি bundle info <gem name> চালিয়ে একটি রত্ন কোথায় অবস্থিত তা জানতে পারেন অথবা সরাসরি bundle open <gem name> চালিয়ে মণি ডিরেক্টরি খুলুন .

আপনার অ্যাপ্লিকেশনে রত্নটি লোড করতে, Rubygems বানর-প্যাচ require Kernel-এ ফাংশন ক্লাস এটি প্রথমে ডিস্ক থেকে ফাইলটি পড়ার চেষ্টা করে এবং যদি এটি কাজ না করে তবে এটি আপনার সিস্টেমের প্রতিটি রত্নটিতে ফাইলটি সমাধান করার চেষ্টা করে। একবার এটি একটি মণির মধ্যে ফাইলটি খুঁজে পেলে এটি লোড পাথে যোগ করে রত্নটিকে "সক্রিয়" করে।

আপনি যদি বান্ডলার ব্যবহার করেন, তাহলে এটি setup চলাকালীন লোড পাথে প্রতিটি নির্দিষ্ট রত্ন যোগ করে কল এটি রুবিজেমসকে পথগুলি সমাধান করার চেষ্টা করার ঝামেলা থেকে বাঁচায়। এটি রুবিকে Gemfile(.lock) এ নির্বাচিত রত্নটির ভিন্ন সংস্করণ লোড করতে বাধা দেয়।

আমি কিভাবে একটি তৈরি করতে পারি?

আপনার নিজের মণি তৈরি করার সবচেয়ে সহজ উপায় হল একটি রত্ন ভারা তৈরি করতে Bundler ব্যবহার করা। এর মধ্যে রয়েছে একটি সঠিক ডিরেক্টরি কাঠামো, লাইসেন্স, আচরণবিধি এবং রত্নটির জন্য একটি পরীক্ষার পরিবেশ।

যাইহোক, আজ আমরা মাত্র দুটি ফাইল দিয়ে আমাদের নিজস্ব ন্যূনতম রত্ন তৈরি করতে যাচ্ছি, একটিতে কোড এবং একটি gemspec ফাইল যা মেটাডেটা ধারণ করে। আমাদের রত্ন ব্যবহারকারীকে ডাকলে অভিবাদন জানাবে। আমাদের রত্নটির জন্য একটি ডিরেক্টরি তৈরি করে শুরু করা যাক।

mkdir howdy
cd howdy

এই ডিরেক্টরিতে, আমরা একটি lib তৈরি করব যে ফোল্ডারে কোড এবং একটি howdy.gemspec থাকবে ফাইল যা মেটাডেটা ধারণ করবে। এটি দেখতে এইরকম কিছু হওয়া উচিত:

tree
.
├── howdy.gemspec
└── lib
    └── howdy.rb

আমাদের হাউডি রত্নটির নিম্নলিখিত কোড রয়েছে:

lib/howdy.rb

class Howdy
  def greet
    "howdy!"
  end
end

একটি সংক্ষিপ্ত howdy.gemspec ফাইলটিতে সংস্করণ, লেখক ইত্যাদি সম্পর্কে তথ্য রয়েছে। এটি একটি রত্ন তৈরি করার সময় ফাইলগুলিকেও নির্দিষ্ট করে। এটি রত্ন ব্যবহারকারীদের অপ্রয়োজনীয় ফাইল ডাউনলোড করতে বাধা দেয় যেমন পরীক্ষা এবং অন্যান্য ফাইল যা জহর কোড চালানোর জন্য প্রয়োজন হয় না৷

Gem::Specification.new do |spec|
  spec.name          = "howdy"
  spec.version       = "0.0.1"
  spec.authors       = ["Robert Beekman"]
  spec.email         = ["[email protected]"]
 
  spec.summary       = %(Greets the user)
  spec.description   = %(Howdy is a gem that greets the user when called)
  spec.license       = "MIT"
 
  spec.files         = ["lib/howdy.rb"]
end

রত্নটি তৈরি করতে আমরা gem build howdy.gemspec ব্যবহার করতে পারি আদেশ এটি একটি howdy-0.0.1.gem তৈরি করে আপনার কোড ধারণকারী ফাইল। রত্নটিকে অন্য লোকেদের কাছে উপলব্ধ করতে, আপনি gem publish দিয়ে rubygems.org-এ প্রকাশ করতে পারেন আদেশ৷

রিক্যাপ

এটি একটি খুব মৌলিক রত্ন তৈরি এবং প্রকাশ করার জন্য প্রয়োজনীয় পদক্ষেপ। আমরা আশা করি আপনি রত্নগুলির প্রত্নতত্ত্ব এবং সেগুলি তৈরির পুরানো স্কুল পদ্ধতিতে ডুব দিয়ে আমাদের উপভোগ করেছেন। পূর্বে উল্লেখ করা হয়েছে যে এটি শিক্ষাগত উদ্দেশ্যে ছিল; আজকের বিশ্বে একটি রত্ন ভারা তৈরি করতে আমরা বান্ডলার ব্যবহার করার পরামর্শ দিই৷

শান্তি আউট, তরুণ! আপনার যদি কোন ধারনা, প্রশ্ন বা মন্তব্য থাকে, দয়া করে আমাদের জানাতে দ্বিধা করবেন না।


  1. উৎপাদনে RubyGems.org ব্যবহার করার বিরুদ্ধে মামলা

  2. পরিবেশের ভেরিয়েবলের জন্য রুবিস্ট গাইড

  3. আপনার টেস্টিং স্যুট উন্নত করতে কিভাবে ভিসিআর রত্ন ব্যবহার করবেন

  4. রুবিতে স্টেট মেশিন তৈরি করতে AASM রত্নটি কীভাবে ব্যবহার করবেন