tutorial rails que heinemeier hansson ejemplos david curso ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-3.1 rubygems

ruby-on-rails - que - ruby on rails tutorial



Ruby gema nombrando convenciones (4)

En una recomendación de @svenfuchs:

  • subrayado => camelizado
  • hyphen => nombre :: espacio

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

Pero es verdad que todavía veo comportamientos de falta de coherencia como:

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

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

Estoy creando una gema de rubí y me he dado cuenta de que no parece haber (según mi conocimiento) una convención de nombres para las gemas. Por ejemplo, he visto ambos:

gem ''foo-bar'' gem ''foo_bar''

¿Hay algún tipo de guía / convención definitiva para el nombramiento de gemas de rubí?


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 la perspectiva de require , pero la versión punteada aparece como más legible, por lo que tiende a utilizarse con frecuencia.


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

Entonces, si tienes una gema llamada foo_bar , la clase / módulo debería llamarse FooBar . Si esa gema debe tener una extensión de rieles que se envía como una gema diferente, debe llamarse foo_bar-rails y el módulo debe llamarse FooBar::Rails y debe requerirse como se require "foo_bar/rails"

Esta convención es también lo que Bundler intenta requerir.

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

Documentos de la convención de RubyGems:


Resulta que esto se responde de manera bastante clara y sucinta en los documentos de 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).