Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/66.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 on rails Bundle(或rake,或rails)假装使用Ruby的系统版本_Ruby On Rails_Rake_Bundler_Ruby On Rails 4 - Fatal编程技术网

Ruby on rails Bundle(或rake,或rails)假装使用Ruby的系统版本

Ruby on rails Bundle(或rake,或rails)假装使用Ruby的系统版本,ruby-on-rails,rake,bundler,ruby-on-rails-4,Ruby On Rails,Rake,Bundler,Ruby On Rails 4,我的Linux系统中安装了一个旧的ruby: % ruby -v ruby 1.9.2p188 (2011-03-28) [x86_64-linux-gnu] 我的主目录中安装了更新的ruby: % ~/ruby/bin/ruby -v ruby 1.9.3p448 (2013-06-27) [x86_64-linux] 但是bundler、rake或rails在某个步骤上运行旧ruby,并获得: % ~/ruby/bin/bundle exec rake Rails 4 prefers

我的Linux系统中安装了一个旧的ruby:

% ruby -v
ruby 1.9.2p188 (2011-03-28) [x86_64-linux-gnu]
我的主目录中安装了更新的ruby:

% ~/ruby/bin/ruby -v
ruby 1.9.3p448 (2013-06-27) [x86_64-linux]
但是bundler、rake或rails在某个步骤上运行旧ruby,并获得:

% ~/ruby/bin/bundle exec rake

Rails 4 prefers to run on Ruby 2.0.

You're running
  ruby 1.9.2p188 (2011-03-28) [x86_64-linux-gnu]

Please upgrade to Ruby 1.9.3 or newer to continue.
为什么??我该怎么办

以下是它在引擎盖下的功能:

% strace -f -e trace=process ~/ruby/bin/bundle exec rake
execve("/home/ilyak/ruby/bin/bundle", ["/home/ilyak/ruby/bin/bundle", "exec", "rake"], [/* 32 vars */]) = 0
clone(Process 6460 attached
child_stack=0x7ffeb759cff0, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0x7ffeb759d9d0, tls=0x7ffeb759d700, child_tidptr=0x7ffeb759d9d0) = 6460
[pid  6460] _exit(0)                    = ?
[pid  6460] +++ exited with 0 +++
execve("/usr/bin/rake", ["rake"], [/* 37 vars */]) = 0

为什么??他们在想什么?

我目前的解决办法是

export PATH=/home/ilyak/ruby/bin:$PATH

但显然这并不酷。

我不确定这里发生了什么,但我建议您删除所有的ruby痕迹,并使用ruby版本管理器(如rvm、rbenv或chruby)重新开始。我推荐chruby:这应该可以理顺您的多个ruby版本,并从一开始就避免这个问题。

这有什么错?当您运行bundle或任何可执行脚本时,您的系统将查看!脚本文件顶部的行,以确定要运行的命令。您可以通过运行head-n1$which bundle看到这一点。很可能它包含了类似的内容/usr/bin/env ruby,用于搜索ruby命令的路径。我尝试过RVM,但它似乎不支持我的晦涩发行版,所以我想我还是坚持路径操作:-/