为一个命令更改gem env RUBY EXECUTABLE路径

时间:2014-07-14 00:13:36

标签: ruby path gem

我想使用与gem install中列出的ruby版本不同的ruby版本来运行gem命令,例如gem env。我想使用的Ruby版本是一个预编译版本,我有路径,因此安装和使用RVM中的其他版本或类似版本无法解决我的问题。

我不想永久更改RUBY EXECUTABLE,一次只能输入一个命令。我试图设置GEM_HOMEGEM_PATHPATHRUBY等等。我尝试使用specific/version/of/ruby/path/ruby path/to/gem env启动gem,但我仍然在我的RUBY EXECUTABLE变量中获得默认的Ruby。

我甚至尝试过设置RUBY_EXECUTABLE=/path/to/correct/ruby,这也无效。

让我感到惊讶的是,当我在path/to/gem文件中编辑shebang以便它指向正确的Ruby时,它仍然无效!怎么了?!

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


这个真的打败了我。我现在更新了我的rbconfig.rb以指向所需的Ruby路径。我查看了rubygems源代码,并在我能找到的所有文件中替换了默认ruby的每个实例,并使用了我想要的路径。即使这样也没有正确设置环境。这在某种程度上是硬编码到编译的ruby中吗?如果是这样的话,为什么明星* 4就这样完成了呢?

2 个答案:

答案 0 :(得分:0)

尝试使用rbenv(https://github.com/sstephenson/rbenv)或RVM来管理Ruby版本(https://rvm.io/)。当您使用rbenv切换Ruby版本时,gem env将使用新的Ruby版本。以下命令可用于更改单个shell的Ruby版本:

$ rbenv shell 2.1.2

答案 1 :(得分:0)

经过数小时和数小时的研究,使用Pry逐步浏览Ruby源代码,阅读源代码等等,我发现这是不可能的,因为它在编译时被硬编码到ruby中(wtf?)。无论如何,解决这个问题的方法只是recompile Ruby。呀。

还有一个可以设置的编译标志可以删除这个硬编码的环境:--enable-load-relative

经过长时间的努力,我终于得到this project working,在那里我制作了一个易于使用的便携版Ruby。简单地说,一个带有Ruby的文件夹,你可以移动它,放在USB棒或其他任何东西上,它仍然可以工作:)

相关问题