কম্পিউটার

আপনার প্রথম রুবি রত্ন নিষ্কাশনের জন্য একটি গাইড

আপনার GitHub অবদান চার্ট কঠিন ধূসর? আপনি কাজ করার জন্য একটি ওপেন সোর্স প্রকল্প ব্যবহার করতে পারেন। তবে আপনাকে এটি স্ক্র্যাচ থেকে শুরু করতে হবে না। একটি উপযোগী সাইড প্রজেক্ট তৈরি করার সবচেয়ে সহজ উপায় হল আপনি যে অ্যাপটি তৈরি করছেন তা থেকে এটিকে বের করে আনা৷ এভাবেই রেলের জন্ম!

কিন্তু কিভাবে আপনি কি নিষ্কাশন জানেন? এবং কিভাবে আপনি এটি একটি রত্ন মধ্যে পরিণত করবেন, আপনার কর্মপ্রবাহ ধ্বংস না করে?

আপনি যে কোডটি বের করতে চান সেটি খুঁজুন।

কোথাও, আপনার অ্যাপের গভীরে, এমন কিছু কোড আছে যা সেখানে নেই। কোড যেটির প্রয়োজন নেই৷ আপনার অ্যাপ্লিকেশন তার কাজ করতে. এটা কোথায়?

কখনও কখনও, আপনাকে শুধু অনুমান করতে হবে। কিন্তু আমি প্রায়শই একই কয়েকটি জায়গায় নিষ্কাশনযোগ্য কোড খুঁজে পাই:

  • বৈধতা

    আপনি কি আপনার গুণাবলীর জন্য কোনো কাস্টম বৈধতা লিখেছেন? এগুলি দুর্দান্ত রত্ন তৈরি করতে পারে৷

  • রেলে আপনার করা পরিবর্তনগুলি

    প্রতিবার একবারে, আপনাকে ডাটাবেসের NULL-এ পরিণত করার জন্য পরীক্ষায় বা ফাঁকা বৈশিষ্ট্যে কাজ করার জন্য কমিট হুক পেতে রেলের সাথে ঝামেলা করতে হবে। যখনই আমি এই ধরনের যুক্তিকে একটি রত্ন হিসাবে স্থানান্তরিত করেছি, এটি আরও স্থিতিশীল এবং বোঝা সহজ হয়েছে৷

  • অ-সক্রিয় রেকর্ড মডেল

    আপনি কি এত বেশি ইমেল ঠিকানা বা ফোন নম্বর পার্সিং করেন যে আপনি এটিকে নিজের ক্লাসে স্থানান্তরিত করেছেন? এই ক্লাসগুলি প্রায়শই অন্যান্য অ্যাপে উপযোগী হয় এবং সেগুলিকে রত্ন হিসাবে পরিণত করা বেশ সহজ৷

  • মক অবজেক্ট এবং কাস্টম দাবী

    আপনি কাস্টম দাবী ব্যবহার করে আরও পঠনযোগ্য পরীক্ষা লিখতে পারেন। এবং একবার আপনার কাছে একটি লাইব্রেরি বা প্যাটার্নের জন্য কিছু ভাল কাস্টম দাবী লেখা হয়ে গেলে, তারা সেই লাইব্রেরি বা প্যাটার্ন ব্যবহার করে এমন অন্য যেকোনও ব্যক্তির জন্য সহায়ক।

আপনাকে বড় ভাবতে হবে না। আমার প্রিয় কিছু রত্ন মাত্র একটি ফাইল!

এবং আপনি যদি এখনও সিদ্ধান্ত নিতে না পারেন যে কি বের করতে হবে, কিছু অনুপ্রেরণার জন্য RubyToolbox-এ বিভাগ তালিকা ব্রাউজ করুন।

আপনার কোড একটি রত্ন-সদৃশ ডিরেক্টরিতে রাখুন

একবার আপনি কোন কোডটি রত্নতে পরিণত হবেন তা জানলে, সেই কোডটিকে ঘুরিয়ে দিন যাতে এটি আপনার অ্যাপের মধ্যে একটি রত্ন-সদৃশ কাঠামো ফিট করে।

Rails অ্যাপে, আমি lib/ ব্যবহার করি একটি রত্ন মঞ্চায়ন এলাকা হিসেবে . lib/ যেখানে আমি এমন কোড রেখেছি যেটির নিজস্ব রত্ন হওয়ার সম্ভাবনা রয়েছে। সুতরাং, আপনি যদি "json_api_client" নামে একটি রত্ন তৈরি করেন, তাহলে আপনার Rails অ্যাপের lib/ ডিরেক্টরি দেখতে এরকম হতে পারে:

...
my_rails_app/lib/json_api_client.rb
my_rails_app/lib/json_api_client/associations.rb
my_rails_app/lib/json_api_client/connection.rb
...

বেশিরভাগ রত্নগুলির lib/ এর অধীনে একটি ফাইল থাকবে মণির নামে নামকরণ করা হয়েছে (lib/json_api_client.rb ), এবং সেই রত্নটির নামকরণ করা একটি ডিরেক্টরিতে একগুচ্ছ ফাইল (lib/json_api_client/ এর অধীনে সবকিছু ) সুতরাং, সেই একই কাঠামো নিন এবং এটি আপনার রেল অ্যাপের মধ্যে মেলে। এটি পরবর্তীতে রত্নটিতে কোড সরানো আরও সহজ করে তুলবে।

যদি আপনি একটি রত্ন লেআউট দেখতে কেমন তা নিয়ে বিভ্রান্ত হন, GitHub-এ আপনার প্রিয় কিছু রত্ন উৎস দেখুন৷ আপনি খুব দ্রুত প্যাটার্ন বাছাই করবেন।

পরীক্ষা সম্পর্কে কি?

আমি lib/ অনুসরণ করতাম test/unit/-এর ভিতরে এর গঠন :

...
my_rails_app/test/unit/json_api_client_test.rb
my_rails_app/test/unit/json_api_client/associations_test.rb
my_rails_app/test/unit/json_api_client/connection_test.rb
...

একই ফোল্ডারে মডেল এবং লাইব্রেরি স্থাপন করা একটু অগোছালো হয়ে গেলেও এটি ঠিক কাজ করেছে৷

এখন, যদিও, রেলগুলি test/models/ ব্যবহার করে test/unit/ এর পরিবর্তে . এবং আপনার lib/ সংরক্ষণ করুন test/models/-এর ভিতরে পরীক্ষা পুরো অনেক কিছু বোঝায় না। আমি এখনও এটির জন্য একটি কনভেনশনের বিষয়ে সিদ্ধান্ত নিইনি। আপনার কোন পরামর্শ আছে?

নির্ভরতা ভাঙুন

একবার আপনার কোড একটি রত্ন ভিতরে, এটি আপনার অ্যাপ্লিকেশন উপর নির্ভর করতে সক্ষম হবে না. এর মানে হল যে কোডটি আপনি lib/ এ রেখেছেন তার মধ্য দিয়ে যেতে হবে , এবং এমন জায়গাগুলি সন্ধান করুন যেখানে এটি আপনার অ্যাপের জন্য নির্দিষ্ট শ্রেণী, বস্তু বা আচরণের উপর নির্ভর করে৷

আপনি যদি এই নির্ভরতাগুলির মধ্যে কোনটি খুঁজে পান তবে আপনাকে সেগুলি ভাঙতে হবে। নির্ভরতা কীভাবে ভাঙতে হয় (বা ইনজেকশন) সে ​​সম্পর্কে অনেক দুর্দান্ত লেখা রয়েছে, তাই আমি এখন সেদিকে যাচ্ছি না।

একটি রত্ন তৈরি করুন

আমি bundle gem ব্যবহার করি আমার রত্ন তৈরি করতে। বিশেষ করে, bulk_cache_fetcher নামে একটি রত্ন তৈরি করতে :

bundle gem bulk_cache_fetcher -t minitest

-t রত্নটির Rakefile-এ কিছু পরীক্ষা সহায়ক ফাইল এবং পরীক্ষার কাজ যোগ করে .

আপনাকে পরবর্তীতে কিছু হাউসকিপিং করতে হবে, যেমন .gemspec পূরণ করা , README লিখছেন , একটি LICENSE বাছাই করা হচ্ছে , সেই সব জিনিস।

এবং তারপর, যেহেতু আপনার কাছে ইতিমধ্যেই আপনার Rails অ্যাপের lib/ আপনার রত্ন কোড আছে ফোল্ডারে, আপনি কেবল সেই কোডটি এবং এর পরীক্ষাগুলিকে lib/ এ সরাতে পারেন এবং test/ আপনার নতুন রত্ন মধ্যে ফোল্ডার.

অনেক সময়, এমন কিছু জিনিস থাকবে যা আপনি মিস করেছেন বা ভুলে গেছেন, বা কোড যা আপনার অ্যাপ সম্পর্কে এমন কিছু অনুমান করে যা রত্নটির মধ্যে সত্য নয়। সুতরাং, আপনি এগিয়ে যাওয়ার আগে, আপনার রত্নটিতে যে পরীক্ষাগুলি স্থানান্তরিত করেছেন তা চালান এবং নিশ্চিত করুন যে সেগুলি সব পাস করেছে৷

আপনার অ্যাপে আপনার নতুন রত্ন ব্যবহার করুন

এখন আপনার কাছে একটি রত্ন আছে, আপনি এটি ব্যবহার করতে চান, তাই না? কিন্তু আপনার Rails অ্যাপের ভিতরে আপনার মণির পরিবর্তন পরীক্ষা করা বিরক্তিকর হতে পারে, দ্রুত। আপনাকে করতে হবে:

  1. আপনার রত্ন পরিবর্তন করুন
  2. রত্নটি তৈরি করুন
  3. আপনার সিস্টেম থেকে রত্নটির সমস্ত চিহ্ন মুছে ফেলুন, বা সংস্করণ আপডেট করুন
  4. রত্নটি ইনস্টল করুন
  5. আপনার সার্ভার পুনরায় চালু করুন

এটি বেশ ভয়ঙ্কর৷৷ ভাগ্যক্রমে, বান্ডলার আপনাকে একটি সহজ উপায় দেয়। বলুন আপনি আপনার রত্নটি ~/Source/bulk_cache_fetcher-এ তৈরি করেছেন . আপনি যখন রত্ন পরিবর্তনগুলি পরীক্ষা করছেন, আপনি এটি আপনার Rails অ্যাপের Gemfile ভিতরে লিখতে পারেন :

Gemfile
gem "bulk_cache_fetcher", path: "~/Source/bulk_cache_fetcher"

এরপর, bundle install চালান , এবং আপনি আপনার রত্নটিতে এমন পরিবর্তন করতে সক্ষম হবেন যেন সেই কোডটি এখনও আপনার অ্যাপের lib/ এ বাস করে। ফোল্ডার।

একটি শেষ জিনিস:নিশ্চিত করুন যে আপনি path: সরিয়েছেন আপনি আপনার কোড চেক করার আগে! সেই পথটি অন্য সিস্টেমে সঠিক স্থানের দিকে নির্দেশ নাও করতে পারে, তাই আপনার মেশিন ছাড়া এটি অন্য কোথাও কাজ করবে না।

বানান, জাহাজীকরণ করুন এবং উপভোগ করুন!

আপনার মণি প্রস্তুত হয়ে গেলে, আপনি এটিকে বিশ্বের কাছে পাঠাতে পারেন৷

সুতরাং, RubyGems-এ একটি অ্যাকাউন্টের জন্য সাইন আপ করুন যদি আপনি ইতিমধ্যে না করে থাকেন, আপনার পরিবর্তনগুলি দেখুন এবং rake release চালান . অভিনন্দন, আপনি এখন একজন রত্ন লেখক! এবং একবার আপনি সেই রত্নটিকে গিথুবে ঠেলে দিলে, আপনি দিনের জন্য আপনার সুন্দর সবুজ বর্গক্ষেত্র পাবেন৷

আপনার নিজের অ্যাপের এমন কোনো অংশ আছে যা নিষ্কাশনযোগ্য বলে মনে হয়? আপনি একটি ভাল রত্ন করতে পারে বলে মনে করেন যে কিছু? আমি এটি সম্পর্কে শুনতে চাই - শুধু নীচে একটি মন্তব্য করুন৷

এবং যদি আপনি একটি টন শিখতে চান রুবি রত্ন তৈরি, পরিচালনা এবং রক্ষণাবেক্ষণ সম্পর্কে আরও, আমি ব্র্যান্ডন হিলকার্টের একটি রুবি জেম তৈরি করার সুপারিশ করছি . তার বইটি যে প্রক্রিয়াটি অনুসরণ করে তা এটির খুব কাছাকাছি, এবং এটি আরও অনেক কিছু কভার করে৷


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

  2. মৌলিক ওওপি নীতিগুলির সাথে আপনার রুবি কোডকে কীভাবে নাটকীয়ভাবে উন্নত করবেন

  3. রুবিতে কার্যকরী প্রোগ্রামিং (সম্পূর্ণ নির্দেশিকা)

  4. রুবি মধ্যে স্ট্যাটিক বিশ্লেষণ