CodeRoadMap
首页路线题库资源库文章社区
CodeRoadMap

程序员的学习成长路线图。内容免费开放,登录后可同步路线图与课时进度。

由 程序员柏风 独立维护 · 关于作者

学习

  • 路线图
  • 课程
  • 面试题
  • 文章
  • 我

更多

  • 资源
  • 社区
  • 关于作者
  • 内容说明

© 2026 CodeRoadMap

津ICP备2026012044号-1·津公网安备12011002026155号·coderoadmap@126.com
Ruby 语言入门/课时/Ruby 环境
RawBlame
课时目录12 节

Ruby 语言入门

  1. 01Ruby 环境
  2. 02数据类型
  3. 03语法基础
  4. 04控制流
  5. 05方法与 Blocks
  6. 06OOP 与 Mixin
  7. 07元编程
  8. 08IO 与 Enumerable
  9. 09并发
  10. 10Gems 与框架
  11. 11测试与质量
  12. 12综合练习

Ruby 环境

rbenv/RVM 与 IDE。

30 分钟

Ruby 环境

这一课你将能做到

  1. 在本机安装 Ruby 3.x 并用 ruby -v 验证版本
  2. 用 irb 交互式控制台运行 Ruby 表达式,并写出第一个 .rb 脚本文件执行
  3. 说清楚 rbenv 与 RVM 的区别,能配置 VS Code 的 Ruby 开发环境

为什么要学

环境是所有后续学习的地基。Ruby 版本之间差异很大——Rails 7 要求 Ruby 2.7+,而 macOS 系统自带的往往是老旧的 Ruby 2.6。不会管理版本,你装个 gem 都能报权限错误。

人话:Ruby 环境就像厨房的灶台。rbenv 是你的「多灶台控制器」,让你同时装好几个 Ruby 版本、每个项目用不同版本,互不打架。灶台搭不好,后面的菜(Rails、Gem 开发)一道都做不出来。

先建立图像

你的代码
   │
   ▼
┌─────────────┐     ┌──────────────┐
│  版本管理器   │────▶│  ruby 解释器  │─── ruby -v / irb / ruby hello.rb
│ rbenv / RVM │     │  (MRI/CRuby) │
└─────────────┘     └──────────────┘
   │                        │
   ▼                        ▼
~/.rbenv/versions/     rubygems (gem 命令)
3.3.5  3.2.4  2.7.8    bundler (bundle 命令)
工具干什么的类比
ruby解释器本体,执行 .rb 文件JDK 的 java 命令
irb交互式控制台,边敲边看结果jshell / Python REPL
gem包管理器,装第三方库Maven 中央仓库客户端
rbenv版本切换器,管理多个 rubyjenv / nvm
bundler项目级依赖锁定pom.xml + mvn

跟着做

步骤 1:安装 Ruby

Windows 用 RubyInstaller(官网下载 rubyinstaller-devkit 版,安装时勾选 MSYS2);macOS 用 Homebrew:

# macOS
brew install rbenv ruby-build
rbenv init          # 按输出把一行 eval 加进 ~/.zshrc
rbenv install 3.3.5
rbenv global 3.3.5

# Ubuntu/Debian
sudo apt install rbenv
rbenv install 3.3.5

装完验证(三个命令都要有正常输出):

ruby -v    # => ruby 3.3.5 (2024-09-03 revision ...) [x86_64-...]
gem -v     # => 3.5.x
irb -v     # => irb 1.14.x

步骤 2:用 irb 玩 5 分钟

终端输入 irb,进入交互控制台,逐行敲:

1 + 2
"hello".upcase
5.times { print "Ruby! " }
exit

每敲一行回车,irb 立刻打印 => 开头的返回值。这是 Ruby 学习最重要的工具——不确定的语法,先扔 irb 里试。

步骤 3:写第一个脚本文件

新建 hello.rb:

name = "Ruby"
version = 3.3

puts "你好,#{name} #{version}!"
puts "1 到 5 的和是 #{(1..5).sum}"

3.times do |i|
  puts "第 #{i + 1} 次循环"
end

执行:

ruby hello.rb

输出:

你好,Ruby 3.3!
1 到 5 的和是 15
第 1 次循环
第 2 次循环
第 3 次循环

步骤 4:配 VS Code

装两个扩展:Ruby LSP(Shopify 官方,补全/跳转/悬停文档)和 VSCode Ruby(语法高亮)。设置里开启 format on save,formatter 选 Ruby LSP。之后写代码就有和 IDEA 写 Java 类似的体验。

讲清楚要点

  1. rbenv vs RVM:rbenv 通过 PATH 前置 shim 目录切换版本,轻、不污染 shell 函数,是目前主流;RVM 直接改写 shell 的 cd 行为,功能全但侵入性强。新项目选 rbenv(或更新的 mise)。
  2. 系统 Ruby 不要动:macOS 自带的 /usr/bin/ruby 是给系统脚本用的,权限受限且版本旧。所有开发都走 rbenv 装的版本。
  3. irb 就是探针:Ruby 社区调试的第一反应不是开调试器,而是 irb(或 pry)里现场试。养成「不确定就 irb」的习惯。
  4. 脚本执行方式:ruby 文件名.rb 是唯一推荐方式。加 shebang(#!/usr/bin/env ruby)+ chmod +x 后可以直接 ./hello.rb,但仅限 macOS/Linux。
  5. .ruby-version 文件:项目根目录放一个只写版本号(如 3.3.5)的文件,rbenv 进入目录会自动切换版本——团队协作必配。

你可能会懵的地方

  • irb 里的 => 是什么? 它打印的是表达式的「返回值」,不是输出。puts "hi" 先打印 hi(副作用),再显示 => nil(puts 的返回值永远是 nil)。

  • rbenv 装了新版本,为什么 ruby -v 还是旧的? 九成是 shim 没生效:执行 rbenv rehash,并确认 rbenv init 输出的 eval 行确实在 shell 配置文件里且已重开终端。

  • Windows 上没有 rbenv 怎么办? Windows 直接用 RubyInstaller 的 uru 或 Pik 做版本管理,或者干脆只装一个版本。生产部署几乎都在 Linux,Windows 只做开发。

  • gem 装包装到一半报权限错误(Gem::FilePermissionError)? 你在往系统 Ruby 里装。检查 which ruby 是否指向 rbenv 目录;永远不要 sudo gem install。

  • JRuby、TruffleRuby 是什么?要学吗? 它们是跑在 JVM 或 GraalVM 上的 Ruby 实现,默认学的「Ruby」指官方 MRI/CRuby。初学者只用 MRI。

错法对照

错法问题正解
用系统自带 Ruby 开发版本旧、装 gem 要 sudorbenv 装 3.x,shim 接管 PATH
sudo gem install rails污染系统目录,后患无穷切到 rbenv 版本后直接 gem install
把代码写进 irb 不保存退出即丢失irb 只用于试验,正式代码写 .rb 文件
ruby hello 漏写扩展名报 cannot load such fileruby hello.rb 带上 .rb
项目间共用一个 Ruby 大版本不管小版本「我机器上是好的」项目根放 .ruby-version 锁版本

卡点急救

  1. ruby: command not found:PATH 没配。检查 shell 配置文件(~/.zshrc 或 ~/.bashrc)里有没有 rbenv 的 init 行,重开终端。
  2. irb 里粘贴多行代码格式全乱:Ruby 3.x 的 irb 已原生支持多行粘贴,老版本可先 irb --nomultiline,或直接改用文件执行。
  3. Windows 安装后 gem install 卡 SSL 证书错误:重跑 RubyInstaller 安装目录下的 ridk install,选 1+2+3 补全 MSYS2 工具链。

面试常问

  • MRI、JRuby、TruffleRuby 区别? MRI(也叫 CRuby)是松本行弘写的官方 C 实现,有 GIL;JRuby 跑在 JVM 上,能用 Java 生态、无真 GIL 限制;TruffleRuby 基于 GraalVM,JIT 峰值性能最高。生产 95% 是 MRI。

  • Ruby 是解释型还是编译型? MRI 1.9+ 是「编译成字节码再由 VM 执行」,和 JVM 思路类似但没有独立 .class 文件,且 3.x 带 YJIT 即时编译器。面试标准答案:字节码解释 + JIT 混合。

  • rbenv 的 shim 原理? shim 是 ~/.rbenv/shims 下的一组同名轻量脚本,PATH 里它排在最前。调用 ruby 时 shim 读取 .ruby-version / RBENV_VERSION 决定转发到哪个真实版本。

自测三问

  1. ruby -v、irb、gem list 三个命令分别验证什么?
  2. 为什么不应该往系统 Ruby 里装 gem?
  3. 新克隆一个项目,如何 10 秒内知道它要求哪个 Ruby 版本?

小结一句话

用 rbenv 管住版本、irb 当试验田、.rb 文件跑脚本,Ruby 环境这关就过了。

延伸

  • Ruby 官方安装指南
  • rbenv 官方仓库
  • 下一课:数据类型——Symbol、Array、Hash 这些 Ruby 日常操作的主角。
加载本节练习…
下一课 →数据类型