Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Ruby宝石命名约定_Ruby On Rails_Ruby_Ruby On Rails 3_Ruby On Rails 3.1_Rubygems - Fatal编程技术网

Ruby on rails Ruby宝石命名约定

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的建议中: 下划线 连字符=>名称::空格 但我确实仍然看到不连贯

我正在创建一个ruby gem,我注意到(据我所知)对于gem似乎没有命名约定。例如,我看到了这两种情况:

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公约文件:


事实证明,rubygems文档中对这一点的回答非常清楚和简洁:


(这可能是最近添加的文档,因为我记得在过去搜索此信息时没有找到它。)

的可能副本可能有助于使虚线版本更具可读性-我觉得这完全错了,标识符中可以使用哪种语言有虚线?@Nemo157-e.I.在剪辑中。我曾经用它编程,标识符中有破折号是件好事。你不需要按下按钮就可以得到“uu”,你可以写一些类似的东西:purple-cow_upainter-module,cat_upainter-module(我过去常常把事情分开,而不是-),这是由rubygems模式文档支持的。关于这个主题的一个相当古老但有趣的对话可以在
bundler
GitHub repo本身中找到: