Linux系统安装Ruby语言

  Ruby是一种面向对象的脚本语言,由日本的计算机科学家松本行弘设计并开发,Ruby的设计哲学强调程序员的幸福感,致力于简化编程的复杂性,并提供一种既强大又易于使用的工具。其语法简洁优雅,易于阅读和书写,使得代码更加清晰易懂,作为一种动态类型语言,Ruby不需要在声明变量时指定类型,它会在运行时自动处理类型转换,同时,Ruby是一种纯面向对象的语言,所有事物都被视为对象,支持封装、继承和多态等核心概念。

Ruby中文论坛:Ruby China

Ruby官方文档:Ruby-Doc.org: Documenting the Ruby Language

我在安装时使用的VS Code同SSH连接到的Ubuntu虚拟机,在正式部署在云服务器前最好先在虚拟机上部署测试。Visual Studio Code连接VMware虚拟机-CSDN博客

提前准备

先更新软件包列表

sudo apt update
sudo apt upgrade

 在安装Ruby前最好先配置好git:

sudo apt install git

 验证是否安装完成:

git --version

设置用户名和用户邮箱:

git config --global user.name "GGBao"  
git config --global user.email "1234567@GG.com"

在VS Code中安装插件 Ruby LSP 和 Code Runner 到虚拟机:旧的Ruby插件已经弃用:

使用rbenv安装Ruby

现在已经更新到3.3版本了,但这次安装的是Ruby2.7版本,因为2.7版本更方便操作和简单易学一点,而且更加稳定有更多参考资料。

安装各种Ruby的依赖包:

sudo apt install git-core curl zlib1g-dev build-essential libssl-dev libreadline-dev libyaml-dev libsqlite3-dev sqlite3 libxml2-dev libxslt1-dev libcurl4-openssl-dev software-properties-common libffi-dev
* `git-core`: Git版本控制  
* `curl`: 用于从命令行获取或发送数据的工具  
* `zlib1g-dev`: zlib压缩库的开发文件  
* `build-essential`: 包含gcc、g++和make等编译工具  
* `libssl-dev`: OpenSSL库的开发文件,用于安全通信  
* `libreadline-dev`: readline库的开发文件,支持命令行编辑和历史记录  
* `libyaml-dev`: YAML库的开发文件  
* `libsqlite3-dev` 和 `sqlite3`: SQLite数据库的开发文件和命令行工具  
* `libxml2-dev` 和 `libxslt1-dev`: 用于XML和XSLT处理的开发文件
* `libcurl4-openssl-dev`: 使用OpenSSL的curl库的开发文件 
* `software-properties-common`: 管理软件包的存储库和PPA的工具  
* `libffi-dev`: FFI库的开发文件,允许从一种语言调用另一种语言编写的代码

 克隆rbenv仓库:

rbenv通过修改环境变量来控制当前使用的Ruby版本,它不会干扰系统自带的Ruby环境,而是为用户提供一个隔离的Ruby运行环境。这使得在不同的项目之间切换和管理多个Ruby版本变得简单易行。

git clone https://github.com/rbenv/rbenv.git ~/.rbenv

更新bashrc文件,将rbenv的bin目录添加到PATH环境变量中并初始化rbenv:

echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc 
echo 'eval "$(rbenv init -)"' >> ~/.bashrc

 重启shell

exec $SHELL

克隆 Ruby-build 插件:

git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build

 安装Ruby版本和全局设置Ruby版本:

rbenv install 2.7.2
rbenv global 2.7.2

安装rails

Ruby on Rails(简称Rails)是一个用于开发数据库驱动的网络应用程序的完整框架。它基于MVC(模型-视图-控制器)设计模式,为开发者提供了一个纯Ruby的开发环境,Rails从视图中的Ajax应用,到控制器中的访问请求和反馈,再到封装数据库的模型,为开发者提供了一套完整的解决方案。它支持各类网络服务器和数据库,使得发布网站时只需要一个数据库和一个网络服务器即可。

gem install rails -v 6.0.3.4

安装 ruby-railties:

sudo apt install ruby-railties

新建一个文件测试下安装是否完成:

# hello.rb
pust "Oh yeah GGboy"

运行成功:

Ruby基础操作

变量和字符串插值:
 

name = "靓仔"
age = 22
width = 1.75
puts "Hello, my name is #{name} and I am #{age} years old and I am #{width} meters tall."

定义方法:

# 秒数换算
def seconds_to_hms(seconds)hours = seconds / 3600minutes = (seconds % 3600) / 60seconds = seconds % 60"#{hours}:#{minutes}:#{seconds}"
end
# 调用方法
puts seconds_to_hms(6000)

判断语句:

name = "山里灵活"
age = 18if age < 18puts "#{name}没到18岁"
elsif age == 18puts "#{name}刚满18岁"
elseputs "#{name}已经不在18岁"
end

循环语句:

6.times do |i|print ' ' * (6 - i - 1)print '*' * (2 * i + 1)puts
end

面向对象:

class Persondef initialize(name, age, address, phone_number, email)@name = name@age = age@address = address@phone_number = phone_number@email = emailenddef greetputs "Hello, my name is #{@name} and I am #{@age} years old."puts "I live at #{@address} and my phone number is #{@phone_number}."puts "You can reach me at #{@email}."end
endperson = Person.new("Charlie", 28, "123 Main St.", "(555)-555-5555", "charlie@example.com")
person.greet

 

添加注释:

# 这是单行注释=begin
这是多行注释
火鸡面
大扒鸭
大辣椒
一顿不吃心刺挠
=end

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

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

相关文章

重学java 66.IO流 转换流

且敬我疯狂&#xff0c;生命中不败的篇章 —— 24.6.11 一、字符编码 计算机中储存的信息都是用二进制数表示的&#xff0c;而我们在屏幕上看到的数字、英文、标点符号、汉字等字符是二进制数转换之后的结果。[按照某种规则&#xff0c;将字符存储到计算机中&#xff0c;称为编…

打造一个属于你的桌面天气 超级有个性的天气桌面

打造一个属于你的桌面天气 超级有个性的天气桌面。大家好&#xff0c;今天我们带来一个非常有趣的桌面天气工具&#xff0c;喜欢桌面diy的你&#xff0c;快点用上它吧&#xff01; 桌面上的美化&#xff0c;是许多爱美用户的心血和热爱。每个地方的美化&#xff0c;都是自己亲…

机器学习课程复习——隐马尔可夫

不考计算题 Q:概率图有几种结构? 条件独立性的公式? 顺序结构发散结构汇总结构Q:隐马尔可夫模型理解? 概念 集合:状态集合、观测集合 序列:状态序列、观测序列

linux环境编程基础学习

Shell编程&#xff1a; 相对的chmod -x xx.sh可以移除权限 想获取变量的值要掏点dollar&#xff08;&#xff04;&#xff09; 多位的话要加个花括号 运算&#xff1a;expr 运算时左右两边必须要加空格 *号多个含义必须加转义符 双引号可以加反单&#xff0c;但是发过来就不行 …

【android】安卓入门学习

文档介绍&#xff1a;http://8.136.122.222/book/primary/kotlin/kotlin-intro.html 文档补充说明&#xff1a;https://blog.csdn.net/qq_42059717/category_12047508.html 一、搭建环境及工具安装 见文档 二、工具界面及项目文件介绍 ├── app //工程主模块名称 │ …

【Linux安装Conda环境的详细教程】

&#x1f308;个人主页: 程序员不想敲代码啊 &#x1f3c6;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f44d;点赞⭐评论⭐收藏 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共…

PTP简介及Linux phy ptp驱动实现

1、PTP简介 PTP(precision time protocol)精确时间协议&#xff0c;是一种时间同步的协议&#xff0c;对应 IEEE 1588 标准&#xff0c;是基于网络数据包的一种时间同步协议&#xff0c;1588v2的同步精度可以达到ns级&#xff0c;但1588协议对硬件有依赖。 2、PTP原理 时间同…

DFS(一)

问题一(指数级选择) 从1~n这n个整数中任意选取多个&#xff0c;输出所有可能的选择方案。 首先想一下&#xff0c;在现实世界中&#xff0c;我们要如何解决这个问题。 应该是一个一个枚举&#xff0c;即每个数都可以有两个选择(选/不选)。共有种结果。 想一下&#xff0c;如…

PHP转Go系列 | 字符串的使用姿势

大家好&#xff0c;我是码农先森。 输出 在 PHP 语言中的输出比较简单&#xff0c;直接使用 echo 就可以。此外&#xff0c;在 PHP 中还有一个格式化输出函数 sprintf 可以用占位符替换字符串。 <?phpecho 码农先森; echo sprintf(码农:%s, 先森);在 Go 语言中调用它的输…

创建进程的常用方式

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 在Python中有多个模块可以创建进程&#xff0c;比较常用的有os.fork()函数、multiprocessing模块和Pool进程池。由于os.fork()函数只适用于Unix/Linu…

0617,递归问题(详细——好好好一入递归深似海)

目录 第七章&#xff08;函数&#xff09;思维导图总结&#xff1a;递归三问 01&#xff0c;电影院问题 理解递归的执行过程 02&#xff0c;FIBNACCI数列 不是说具有递归结构的问题&#xff0c;就可以用递归求解——存在大量的重复计算 法一&#xff1a;自顶向下求解 BUG…

如何在 MATLAB 中实现复杂的深度学习模型以提高预测精度?

在MATLAB中实现复杂的深度学习模型以提高预测精度可以通过以下步骤进行操作&#xff1a; 准备数据&#xff1a;首先&#xff0c;你需要准备好用于训练和测试模型的数据。确保数据集已经正确加载到MATLAB工作环境中&#xff0c;并且进行了必要的预处理&#xff0c;例如归一化或者…

数据结构设计

数据结构设计是计算机科学中的一个关键领域,它涉及到如何有效地存储和组织数据,以便能够高效地进行访问和操作。一个良好的数据结构设计可以极大地提高程序的运行效率,减少内存占用,并使得代码更加易于理解和维护。 在进行数据结构设计时,需要考虑以下原则: 明确性:数据…

ruoyi框架第二天,自定义接口,在若依框架显示数据

书接上文&#xff0c;搭建好若依&#xff0c;并且创建自己想要的模块。 让ruoyi框架显示自己想要的模块。 今天&#xff0c;我们就要自定义接口&#xff0c;模仿ruoyi框架收发数据模式&#xff0c;来创建自己的模块。 我们创建好自己想要的接口&#xff0c;我这个是无参的查…

【Java】已解决java.util.EmptyStackException异常

文章目录 一、问题背景二、可能出错的原因三、错误代码示例四、正确代码示例五、注意事项 已解决java.util.EmptyStackException异常 一、问题背景 java.util.EmptyStackException是Java在使用java.util.Stack类时可能会遇到的一个异常。这个异常通常在尝试从空的栈中弹出&am…

C#语言进阶(二)—事件全解

总目录 C# 语法总目录 事件全解 目录 事件1.基本用法 发布订阅模式2. .net标准事件模型3. 事件访问器 事件 事件修饰符: virtual , override , abstract , sealed 解释&#xff1a; 广播者是声明委托并使用的类&#xff0c;它控制什么时候使用委托。 订阅者就是给广播类声明的…

四连杆机构运动学仿真 | Matlab源码+理论文本【超详细】

【程序简介】&#x1f4bb;&#x1f50d; 本程序通过matlab实现了四连杆机构的运动学仿真编程&#xff0c;动态展现了四连杆机构的角位移、角速度和角加速度的时程曲线&#xff0c;除了程序本身&#xff0c;还提供了机构运动学详细的公式推导文档&#xff0c;从而帮助大家更好…

PCL 点云添加标签属性并将带标签的点云保存成文件

🙋问题:点云如何添加标签,以及如何将带标签的点云保存成点云文件。 🔑解决方法如下: 点云添加标签属性:标准的点云类型中其实并没有label属性或者classification属性,无法直接给点云赋标签值,但是却可以通过自定义的方法来添加label属性。   本教程将以如何定义Po…

Jar包解压和压缩操作方法

简述 JAR 文件就是 Java Archive &#xff08; Java 档案文件&#xff09;&#xff0c;它是 Java 的一种文档格式。 JAR 文件非常类似 ZIP 文件。准确的说&#xff0c;它就是 ZIP 文件&#xff0c;所以叫它文件包。JAR 文件与 ZIP 文件唯一的区别就是在 JAR 文件的内容中&…

2024年化学、能源与核工程国际会议(ICCENE 2024)

2024年化学、能源与核工程国际会议(ICCENE 2024) 2024 International Conference on Chemical, Energy and Nuclear Engineering (ICCENE 2024) 会议地点&#xff1a;三亚&#xff0c;中国 网址&#xff1a;www.iccene.com 邮箱: iccenesub-conf.com 投稿主题请注明:ICCEN…