在添加 gems/plugins 时,我注意到有时作者姓名会添加到 gem/plugin 名称之前,而其他时候则不是。这背后有什么原因吗?
例子:
config.gem "thoughtbot-factory_girl", :source => "http://gems.github.com"
为什么不把它作为:
config.gem "factory_girl", :source => "http://gems.github.com"
什么时候区分这两者?
在添加 gems/plugins 时,我注意到有时作者姓名会添加到 gem/plugin 名称之前,而其他时候则不是。这背后有什么原因吗?
例子:
config.gem "thoughtbot-factory_girl", :source => "http://gems.github.com"
为什么不把它作为:
config.gem "factory_girl", :source => "http://gems.github.com"
什么时候区分这两者?
当GitHub用于自动构建和托管 gem 时,他们通过用户名强制执行命名空间方案。这就是为什么 github gem 以用户名为前缀的原因。GitHub 支持分叉项目;因此需要前缀用户名。GitHub 从来都不是规范 gem 名称的好地方,所以当Gemcutter推出时,他们决定放弃他们的自动 gem 托管* 。从那时起,即使是规范 gem 的原始主机RubyForge也停止托管 gem,转而使用 Gemcutter。Gemcutter 现在是所有宝石的规范来源。
为了让每个人都能轻松完成这项工作,http ://gems.rubyforge.org现在指向http://gemcutter.org。
*GitHub 宣布他们将继续托管所有旧的用户名命名空间 gems 至少一年。
关于factory_girl,现在也托管在 Gemcutter 上。您的配置现在只需要如下所示:
config.gem "factory_girl"
...但我建议也为您的项目添加一个版本号(当您稍后回到一个陈旧的项目时,您会感谢我):
config.gem "factory_girl", :version => "1.2.3"
因为有几个功能相似的项目,但由不同的作者提供。也许其中一些是其他的叉子。或者,也许他们只是为特定任务提供了一个通用界面。
快速谷歌搜索产生以下作者:
为了区分它们,将作者的昵称添加到 gem 名称之前很有用。