我在创建一个 Ruby Gem,但我注意到似乎没有(据我所知)针对 Gems 的命名规范。例如,我见过以下两种写法:
我正在创建一个 Ruby Gem,但我注意到似乎没有(据我所知)针对 Gems 的命名规范。例如,我见过以下两种写法:
gem 'foo-bar'
gem 'foo_bar'
是否有关于命名Ruby gems的权威指南/约定?
我正在创建一个 Ruby Gem,但我注意到似乎没有(据我所知)针对 Gems 的命名规范。例如,我见过以下两种写法:
gem 'foo-bar'
gem 'foo_bar'
是否有关于命名Ruby gems的权威指南/约定?
虚线版本用于其他框架的扩展,如rspec-rails
,下划线版本用于普通宝石名称的一部分,并且应在类中使用驼峰命名法。
因此,如果您有一个名为foo_bar
的宝石,那么类/模块的名称应为FooBar
。 如果该宝石应该有一个作为不同宝石发行的rails扩展,那么它应该被称为foo_bar-rails
,并且该模块应该被称为FooBar :: Rails
,并且应该被要求为require "foo_bar/rails"
。
这个约定也是Bundler尝试要求的。
诚然,这个约定并不总是被遵循。 jquery_rails
实际上应该叫做jquery-rails
,而factory_girl_rails
应该被称为factory_girl-rails
。 但是嘿,不是所有的事情都是完美的。
RubyGems约定文档:
bundler
的 GitHub 存储库中找到:https://github.com/bundler/bundler/issues/1255 - thutt唯一的好处就是把 foo_bar
转换为模块或类 FooBar
,对于自动加载程序而言这是惯例。但是,foo-bar
没有默认的等效项。
一般来说,从 require
的角度来看,下划线版本更可取,但破折号版本确实更易读,因此经常被使用。
在@svenfuchs的推荐中:
https://twitter.com/svenfuchs/status/135773593526206464
但事实上我仍然看到一些不连贯的行为,例如:
gem 'my_gem`, :require => 'my-gem'