我想使用与gem install
中列出的ruby版本不同的ruby版本来运行gem命令,例如gem env
。我想使用的Ruby版本是一个预编译版本,我有路径,因此安装和使用RVM中的其他版本或类似版本无法解决我的问题。
我不想永久更改RUBY EXECUTABLE
,一次只能输入一个命令。我试图设置GEM_HOME
,GEM_PATH
,PATH
,RUBY
等等。我尝试使用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就这样完成了呢?
答案 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棒或其他任何东西上,它仍然可以工作:)