Ruby的gem命名约定
我创build了一个ruby,我注意到似乎没有(据我所知)gem的命名约定。 例如,我已经看到:
gem 'foo-bar' gem 'foo_bar'
是否有一些明确的gem命名指南/公约?
虚线的版本适用于其他框架的扩展,比如rspec-rails
,下划线是正常的gem名字的一部分,应该在你的类中join。
所以如果你有一个名为foo_bar
的gem,那么类/模块应该被命名为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公约文档:
- 命名gem
- 命名模式
- 做你自己的gem
原来,这个问题在rubygems文档中得到了非常清晰和简洁的回答: http : //guides.rubygems.org/name-your-gem/
(这可能是最近的文档添加,因为我记得过去search这个信息,没有find它。)
其中一个好处就是将自动加载器的foo_bar
合并到模块或类FooBar
中。 foo-bar
没有默认的等价物。
一般来说,从require
angular度来看,下划线的版本是可取的,但是虚线的版本确实更具可读性,所以经常使用它。
在@svenfuchs的build议中:
- 下划线 =>骆驼化
- hyphen => name :: space
https://twitter.com/svenfuchs/status/135773593526206464
但是,我确实仍然看到非连贯的行为,如:
gem 'my_gem`, :require => 'my-gem'