ruby-on-rails - Rails 没有使用我的全局 Ruby 版本

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

我想将 Rails 与 Ruby 2.1.0 结合使用,但它使用的是 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 建议)
  • 重新启动终端 session 并启动登录 bash shell(@Russel 建议)
  • 在项目的 Gemfile 中指定所需的 Ruby 版本(@rlecaro2 建议)

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

最佳答案

您没有说明您是如何安装 rbenv 的,但我认为这是针对每个用户的安装(这是默认设置)。在这种情况下,您应该在不使用 sudo 的情况下安装 gems。当你执行 sudo gem install rails 时,它被安装在系统 ruby​​ 中,而不是 rbenv 的选择。

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

rbenv global 2.1.0
gem install rails
rbenv rehash

关于ruby-on-rails - Rails 没有使用我的全局 Ruby 版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21141584/

相关文章:

ruby-on-rails - 用于组织多文件 Ruby 程序的系统?

ruby - 我对 ruby​​/gem 管理和 postgres libpq 有疑问

css - 如何在 Rails 4 中使用按钮调用 Controller 方法

ruby - 如何为 gem 创建模块?

ruby-on-rails - rails 4 如何同时使用 where 和 where 条件

ruby-on-rails - 从共享的局部 View 或替代解决方案中删除条件逻辑

javascript - 使用 Rails + Devise 在用户注册/登录时执行 JS 代码

ruby-on-rails - 如何在 rails 中为 update_all 触发 ActiveRecord 回调(has_paper_trail)

ruby-on-rails - ruby 洗牌!数组中的每个数组

Ruby - UTC 时间.now