为一个命令更改gem env RUBY可执行文件路径

为一个命令更改gem env RUBY可执行文件路径,ruby,path,gem,Ruby,Path,Gem,我希望使用与geminv中列出的不同的ruby版本来运行gem命令,例如geminstall。我想使用的Ruby版本是一个预编译版本,我有相应的路径,因此安装并使用RVM或类似版本的另一个版本并不能解决我的问题 我不想永久地更改RUBY可执行文件,每次只更改一个命令。我尝试设置GEM_HOME、GEM_PATH、PATH、RUBY等等。我已经尝试使用特定的/version/of/ruby/path/ruby path/to/gem env启动gem,但是我仍然在我的ruby可执行变量中获得默认的

我希望使用与geminv中列出的不同的ruby版本来运行gem命令,例如geminstall。我想使用的Ruby版本是一个预编译版本,我有相应的路径,因此安装并使用RVM或类似版本的另一个版本并不能解决我的问题

我不想永久地更改RUBY可执行文件,每次只更改一个命令。我尝试设置GEM_HOME、GEM_PATH、PATH、RUBY等等。我已经尝试使用特定的/version/of/ruby/path/ruby path/to/gem env启动gem,但是我仍然在我的ruby可执行变量中获得默认的ruby

我甚至尝试设置ruby_EXECUTABLE=/path/to/correct/ruby,但也没有成功

真正让我吃惊的是,当我在path/to/gem文件中编辑shebang,使它指向正确的Ruby时,它仍然不起作用!怎么回事

如何更改此变量,以便将gem goodness与自定义编译的Ruby一起使用

这个真的打败了我。我现在已经更新了我的rbconfig.rb,以指向所需的Ruby路径。我查看了rubygems源代码,用我想要的路径替换了所有文件中默认ruby的每个实例。即使这样,也无法正确设置环境。这是否以某种方式硬编码到已编译的ruby中?如果是这样,为什么要使用star*4呢?

尝试使用rbenv或RVM来管理Ruby版本。当您使用rbenv切换Ruby版本时,gem env将使用新的Ruby版本。以下命令可用于更改单个shell的Ruby版本:

$ rbenv shell 2.1.2

经过一个又一个小时的研究,通过Pry逐步了解Ruby源代码,阅读源代码等等,我发现这是不可能的,因为它是在编译时wtf?硬编码到Ruby中的?。无论如何,解决这个问题的方法就是简单地重新编译Ruby。嗯

显然,您还可以设置一个compile标志来删除这个硬编码环境:-enable load relative


经过长期的努力,我终于得到了一个易于使用的便携式Ruby版本。简单地说,一个带有Ruby的文件夹,你可以移动它,放在U盘上或者其他什么东西上,它仍然可以工作:

这似乎是一个很好的解决方案,但我需要使用一个特殊版本的Ruby,我有路径,而不是rbenv或rvm提供的,所以我不能使用它。我真正需要的是更改gems命令的RUBY可执行路径,而不是安装和使用另一个RUBY版本。谢谢你的提示!我敢打赌它在其他环境中非常有用!