我输入了一个现有的 ruby 应用程序,然后输入:
$ 导轨
想在这里启动rails服务器。但它说:
您的 Ruby 版本是 1.8.7,但您的 Gemfile 指定了 1.9.3
实际上,我有一个 1.8.7,但我删除了它。如果我这样做:
$红宝石-v
它说:ruby 1.9.3p286(2012-10-12 修订版 37165)[x86_64-darwin11.4.2]
所以我不知道我该如何解决它。你能帮帮我吗?
我输入了一个现有的 ruby 应用程序,然后输入:
$ 导轨
想在这里启动rails服务器。但它说:
您的 Ruby 版本是 1.8.7,但您的 Gemfile 指定了 1.9.3
实际上,我有一个 1.8.7,但我删除了它。如果我这样做:
$红宝石-v
它说:ruby 1.9.3p286(2012-10-12 修订版 37165)[x86_64-darwin11.4.2]
所以我不知道我该如何解决它。你能帮帮我吗?
如果您使用的是rvm,请运行以下命令:
$ rvm use 1.9.3
我有类似的问题:
$ 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上的公开问题。但是,我已将问题解决如下:
找到我的捆绑器的路径:
$ which bundle
/home/malo/.rvm/gems/ruby-1.9.3-p484@global/bin/bundle
打开它进行编辑(或只是cat它),并看到它在第一行有无效的 ruby 链接:
$ cat $(which bundler)|head -n 1
#!/home/malo/.rvm/rubies/ruby-2.1.0/bin/ruby
然后我得到了当前有效红宝石的路径,并用它替换了那个无效的:
$ which ruby
/home/malo/.rvm/rubies/ruby-1.9.3-p484/bin/ruby
当然你也可以尝试用常见的形式替换它:
#!/usr/bin/env ruby
这应该会选择当前使用的 ruby 版本。
尝试使用捆绑器
bundle exec rails s
我发现我收到此错误的原因是我在配置文件中使用 Heroku 命令行程序,而 Heroku Toolbelt 带有它自己的 Ruby 版本。
该问题的两个解决方案是要么不使用 Heroku,要么使用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"