Domanda Convenzioni di denominazione di gemme rubino


Sto creando una gemma di rubino e ho notato che non sembra esserci (a mia conoscenza) una convenzione di denominazione per le gemme. Ad esempio, ho visto entrambi:

gem 'foo-bar'
gem 'foo_bar'

C'è qualche tipo di guida / convenzione definitiva per la denominazione delle gemme di rubino?


39
2018-01-22 04:18


origine


risposte:


La versione tratteggiata è per le estensioni su altri framework, come rspec-rails e il carattere di sottolineatura è per una parte del normale nome della gemma e dovrebbe essere incluso nelle classi.

Quindi se hai un gioiello chiamato foo_bar, la classe / modulo dovrebbe essere nominata FooBar. Se quella gemma dovrebbe avere un'estensione di rotaie che viene spedita come gemma diversa, dovrebbe essere chiamata foo_bar-rails e il modulo dovrebbe essere chiamato FooBar::Rails e dovrebbe essere richiesto come require "foo_bar/rails"

Questa convenzione è anche ciò che Bundler cerca di richiedere.

Certo, questa convenzione non è sempre seguita. jquery_rails dovrebbe essere effettivamente jquery-rails e factory_girl_rails dovrebbe essere chiamato factory_girl-rails. Ma hey, non tutto è perfetto.

Documenti della convenzione RubyGems:


62
2018-01-22 13:27



Risulta che questa è una risposta abbastanza chiara e succinta nei documenti rubygems: http://guides.rubygems.org/name-your-gem/

(Potrebbe trattarsi di una recente aggiunta al doc perché ricordo di aver cercato queste informazioni in passato e di non averle trovate.)


5
2017-08-21 14:12



L'unico vantaggio è la convenzione del collasso foo_bar in modulo o classe FooBar per quanto riguarda i caricatori automatici. foo-bar non ha un equivalente predefinito.

Generalmente la versione di sottolineatura è preferibile da a require prospettiva, ma la versione tratteggiata risulta più leggibile e quindi tende ad abituarsi spesso.


4
2018-01-22 05:16



In una raccomandazione di @svenfuchs:

  • sottolineare => camelizzato
  • trattino => nome :: spazio

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

Ma è vero che vedo ancora comportamenti di non coerenza come:

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

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


4
2018-01-22 12:46