আদর্শ রুবি প্রকল্প কাঠামো


125

আমি রুবি (নন-রেল / মের্ব / ইত্যাদি) প্রকল্পের আদর্শ প্রকল্প কাঠামোর সংক্ষিপ্ত বিবরণ / স্পষ্টকরণের পরে আছি। আমি অনুমান করছি এটি অনুসরণ করা হয়

app/
  bin/                  #Files for command-line execution
  lib/
    appname.rb
    appname/            #Classes and so on
  Rakefile              #Running tests
  README
  test,spec,features/   #Whichever means of testing you go for
  appname.gemspec       #If it's a gem

আমার কিছু ভুল হয়েছে? আমি কোন অংশগুলি মিস করেছি?


উত্তর:


88

আমি মনে করি যে এটি বেশ স্পট। ডিফল্টরূপে, রুবিজেমস লোডপথে লিব ডিরেক্টরি যুক্ত করবে, তবে আপনি যে ডিরেক্টরিটি চান তা push: ভেরিয়েবল ব্যবহার করে চাপতে পারেন। অর্থাত

$:.push File.expand_path(File.dirname(__FILE__) + '/../surfcompstuff')

এর অর্থ যখন আপনি বলেছেন, surfer.rb এই দির আপনি যে require "surfer"কোনও জায়গায় এবং ফাইলটি সন্ধান করতে পারবেন ।

এছাড়াও, একটি সম্মেলন হিসাবে, ক্লাস এবং সিঙ্গেলনগুলি একটি ফাইল পায় এবং মডিউলগুলি একটি ডিরেক্টরি পায়। উদাহরণস্বরূপ, যদি আপনার কাছে LolCatzমডিউল এবং LolCatz::Moarশ্রেণিটি দেখতে ভাল লাগে তবে:

lib/
  appname.rb
  lolcatz/
    moar.rb

এজন্য একটি লাইব / অ্যাপ্লিকেশন ফোল্ডার রয়েছে কারণ বেশিরভাগ গ্রন্থাগারগুলি the appname নেমস্পেসে রয়েছে।

অতিরিক্তভাবে, আপনি যদি কমান্ডটি চালানোর চেষ্টা করেন newgem --simple [projectname]যা রুবি প্রকল্পের জন্য কেবল খালি প্রয়োজনীয় জিনিসগুলি (এবং এক্সটেনশনে একটি রুবি জহর) দিয়ে দ্রুত আপনার জন্য একটি ভাস্কর্য তৈরি করবে। অন্যান্য সরঞ্জাম রয়েছে যা এটি করে, আমি জানি, তবে নতুন প্রযুক্তি খুব সাধারণ। আমি সাধারণত TODO ফাইল এবং সমস্ত স্ক্রিপ্টের জিনিসগুলি থেকে মুক্তি পাই।


1
মিষ্টি। আমি নিউজেম সম্পর্কে জানতাম না। আমার নন-রেল প্রকল্পগুলি প্রায়শই রেলগুলির কাঠামোটি মিরর করে দেয় কারণ আমি এটি পরিচিত found এই সেরা অনুশীলন টিপ জন্য ধন্যবাদ।
berlin.ab

আরেকটি গুরুত্বপূর্ণ ফাইল হতে পারে "লাইসেন্স"
bluehavana

2
libলোডপথে স্বয়ংক্রিয়ভাবে যুক্ত হওয়ার সাথে আপনি যে আচরণটি বর্ণনা করেছেন তা আমি পাই না । এটি কি একটি 1.9 জিনিস? এটি পেতে কোনও বিশেষ কনফিগারেশন প্রয়োজন?
এমিলি

5
রত্নের টেম্পলেট তৈরি করতে আপনি বান্ডিলও ব্যবহার করতে পারেন। এই মন্তব্যের সময় 9 মাসের জন্য নতুন প্রতিশ্রুতিবদ্ধ ছিল না। কমান্ডটি হ'লbundle gem gem_name
নিনজ্যাক্সার


6

আমি রেল প্রকল্পের কাঠামোটি নকল করার চেষ্টা করি কারণ আমার দল, যা সাধারণত রেলের সাথে কাজ করে, অন্য কাঠামোর চেয়ে কাঠামোটি আরও ভালভাবে বুঝতে পারবে। কনফিগারেশন ওভার কনভেনশন - রেলগুলি থেকে রক্তক্ষরণ।


6
যদি কিছু বাহ্যিক বিকাশকারী আপনার কোডটি দেখেন তবে তিনি কী দেখবেন তা কেবল আপনার ব্যক্তিগত সম্মেলন। আমি মনে করি যে কোনও মাঝারি / বড় প্রকল্পের জন্য, সম্পূর্ণ ভিন্ন ধরণের প্রকল্পের জন্য বোঝানো একটি সম্মেলনের সেট ব্যবহার আরও বিভ্রান্তির কারণ হতে পারে। এটি কি রেলের অ্যাপ, একটি রুবি অ্যাপ? কেন এটি রেল অ্যাপের মতো নকশা করা হয়েছে? "কিছু ভাঙ্গার আগে আমি বিকাশকারীর সাথে আরও ভাল যোগাযোগ করতে পারি ...?" এটি প্রথম থেকেই ঠিক কিছুটা ওভারহেড যুক্ত করতে চলেছে ..
jj_

আমি @ jj_ এর সাথে একমত আমি জানি এটি বেশ পুরানো, তবে আমি মনে করি যে কেন সম্প্রদায়ীয় সম্মেলন হয় তা লোকেদের বুঝতে গুরুত্বপূর্ণ। এটি যাতে আপনি কাউকে রাস্তায় টেনে আনতে পারেন, তারা আপনার প্রকল্পটি দেখতে এবং ক্র্যাকিং করতে পারে। এটি যাতে আপনি কিছু সন্ধান করতে এবং এটি বুঝতে পারেন। আমি মনে করি ডোমেনের সম্মেলনগুলি ব্যবহার করা গুরুত্বপূর্ণ। প্রকল্প কনফিগারেশন উপর ডোমেন কনভেনশন।
ওয়াটসআইনাবক্স

2

আপনি যদি বান্ডলার ব্যবহার করেন তবে এই কমান্ডটি চালাচ্ছেন bundle gem app_name আপনাকে একই ডিরেক্টরি কাঠামো দেবে।

আপনি যদি ইউনিট পরীক্ষার পরিবর্তে আরএসপেক ব্যবহার করতে চান তবে আপনি এই কমান্ডটি চালাতে পারেন rspec --init (কেবল আপনাকে cd app_nameপ্রথমে নিশ্চিত করুন )

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