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

简介: 如果说电子游戏是第九艺术,那么,编程技术则配得上第十艺术的雅称。艺术发展的普遍规律就是要给与人们对于艺术作品的更高层感受,而Matz的Ruby语言则正是这样一件艺术品。无论是语法还是理念,都让Ruby开发者感受到款待,如此,Ruby代码就像活了过来,它们时而高声,却藏不住优雅,时而细语,却意外地铿锵,真是美妙,这种庄重而温柔的魅力,用那一代奉松本行弘为偶像的人的话说,叫剑胆琴心。现在的话又讲,心有猛虎,细嗅蔷薇。

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

相关文章
|
算法 测试技术 API
如何用Ruby语言提高代码的可读性和可维护性
在软件开发过程中,代码的可读性和可维护性是非常重要的因素。一旦代码变得难以理解和修改,就会导致开发速度变慢、bug增多以及团队合作效率下降。在本篇博客中,我们将探讨一些使用Ruby编程语言的技巧和最佳实践,以提高代码的可读性和可维护性。
95 1
|
XML 前端开发 安全
构建自己的MVC框架(Ruby语言实现)-- 2. 创建ApplicationController
构建自己的MVC框架(Ruby语言实现)-- 2. 创建ApplicationController
|
前端开发 关系型数据库 开发工具
构建自己的MVC框架(Ruby语言实现)-- 开篇
构建自己的MVC框架(Ruby语言实现)-- 开篇
|
6月前
|
文字识别 API 开发工具
印刷文字识别产品使用合集之SDK支持ruby语言吗
印刷文字识别产品,通常称为OCR(Optical Character Recognition)技术,是一种将图像中的印刷或手写文字转换为机器编码文本的过程。这项技术广泛应用于多个行业和场景中,显著提升文档处理、信息提取和数据录入的效率。以下是印刷文字识别产品的一些典型使用合集。
|
4月前
|
自然语言处理 Ruby
Ruby语言揭秘:如何轻松驾驭自然语言处理?
【8月更文挑战第31天】本文介绍了如何利用Ruby进行自然语言处理(NLP),包括安装`treat`库及其实现文本分词、词性标注和命名实体识别等基础任务的方法。通过示例代码,展示了Ruby在NLP领域的强大功能与灵活性,为初学者提供了一个友好且实用的入门指南。在信息爆炸的今天,掌握Ruby进行NLP处理的技能显得尤为重要。
32 0
|
4月前
|
测试技术 开发者 Ruby
Ruby领域特定语言(DSL)的神秘力量:如何让你的代码飞起来?
【8月更文挑战第31天】在软件开发领域,Ruby以简洁的语法和强大的表达能力著称,但面对复杂业务逻辑时,代码可能变得冗长难维护。此时,领域特定语言(DSL)成为解决问题的有效途径。DSL专为特定领域设计,使代码更贴近业务逻辑,提高可读性和可维护性。本文通过示例展示了如何在Ruby中开发DSL,包括使用解析器和宏功能创建一个简单的Web应用结构描述语言,并提出了定义清晰语法、避免滥用DSL等最佳实践,强调了测试与文档的重要性。
87 0
|
5月前
|
监控 网络安全 持续交付
公司电脑管理软件结合 Ruby 语言的实践探索
在数字化办公时代, Ruby 语言以简洁灵活的特点, 成为公司电脑管理软件开发的新选择。通过示例代码展示了 Ruby 在获取系统信息、监控内存使用及远程管理方面的应用。Ruby 的灵活性与丰富库资源, 大大提升了管理效率与准确性, 为企业数字化管理带来新可能。
43 3
|
前端开发 关系型数据库 开发工具
构建自己的MVC框架(Ruby语言实现)-- 第一章 从零到“它工作了!”
构建自己的MVC框架(Ruby语言实现)-- 第一章 从零到“它工作了!”
|
存储 自然语言处理 Go
红袖添香,绝代妖娆,Ruby语言基础入门教程之Ruby3基础数据类型(data types)EP02
Ruby是强类型动态语言,即Ruby中一旦某一个对象被定义类型,如果不通过强制转换操作,那么它永远就是该数据类型,并且只有在Ruby解释器运行时才会检测对象数据类型,它的一切皆为对象(包括 nil 值对象),可以通过调用内置class属性来获取该对象的具体数据类型。对于 Ruby 而言,所有类型都继承自 Object 类(根类为 BasicObject)。
红袖添香,绝代妖娆,Ruby语言基础入门教程之Ruby3基础数据类型(data types)EP02
|
Ruby Python
红袖添香,绝代妖娆,Ruby语言基础入门教程之Ruby3基础语法,第一次亲密接触EP01
书接上回,前一篇我们在全平台构建好了Ruby3的开发环境,现在,可以和Ruby3第一次亲密接触了。 Ruby是一门在面向对象层面无所不用其极的解释型编程语言。 我们可以把编写Ruby代码看作是一场行为上的艺术,编码就像跳舞一样,Ruby的每一步都很优雅,几乎没有一步是多余的。
红袖添香,绝代妖娆,Ruby语言基础入门教程之Ruby3基础语法,第一次亲密接触EP01