Rails服务器错误:Ruby版本是1.8.7,但您的Gemfile指定为1.9.3

时间:2012-10-21 05:28:48

标签: ruby-on-rails ruby

我输入了现有的ruby应用程序,并输入:

$ rails s

想在这里启动rails服务器。 但它说:

您的Ruby版本是1.8.7,但您的Gemfile指定为1.9.3

实际上,我有一个1.8.7,但我删除了它。如果我这样做:

$ ruby​​ -v

它说: ruby 1.9.3p286(2012-10-12修订版37165)[x86_64-darwin11.4.2]

所以我不知道如何解决它。你能给我一个帮助吗?

6 个答案:

答案 0 :(得分:12)

如果您使用rvm,请运行:

$ rvm use 1.9.3

答案 1 :(得分:5)

尝试使用bundler

bundle exec rails s

答案 2 :(得分:5)

我有类似的问题:

$ bundle install
Your Ruby version is 2.1.0, but your Gemfile specified 1.9.3

但:

$ ruby -v
1.9.3-p484
$ which ruby
/home/malo/.rvm/rubies/ruby-1.9.3-p484/bin/ruby

我找到了五个答案:12345。在open issue上也是。但是,我已经解决了以下问题:

  1. 找到的路径:

    $ which bundle
    /home/malo/.rvm/gems/ruby-1.9.3-p484@global/bin/bundle
    
  2. 打开它进行编辑(或只是),并看到它在第一行中有无效的ruby链接:

    $ cat $(which bundler)|head -n 1 
    #!/home/malo/.rvm/rubies/ruby-2.1.0/bin/ruby
    
  3. 然后我获得了当前有效ruby的路径,并将其替换为无效:

    $ which ruby
    /home/malo/.rvm/rubies/ruby-1.9.3-p484/bin/ruby
    

    当然,您也可以尝试使用常用形式替换它:

    #!/usr/bin/env ruby
    

    这应该选择当前使用的ruby版本。

答案 3 :(得分:3)

我发现我得到这个错误的原因是我在我的配置文件中发布了一个Heroku命令行程序而Heroku Toolbelt附带了它自己的Ruby版本。

该问题的两个解决方案是要么不向Heroku发出攻击,要么使用Bundler.with_clean_env块而不是反引号来弹出heroku命令。

答案 4 :(得分:1)

请试试这个:

 1. Open your gemfile
 2. Specify rails version
 3. Run bundle update
 4. Run rails server - rails s

答案 5 :(得分:0)

偶尔会发生这种情况。但是我经常不喜欢在这里和那里切换ruby版本。所以我只是去Gemfile并将ruby版本切换到我正在使用的版本。这样做可以让我启动服务器并继续处理。

所以,例如,现在我正在处理的应用程序,我的Gemfile位于

ruby ENV["CUSTOM_RUBY_VERSION"] || "2.1.6"

我会把它改成

ruby ENV["CUSTOM_RUBY_VERSION"] || "1.9.3"