Ruby on rails Ruby宝石命名约定
我正在创建一个ruby gem,我注意到(据我所知)对于gem似乎没有命名约定。例如,我看到了这两种情况:Ruby on rails Ruby宝石命名约定,ruby-on-rails,ruby,ruby-on-rails-3,ruby-on-rails-3.1,rubygems,Ruby On Rails,Ruby,Ruby On Rails 3,Ruby On Rails 3.1,Rubygems,我正在创建一个ruby gem,我注意到(据我所知)对于gem似乎没有命名约定。例如,我看到了这两种情况: gem 'foo-bar' gem 'foo_bar' 红宝石的命名是否有某种明确的指南/惯例?一个优点是,将foo\u bar折叠成模块或类FooBar,直到自动加载器为止foo bar没有默认等效项 通常,从require的角度来看,下划线版本更可取,但虚线版本确实更具可读性,因此经常使用。在@svenfuchs的建议中: 下划线 连字符=>名称::空格 但我确实仍然看到不连贯
gem 'foo-bar'
gem 'foo_bar'
红宝石的命名是否有某种明确的指南/惯例?一个优点是,将
foo\u bar
折叠成模块或类FooBar
,直到自动加载器为止foo bar
没有默认等效项
通常,从
require
的角度来看,下划线版本更可取,但虚线版本确实更具可读性,因此经常使用。在@svenfuchs的建议中:
- 下划线
- 连字符=>名称::空格
gem 'my_gem`, :require => 'my-gem'
虚线版本用于其他框架上的扩展,如
rspec-rails
,下划线表示普通gem名称的一部分,应该在类中用大小写
因此,如果您有一个名为FooBar
的gem,那么类/模块应该命名为FooBar
。如果该gem应该有一个作为不同gem发布的rails扩展,那么它应该被称为foo_-bar-rails
,该模块应该被称为FooBar::rails
,并且应该被要求作为要求“foo_-bar/rails”
这个约定也是Bundler试图要求的
诚然,这一公约并不总是得到遵守jquery\u rails
实际上应该是jquery rails
而factory\u girl\u rails
应该被称为factory\u girl-rails
。但是,不是每件事都是完美的
RubyGems公约文件:
(这可能是最近添加的文档,因为我记得在过去搜索此信息时没有找到它。)的可能副本可能有助于使虚线版本更具可读性-我觉得这完全错了,标识符中可以使用哪种语言有虚线?@Nemo157-e.I.在剪辑中。我曾经用它编程,标识符中有破折号是件好事。你不需要按下按钮就可以得到“uu”,你可以写一些类似的东西:purple-cow_upainter-module,cat_upainter-module(我过去常常把事情分开,而不是-),这是由rubygems模式文档支持的。关于这个主题的一个相当古老但有趣的对话可以在
bundler
GitHub repo本身中找到: