别梦依稀咒逝川,Ruby二十八年前|M1芯片Mac os系统配置Ruby(3.0.0) on Rails(6.1.1)开发环境(2021最新攻略)
原文转载自「刘悦的技术博客」https://v3u.cn/a_id_188
在每个开发者心里,都会有一门“最好”的语言,在这个世界的某个深处,在一些矫矫不群的人们心中,这门语言的名字叫做Ruby,它今年二十八岁了,历史和Java一样的悠久,但是它没有大厂背书、它的性能被开发者诟病、时至今日依然无法高效利用多核资源,甚至于它每年都要被“死亡”一次,相比于有太阳计算机系统、甲骨文、IBM 这些大公司支持的 Java,它是那么的一无所有,但是,它又拥有全世界最虔诚的“信徒”,拥有最活跃的开发者社区,这一切,又让它是那么的应有尽有。是的,这就是Rubyist的理念:有的时候,你想证明给一万个人看,到后来,你发现只得到了一个明白的人,那就够了。
本次我们尝试在最新的M1芯片Mac os(Big Sur 11.2.2)中搭建最新版Ruby3.0.0以及Web开发框架Rails6.1.1,全新的芯片、全新的征途、全新的开始:
首先我们来看看M1芯片的命令行,如果你是从老版本Mac迁移过来的,比如笔者(Mojave),最好将老的Base命令行更换成zsh,zsh是一款功能比bash更强大的终端(shell)系统,既可以作为一个交互式终端,也可以作为一个脚本解释器,这里更换必要性是指如果使用Bash编译Ruby3.0,可能会发生一些未知错误。执行命令切换zsh:
sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
安装成功后,确保在应用程序-》实用工具-》终端-》简介中,不要勾选Rosetta,因为接下来我们需要以arm架构的homebrew进行安装,所以所有的编译和运行动作都不需要Rosetta的参与:
随后重启终端,开始安装amr架构的Homebrew:
/bin/bash -c "$(curl -fsSL https://cdn.jsdelivr.net/gh/ineo6/homebrew-install/install.sh)"
然后编辑配置文件 ~/.zshrc,加入如下内容:
path=('/opt/homebrew/bin' $path)
export PATH
存盘之后执行命令:
source ~/.zshrc
查看新brew的位置:
➜ ~ which brew
/opt/homebrew/bin/brew
如果返回的是/opt/homebrew/bin/brew就说明安装成功,接着更新一下版本:
➜ ~ brew cleanup && brew update
Already up-to-date.
如果没有代理,可以选择设置一下国内源:
# 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
接下来我们来安装Ruby3.0,业界比较主流的安装方式大抵两种:rvm或者rbenv,这里我们使用rbenv,它其实就是一个类似python中conda一样的多版本管理软件包,可以方便一些老项目以低版本ruby运行,比如ruby2.6。
Ruby 依赖 OpenSSL和AutoConf这俩个包,提前预装好,如果是迁移过来的Openssl可能版本比较低,最好重新安装最新的1.1j版本:
brew reinstall openssl@1.1
brew reinstall autoconf
随后安装rbenv,执行命令:
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.1.2
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
如果返回版本号和相关操作,问题就不大了,不过最好通过脚本诊断一下,确保后续编译不会出问题:
curl -fsSL https://github.com/rbenv/rbenv-installer/raw/master/bin/rbenv-doctor | bash
诊断没有报错误即可:
➜ ~ curl -fsSL https://github.com/rbenv/rbenv-installer/raw/master/bin/rbenv-doctor | bash
Checking for `rbenv' in PATH: /opt/homebrew/bin/rbenv
Checking for rbenv shims in PATH: OK
Checking `rbenv install' support: multiple
You seem to have multiple `rbenv-install' in the following locations.
Please pick just one installation and remove the others.
/Users/liuyue/.rbenv/plugins/ruby-build/bin/rbenv-install
/opt/homebrew/bin/rbenv-install
Counting installed Ruby versions: 1 versions
Checking RubyGems settings: OK
Auditing installed plugins: OK
接下来,由于众所周知的学术问题,rbenv下载二进制安装包会非常的缓慢,所以我们可以通过国内镜像来手动下载:https://cache.ruby-china.com/pub/ruby/
这里下载ruby3.0正式版:
然后将压缩包手动拷贝到rbenv的安装目录:~/.rbenv/cache
这里的~/.rbenv/cache有可能不存在,可以手动创建:
mkdir ~/.rbenv/cache
拷贝安装包:
cp ~/Downloads/ruby-3.0.0.tar.gz ~/.rbenv/cache/ruby-3.0.0.tar.gz
紧接着我们终于可以安装Ruby3.0本体了:
brew link openssl --force
RUBY_CONFIGURE_OPTS=--with-openssl-dir=/opt/homebrew/Cellar/openssl@1.1/1.1.1j rbenv install 3.0.0
由于笔者之前安装过openssl,所以这次强制指定由arm架构的openssl来编译安装。
安装成功后键入rbenv versions:
➜ ~ rbenv versions
* system (set by /Users/liuyue/.rbenv/version)
3.0.0
可以看到,除了M1系统默认的版本,又出现了一个3.0.0版本,我们可以使用 rbenv global命令来切换版本:
➜ ~ rbenv global 3.0.0
➜ ~ rbenv versions
system
* 3.0.0 (set by /Users/liuyue/.rbenv/version)
随后输入ruby -v:
➜ ~ ruby -v
ruby 3.0.0p0 (2020-12-25 revision 95aff21468) [arm64-darwin20]
可以看到版本已经切换到3.0,并且内核版本是arm64位,如果需要系统默认版本,还可以切回来:
➜ ~ rbenv global system
➜ ~ ruby -v
ruby 2.6.3p62 (2019-04-16 revision 67580) [universal.arm64e-darwin20]
系统默认是ruby 2.6.3,最好不要动它。
接着我们就可以安装Rails了:
gem install rails -v 6.1.1
安装成功后,刷新一下:
rbenv rehash
然后查看版本号:
➜ ~ rails -v
Rails 6.1.1
➜ ~
创建一个新项目:
rails new myrails
进入项目目录:
cd myrails
启动服务:
rails s
千呼万唤始出来:
结语:作为同龄语言,如果说Java是闪现在天上的瑰丽,那么Ruby就是埋藏于地底的炽热,同样伟大但各擅胜场,而事实上同样作为脚本语言的Ruby更多的是在和Python对比,Python近几年在数据分析和深度学习领域的突飞猛进让Ruby难以望其项背,而Ruby在Mac系统中软件包管理层面却有着统治级的地位,就像你玩儿Mac就避免不了Homebrew,接触Homebrew就无法躲开Ruby。很多人唱衰Ruby,认为它过时了,而在Rubyist的心中则正相反,它太超前了,正是和M1芯片一样,是超越时代的产物,也许有一天,它会“死亡”,但绝不会是今天,最后,用十九世纪美国小说家赫尔曼·梅尔维尔《白鲸》中的一节和诸君共勉:
“有些人死在退潮里;有些人死在浅水滩里;有些人却死在洪水里。” ——第一百三十五章,亚哈最后一次追击白鲸时,对阻拦他的大副斯达巴克说。
原文转载自「刘悦的技术博客」 https://v3u.cn/a_id_188
别梦依稀咒逝川,Ruby二十八年前|M1芯片Mac os系统配置Ruby(3.0.0) on Rails(6.1.1)开发环境(2021最新攻略)的更多相关文章
- [Ruby on Rails系列]1、开发环境准备:Vmware和Linux的安装
Ruby on Rails是一个采用Ruby语言的遵循MVC模式的Web开发框架.使用RoR会得到更加快速爽快的Web开发体验.相比于Java EE,该框架使Web开发的速度和效率变得更加轻快和敏捷. ...
- [Ruby on Rails系列]2、开发环境准备:Ruby on Rails开发环境配置
前情回顾 上次讲到Vmware虚拟机的安装配置以及Scientific Linux 6.X系统的安装.这回我们的主要任务是在Linux操作系统上完成Ruby on Rails开发环境的配置. 在配置环 ...
- 基于Docker在Win10平台搭建Ruby on Rails 6.0框架开发环境
原文转载自「刘悦的技术博客」https://v3u.cn/a_id_170 2020年,"非著名Web框架"–Ruby on Rails已经15岁了.在今年,Rails 6.0趋于 ...
- 一网成擒全端涵盖,在不同架构(Intel x86/Apple m1 silicon)不同开发平台(Win10/Win11/Mac/Ubuntu)上安装配置Python3.10开发环境
原文转载自「刘悦的技术博客」https://v3u.cn/a_id_200 时光荏苒,过隙白驹,即将进入2022年,著名敏捷开发语言Python也放出了3.10最终版,本次我们来展示一下在不同的系统和 ...
- 奇技淫巧玄妙无穷| M1 mac os(苹果/AppleSilicon)系统的基本操作和设置
原文转载自「刘悦的技术博客」https://v3u.cn/a_id_191 最近有个朋友跟我说,说他新入职了一家公司,公司还不错,给他配了一台Mac,但是呢他以前一直在Windows环境下开发,对Ma ...
- 开发环境准备:Ruby on Rails开发环境配置
开发环境准备:Ruby on Rails开发环境配置 前情回顾 上次讲到Vmware虚拟机的安装配置以及Scientific Linux 6.X系统的安装.这回我们的主要任务是在Linux操作系统上完 ...
- 电赛总结(二)——AD芯片总结之AD7705
1.特性参数 (1)16位无丢失代码性AD转化器 (2)只需要3.3V供电(即只需要单片机即可供电) (3)双通道差分输入 (4)基准电压为2.5V时,在单极性信号下,输入范围是0到2.5V,在双极性 ...
- 苹果M1芯片各种不支持,但居然可以刷朋友圈!你会买单吗?
上个月和大家一起分享过,最新的苹果M1芯片上支持的各种开源软件.什么?还没读过?赶紧点这里:一文解读苹果 M1 芯片电脑上的开源软件. 现在已经过去了半个月,想必有不少的同学都已经入手了最新的苹果M1 ...
- 在M1芯片的Mac系统上做.net core开发靠谱吗?
作为一个7年老.NET程序员,最近几年苹果慢慢接替微软,成为我心中最酷的科技公司. 为什么我会选择Mac os作为我的开发环境? 很多做.net的同学都使用Windows系统作为自己的开发环境,我其实 ...
随机推荐
- DingtalkChatbot简单使用
DingtalkChatbot 前言:该项目配合钉钉机器人 ,手机用户可以通过面对面建群创建单人群聊然后在电脑端 ···->智能群助手->添加机器人->自定义-> 然后添加机器 ...
- mybatis 查询返回的类型中字段类型为 List<xx>
基本类型数组 mapper.xml <resultMap id="xxDtoResultMap" type="com.xx.xxDto"> < ...
- 105_Power Pivot财务科目(层级深度&筛选深度)
博客:www.jiaopengzi.com 焦棚子的文章目录 请点击下载附件 1.背景 在财务科目中,需要按照科目层级来显示:在excel中都是用公式来实现,而且对于数据的管理及更新是一件头痛的事情, ...
- Vue项目中的接口进阶使用
创建services文件夹 1.文件夹apis.index.request的三个文件. 2.apis文件放接口 export const apis = { checkDeviceNo: '/api/c ...
- 二进制固件函数劫持术-DYNAMIC
背景介绍 固件系统中的二进制文件依赖于特定的系统环境执行,针对固件的研究在没有足够的资金的支持下需要通过固件的模拟来执行二进制文件程序.依赖于特定硬件环境的固件无法完整模拟,需要hook掉其中依赖于 ...
- 开源的.Net 工作流引擎Elsa初试——创建工作流服务器和图形化工作流配置管理应用
微软的Workflow Foundation基于.Net Framework,并且没有向.Net Core迁移的计划.我们的很多项目使用了工作流引擎,这些项目向.Net Core以及更高版本迁移时遇到 ...
- Git使用 - 忽略特定文件 - gitignore
1. 背景 2. 创建.gitignore 文件 3. 文件内容样式 4. exclude文件 5. gitignore 文件模板 6. 参考文档 1. 背景 前提知识:在工作目录下的每一个文件都不外 ...
- 喜提JDK的BUG一枚!多线程的情况下请谨慎使用这个类的stream遍历。
你好呀,我是歪歪. 前段时间在 RocketMQ 的 ISSUE 里面冲浪的时候,看到一个 pr,虽说是在 RocketMQ 的地盘上发现的,但是这个玩意吧,其实和 RocketMQ 没有任何关系. ...
- 开发工具-Typora编辑器下载地址
更新记录 2022年6月10日 完善标题. 比较好用的Markdown编辑器了,哈哈. https://typoraio.cn/
- 掘地三尺搞定 Redis 与 MySQL 数据一致性问题
Redis 拥有高性能的数据读写功能,被我们广泛用在缓存场景,一是能提高业务系统的性能,二是为数据库抵挡了高并发的流量请求,点我 -> 解密 Redis 为什么这么快的秘密. 把 Redis 作 ...