为什么“Rails -v”和“Bundle exec rails -v”不同

时间:2014-02-24 22:22:14

标签: ruby-on-rails ruby path bundler

我通过AWS拥有登台和制作服务器。在一段时间之后(我认为是在我将ruby版本升级到2.1之后),我的登台/生产服务器找不到rails所以我不得不ssh并重新下载Rails和Ruby,但现在当我运行“rails”时 - v“它给了我2.3.14,但是当我运行”bundle exec rails -v“时,我得到了正确的3.2.16。

我猜这是因为路径,但不完全确定如何解决这个问题。我发现的一些答案建议更改.bashrc并更改$ PATH变量,但不确定要将其更改为什么。

这是我的.bashrc:

 #PATH=$PATH:$HOME/.rvm/bin # how it was before 
 PATH = $PATH:$HOME/.rvm/gems/ruby-2.1.0/bin #edited this just now to see if it works. it didnt..

1 个答案:

答案 0 :(得分:1)

bundle exec rails将使用您Gemfile中定义的rails版本。另一方面,简单的rails将运行您计算机上可用的最新版本。

可能发生的事情是:

你有一个来自rvm的rails版本与你Gemfile(3.2.16)中使用的版本相同,所以你没有注意到任何差异。升级ruby后,您必须重新安装在先前版本上安装的所有gem。否则它将回退到最新的可用的,它可以是系统版本(即不是来自rvm)。这可以解释为什么你有这样一个过时的。

请注意,正确的bundle install会安装Gemfile中所需的所有宝石,然后为您完成工作。