39

Tôi đang tạo ra đá quý ruby ​​và tôi đã nhận thấy rằng dường như không có kiến ​​thức đặt tên cho đá quý. Ví dụ: tôi đã thấy cả hai:Quy ước đặt tên cho đá quý Ruby

gem 'foo-bar' 
gem 'foo_bar' 

Có một số loại hướng dẫn/quy ước dứt khoát để đặt tên cho đá quý ruby ​​không?

+1

có thể trùng lặp của [Có nên sử dụng dấu gạch ngang hoặc dấu gạch dưới khi đặt tên cho một đá quý có nhiều hơn một từ không?] (Http://stackoverflow.com/questions/4687659/should-one-use-dashes-or-underscores- Khi đặt tên-một-đá-với-nhiều hơn một từ) –

Trả lời

62

Phiên bản tiêu tan là dành cho phần mở rộng trên các khuôn khổ khác, như rspec-rails và gạch dưới là dành cho một phần của tên viên ngọc bình thường và cần được camelcased trong lớp học của bạn.

Vì vậy, nếu bạn có đá quý có tên foo_bar, lớp/mô-đun phải có tên FooBar. Nếu viên đá quý đó cần có phần mở rộng đường ray, nó sẽ được gọi là foo_bar-rails và mô-đun sẽ được gọi là FooBar::Rails và cần được yêu cầu là require "foo_bar/rails"

Quy ước này cũng là điều mà Bundler cố gắng yêu cầu.

Phải thừa nhận rằng, quy ước này không phải lúc nào cũng tuân theo. jquery_rails thực sự phải là jquery-railsfactory_girl_rails nên được gọi là factory_girl-rails. Nhưng này, không phải mọi thứ đều hoàn hảo.

RubyGems docs ước:

+5

Điều này được hỗ trợ bởi các tài liệu mẫu rubygems [tại đây ] (http://guides.rubygems.org/patterns/). – turboladen

+3

[Đặt tên cho đá quý của bạn] (http://guides.rubygems.org/name-your-gem/) – rthbound

+0

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

4

Lợi thế duy nhất là quy ước thu gọn foo_bar thành mô-đun hoặc lớp FooBar theo cách tự động tải. foo-bar không có tương đương mặc định.

Nói chung, phiên bản gạch dưới thích hợp hơn từ góc nhìn require, nhưng phiên bản bị gạch ngang không có khả năng đọc được nhiều hơn vì vậy nó thường được sử dụng thường xuyên.

+4

Phiên bản bị gạch ngang dễ đọc hơn‽ Có vẻ hoàn toàn sai với tôi, trong ngôn ngữ nào có thể nhận dạng dấu gạch ngang trong chúng? – Nemo157

+0

@ Nemo157 - e.i. trong CLIPS. Tôi sử dụng để lập trình trong đó và có dấu gạch ngang trong số nhận dạng là một điều tốt đẹp để có. Bạn không cần phải bấm để nhận "_" và bạn có thể viết một cái gì đó như: purple-cow_painter-module, cat_painter-module (tôi đã sử dụng _ để nhiều thứ riêng biệt hơn -) –

5

Hóa ra rằng đây là trả lời khá rõ ràng và ngắn gọn trong các tài liệu rubygems: http://guides.rubygems.org/name-your-gem/

(Điều này có thể là một bổ sung doc gần đây vì tôi nhớ lại việc tìm kiếm thông tin này trong quá khứ và không tìm thấy nó.)