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

我输入了一个现有的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]

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

如果您使用的是rvm ,请运行以下命令:

$ rvm use 1.9.3 

尝试使用bundler

 bundle exec rails s 

我有类似的问题:

 $ 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 

我找到了五个答案: 1,2,3,4,5 。 它也是公开的问题 github 。 但是,我已经解决了以下问题:

  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 

    当然你也可以尝试用常见forms替换它:

     #!/usr/bin/env ruby 

    这应该拿起当前使用的ruby版本。

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

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

请试试这个:

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

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

所以,例如,现在我正在使用的应用程序,我的Gemfile是

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

我会改变它

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