Ruby on rails 使用rvm时,有没有办法绕过重新下载已安装的gems?

Ruby on rails 使用rvm时,有没有办法绕过重新下载已安装的gems?,ruby-on-rails,ruby,rvm,Ruby On Rails,Ruby,Rvm,我使用rvm与不同的宝石,并喜欢它。我遇到的唯一问题是,当我创建新的宝石并挑选我想要的宝石时,重新下载这些宝石似乎需要一段时间。有没有办法让rvm知道如何使用已安装在另一个gemset中的gems 例如,假设我有一个名为set1的gemset,其中安装了wirblegem。现在我创建了一个名为set2的新rvm。如果我在set2上“gem install wirble”,它似乎会再次下载wirble。有没有办法让rvm使用set1中已经存在的版本 编辑1:谢谢大家或回复到目前为止。更清楚地解释一

我使用rvm与不同的宝石,并喜欢它。我遇到的唯一问题是,当我创建新的宝石并挑选我想要的宝石时,重新下载这些宝石似乎需要一段时间。有没有办法让rvm知道如何使用已安装在另一个gemset中的gems

例如,假设我有一个名为set1的gemset,其中安装了wirblegem。现在我创建了一个名为set2的新rvm。如果我在set2上“gem install wirble”,它似乎会再次下载wirble。有没有办法让rvm使用set1中已经存在的版本

编辑1:谢谢大家或回复到目前为止。更清楚地解释一下,我发现奇怪的是,当我想安装wirble时,我的电脑上已经有了相同的版本,为什么“gem install wrible”需要再次上网并下载相同的东西?为什么不直接从我的计算机本地安装(例如,在另一个gemset中安装我需要的确切文件)


编辑2:我仍然使用同一版本的ruby。因此,我的示例假设我使用的是ruby 1.9.2。我只是在换宝石。我不明白为什么做一个“gem安装wirble”需要再次下载它只是为了一个不同的gemset(同样,在同一个ruby 1.9.2上)

这是出于设计。把它们分开是重点。(以便使用一套不会影响另一套,等等)

也许你在不需要的时候使用了多个宝石?例如,不要为每个rails应用程序使用单独的gemset,只需使用一个即可。例如,我使用
ruby-1.9.2-p0@rails3
用于我所有的rails 3开发


或者我想您可以随时手动将它们从一个rvm目录复制到另一个目录(
~/.rvm/gems/ruby-1.9.2)-p0@rails3/gems/
在我的系统上)。当然,这只适用于针对同一ruby版本编译的gems。

这是出于设计。把它们分开是重点。(以便使用一套不会影响另一套,等等)

也许你在不需要的时候使用了多个宝石?例如,不要为每个rails应用程序使用单独的gemset,只需使用一个即可。例如,我使用
ruby-1.9.2-p0@rails3
用于我所有的rails 3开发


或者我想您可以随时手动将它们从一个rvm目录复制到另一个目录(
~/.rvm/gems/ruby-1.9.2)-p0@rails3/gems/
在我的系统上)。当然,这只适用于针对同一ruby版本编译的gem。

另一个选项是使用而不是RVM gem集。如果gem已经在您的系统上,则不会下载gem,并允许您为每个应用程序拥有唯一的集。

另一个选项是使用而不是RVM gem集。如果gems已经存在于您的系统中,那么它不会下载gems,并且可以为每个应用程序提供唯一的设置。

如果您担心会堵塞一系列管道,您可能想看看是否可以使用
gem server
在您自己的机器上设置gem服务器,并告诉rvm使用它。

如果您担心堵塞一系列管道,您可能想看看是否可以使用
gem server
在您自己的机器上设置gem服务器,并告诉rvm使用它。

“从本地缓存安装gem”显示了以下内容:

它基本上是一个缓存gem代理,使用公共gem服务器作为上游

重量较轻的解决方案:

此选项允许您有选择地安装gems(包括其dep):

  • 切换到已安装所需gem的gems集
  • 运行“gem env”获取特定于gemset的gem_路径
  • cd到该gem路径,然后到缓存文件夹。以下是所有的.gem文件
  • 在不离开该文件夹的情况下,切换到所需gem所在的gems集
  • 像往常一样运行gem install,但传递--local选项。所需的gem及其dep应自动从当前文件夹中提取
  • 如果你真的想复制一个gemset,在gem路径缓存中运行这些步骤。实际上这是不需要的,因为除非必要,“rvm gemset copy”不会下载

  • 确保已切换到源gemset(您将从中复制)
  • 运行“rvm gemset导出”
  • 编辑default.gems文件并删除注释行
  • 切换到目标gemset(您将复制到该gemset)
  • 运行:gem安装--local`cat default.gems`
  • 可选:删除default.gems文件
  • 谷歌搜索“从本地缓存安装gem”时发现:

    它基本上是一个缓存gem代理,使用公共gem服务器作为上游

    重量较轻的解决方案:

    此选项允许您有选择地安装gems(包括其dep):

  • 切换到已安装所需gem的gems集
  • 运行“gem env”获取特定于gemset的gem_路径
  • cd到该gem路径,然后到缓存文件夹。以下是所有的.gem文件
  • 在不离开该文件夹的情况下,切换到所需gem所在的gems集
  • 像往常一样运行gem install,但传递--local选项。所需的gem及其dep应自动从当前文件夹中提取
  • 如果你真的想复制一个gemset,在gem路径缓存中运行这些步骤。实际上这是不需要的,因为除非必要,“rvm gemset copy”不会下载

  • 确保已切换到源gemset(您将从中复制)
  • 运行“rvm gemset导出”
  • 编辑default.gems文件并删除注释行
  • 切换到目标gemset(您将复制到该gemset)
  • 运行:gem安装--local`cat default.gems`
  • 可选:删除default.gems文件

  • 一个似乎没有提到的RVM功能是
    copy
    。这在以下情况下特别有用:

    • 您想制作一个新的gemesetB由您的gemes中已有的大多数gemes组成