39

मैं एक रूबी मणि बना रहा हूं और मैंने देखा है कि ऐसा लगता है कि मेरे ज्ञान के लिए रत्नों के लिए एक नामकरण सम्मेलन नहीं है। उदाहरण के लिए, मैं दोनों को देखा है:रूबी मणि नामकरण सम्मेलन

gem 'foo-bar' 
gem 'foo_bar' 

वहाँ गहरे लाल रंग का रत्न के नामकरण के लिए निश्चित गाइड/सम्मेलन के कुछ प्रकार है?

+1

संभावित डुप्लिकेट [क्या किसी एक शब्द से अधिक के साथ एक मणि नामकरण करते समय डैश या अंडरस्कोर का उपयोग करना चाहिए?] (Http://stackoverflow.com/questions/4687659/should-one-use-dashes-or-underscores- जब-नामकरण-एक-मणि-एक-से-एक-शब्द) –

उत्तर

62

धराशायी संस्करण, अन्य चौखटे पर एक्सटेंशन के लिए है rspec-rails की तरह और अंडरस्कोर सामान्य मणि नाम के भाग के लिए है और अपनी कक्षाओं में camelcased किया जाना चाहिए।

तो यदि आपके पास foo_bar नामक मणि है, तो वर्ग/मॉड्यूल को FooBar नाम दिया जाना चाहिए। कि मणि एक रेल विस्तार जो एक अलग मणि के रूप में जहाजों, यह foo_bar-rails बुलाया जाना चाहिए होना चाहिए और मॉड्यूल FooBar::Rails बुलाया जाना चाहिए और के रूप में require "foo_bar/rails"

यह सम्मेलन भी क्या Bundler की आवश्यकता होती है की कोशिश करता है यह आवश्यक होना चाहिए है।

मान्य है, इस सम्मेलन का हमेशा पालन नहीं किया जाता है। jquery_rails वास्तव में jquery-rails और factory_girl_rails को factory_girl-rails कहा जाना चाहिए। लेकिन हे, सब कुछ सही नहीं है।

RubyGems सम्मेलन डॉक्स:

+5

यह rubygems पैटर्न दस्तावेज़ों द्वारा बोल्ड किया गया है [यहां ] (http://guides.rubygems.org/patterns/)। – turboladen

+3

[अपने मणि का नाम] (http://guides.rubygems.org/name-your-gem/) – rthbound

+0

https://github.com/rails/jquery-rails;) – Volte

4

एक फायदा मॉड्यूल या कक्षा FooBar में ऑटोलोडर जाने के लिए foo_bar को ध्वस्त करने का सम्मेलन है। foo-bar में डिफ़ॉल्ट समकक्ष नहीं है।

आम तौर पर अंडरस्कोर संस्करण require परिप्रेक्ष्य से बेहतर है, लेकिन धराशायी संस्करण अधिक पठनीय के रूप में आता है ताकि यह अक्सर उपयोग किया जा सके।

+4

धराशायी संस्करण अधिक पठनीय है यह मेरे लिए पूरी तरह से गलत लगता है, किस भाषा में पहचानकर्ताओं में डैश हो सकता है? – Nemo157

+0

@ निमो 157 - ई.आई. CLIPS में मैं इसमें प्रोग्राम करता था और पहचानकर्ताओं में डैश होने के लिए एक अच्छी बात थी। आपको "_" प्राप्त करने के लिए दबाए जाने की आवश्यकता नहीं थी और आप कुछ लिख सकते हैं: बैंगनी-cow_painter-module, cat_painter-module (मैंने _ से अधिक अलग चीजों का उपयोग किया - –

4

@svenfuchs की एक सिफारिश में:

  • को रेखांकित => camelized
  • हाइफन => नाम :: अंतरिक्ष

https://twitter.com/svenfuchs/status/135773593526206464

लेकिन यह सच है कि मैं अभी भी गैर-समन्वय व्यवहार देखता हूं जैसे:

gem 'my_gem`, :require => 'my-gem' 

https://twitter.com/#!/svenfuchs/status/135784542819713024

5

बाहर कर देता है कि इस rubygems डॉक्स में बहुत स्पष्ट रूप से और संक्षेप जवाब है: http://guides.rubygems.org/name-your-gem/

(यह हाल ही में एक दस्तावेज़ जोड़ा जा सकता है क्योंकि मुझे अतीत में इस जानकारी की खोज याद आती है और इसे नहीं मिलती है।)

संबंधित मुद्दे