我创造了一颗红宝石,并且我注意到(据我所知)宝石的命名惯例似乎并不存在。例如,我见过两者:
gem 'foo-bar'
gem 'foo_bar'
是否有某种明确的指南/惯例用于命名红宝石宝石?
答案 0 :(得分:66)
虚线版本用于其他框架的扩展,例如rspec-rails
,下划线是普通宝石名称的一部分,应该在您的类中加入。
因此,如果您有名为foo_bar
的宝石,则类/模块应命名为FooBar
。如果该gem应该具有作为不同gem运行的rails扩展,则应该将其称为foo_bar-rails
,并且该模块应该被称为FooBar::Rails
,并且应该被要求为require "foo_bar/rails"
此约定也是Bundler试图要求的。
诚然,并不总是遵循这一惯例。 jquery_rails
实际应该是jquery-rails
,而factory_girl_rails
应该被称为factory_girl-rails
。但是,嘿,并非一切都很完美。
RubyGems惯例文档:
答案 1 :(得分:5)
事实证明,在rubygems文档中可以非常清楚和简洁地回答这个问题:http://guides.rubygems.org/name-your-gem/
(这可能是最近添加的文档,因为我记得在过去搜索此信息而未找到它。)
答案 2 :(得分:4)
一个优点是,就自动加载器而言,将foo_bar
折叠到模块或类FooBar
中的惯例。 foo-bar
没有默认的等价物。
通常情况下,下划线版本从require
角度来看是优选的,但虚线版本确实更具可读性,因此它往往会被频繁使用。
答案 3 :(得分:4)
在@svenfuchs的推荐中:
https://twitter.com/svenfuchs/status/135773593526206464
但是我仍然看到非连贯行为,如:
gem 'my_gem`, :require => 'my-gem'