我正在将所有项目转换为使用相当精彩的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
失败正在发生,因为由于未指定源,因此始终找不到某些gem。所以,我想知道的是
a)在服务器上,有没有办法查询已安装的宝石以获取安装每个宝石的源列表?
b)这是一个很好的方法吗?以某种方式导出服务器上的宝石,并将它们直接安装在我的新gemset中,而不是尝试从远程源安装它们会更好吗?或其他什么?
感谢任何建议 - 最多
答案 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,那么如果它们不匹配你就必须编辑它们的版本。
要回答您的原始问题,我不相信有一种方法可以追踪机器上安装的宝石的确切来源。