安装Ruby和 Rails的详细步骤


Posted in Ruby onApril 19, 2022

rbenv安装Ruby

rbenv可以管理多个版本的ruby。可以分为3种范围(或者说不同生效作用域)的版本:

  • local版:本地,针对各项目范围(只在某个目录下有效)

  • global版:全局,没有shell和local版时使用global版

  • shell版:当前终端,只针对当前所在终端

查找优先级为shell>local>global

安装rbenv和Ruby

1.安装rbenv

git clone https://github.com/rbenv/rbenv.git ~/.rbenv
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(rbenv init -)"' >> ~/.bashrc
exec $SHELL

2.安装ruby-build工作,可自动编译安装ruby。它可以作为rbenv的插件,也可以作为独立程序,建议采用插件的方式。(如果已经有了,就跳过这一步,只要确保有rbenv命令就可以)

# 作为rbenv插件
mkdir -p "$(rbenv root)"/plugins
git clone https://github.com/rbenv/ruby-build.git "$(rbenv root)"/plugins/ruby-build

# 作为独立程序
git clone https://github.com/rbenv/ruby-build.git ~/ruby-build
PREFIX=/usr/local ./ruby-build/install.sh

3.选择ruby版本,安装ruby

rbenv install --list
rbenv install 2.6.2

默认情况下,安装是很慢的,因为要从官方下载源码包进行编译,下载的过程非常慢。

如果编译失败,可能是少了一些依赖包,在编译失败的时候会提示你执行什么命令来安装这些包(非常人性)。比如需要readline-devel包。

yum -y install readline-devel

4.安装完ruby或切换了ruby之后,都需要执行rehash操作,让rbenv知道刚才新装了一个ruby。

rbenv rehash

5.进入到项目目录/ror/ror1,设置local ruby版本

cd /ror/ror1
rbenv local 2.6.2

6.设置gem源

# 注意是ruby-china.com/,ruby-china.org的域名已经改成了.com
gem sources --add https://gems.ruby-china.com/ --remove https://rubygems.org/
gem sources -l

解决rbenv安装慢问题

方案1

从 https://cache.ruby-china.com/pub/ruby/ 将ruby对应版本文件下载下来,将文件丢到~/.rbenv/cache目录下。

注意点:

  • ~/.rbenv/cache目录可能不存在,需要先创建
  • 下载保存下来的版本可能不是rbenv install时所需的版本,因为同一个版本的文件有.tar.bz2的,有.tar.xz的等等,rbenv对安装不同的ruby版本使用的文件后缀可能不一样,可以先执行下rbenv install 2.6.3后立马ctrl+c,再去下载显示出来对应后缀的包

以下是一个示例:

#  先rbenv install看看使用什么后缀的版本文件
# 这里显示的是使用.tar.bz2后缀的文件
$ rbenv install 2.6.2
Downloading ruby-2.6.2.tar.bz2...
^C

# 所以下载.tar.bz2的文件
$ wget 'https://cache.ruby-china.com/pub/ruby/2.6/ruby-2.6.2.tar.bz2' -P ~/.rbenv/cache

# 安装即可
$ rbenv install 2.6.2

方案2

可以从 https://cache.ruby-china.com/pub/ruby/ 将ruby对应版本文件下载下来,然后安装。但注意先设置环境变量,并且在此环境变量url之后加上特殊符号#?

# 以ruby-2.6.2为例
wget https://cache.ruby-china.com/pub/ruby/2.6/ruby-2.6.2.tar.bz2 -P ~
RUBY_BUILD_MIRROR_URL='file:///~/ruby-2.6.2.tar.bz2#' rbenv install 2.6.2 --verbose

# 另:也可以设置代理https_proxy=IP:PORT加速下载

方案3

有时候上面的方案2会失效,不同版本可能不一样。但是,这里可以使用一个rbenv插件,让rbenv直接使用中国的镜像站点下载。直接执行下面的命令即可。

git clone https://github.com/andorchen/rbenv-china-mirror.git "$(rbenv root)"/plugins/rbenv-china-mirror

更新rbenv的ruby版本列表

安装rbenv一段时间之后,ruby可能发布了新的版本,这时rbenv无法获取到这个新版本的信息。因此需要更新rbenv的可安装列表。

实际上,更新ruby-build插件即可:

# ruby-build作为rbenv插件时
git -C "$(rbenv root)"/plugins/ruby-build pull

# ruby-build作为独立程序时
cd
git clone https://github.com/rbenv/ruby-build.git
PREFIX=/usr/local ./ruby-build/install.sh

然后就可以查看新的ruby版本并安装。

多版本ruby

上面已经装了一个ruby了,现在再装一个ruby 2.6.1:

# 以ruby-2.6.1为例
$ wget https://cache.ruby-china.com/pub/ruby/2.6/ruby-2.6.1.tar.bz2 -P /root

$ RUBY_BUILD_MIRROR_URL='file:///~/ruby-2.6.1.tar.bz2#' rbenv install 2.6.1 --verbose

$ rbenv rehash

现在,就有了两个版本,可以使用rbenv versions命令查看(复数versions表示列出已装所有版本,单数version表示列出当前所使用的ruby版本)。

$ rbenv versions

现在,就可以通过rbenv [local | shell | global] VERSION来设置多版本共存的ruby了。

比如:

$ rbenv local 2.6.1
$ rbenv version

rbenv命令行

$ rbenv --help
Usage: rbenv <command> [<args>]

Some useful rbenv commands are:
   commands    列出rbenv的所有命令列表
   local       设置或显示local application-specific Ruby version
   global      设置或显示global Ruby version
   shell       设置或显示shell-specific Ruby version
   install     使用ruby-build安装指定的ruby版本
   uninstall   卸载指定版本
   rehash      rehash,每次安装完ruby后都要执行,否则rbenv不知道刚才新装ruby的信息
               (rbenv通过检查~/.rbenv/shims来获取ruby信息)
   version     显示当前ruby版本
   versions    显示所有已装ruby版本
   which       显示ruby命令的全路径
   whence      列出包含该可执行命令的所有ruby版本

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

完整的命令列表可查看rbenv commands,各命令使用方法,可查看rbenv help COMMAND

安装rails

cd /ror/ror1

# 查看已有的rails版本号
gem list --remote | grep '^rails' | head

# 安装最新版的rails
gem install rails

# 安装指定版本的rails
# gem install rails -v VERSION
gem install rails -v 5.1.3

安装了指定版本的rails后,rails创建的项目不一定就是指定版本的。比如上面安装的是5.1.3版本的rails,rails new blog可能会创建rails 6.0.3.2版本的项目blog。如果想要让创建的项目也是指定版本的,可:

rails _5.1.3_ new blog

Windows安装Ruby和Rails

下载Windows下的Ruby安装包:https://rubyinstaller.org/downloads/

要下载with-devkit的。例如:

https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.6.6-1/rubyinstaller-devkit-2.6.6-1-x64.exe

下载OK后,双击安装,一路点下一步:

安装Ruby和 Rails的详细步骤

最后安装ruby所需的包:

安装Ruby和 Rails的详细步骤

安装完成后,打开cmd或powershell:更改中国gem镜像仓库。

gem sources --remove https://rubygems.org/ --add https://gems.ruby-china.com/

安装rails或其它gem:

gem install rails
gem install mysql2
Ruby 相关文章推荐
Ruby处理CSV数据方法详解
Apr 18 Ruby
Ruby序列化和持久化存储 Marshal和Pstore介绍
Apr 18 Ruby
Ruby使用Mysql2连接操作MySQL
Apr 19 Ruby
Ruby GDBM操作简介及数据存储原理
Apr 19 Ruby
安装Ruby和 Rails的详细步骤
Apr 19 Ruby
Python如何将list中的string转换为int
Jul 15 Ruby
Ruby处理CSV数据方法详解
Apr 18 #Ruby
Ruby处理YAML和json数据
Apr 18 #Ruby
Ruby序列化和持久化存储 Marshal和Pstore介绍
Apr 18 #Ruby
Ruby使用Mysql2连接操作MySQL
Apr 19 #Ruby
Ruby GDBM操作简介及数据存储原理
Apr 19 #Ruby
Python如何将list中的string转换为int
Jul 15 #Ruby
You might like
在MongoDB中模拟Auto Increment的php代码
2011/03/06 PHP
php设计模式 State (状态模式)
2011/06/26 PHP
114啦源码(114la)不能生成地方房产和地方报刊问题4级页面0字节的解决方法
2012/01/12 PHP
thinkPHP2.1自定义标签库的导入方法详解
2016/07/20 PHP
爱恋千雪-US-AscII加密解密工具(网页加密)下载
2007/06/06 Javascript
JavaScript 类的定义和引用 JavaScript高级培训 自定义对象
2010/04/27 Javascript
JQuery AJAX提交中文乱码的解决方案
2010/07/02 Javascript
浅谈JS日期(Date)处理函数
2014/12/07 Javascript
jQuery 处理页面的事件详解
2015/01/20 Javascript
js实现同一页面多个运动效果的方法
2015/04/10 Javascript
Javascript 高阶函数使用介绍
2015/06/15 Javascript
利用JavaScript脚本实现滚屏效果的方法
2015/07/07 Javascript
javascript实现的简单计时器
2015/07/19 Javascript
jQuery中prepend()方法使用详解
2015/08/11 Javascript
JavaScript深度复制(deep clone)的实现方法
2016/02/19 Javascript
最棒的Angular2表格控件
2016/08/10 Javascript
vue中如何引入jQuery和Bootstrap
2017/04/10 jQuery
微信小程序 支付后台java实现实例
2017/05/09 Javascript
JavaScript使用FileReader实现图片上传预览效果
2020/03/27 Javascript
vue利用axios来完成数据的交互
2018/03/23 Javascript
VUE搭建手机商城心得和遇到的坑
2019/02/21 Javascript
js回溯法计算最佳旅行线路代码实例
2019/09/11 Javascript
Vue切换组件实现返回后不重置数据,保留历史设置操作
2020/07/21 Javascript
python 函数传参之传值还是传引用的分析
2017/09/07 Python
在python中使用requests 模拟浏览器发送请求数据的方法
2018/12/26 Python
python3实现在二叉树中找出和为某一值的所有路径(推荐)
2019/12/26 Python
Python求两个字符串最长公共子序列代码实例
2020/03/05 Python
Python爬虫如何应对Cloudflare邮箱加密
2020/06/24 Python
python 线程的五个状态
2020/09/22 Python
获取邓白氏信用报告:Dun & Bradstreet
2019/01/22 全球购物
运行时异常与一般异常有何异同?
2014/01/05 面试题
幼儿园爱国卫生月活动总结
2014/06/30 职场文书
授权委托书(法人单位用)
2014/09/29 职场文书
深度学习tensorflow基础mnist
2021/04/14 Python
清空 Oracle 安装记录并重新安装
2022/04/26 Oracle
CentOS7设置ssh服务以及端口修改方式
2022/12/24 Servers