আমি কীভাবে একটি বেসিক রুবি প্রকল্প স্থাপন করব?


103

আমি 10 ~ 20 ক্লাস / ফাইল সহ একটি ছোট রুবি প্রকল্প তৈরি করতে চাই। আমার কিছু রত্ন দরকার এবং আমি আরএসপেককে পরীক্ষার কাঠামো হিসাবে ব্যবহার করতে চাই।

আমি পরে কোনও রত্ন তৈরি করতে চাইব, তবে এটি নিশ্চিত নয়।

এমন কীভাবে বা গাইড রয়েছে যা আমাকে দেখায় যে কীভাবে আমার প্রকল্পের প্রাথমিক কাঠামোটি সেট আপ করতে হয়?

আমার যে প্রশ্নগুলি রয়েছে তা হ'ল:

  • আমি আমার সমস্ত কাস্টম ত্রুটিগুলি / ব্যতিক্রমগুলি কোথায় রাখি?
  • লাইব, বিন, এসসিআর ইত্যাদির মতো ডিরেক্টরিগুলির নামকরণের জন্য কি কিছু কনভেনশন আছে?
  • আমি পরীক্ষার ডেটা বা নথিগুলি কোথায় রাখি?
  • আমার প্রকল্পগুলিতে আমার অ্যাক্সেস থাকতে আমার আমার সমস্ত ফাইলগুলি কোথায় দরকার?

আমি জানি আমি স্ক্র্যাচ থেকে সবকিছু করতে পারি তবে আমি কিছু দিকনির্দেশনা চাই। এখানে কিছু ভাল রত্ন রয়েছে যা আমি অনুলিপি করতে পারি, তবে আমার আসলে কী প্রয়োজন এবং আমি কী মুছতে পারি তা নিশ্চিত নয়।

আমি http://gembundler.com/ এ দেখেছি , কিন্তু এটি বান্ডলার সেট আপ করার পরে বন্ধ হয়ে যায়।


উত্তর:


156

একটি ভাল শুরু করতে, আপনি bundle gemকমান্ডটি এবং ব্যবহার করতে পারেন rspec --init

~/code $ bundle gem my_lib
      create  my_lib/Gemfile
      create  my_lib/Rakefile
      create  my_lib/LICENSE.txt
      create  my_lib/README.md
      create  my_lib/.gitignore
      create  my_lib/my_lib.gemspec
      create  my_lib/lib/my_lib.rb
      create  my_lib/lib/my_lib/version.rb
Initializating git repo in /Users/john/code/my_lib
~/code $ cd my_lib/
~/code/my_lib $ git commit -m "Empty project"
~/code/my_lib $ rspec --init
The --configure option no longer needs any arguments, so true was ignored.
  create   spec/spec_helper.rb
  create   .rspec
  • কোড ভিতরে যায় lib
  • চশমা ভিতরে যান spec
  • পরীক্ষা ডেটা বা নথি প্রবেশ spec/fixtures/
  • আপনার সমস্ত রুবি ফাইলগুলিতে প্রবেশ করতে হবে lib/my_lib.rb। আপনার নিজের পছন্দ অনুযায়ী সেই ফাইলটিতে বা আপনার নিজস্ব ফাইলগুলিতে আপনি নিজের ব্যতিক্রমগুলি সংজ্ঞায়িত করতে পারেন।
  • সি উত্স ফাইলগুলি প্রবেশ করে ext/my_lib
  • শেল স্ক্রিপ্ট এবং এক্সিকিউটেবলগুলি ভিতরে যায় bin

সন্দেহ হলে, অন্যান্য রত্নগুলি কীভাবে দেওয়া হয় তা কেবল দেখুন।


আরো তথ্য:

অন্যান্য বিকাশকারীদের পক্ষে জিনিসগুলি সহজ করার জন্য আপনার রত্নখণ্ডকে বিকাশের নির্ভরতা হিসাবে আরএসপেক যুক্ত করা উচিত

  1. My_lib.gemspec সম্পাদনা করুন, নীচে যুক্ত gem.add_development_dependency 'rspec'এবং gem.add_development_dependency 'rake'কাছাকাছি।
  2. যোগ Bundler.setupএবং require 'my_lib'বৈশিষ্ট / spec_helper.rb শীর্ষে নিশ্চিত করার জন্য আপনার মণি নির্ভরতা লোড করা হয় যখন আপনি আপনার চশমা চালানো।
  3. আপনার রেকফিল যুক্ত করুন require "rspec/core/rake_task"এবং যুক্ত করুন task :default => :spec, যাতে চলমান rakeআপনার চশমা চালাবে।

আপনি যখন আপনার সর্বাধিক সৃষ্টিতে কাজ করছেন, তখন গার্ড-আরএসপেক ফাইলগুলি পরিবর্তন হিসাবে স্বয়ংক্রিয়ভাবে আপনার চশমা চালিয়ে আপনার সময় এবং ঝামেলা বাঁচাতে পারে, আপনাকে নির্দিষ্ট ব্যর্থতা সম্পর্কে সতর্ক করে।

~/code/my_lib $ git add spec/spec_helper.rb
~/code/my_lib $ git commit -am "Add RSpec"
~/code/my_lib $ vim my_lib.gemspec # add guard development dependency
~/code/my_lib $ bundle
~/code/my_lib $ bundle exec guard init
~/code/my_lib $ vim Guardfile # Remove the sections below the top one
~/code/my_lib $ git add Guardfile
~/code/my_lib $ git commit -am "Add Guard"

আপনি আপনার সৃষ্টিতে খুশি হওয়ার পরে, এটি গিথুব পর্যন্ত চাপ দিন

# create a github repository for your gem, then push it up
~/code/my_lib $ curl -u myusername https://api.github.com/user/repos -d '{"name":"my_lib"}' 
~/code/my_lib $ git remote add origin git@github.com:myusername/my_lib.git
~/code/my_lib $ git push

তারপরে, আপনি যখন রবিজেমস.অর্গ.এতে আপনার রত্ন প্রকাশ করার জন্য প্রস্তুত হন, তখন চালান rake release, যা আপনাকে ধাপে এগিয়ে যাবে।

~/code/my_lib $ rake release

আরও তথ্যসূত্র


1
আপনি -b, [--bin=Generate a binary for your library.]সাথে ব্যবহার করতে পারেন bundle gem
সেলম্যান উলুগ

আপনি একবারে সকলের bundle gem <gem-name> -tসমতুল্য করতেও ব্যবহার করতে পারেন rspec --init
পাইওটো

1
রুবি প্রকল্প কীভাবে কার্যকর করা যায়। আমি ছাত্র শিক্ষকের সময়সূচীর জন্য একটি কনসোল ভিত্তিক রুবি প্রকল্প তৈরি করেছি। কীভাবে এটি কার্যকর করা যায় তা নিশ্চিত নন ??
রাজউজ

11

আছে rubygems.org এ কিছু চমৎকার গাইড আপনি নিয়মাবলী এবং তাদের কিছু পিছনে যুক্তি প্রবর্তন করা হবে। সাধারণভাবে, রুবিজেমসের নামকরণ এবং ডিরেক্টরি সম্মেলনগুলি বেশিরভাগ রুবি বিকাশকারী অনুসরণ করে।

আমি কেবলমাত্র কাস্টম ব্যতিক্রম ক্লাসগুলি তৈরি করতে পারতাম যদি আমি স্ট্যান্ডার্ড লাইব্রেরিতে কোনও ক্লাস ত্রুটির বর্ণনায় ফিট করে না পাই। আপনার ত্রুটি শ্রেণীর ক্লাস বা মডিউলটির নীচে বাসা বাঁধে যা এটি উত্থাপন করে:

class Parser::Error < RuntimeError; end

begin
  Parser.new(:invalid).parse!
rescue Parser::Error => e
  puts e.message
end

ইউনিট পরীক্ষাগুলি হয় /testআপনি যদি ব্যবহার করছেন Test::Unit, বা /specআপনি যদি ব্যবহার করছেন তবে .ুকে পড়ে RSpec। আমি উত্তরোত্তর সুপারিশ।

Bundlerআপনার বোঝার পথ পরিচালনা করার দুর্দান্ত উপায়। এটি স্বয়ংক্রিয়ভাবে আপনার পরিবেশটিকে কেবলমাত্র উপর নির্ভরশীলতা Gemfileএবং option চ্ছিকরূপে সেট আপ করবে gemspec। এটি আপনাকে requireকোনও রত্ন না করে আপনার কোডটিকে সহজেই অনুমতি দেয় ।

তবে, যেহেতু আপনি ভবিষ্যতে কোনও রত্নে আপনার কোড বান্ডিল করতে পারেন, তাই আমি কীভাবে রত্নের স্পেসিফিকেশন তৈরি করতে পারি তা তদন্তের পরামর্শ দিই । আপনার নিজের স্পেসিফিকেশন ম্যানুয়ালি লিখতে হবে। এটিকে স্বয়ংক্রিয়ভাবে উত্পন্ন করতে কোনও সরঞ্জাম ব্যবহার করবেন না - এগুলি, আমার মতে, নিষ্ঠুরূপে বল প্রয়োগ করা হয় যা অযথা তথ্য নকল করে এবং উত্স নিয়ন্ত্রণের সাথে ব্যবহার করার সময় ধ্বংসাত্মক ধ্বংসাত্মক ঘটনা ঘটায়।

আমি এমন একটি রত্ন তৈরি করেছি যা আপনাকে দরকারী মনে হতে পারে। একটি gemspecফাইল দেওয়া হয়েছে , এটি Rakeআপনার রত্নটির সাথে কাজ করার জন্য অনেকগুলি দরকারী কাজকে সংজ্ঞায়িত করে , যার মধ্যে আপনার রত্নটি নির্মাণ, ইনস্টল করা এবং মুক্ত করার জন্য rubygemsএবং gitস্বয়ংক্রিয় সংস্করণ ট্যাগিংয়ের সাহায্যে সংগ্রহস্থল অন্তর্ভুক্ত রয়েছে। এটি কোনও আসর irbবা pryসেশনে আপনার কোড লোড করার একটি সহজ উপায় সরবরাহ করে ।

# Rakefile
require 'rookie'

# Run `rake -T` for the complete task list
Rookie::Tasks.new('your_gem.gemspec').define_tasks!

6

আমি প্রায়শই দেখতে পেয়েছি এমন সম্মেলনগুলি এখানে (আপনার প্রকল্পের নামটি "foo" ধরে ধরে):

  • /lib/foo.rb - প্রকল্পের শীর্ষ স্তরের নাম স্থান এবং এর সংস্করণ সংজ্ঞায়িত করে; প্রয়োজনীয় ফাইল প্রয়োজন।
  • / lib / foo / - ত্রুটি-সম্পর্কিত ক্লাস সহ আপনার প্রকল্পের সমস্ত শ্রেণি অন্তর্ভুক্ত।
  • / পরীক্ষা / - আপনার প্রকল্পের জন্য পরীক্ষা ধারণ করে।
  • / spec / - আপনার প্রকল্পের জন্য চশমা ধারণ করে।
  • / বিন / - যদি আপনার প্রকল্প বাইনারিগুলির উপর নির্ভর করে (জেআর ফাইলগুলি, ইত্যাদি), তারা সাধারণত সেখানে যায়।

লাইব / এর অভ্যন্তরে কনভেনশনটি সাধারণত আপনার শীর্ষ-স্তরের নেমস্পেসের অভ্যন্তরে প্রতিটি উপ-নেমস্পেসের জন্য একটি ফোল্ডার তৈরি করা হয়। উদাহরণস্বরূপ, ফু: :: বার :: শ্রেণি ক্লাসটি সাধারণত: /lib/foo/bar/baz.rb এর অধীনে পাওয়া যায়।

কিছু লোক কেবল Foo :: VERSION ধ্রুবক সেট করতে একটি /lib/foo/version.rb ফাইল তৈরি করতে চান তবে খুব প্রায়ই আমি এটি /lib/foo.rb ফাইলে সংজ্ঞায়িত দেখেছি।

এছাড়াও, আপনি যদি কোনও রত্ন তৈরি করেন তবে আপনার নিম্নলিখিত ফাইলগুলির প্রয়োজন হবে:

  • / রেকফিল - রাক কার্যগুলি সংজ্ঞায়িত করে (যেমন রত্নটিকে পরীক্ষা, বিল্ডিং এবং ধাক্কা দেওয়ার কাজ)।
  • / রত্নখণ্ডক - রত্নটির উত্স নির্ধারণ করে (অন্যান্য সম্ভাব্য জিনিসের মধ্যে)।
  • /foo.gemspec - আপনার মণি বর্ণনা করে এবং নির্ভরতার একটি তালিকা সরবরাহ করে।

5

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

সাধারণ রুবি রত্ন সংক্রান্ত প্রয়োজনীয়তাগুলি ছাড়াও আমি আরও ভাল কর্মপ্রবাহের জন্য নিম্নলিখিত সরঞ্জামগুলির প্রস্তাব দিই:

  • সম্পাদককনফিগ , বিকাশকারীকে বিভিন্ন সম্পাদক এবং আইডিইগুলির মধ্যে সামঞ্জস্যপূর্ণ কোডিং শৈলী সংজ্ঞায়িত এবং বজায় রাখতে সহায়তা করে।
  • রুবোকপ , রুবির জন্য স্ট্যাটিক কোড বিশ্লেষক, রুবি সম্প্রদায়ের মধ্যে লম্বা লম্বা করার শোধ।
  • গার্ড , একসাথে প্লাগইনগুলির সাথে, কোডগুলি স্বয়ংক্রিয়ভাবে পরিবর্তিত হওয়ার পরে আপনি যে কোনও কমান্ড পছন্দ করতে চান চালাতে পারেন।
  • রেক , বিভিন্ন প্রকল্পের কাজের জন্য সর্বজনীন ড্রাইভার, যেমন:
    • package: রত্ন প্যাকেজ নির্মাণ
    • clean: উত্পন্ন ফাইল পরিষ্কার করুন
    • test: পরীক্ষা চালান
  • ইয়ার্ড , জনপ্রিয় রুবি ডকুমেন্টেশন সরঞ্জাম।

এবং উপরের সমস্ত সরঞ্জামের পাশাপাশি রুবি প্রকল্পের জন্য তাদের কিছু অনলাইন পরিষেবা রয়েছে:

এবং আপনি আপনার ওপেন সোর্স প্রকল্পের জন্য http://shields.io/ এর মাধ্যমে ব্যাজগুলিও জেনারেট করতে পারেন ।

এটি আমার অভিজ্ঞতা, আশা করি এটি কারওর জন্য সহায়ক হবে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.