检索所有已安装宝石的源

时间:2011-05-16 10:02:41

标签: rubygems gem rvm bundler

我正在将所有项目转换为使用相当精彩的rvm和bundler。在其中一个上,我想基本上镜像托管应用程序的服务器上的gem环境。

为了做到这一点,我做了以下事情:

  • 进入服务器

-did“gem list”给了我一个很棒的宝石列表,比如

actionmailer (2.2.2)
actionpack (2.2.2)
activerecord (2.2.2)
activeresource (2.2.2)
activesupport (2.2.2)
amatch (0.2.3)
archive-tar-minitar (0.5.2)
etc
  • 将其复制到我本地项目文件夹中的新Gemfile
  • 做了一些查找和替换,将格式更改为Gemfile友好格式
  • 将我知道的宝石资源添加到Gemfile的顶部
  • 做了“捆绑安装” -FAIL

失败正在发生,因为由于未指定源,因此始终找不到某些gem。所以,我想知道的是

a)在服务器上,有没有办法查询已安装的宝石以获取安装每个宝石的源列表?

b)这是一个很好的方法吗?以某种方式导出服务器上的宝石,并将它们直接安装在我的新gemset中,而不是尝试从远程源安装它们会更好吗?或其他什么?

感谢任何建议 - 最多

1 个答案:

答案 0 :(得分:0)

冒着明显的风险,Gemfile中需要一些在指定的源中不可用的gem。在文件的顶部应该有一个或多个来源:

source 'http://rubygems.org'

您可以尝试添加

source "http://gems.rubyforge.org"

如果bundler仍然找不到gem,你可以尝试使用google搜索gem名称 - 看看它是否已被重命名。如果它不在那里我会感到惊讶,除非它是你在本地手动滚动的那个。如果您真的遇到困难,可以将gem从服务器上复制并将其包含在项目的vendor / gems目录中,在这种情况下,您需要在Gemfile中指定其路径(请参阅bundler手册)。

请记住,你没有拥有来指定所有gem的依赖关系;需要rails将自动需要activerecord,activeresource等。如果你愿意,你可以 指定它们,但是如果你升级了一个依赖gem,那么如果它们不匹配你就必须编辑它们的版本。

要回答您的原始问题,我不相信有一种方法可以追踪机器上安装的宝石的确切来源。