安装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处理YAML和json数据
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
php 调试利器debug_print_backtrace()
2012/07/23 PHP
PHP中is_file()函数使用指南
2015/05/08 PHP
thinkphp整合微信支付代码分享
2016/11/24 PHP
PHP长连接实现与使用方法详解
2018/02/11 PHP
PHP实现的pdo连接数据库并插入数据功能简单示例
2019/03/30 PHP
JavaScript While 循环基础教程
2007/04/05 Javascript
javascript结合html5 canvas实现(可调画笔颜色/粗细/橡皮)的涂鸦板
2013/04/27 Javascript
js获取IP和PcName(IE)在vs中可用
2013/08/02 Javascript
jquery实现翻动fadeIn显示的方法
2015/03/05 Javascript
Jquery动态添加输入框的方法
2015/05/29 Javascript
JQuery Ajax WebService传递参数的简单实例
2016/11/02 Javascript
BootStrap 实现各种样式的进度条效果
2016/12/07 Javascript
js模态对话框使用方法详解
2017/02/16 Javascript
简单的网页广告特效实例
2017/08/19 Javascript
浅析node Async异步处理模块用例分析及常用方法介绍
2017/11/17 Javascript
js中bool值的转换及“&amp;&amp;”、“||”、 “!!”详解
2017/12/21 Javascript
JavaScript实现多重继承的方法分析
2018/01/09 Javascript
学习Vue组件实例
2018/04/28 Javascript
vue移动端弹框组件的实例
2018/09/25 Javascript
python动态性强类型用法实例
2015/05/09 Python
Python将DataFrame的某一列作为index的方法
2018/04/08 Python
Python读取Excel表格,并同时画折线图和柱状图的方法
2018/10/14 Python
Python3利用Dlib实现摄像头实时人脸检测和平铺显示示例
2019/02/21 Python
python做反被爬保护的方法
2019/07/01 Python
python-sys.stdout作为默认函数参数的实现
2020/02/21 Python
python读取hdfs并返回dataframe教程
2020/06/05 Python
keras的backend 设置 tensorflow,theano操作
2020/06/30 Python
浅析NumPy 切片和索引
2020/09/02 Python
解决python 在for循环并且pop数组的时候会跳过某些元素的问题
2020/12/11 Python
世界首屈一指的在线男士内衣权威:HisRoom
2017/08/05 全球购物
水上运动奥特莱斯:Wasterports Outlet
2018/08/08 全球购物
银行求职信个人范文
2013/12/16 职场文书
2014年公司庆元旦活动方案
2014/03/05 职场文书
工作自我评价范文
2015/03/05 职场文书
敬业奉献模范事迹材料(2016精选版)
2016/02/26 职场文书
windows server2016安装oracle 11g的图文教程
2022/07/15 Servers