Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 如何安装gem,使其独立于当前活动的RVM gemset执行?_Ruby_Gem_Rubygems_Rvm - Fatal编程技术网

Ruby 如何安装gem,使其独立于当前活动的RVM gemset执行?

Ruby 如何安装gem,使其独立于当前活动的RVM gemset执行?,ruby,gem,rubygems,rvm,Ruby,Gem,Rubygems,Rvm,我正在编写一个dev命令行工具gem(我们称之为“工具”),我希望在系统中的任何地方使用它。我在不同的项目中使用RVM,但是这个工具应该可以从这些项目中的命令行获得 如果我只是使用“gem install”全局安装gem(假设它安装到/usr/local/bin/tool),那么该可执行文件当然可以在其他项目中使用,但是由于gemset在执行“tool”时发生了更改,因此它无法说它找不到“tool”gem(因为“tool”从未安装到该gemset)。我不想将gem添加到所有项目的所有gem文件中

我正在编写一个dev命令行工具gem(我们称之为“工具”),我希望在系统中的任何地方使用它。我在不同的项目中使用RVM,但是这个工具应该可以从这些项目中的命令行获得


如果我只是使用“gem install”全局安装gem(假设它安装到/usr/local/bin/tool),那么该可执行文件当然可以在其他项目中使用,但是由于gemset在执行“tool”时发生了更改,因此它无法说它找不到“tool”gem(因为“tool”从未安装到该gemset)。我不想将gem添加到所有项目的所有gem文件中

处理这个问题的最好方法是什么?也许有一种方法可以在安装时在可执行文件中“锁定”gem_路径/gem_home?

结果证明,这就是我想要的,通过brew安装RubyGem gem,并将其gem_home和gem_路径锁定在它生成的bin包装器中,这样即使在不同RVM gemset的上下文中执行,一切都能正常工作


我将它移植到,添加了对从local.gem文件或github上的gem项目安装brew gem的支持

我看到至少有一个选项是将可执行调用包装在“env-I”中,如下所述:“但是由于gemset在执行“tool”时发生了更改,它无法表示它找不到“tool”gem(因为“tool”从未安装到该gemset)”-这是什么意思?“我不想将gem添加到所有项目的所有gem文件中。”-如果您在项目中需要该工具,则应将其添加到gem文件imo中。@Hardy我指的是一个系统范围的命令,例如,可能已使用brew安装的某个命令。只是它碰巧是一颗宝石。嗯,也许我会做这个把戏,我会检查。。。