当我将gem 'delayed_job'
添加到我的gem文件中时,我如何知道我是否会获得 collectiveidea/delayed_job或tobi/delayed_job?如何找出我的系统上安装了哪个宝石/原始宝石?
另外,有没有什么办法来检查我已经安装的宝石列表之间,哪些叉/位置这些宝石从哪里下载/安装?
Ps。我在Ubuntu,Bundler和Rails 3.0.3上使用RVM
当我将gem 'delayed_job'
添加到我的gem文件中时,我如何知道我是否会获得 collectiveidea/delayed_job或tobi/delayed_job?如何找出我的系统上安装了哪个宝石/原始宝石?
另外,有没有什么办法来检查我已经安装的宝石列表之间,哪些叉/位置这些宝石从哪里下载/安装?
Ps。我在Ubuntu,Bundler和Rails 3.0.3上使用RVM
没有一种方法可以告诉你从哪个github fork或branch下载。对于从collectiveidea的分店下载的delayed_job gem。您可以告诉on this page首页指向collectiveidea的github分支。你不能分辨出哪个fork是因为rubygems没有链接到github库。他们只是上传到网站的软件包。对于你所知道的,你可以从某个甚至没有在互联网上发布的本地存储库副本中下载一个gem。你也可以从SVN仓库而不是Git仓库下载。一般来说,rubygems.org网站应该给你一些关于如何找到gem的源代码的想法。此外,大多数github gems都会使用版本号标记它们的提交,以便通过检查github/git标记来确定您正在使用哪个版本。
如果你想指定你可以使用git位置:混帐PARAM:
gem "delayed_job", :git => "git://github.com/collectiveidea/delayed_job.git"
gem "delayed_job", :git => "git://github.com/tobi/delayed_job.git"
Read更多的Gemfile
的gemspec包含homepage
属性,这往往显示的源代码库。您可以查看本地安装的宝石的gemspec有:
gem spec delayed_job
查看网页上:
gem spec delayed_job | grep homepage
这就是说,gemspec并不总是源回购。
为了帮助解决这个问题(和其他人),我写了一个名为gemdiff
的宝石。它执行gemspec检查,如果它不包含github URL,它将搜索github进行匹配。它包括delayed_job
之类的宝石例外,它是tobi原始资料库的一个分支。
gem install gemdiff
gemdiff find delayed_job
=> http://github.com/collectiveidea/delayed_job
更有价值,gemdiff
将检查项目的捆绑,能够显示您已经安装了宝石的版本,可以安装,通过打捆确定的最高版本的源代码差异。
hmm?所以'bundle install'命令从rubygems.org获取gem?那么在github上也有同样的事情的目的是什么? – Zabba 2011-02-28 21:54:10
这是作者使用公共存储库进行协作并使源代码更容易为所有人提供的一种方式。 rubygems.org网站不存储源代码,它只存储可下载的捆绑.pkg文件。 – 2011-02-28 21:55:46
GitHub也用于代码以外的宝石,它没有链接到rubygems.org。 – 2011-02-28 21:56:21