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相关文章:
Linux系统安装Ruby语言
Ruby是一种面向对象的脚本语言,由日本的计算机科学家松本行弘设计并开发,Ruby的设计哲学强调程序员的幸福感,致力于简化编程的复杂性,并提供一种既强大又易于使用的工具。其语法简洁优雅,易于阅读和书写,使…...
网络安全练气篇——OWASP TOP 10
1、什么是OWASP? OWASP(开放式Web应用程序安全项目)是一个开放的社区,由非营利组织 OWASP基金会支持的项目。对所有致力于改进应用程序安全的人士开放,旨在提高对应用程序安全性的认识。 其最具权威的就是“10项最严重…...
python实现进度条的方法和实现代码
在Python中,有多种方式可以实现进度条。这里,我将介绍七种常见的方法:使用tqdm(这是一个外部库,非常流行且易于使用)、rich、click、progressbar2等库以及纯Python的print函数与time库来模拟进度条。 目录…...
被拷打已老实!面试官问我 #{} 和 ${} 的区别是什么?
引言:在使用 MyBatis 进行数据库操作时,#{} 和 ${} 的区别是面试中常见的问题,对理解如何在 MyBatis 中安全有效地处理 SQL 语句至关重要。正确使用这两种占位符不仅影响应用的安全性,还涉及到性能优化。 题目 被拷打已老实&…...
C# —— while循环语句
作用 让顺序执行的代码 可以停下来 循环执行某一代码块 // 条件分支语句: 让代码产生分支 进行执行 // 循环语句 : 让代码可以重复执行 语法 while循环 while (bool值) { 循环体(条件满足时执行的代码块) …...
力扣第205题“同构字符串”
在本篇文章中,我们将详细解读力扣第205题“同构字符串”。通过学习本篇文章,读者将掌握如何使用哈希表来解决这一问题,并了解相关的复杂度分析和模拟面试问答。每种方法都将配以详细的解释,以便于理解。 问题描述 力扣第205题“…...
探索RESTful API开发,构建可扩展的Web服务
介绍 当我们浏览网页、使用手机应用或与各种互联网服务交互时,我们经常听到一个术语:“RESTful API”。它听起来很高深,但实际上,它是构建现代网络应用程序所不可或缺的基础。 什么是RESTful API? 让我们将RESTful …...
苹果安卓网页的H5封装成App的应用和原生开发的应用有什么不一样?
H5封装类成App的应用和原生应用有什么不一样?——一对比谈优缺点 1. 开发速度和复用性 H5封装的App优势:一次编写,多平台运行。你只需要使用一种语言编写代码,就可以发布到不同的平台,降低开发成本。 原生应用优势&…...
IO流2.
字符流-->字符流的底层其实就是字节流 public class Stream {public static void main(String[] args) throws IOException {//1.创建对象并关联本地文件FileReader frnew FileReader("abc\\a.txt");//2.读取资源read()int ch;while((chfr.read())!-1){System.out…...
详解MySQL中的PERCENT_RANK函数
目录 1. 引入1. 基本使用2:分组使用3:处理重复值4. 使用优势4.1 手动计算百分等级4.2 使用 PERCENT_RANK 的优势4.3 使用 PERCENT_RANK 5. 总结 在 MySQL 中,PERCENT_RANK 函数用于计算一个值在其分组中的百分等级。 它的返回值范围是从 0 …...
宏任务与微任务
一、宏任务 1、概念 指消息队列中等地被主线程执行的事件 2、种类 script主代码块、setTimeout 、setInterval 、nodejs的setImmediate 、MessageChannel(react的fiber用到)、postMessage、网络I/O、文件I/O、用户交互的回调等事件、UI渲染事件&#x…...
昇思大模型学习·第一天
mindspore快速入门回顾 导入mindspore包 处理数据集 下载mnist数据集进行数据集预处理 MnistDataset()方法train_dataset.get_col_names() 打印列名信息使用create_tuple_iterator 或create_dict_iterator对数据集进行迭代访问 网络构建 mindspore.nn: 构建所有网络的基类用…...
python调用chatgpt
简单写了一下关于文本生成接口的调用,其余更多的调用方法可在官网查看 import os from dotenv import load_dotenv, find_dotenv from openai import OpenAI import httpxdef gpt_config():# 为了安全起见,将key写到当前项目根目录下的.env文件中# find…...
YOLOV8 目标检测:训练自定义数据集
1、下载 yolov8项目:ultralytics/ultralytics:新增 - PyTorch 中的 YOLOv8 🚀 > ONNX > OpenVINO > CoreML > TFLite --- ultralytics/ultralytics: NEW - YOLOv8 🚀 in PyTorch > ONNX > OpenVINO > CoreM…...
动态更新自建的Redis连接池连接数量
/*** 定时更新Redis连接池信息,防止资源让费*/private static final ScheduledThreadPoolExecutor DYNAMICALLY_UPDATE_REDIS_POOL_THREAD new ScheduledThreadPoolExecutor(1, new ThreadFactory() {Overridepublic Thread newThread(Runnable r) {Thread thread …...
浅谈设计师的设计地位
在当今这个创意无限的时代,设计师的地位日益凸显。他们以独特的视角和精湛的技能,为我们的生活带来了无尽的色彩与灵感。然而,随着行业的不断发展,设计师如何在众多同行中脱颖而出,提升自己的设计地位呢?答…...
C/C++ string模拟实现
1.模拟准备 1.1因为是模拟string,防止与库发生冲突,所以需要命名空间namespace隔离一下,我们来看一下基本内容 namespace yx {class string{private://char _buff[16]; lunix下小于16字节就存buff里char* _str;size_t _size;size_t _capac…...
微信小程序学习(八):behaviors代码复用
小程序的 behaviors 方法是一种代码复用的方式,可以将一些通用的逻辑和方法提取出来,然后在多个组件中复用,从而减少代码冗余,提高代码的可维护性。 如果需要 behavior 复用代码,需要使用 Behavior() 方法,…...
【The design pattern of Attribute-Based Dynamic Routing Pattern (ADRP)】
In ASP.NET Core, routing is one of the core functionalities that maps HTTP requests to the corresponding controller actions. While “Route-Driven Design Pattern” is a coined name for a design pattern, we can construct a routing-centric design pattern base…...
2713. 矩阵中严格递增的单元格数
题目 给定一个 m x n 的整数矩阵 mat,我们需要找出从某个单元格出发可以访问的最大单元格数量。移动规则是可以从当前单元格移动到同一行或同一列的任何其他单元格,但目标单元格的值必须严格大于当前单元格的值。需要返回最大可访问的单元格数量。 示例…...
wordpress后台更新后 前端没变化的解决方法
使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…...
未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?
编辑:陈萍萍的公主一点人工一点智能 未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战,在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…...
中南大学无人机智能体的全面评估!BEDI:用于评估无人机上具身智能体的综合性基准测试
作者:Mingning Guo, Mengwei Wu, Jiarun He, Shaoxian Li, Haifeng Li, Chao Tao单位:中南大学地球科学与信息物理学院论文标题:BEDI: A Comprehensive Benchmark for Evaluating Embodied Agents on UAVs论文链接:https://arxiv.…...
【SQL学习笔记1】增删改查+多表连接全解析(内附SQL免费在线练习工具)
可以使用Sqliteviz这个网站免费编写sql语句,它能够让用户直接在浏览器内练习SQL的语法,不需要安装任何软件。 链接如下: sqliteviz 注意: 在转写SQL语法时,关键字之间有一个特定的顺序,这个顺序会影响到…...
HBuilderX安装(uni-app和小程序开发)
下载HBuilderX 访问官方网站:https://www.dcloud.io/hbuilderx.html 根据您的操作系统选择合适版本: Windows版(推荐下载标准版) Windows系统安装步骤 运行安装程序: 双击下载的.exe安装文件 如果出现安全提示&…...
论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一)
宇树机器人多姿态起立控制强化学习框架论文解析 论文解读:交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一) 论文解读:交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化…...
零基础设计模式——行为型模式 - 责任链模式
第四部分:行为型模式 - 责任链模式 (Chain of Responsibility Pattern) 欢迎来到行为型模式的学习!行为型模式关注对象之间的职责分配、算法封装和对象间的交互。我们将学习的第一个行为型模式是责任链模式。 核心思想:使多个对象都有机会处…...
MySQL 知识小结(一)
一、my.cnf配置详解 我们知道安装MySQL有两种方式来安装咱们的MySQL数据库,分别是二进制安装编译数据库或者使用三方yum来进行安装,第三方yum的安装相对于二进制压缩包的安装更快捷,但是文件存放起来数据比较冗余,用二进制能够更好管理咱们M…...
[论文阅读]TrustRAG: Enhancing Robustness and Trustworthiness in RAG
TrustRAG: Enhancing Robustness and Trustworthiness in RAG [2501.00879] TrustRAG: Enhancing Robustness and Trustworthiness in Retrieval-Augmented Generation 代码:HuichiZhou/TrustRAG: Code for "TrustRAG: Enhancing Robustness and Trustworthin…...
数据结构:递归的种类(Types of Recursion)
目录 尾递归(Tail Recursion) 什么是 Loop(循环)? 复杂度分析 头递归(Head Recursion) 树形递归(Tree Recursion) 线性递归(Linear Recursion)…...
