【问题标题】:Rails is not using my global Ruby versionRails 没有使用我的全局 Ruby 版本
【发布时间】:2014-02-04 04:01:26
【问题描述】:

我想在 Ruby 2.1.0 中使用 Rails,但它使用的是 Ruby 1.9.3(系统版本)。

我正在使用 rbenv 来管理我的 Ruby 版本。我的步骤大致如下:

$ rbenv install 2.1.0
$ rbenv global 2.1.0
$ sudo gem install rails -v 4.0.2
$ rbenv rehash
$ rbenv versions
  system
* 2.1.0 (set by /home/dennis/.rbenv/version)
$ ruby -v
ruby 2.1.0p0 (2013-12-25 revision 44422) [x86_64-linux]
$ rails new app && cd app
$ rails server

根据localhost:3000/rails/info/properties,Rails 使用的是 Ruby 1.9.3 (x86_64-linux)。来自rails server 的日志消息给出:INFO ruby 1.9.3 (2012-04-20) [x86_64-linux]

我认为 Rails 正在使用 Ruby 的系统版本,因为版本匹配。

$ rbenv local system
$ ruby -v
ruby 1.9.3p194 (2012-04-20 revision 35410) [x86_64-linux]
$ rbenv local --unset  # Unset local Ruby version, go back to 2.1.0

我尝试了一些没有运气的事情:

  • 使用 rbenv 将 Ruby 的本地和 shell 版本设置为 2.1.0
  • 重新散列 rbenv 垫片(rbenv 说在安装可执行文件后执行此操作)
  • 切换到 2.1.0 后创建了新的 Rails 项目,以防我在使用 1.9.3 时创建项目
  • 2.1.0 放入我项目根目录下的.ruby-version 文件中(@Agis 建议)
  • 重新启动终端会话并启动登录 bash shell(@Russel 建议)
  • 在项目的 Gemfile 中指定所需的 Ruby 版本(@rlecaro2 建议)

FWIW,我正在使用带有鱼壳的 Ubuntu 13.10。

【问题讨论】:

  • 检查which railswhich ruby,您实际上正在使用rbenv shims
  • which rails => /usr/local/bin/rails, which ruby => /home/dennis/.rbenv/shims/ruby
  • 您是否使用 RVM 进行安装?
  • @Abhinay 不,我什至没有安装 RVM。我使用 rbenvruby-build 来构建和安装 Ruby 2.1.0。
  • @Dennis Mate,很抱歉,但如果你真的想通过“安装没有问题”来学习 Rails。只需使用 rvm,否则这些事情会经常发生。甚至stackoverflow.com/users/497756/mpapis 也提出了相同的建议。。享受吧!!。如果你说,我会在这里为你发布下面的所有步骤。

标签: ruby-on-rails ruby ruby-on-rails-4 rbenv


【解决方案1】:

您没有告诉您如何安装rbenv,但我认为这是按用户安装(这是默认设置)。在这种情况下,您应该在不使用 sudo 的情况下安装 gems。当你做sudo gem install rails时,它是安装在系统ruby中的,而不是rbenv选择的。

解决方案 - 不使用 sudo 安装 rails:

rbenv global 2.1.0
gem install rails
rbenv rehash

【讨论】:

  • 我通过将 repo 克隆到 ~/.rbenv,将 ~/.rbenv/bin 添加到我的 $PATH 并按照 rbenv init 的说明安装了 rbenv,其中涉及向 ~/.config/fish/config.fish 添加一行以便加载 rbenv自动地。然后我将 ruby​​-build repo 克隆到 ~/.rbenv/plugins/ruby-build 并将 ~/.rbenv/plugins/ruby-build/bin 添加到我的 $PATH 中。
  • 是的,这是按用户(默认)安装。按照我的建议尝试安装没有sudo 的导轨。
  • 我按照建议安装了 Rails(并首先验证了 Ruby 版本),但 Rails 仍然显示旧版本。在使用 gem install rails 安装 Rails 之前,命令 gem which rails 将返回“错误:找不到 ruby​​ 库文件或共享库 rails”,但现在它返回“/home/dennis/.rbenv/versions/2.1.0 /lib/ruby/gems/2.1.0/gems/railties-4.0.2/lib/rails.rb”。也许我首先需要卸载我用 sudo 安装的 Rails gem,接下来尝试sudo gem uninstall rails
  • 解决了!您的解决方案有效,但我还必须运行rbenv rehash。我不必像我之前评论中提到的那样卸载 Rails。
  • 另外,别忘了致电rbenv rehash
【解决方案2】:

听起来很傻,但是您是否重新启动了终端会话?

否则尝试输入

 /bin/bash --login

【讨论】:

  • 然后重新运行 ruby​​ -v 进行检查
  • 刚刚尝试重新启动终端并创建了一个新的 Rails 项目,但仍然使用旧的 Ruby 版本。尝试/bin/bash --login 也不起作用,ruby -v 给出ruby 2.1.0p0 (2013-12-25 revision 44422) [x86_64-linux]rails server 仍然说ruby 1.9.3 (2012-04-20) [x86_64-linux
  • 所以登录到您的 bash 配置文件似乎确实有效...如果我没记错的话,您之前的 rails 版本是 1.9.3,现在正在阅读 2.1。除非您在 rails 项目中指定了 ruby​​ 版本,否则如果您使用更新的 ruby​​ 版本运行“rails s”,它应该从该版本开始。你的服务器是分离的吗?开始时是否使用 -d 运行它?你有没有重启过?
  • 正确,Ubuntu 13.10 上的默认 Ruby 版本是 1.9.3,我使用 rbenv 和 ruby​​-build 安装了 2.1.0。我没有在我的 Rails 项目中指定特定的 Ruby 版本,它是默认指定的吗?分离我的服务器意味着什么? (我在我的开发机器上本地运行 Rails 服务器。)我没有使用 -d 选项运行 Rails。我尝试通过使用ctrl+c 杀死它然后重新运行rails server 来重新启动服务器几次。
  • 明白了。我应该简化并询问您是否重新启动了 rails 服务器。 running 'rails s -d' 将运行分离的服务器。所以它基本上不会附加到终端会话而启动和运行
【解决方案3】:

尝试在项目的根目录中创建一个.ruby-version 文件,内容如下:

2.1.0

【讨论】:

  • 我用 2.1.0 的内容创建了 ~/app/.ruby-version,然后创建了 rails server,但它仍然显示 Ruby 1.9.3。
  • 如果你打开了irb呢?还是 19.3?
  • 在我的项目目录中运行 irb,RUBY_VERSION 给出2.1.0
  • 您的应用程序的根文件夹不是应用程序文件夹。您也可以尝试在 gemfile 中指定 ruby​​ 版本:ruby "2.1.0"(重启终端)。
  • @rlecaro2 我的 Rails 应用程序的根文件夹是什么?我的主目录?我尝试在应用程序的 Gemfile 中指定 Ruby 版本。当我运行 rails server 时,我收到错误消息“您的 Ruby 版本是 1.9.3,但您的 Gemfile 指定了 2.1.0”。我假设 Rails 使用的是 /usr/bin/ruby (1.9.3) 而不是 ~/.rbenv/shims/ruby (2.1.0)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-12-02
  • 2020-05-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多