Linux 配置 Ruby 开发环境

690 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第22天,点击查看活动详情

一、前言

本篇文章将以云服务器为例,在Linux配置 Ruby On Rails 环境。

首先来了解一下几个关键名词:

rvm 是 Ruby 的版本管理工具,当安装了多个版本的 Ruby 时可以通过版本管理工具进行切换版本以及设置默认版本等,还安装一些第三方的插件。类似 Python 中的 pyenv

bundle 相当于多个RubyGems批处理运行。在配置文件gemfilel里说明你的应用依赖哪些第三方包,他自动帮你下载安装多个包,并且会下载这些包依赖的包。

RubyGems 是一个方便而强大的Ruby程序包管理器( package manager),类似RedHat的RPM.它将一个Ruby应用程序打包到一个gem里,作为一个安装单元。无需安装,最新的Ruby版本已经包含RubyGems了,在终端使用的gem命令,是指通过RubyGems管理Gem包。

Gem 是封装起来的Ruby应用程序或代码库。

Gemfile 定义你的应用依赖哪些第三方包,bundle根据该配置去寻找这些包。相当于 maven 的 pom.xml。

进入 Rails 官网中 Ruby on Rails Guides (v6.0.5) image.png

点击 Getting Started with Rails,在 3.1 Installing Rails 节中提到安装 Rails 前需要安装 Ruby、SQLite3、Node.js、Yarn。

二、RVM 安装 Ruby

安装 rvm

rvm 官网中提到了安装的方式

image.png

进入云服务器,执行以下命令

curl -sSL https://get.rvm.io | bash -s stable

image.png 执行安装过程中提示的命令

command curl -sSL https://rvm.io/pkuczynski.asc | gpg2 --import -
command curl -sSL https://rvm.io/mpapis.asc | gpg2 --import -

image.png

此时再次执行安装 rvm 的命令时会出现等待时间较长或者超时的现象,需要修改/etc/hosts 文件,增加以下内容

199.232.28.133      raw.githubusercontent.com

保存之后,再次执行安装 rvm 的命令

curl -sSL https://get.rvm.io | bash -s stable

image.png

提示 rvm 安装成功,查看版本号以及可以安装的库

image.png

切换 rvm 镜像源为国内镜像

sed -i 's!cache.ruby-lang.org/pub/ruby!ruby.taobao.org/mirrors/ruby!' $rvm_path/config/db

image.png

使用 rvm 安装 Ruby

使用 rvm 安装ruby

rvm install 2.6.6

image.png

安装过程特别慢,需要多次执行安装命令才能成功安装,rubyGems 也会一并安装,无须单独安装

image.png

# 使用固定的 ruby 版本
rvm use 2.6.6
# 设置默认的 ruby 版本
rvm use 2.6.6 --default

查看并切换gem的源

image.png

三、RBENV 安装 Ruby

Ruby 官网中在 Download 页面也给出了使用 rbenv 工具来安装 Ruby 的方式。

需要注意的是在安装 rbenv 之前要卸载 rvm,安装步骤如下:

# 下载安装 rbenv
yum install rbenv

# 初始化 rbenv
rbenv init
curl -fsSL https://github.com/rbenv/rbenv-installer/raw/main/bin/rbenv-doctor | bash

安装完成之后可以通过 rbenv -v 来查看安装的版本,之后就可以通过 rbenv 来安装 Ruby,安装步骤如下:

# 查看可以安装的 Ruby 版本
rbenv install -L

# 安装指定的 Ruby 版本
rbenv install 2.6.6

rbenv 还包含了一些其他的常用命令

# 设置当前项目的 Ruby 版本
rbenv local 2.6.6
# 设置全局的 Ruby 版本
rbenv global 2.6.6

卸载 rbenv 可以通过 yum uninstall rbenv 进行。