安装Ruby和安装Rails详细步骤详解

news2025/1/17 5:52:45

rbenv安装Ruby

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

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

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

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

查找优先级为shell>local>global

安装rbenv和Ruby

1.安装rbenv

1

2

3

4

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命令就可以)

1

2

3

4

5

6

7

# 作为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

1

2

rbenv install --list

rbenv install 2.6.2

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

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

1

yum -y install readline-devel

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

1

rbenv rehash

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

1

2

cd /ror/ror1

rbenv local 2.6.2

6.设置gem源

1

2

3

# 注意是ruby-china.com/,ruby-china.org的域名已经改成了.com

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

gem sources -l

解决rbenv安装慢问题

方案1

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

注意点:

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

以下是一个示例:

1

2

3

4

5

6

7

8

9

10

11

#  先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

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

1

2

3

4

5

# 以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直接使用中国的镜像站点下载。直接执行下面的命令即可。

1

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

更新rbenv的ruby版本列表

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

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

1

2

3

4

5

6

7

# 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:

1

2

3

4

5

6

# 以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版本)。

1

$ rbenv versions

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

比如:

1

2

$ rbenv local 2.6.1

$ rbenv version

rbenv命令行

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

$ 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

1

2

3

4

5

6

7

8

9

10

11

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。如果想要让创建的项目也是指定版本的,可:

1

rails _5.1.3_ new blog

Windows安装Ruby和Rails

下载Windows下的Ruby安装包:Downloads。

要下载with-devkit的。例如:

1

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

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

最后安装ruby所需的包:

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

1

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

安装rails或其它gem:

1

2

gem install rails

gem install mysql2

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/23867.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[MySQL]-删库后恢复

[MySQL]-删库后恢复 sen格 | 2022年11月 本文旨在记录个人在数据库的删库恢复演练过程中的一些总结&#xff0c;如有不足&#xff0c;欢迎指正。 一、恢复场景 1&#xff09;假设生产实例MySQL端口为&#xff1a;3306 2&#xff09;本地实例MySQL端口为&#xff1a;3307 在这…

pytorch快速入门

文章目录一、Tensorstensors的初始化(四种):tensors的属性和numpy的联系二、数据集的数据加载器加载数据集标号和可视化自己创建数据集用DataLoaders准备数据用于训练Transforms三、神经网络准备训练设备定义网络的类模型的layersnn.Flattennn.Linearnn.ReLUnn.Sequentialnn.So…

Python之基本扩展模块

一、datetime模块 1.1 主要的模块 datetime.date() #处理日期&#xff08;年、月、日&#xff09; datetime.time() #处理时间&#xff08;时、分、秒和毫秒&#xff09; datetime.datetime() #处理日期时间 datetime.timedelta() #处理时段&#xff08;时间间隔…

基于Java+springboot+SSM的医疗报销系统的设计与实现

项目开发工具: IDEA, MYSQL, JDK1.8 项目使用技术: SpringBoot, SSM, H-UI, JSP, JQUERY, HTML 医疗报销系统【功能列表】 【前台用户】登录,注册,首页新闻轮播图,首页新闻按分类展示列表,栏目分类模块,报销流程模块,修改密码,个人信息展示,新增家庭成员, 家庭成品列表展示,…

Spring框架教程

Spring框架教程Spring框架教程1. 前言2. Spring框架概述2.1 什么是spring?2.2 Spring有哪些优点&#xff1f;2.3 Spring 有两个核心部分&#xff1a;IoC 和AOP2.4 Spring 特点2.5 Spring架构图&#xff0c;Spring由哪些模块组成&#xff1f;3. IOC容器3.1 IOC底层原理3.2 什么…

three.js初时基础

第一步&#xff1a;找到Three.js – JavaScript 3D Library (threejs.org) 第二步 第三步: 第四步&#xff1a; 安装依赖 第五步&#xff1a;新建一个项目文件&#xff0c;在文件中npm init 进行初始化出现一个package.json 第六步&#xff1a;配置安装&#x1f680; 快速开…

QtAV环境配置

本文章主要是使用MSVC编译器&#xff0c;因为QtAV是依赖FFmpeg的&#xff0c;所以需要下载QtAV源码和QtAV-depends-windows-x86x64&#xff1b; 官网地址&#xff1a;http://www.qtav.org/ Github 地址&#xff1a;https://github.com/wang-bin/QtAV 1&#xff0c;解压 将文件…

产品生命周期(PLM)发展历程及技术核心分析指导

产品生命周期管理(Product Lifecycle Management&#xff0c;简称PLM)&#xff0c;是一种为企业产品全生命周期提供服务的软件解决方案&#xff0c;可以应用于在单一地点或分散在多个地点的企业内部&#xff0c;以及在产品研发领域&#xff0c;具有协作关系的企业之间&#xff…

windows 锁屏时执行某个程序

目录 前言 1 打开锁屏事件 2 创建任务计划程序 3 测试 前言 以windows10为例&#xff0c;这个功能的核心是使用windows自带的“任务计划程序”&#xff0c;可以帮助您实现触发器操作。 1 打开锁屏事件 默认情况下&#xff0c;锁屏事件并不会被系统记录&#xff0c;需要手动打…

vue3项目的创建、入口文件、全局方法、生命周期函数、setup中的生命周期函数使用、data的函数方式

文章目录1. 创建vue3项目1.1 基于webpack的工程创建1.2 通过vite来创建vue3项目vue3插件推荐1.3 通过npm init vue3创建项目2. vue3入口文件3. vue3中的全局方法修改4. vue3中封装全局方法5. vue3生命周期函数6. setup中生命周期使用7. data函数方式1. 创建vue3项目 1.1 基于w…

Spring Boot中消息是什么?同步异步消息是啥/都包含那些技术?Activate MQ消息怎么整合

写在前面&#xff1a; 继续记录自己的SpringBoot学习之旅&#xff0c;这次是SpringBoot应用相关知识学习记录。若看不懂则建议先看前几篇博客&#xff0c;详细代码可在我的Gitee仓库SpringBoot克隆下载学习使用&#xff01; 3.5.4 消息 3.5.4.1 简述 消息发送方&#xff1a;…

力扣(LeetCode)29. 两数相除(C++)

快速乘 题解只使用了 intintint 。 万恶的 INT_MININT\_MININT_MIN&#xff0c;怎么处理&#xff1f;打不过就加入——被除数和除数转为负数计算 。 xxx 除以 yyy &#xff0c;等于从 xxx 中拿出若干个 yyy 。 从 xxx 中拿出 yyy 的数量&#xff0c;就是 xyx\div yxy 的商。 y…

Allegro差分自动添加回流地孔操作指导

Allegro差分自动添加回流地孔操作指导 Allegro自带给差分添加回流地孔的功能,具体操作如下 点击connect命令,任意拉一对差分 鼠标右击,选择Return Path。。。,选择settings 会弹出设置的对话框,Assign net name给孔分配一个网络,一般是GND, Return Path via 选择添加…

2019年1+X 证书 Web 前端开发中级理论考试题目原题+答案——第五套

&#x1f4da;文章目录 &#x1f3af;关于1X标准 &#x1f3af;关于中级考点 ⏩&#x1f4bb;答案速查 理论题(满分100分)&#xff0c;包括单选题、多选题、判断题。 &#x1f4d1;一、单选题&#xff08;每小题2分&#xff0c;共30小题&#xff0c;共60分&#xff09; &…

Docker的基础命令

1.查找可用的镜像 docker search 镜像名 例&#xff1a;docker search nginxdocker search mysql2.拉取官方镜像&#xff08;及下载镜像&#xff09; docker pull 镜像名:标签例&#xff1a;docker pull nginx #表示现在最新版本的nginx镜像docker pull nginx:1.14…

使用frida发送微信消息给好友

前言 之前说过怎么用python来发送微信文本消息&#xff0c;原理大概就是构造内存机器码。其实frida也可以做类似操作&#xff0c;构造数据和机器码&#xff0c;然后调用。我就不重复操作了&#xff0c;这里说下另一种方法。 想使用frida来发送消息这个想法很早之前就有了&…

SQLlite

SQLlite ​ SQLite是一个软件库&#xff0c;实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。 一、什么是 SQLite ​ SQLite是一个进程内的库&#xff0c;实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。它是一个零配置的数据库&…

Webpack 5 超详细解读(三)

21.babel-loader 使用 使用babel-loader对js文件进行处理&#xff0c;在lg.Webpack.js配置文件中配置js文件规则。 使用单独的插件进行转换 使用预设进行转换 使用babel.config.js配置文件进行babel配置 const path require(path) const CopyWebpackPlugin require(copy-W…

解决哈希冲突的方案

什么是哈希表 一种实现关联数组抽象数据类型的数据结构&#xff0c;这种结构可以将关键码映射到给定值。简单来说哈希表&#xff08;key-value&#xff09;之间存在一个映射关系&#xff0c;是键值对的关系&#xff0c;一个键对应一个值。 什么是哈希冲突 当两个不同的数经过…

基于 Text-CNN 的情感分析(文本分类)----概念与应用

文章目录基于Text-CNN情感分析卷积的基本概念Text-CNN的核心思想实现数据预处理批量处理操作--填充与截断拆分训练集与测试集定义Text-CNN模型设计模型定义与训练参数训练并评估模型结语基于Text-CNN情感分析 大家都知道&#xff0c;CNN(Convolutional Neural Network) 是深度…