Ruby 如何使gem install命令仅在未安装或需要更新时安装
我已经阅读了rubygems站点的文档,但我猜“gem install”命令总是重新安装、重新编译所有内容,即使已经安装了相同的版本Ruby 如何使gem install命令仅在未安装或需要更新时安装,ruby,gem,Ruby,Gem,我已经阅读了rubygems站点的文档,但我猜“gem install”命令总是重新安装、重新编译所有内容,即使已经安装了相同的版本 如何使gem install命令仅在需要时安装?您可能需要使用一些外部命令,如来处理项目的gem安装 如果您必须直接使用rubygems进行此操作,则可以使用如下命令 ruby -e "puts `gem install GEMTOINSTALL` if(`gem list --no-versions | grep GEMTOINSTALL`) == ''" 我
如何使gem install命令仅在需要时安装?您可能需要使用一些外部命令,如来处理项目的gem安装 如果您必须直接使用rubygems进行此操作,则可以使用如下命令
ruby -e "puts `gem install GEMTOINSTALL` if(`gem list --no-versions | grep GEMTOINSTALL`) == ''"
我会做的 这就是我们使用
捆绑安装的原因。此命令将查看gems的gemfile
这个文件说明了一些事情。首先,它说bundler应该查找gem文件中声明的gem。您可以声明多个Rubygems源,bundler将按照您声明源的顺序查找gems
Bundler将连接到rubygems.org
(以及您声明的任何其他来源),并找到满足您指定要求的所有必需gem的列表。由于Gemfile
中的所有gem都有自己的依赖项(其中一些有自己的依赖项),因此在Gemfile
上运行bundle install
将安装相当多的gem
如果已经安装了所需的任何gem,Bundler
将使用它们。在将任何需要的gems安装到您的系统后,bundler会将所有gems及其安装版本的快照写入Gemfile.lock
当您运行bundle install
时,bundler将(默认情况下)将您的gems安装到您的系统gems存储库中。这意味着它们将出现在gem列表中。此外,如果您正在开发多个应用程序,则无需为每个应用程序下载和安装通用的gems。这对于开发来说很好,但是对于部署来说有些问题
在部署方案中,与您一起部署的Unix用户可能无权将gems安装到系统位置。即使用户使用(或您使用sudo),引导应用程序的用户也可能无法访问它们
因此,bundler附带了一个--deployment
标志,它封装了在部署环境中使用bundler的最佳实践
--deployment
标志需要一个最新的Gemfile.lock
,以确保您所做的测试(在开发和阶段)实际反映了您投入生产的代码。您可以在部署应用程序之前运行bundle check
,以确保您的Gemfile.lock
是最新的。请注意,如果自上次更改Gemfile
以来已运行bundle install
,并成功启动了应用程序(或运行了测试),则它将始终是最新的 看起来,--conservative
标志将使gem命令执行您想要的操作
gem install rake --conservative
从文档gem安装--help
:
--不要试图升级已经满足版本要求的gems
这并不能直接回答您的问题,但Bundler会为您解决这个问题,并提供依赖关系管理:您仍然需要安装/更新Bundler。可能使用类似于:gem安装bundler——保守的