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

news/2024/12/23 4:27:39/

如果说电子游戏是第九艺术,那么,编程技术则配得上第十艺术的雅称。艺术发展的普遍规律就是要给与人们对于艺术作品的更高层感受,而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。


http://www.ppmy.cn/news/5237.html

相关文章

【Django】第二课 银行账户管理系统开发

概念 本文在上一篇文章基础之前进行构建和完善 账户信息的分页显示 用户通过点击首页的“查询账户”&#xff0c;进入账户信息查询页面 则点击该按钮触发点击事件&#xff0c;向django服务器发出请求 接着我们在urls.py中需要定义与该地址进行匹配的地址&#xff0c;并匹配后…

【Python机器学习】神经网络中常用激活函数、损失函数、优化方法(图文解释 附源码)

下面以经典的分类任务&#xff1a;MNIST手写数字识别&#xff0c;采用全连接层神经网络 MNIST数据集是一个手写体的数字图片集&#xff0c;它包含有训练集和测试集&#xff0c;由250个人手写的数字构成。训练集包含60000个样本&#xff0c;测试集包含10000个样本。每个样本包括…

iOS的启动优化

应用的启动优化 当我们参与到大型应用的时候 会遇到一些启动时间过长的情况 这时候就需要使用到相关的操作。 总结来说&#xff0c;main()方法调用前&#xff0c;启动过程大体分为如下步骤&#xff1a; 先是LLVM把项目翻译成IR文件然后到backend LLVM clang pre-main main …

基础背包问题--0 1背包与完全背包

&#x1f389;&#x1f389;&#x1f389;写在前面&#xff1a; 博主主页&#xff1a;&#x1f339;&#x1f339;&#x1f339;戳一戳&#xff0c;欢迎大佬指点&#xff01; 目标梦想&#xff1a;进大厂&#xff0c;立志成为一个牛掰的Java程序猿&#xff0c;虽然现在还是一个…

Nature Communications:人类丘脑的基因结构及其与十种常见大脑疾病的重叠

丘脑是位于大脑中心的重要交流中枢&#xff0c;由不同的核组成&#xff0c;对意识和高级皮层功能至关重要。丘脑结构和功能的改变涉及到常见的大脑疾病的发病机制&#xff0c;但丘脑的遗传结构仍然很大程度上未知。在这里&#xff0c;使用来自30114个个体的大脑扫描和基因型数据…

Fabric.js 修改画布交互方式到底有什么用?

本文简介 点赞 关注 收藏 学会了 fabric.js 为我们提供了很多厉害的方法。今天要搞明白的一个东西是 canvas.interactive 。 官方文档对 canvas.interactive 的解释是&#xff1a; Indicates that canvas is interactive. This property should not be changed. canvas.in…

LeetCode 321 周赛

2485. 找出中枢整数 给你一个正整数 n &#xff0c;找出满足下述条件的 中枢整数 x &#xff1a; 1 和 x 之间的所有元素之和等于 x 和 n 之间所有元素之和。 返回中枢整数 x 。如果不存在中枢整数&#xff0c;则返回 -1 。题目保证对于给定的输入&#xff0c;至多存在一个中…

2022卡塔尔世界杯 | 我与足球的爱恨情仇

超燃世界杯&#xff0c;决战卡塔尔⚽我与足球在生活上的交集一、小学二、中学三、大学&#x1f4bb;我与足球在技术上的碰撞一、与足球有关的题目训练二、使用Java代码做一个足球小游戏&#x1f3c6;2022卡塔尔世界杯冠军 —— 阿根廷yyds一、球队比赛过程二、热门球员介绍三、…