Ruby 时间老去,Ruby 不死,Ruby 语言基础入门教程之 Ruby3 全平台开发环境搭建 EP00

zcxey2911 · 2023年02月08日 · 最后由 MarkHoo 回复于 2023年03月01日 · 1427 次阅读

如果说电子游戏是第九艺术,那么,编程技术则配得上第十艺术的雅称。艺术发展的普遍规律就是要给与人们对于艺术作品的更高层感受,而 Matz 的 Ruby 语言则正是这样一件艺术品。

无论是语法还是理念,都让 Ruby 开发者感受到款待,如此,Ruby 代码就像活了过来,它们时而高声,却藏不住优雅,时而细语,却意外地铿锵,真是美妙,这种庄重而温柔的魅力,用那一代奉松本行弘为偶像的人的话说,叫剑胆琴心。现在的话又讲,心有猛虎,细嗅蔷薇。

本次,让我们再一次全平台构建 Ruby3 开发环境,感受 Ruby3 的魅力。

Mac 平台(ARM/X86)

都知道 Mac 和 Ruby 是天作之合,你中有我,我中有你,衔接得天衣无缝,拉链般重合。

首先安装 Homebrew,它是一款由 Ruby 开发的包管理工具,目前支持 MacOS 和 Linux 系统,通过 Homebrew,我们可以多快好省地安装最新的 Ruby3.0 以上版本。

如果是 M 系列芯片的 Mac 电脑,运行命令安装 ARM 架构版本的 Homebrew:

/bin/bash -c "$(curl -fsSL https://gitee.com/ineo6/homebrew-install/raw/master/install.sh)"

随后在终端执行命令 echo $SHELL 获得终端类型:

/bin/zsh => zsh => .zprofile  
/bin/bash => bash => .bash_profile

如果是 zsh 终端,输入命令配置环境变量:

echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.zprofile  
eval "$(/opt/homebrew/bin/brew shellenv)"

反之,bash 终端则输入如下命令:

echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.bash_profile  
eval "$(/opt/homebrew/bin/brew shellenv)"

从 MacOS Catalina(10.15.x) 版开始,Mac 使用 zsh 为默认终端。

如果是 Intel 芯片的 Mac,可以选择 X86 架构的 Homebrew:

arch -x86_64 /bin/bash -c "$(curl -fsSL https://gitee.com/ineo6/homebrew-install/raw/master/install.sh)"

最后注意 X86 架构的 Homebrew 默认路径为:/usr/local/bin/brew

然后再执行 source ~/.zprofile 或 source ~/.bash_profile 命令更新文件。

安装好之后,在终端输入命令,查看 brew 版本:

➜  ~ brew -v  
Homebrew 3.6.4  
Homebrew/homebrew-core (git revision 375065e9c3a; last commit 2022-10-05)  
Homebrew/homebrew-cask (git revision 7068d45cf4; last commit 2022-10-05)

说明安装成功,如果是老版本,可以运行命令进行更新:

➜  ~ brew cleanup && brew update  
Already up-to-date.

除此之外,也可以为 Homebrew 设置一下国内源:

# brew  
git -C "$(brew --repo)" remote set-url origin https://mirrors.ustc.edu.cn/brew.git  

# core  
git -C "$(brew --repo homebrew/core)" remote set-url origin https://mirrors.ustc.edu.cn/homebrew-core.git  

# cask  
git -C "$(brew --repo homebrew/cask)" remote set-url origin https://mirrors.ustc.edu.cn/homebrew-cask.git  

echo 'export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.ustc.edu.cn/homebrew-bottles' >> ~/.zprofile  
source ~/.zprofile

但事实上,有时候国内源由于同步延迟问题,会和国外源有一些微小的差异,而这些差异往往会导致 Ruby 软件的编译失败,所以两种源各有利弊,各自斟酌。

接下来我们来安装 Ruby3,业界比较主流的安装方式大抵两种:rvm 或者 rbenv,这里我们使用 rbenv,它其实就是一个类似 python 中 conda 一样的多版本管理软件包,可以方便一些老项目以低版本 ruby 运行,比如 ruby1.9:

brew install ruby-build rbenv

之后将 rbenv 命令添加到 zsh 命令行的环境变量中:

echo 'if which rbenv > /dev/null; then eval "$(rbenv init -)"; fi' >> ~/.zshrc  
source ~/.zshrc

重启命令行,键入 rbenv:

➜  ~ rbenv  
rbenv 1.2.0  
Usage: rbenv <command> [<args>]  

Some useful rbenv commands are:  
   commands    List all available rbenv commands  
   local       Set or show the local application-specific Ruby version  
   global      Set or show the global Ruby version  
   shell       Set or show the shell-specific Ruby version  
   install     Install a Ruby version using ruby-build  
   uninstall   Uninstall a specific Ruby version  
   rehash      Rehash rbenv shims (run this after installing executables)  
   version     Show the current Ruby version and its origin  
   versions    List installed Ruby versions  
   which       Display the full path to an executable  
   whence      List all Ruby versions that contain the given executable  

See `rbenv help <command>' for information on a specific command.  
For full documentation, see: https://github.com/rbenv/rbenv#readme

可以看到最新的 1.2.0 版本。

随后键入命令查看目前可编译的 Ruby 版本:

~ rbenv install --list                                                                                 
2.6.10  
2.7.6  
3.0.4  
3.1.2  
jruby-9.3.8.0  
mruby-3.1.0  
picoruby-3.0.0  
rbx-5.0  
truffleruby-22.2.0  
truffleruby+graalvm-22.2.0

这里我们选择安装 3.0.4 版本:

rbenv install 3.0.4

安装成功后键入 rbenv versions:

~ rbenv versions    
  system  
* 3.0.0 (set by /Users/liuyue/.rbenv/version)  
  3.0.4

列出所有安装好的版本。

随后可以使用 rbenv global 命令来切换版本:

~ rbenv global 3.0.4   
➜  ~ rbenv versions      
  system  
  3.0.0  
* 3.0.4 (set by /Users/liuyue/.rbenv/version)

如果某个版本不再需要,也可以进行 uninstall 卸载操作:

➜  ~ rbenv uninstall 3.0.0  
rbenv: remove /Users/liuyue/.rbenv/versions/3.0.0? [yN] y  
➜  ~ rbenv versions         
  system  
* 3.0.4 (set by /Users/liuyue/.rbenv/version)

至此,大功告成,接着进入 ruby 命令行工具 irb,终端输入:irb

与 Python 执行和终端使用同一命令不同的是,Ruby 的执行命令为 ruby,而命令行则是 irb

irb 是 Ruby 附带的交互式编程环境,它是由石冢启十先生撰写的:

~ irb  
irb(main):001:0> puts "你好,Ruby"  
你好,Ruby  
=> nil

接着可以使用 exit 或者 quit 命令退出 Ruby 命令行:

➜  ~ irb  
irb(main):001:0> puts "你好,Ruby"  
你好,Ruby  
=> nil  
irb(main):002:0> exit  
➜  ~

Docker(其他平台构建 Ruby 开发环境)

如果使用的是 Windows 平台或者其他系统,我们可以使用 Docker 的方式快速搭建环境,Docker 安装请参见:一寸宕机一寸血,十万容器十万兵|Win10/Mac 系统下基于 Kubernetes(k8s) 搭建 Gunicorn+Flask 高可用 Web 集群

安装完成之后,首先下载 ruby3.0.4 镜像:

[root@instance-7dojaq0e ruby3]# docker pull ruby:3.0.4-slim  
3.0.4-slim: Pulling from library/ruby  
31b3f1ad4ce1: Pull complete  
9ecf19185ffb: Pull complete  
7201eddc3a4c: Pull complete  
384b637b5031: Pull complete  
e878247dc643: Pull complete  
Digest: sha256:5b99cbdb905610eb1aa47c24c15b724045e65dab0b5fd1c069f5f722895724e9  
Status: Downloaded newer image for ruby:3.0.4-slim  
docker.io/library/ruby:3.0.4-slim

下载完成之后,启动容器:

docker run -it ruby:3.0.4-slim

随后即可进入 Ruby 命令行:

[root@instance-7dojaq0e ~]# docker run -it ruby:3.0.4-slim  
irb(main):001:0> puts "你好 ruby"  
你好 ruby  
=> nil

简单方便。

结语

按照固有思维方式,人们总以为时下最热门的语言才是学习的目标,但 Ruby 除了基础语法之外,还给了一些看不见、摸不着的东西,我认为这在目前盛行“实惠”价值观的时候,提一提还是必要的。很多事情不用问值不值得,只用问,它对你来说,是不是有若珍宝。最后,谨以此系列教程献给司徒正美兄,我的 Ruby 领路人,真正的 Ruby 高手,大神中的大神,正道是:司徒正美成绝响,人间不见 Ruby's Louvre。

好诗好诗!

Ruby 必死,本人是正经人,只说实话

xiaojiba 回复

哈哈,你不知道 Ruby 社区近 5 年来的流行语吗?

Ruby dies every year

xiaojiba 回复

偏 激了,不过我还是希望 ruby 能活着,虽然现实不可变

感谢楼主,对新手很有用

rbenv 下载慢,有什么好的解决办法吗

新人来了

不想学 Docker

xiaojiba 回复

让 Elixir 继承衣钵吧😀

需要 登录 后方可回复, 如果你还没有账号请 注册新账号