39

Estoy creando una gema de rubí y me he dado cuenta de que no parece haber (que yo sepa) una convención de nomenclatura para las gemas. Por ejemplo, he visto tanto:Convenciones de nomenclatura de gemas de Ruby

gem 'foo-bar' 
gem 'foo_bar' 

¿Existe algún tipo de guía definitiva/convención para la denominación de las gemas de rubí?

+1

posible duplicado de [¿Debería uno usar guiones o guiones bajos al nombrar una gema con más de una palabra?] (Http://stackoverflow.com/questions/4687659/should-one-use-dashes-or-underscores- when-naming-a-gem-with-more-than-one-word) –

Respuesta

62

La versión discontinua es para extensiones en otros marcos, como rspec-rails y el subrayado es de parte del nombre de la gema normal y se debe CamelCased en sus clases.

Si tiene una gema llamada foo_bar, la clase/módulo debe llamarse FooBar. Si esa gema debe tener una extensión de los carriles que se incluye como una joya diferente, que debería ser llamado foo_bar-rails y el módulo debe ser llamado FooBar::Rails y debe ser requerido como require "foo_bar/rails"

Esta convención es también lo Bündler intenta requerir.

Es cierto que esta convención no siempre se cumple. jquery_rails en realidad debería ser jquery-rails y factory_girl_rails debe llamarse factory_girl-rails. Pero bueno, no todo es perfecto.

docs convenciones RubyGems:

+5

Esto se refuerza con los patrones de ruby ​​docs [aquí ] (http://guides.rubygems.org/patterns/). – turboladen

+3

[Nombre su gema] (http://guides.rubygems.org/name-your-gem/) – rthbound

+0

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

4

La única ventaja es la convención de colapsar foo_bar en el módulo o clase FooBar en lo que respecta a los cargadores automáticos. foo-bar no tiene un equivalente predeterminado.

En general, la versión de guión bajo es preferible desde una perspectiva require, pero la versión discontinua se ve como más legible, por lo que tiende a utilizarse con frecuencia.

+4

La versión discontinua es más legible‽ Me parece completamente incorrecta, ¿en qué idioma pueden los identificadores tener guiones en ellas? – Nemo157

+0

@ Nemo157 - e.i. en CLIPS. Solía ​​programar en él y tener guiones en los identificadores era algo agradable de tener. No necesitó presionar para obtener "_" y escribir algo como: purple-cow_painter-module, cat_painter-module (utilicé _ para separar cosas que -) –

5

resulta que esto se responde bastante clara y sucinta en la documentación RubyGems: http://guides.rubygems.org/name-your-gem/

(Esta puede ser una adición reciente al doc porque recuerdo haber buscado esta información en el pasado y no haberla encontrado.)

Cuestiones relacionadas