当前位置: 首页 > news >正文

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是一种面向对象的脚本语言&#xff0c;由日本的计算机科学家松本行弘设计并开发&#xff0c;Ruby的设计哲学强调程序员的幸福感&#xff0c;致力于简化编程的复杂性&#xff0c;并提供一种既强大又易于使用的工具。其语法简洁优雅&#xff0c;易于阅读和书写&#xff0c;使…...

网络安全练气篇——OWASP TOP 10

1、什么是OWASP&#xff1f; OWASP&#xff08;开放式Web应用程序安全项目&#xff09;是一个开放的社区&#xff0c;由非营利组织 OWASP基金会支持的项目。对所有致力于改进应用程序安全的人士开放&#xff0c;旨在提高对应用程序安全性的认识。 其最具权威的就是“10项最严重…...

python实现进度条的方法和实现代码

在Python中&#xff0c;有多种方式可以实现进度条。这里&#xff0c;我将介绍七种常见的方法&#xff1a;使用tqdm&#xff08;这是一个外部库&#xff0c;非常流行且易于使用&#xff09;、rich、click、progressbar2等库以及纯Python的print函数与time库来模拟进度条。 目录…...

被拷打已老实!面试官问我 #{} 和 ${} 的区别是什么?

引言&#xff1a;在使用 MyBatis 进行数据库操作时&#xff0c;#{} 和 ${} 的区别是面试中常见的问题&#xff0c;对理解如何在 MyBatis 中安全有效地处理 SQL 语句至关重要。正确使用这两种占位符不仅影响应用的安全性&#xff0c;还涉及到性能优化。 题目 被拷打已老实&…...

C# —— while循环语句

作用 让顺序执行的代码 可以停下来 循环执行某一代码块 // 条件分支语句: 让代码产生分支 进行执行 // 循环语句 : 让代码可以重复执行 语法 while循环 while (bool值) { 循环体(条件满足时执行的代码块) …...

力扣第205题“同构字符串”

在本篇文章中&#xff0c;我们将详细解读力扣第205题“同构字符串”。通过学习本篇文章&#xff0c;读者将掌握如何使用哈希表来解决这一问题&#xff0c;并了解相关的复杂度分析和模拟面试问答。每种方法都将配以详细的解释&#xff0c;以便于理解。 问题描述 力扣第205题“…...

探索RESTful API开发,构建可扩展的Web服务

介绍 当我们浏览网页、使用手机应用或与各种互联网服务交互时&#xff0c;我们经常听到一个术语&#xff1a;“RESTful API”。它听起来很高深&#xff0c;但实际上&#xff0c;它是构建现代网络应用程序所不可或缺的基础。 什么是RESTful API&#xff1f; 让我们将RESTful …...

苹果安卓网页的H5封装成App的应用和原生开发的应用有什么不一样?

H5封装类成App的应用和原生应用有什么不一样&#xff1f;——一对比谈优缺点 1. 开发速度和复用性 H5封装的App优势&#xff1a;一次编写&#xff0c;多平台运行。你只需要使用一种语言编写代码&#xff0c;就可以发布到不同的平台&#xff0c;降低开发成本。 原生应用优势&…...

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&#xff1a;分组使用3&#xff1a;处理重复值4. 使用优势4.1 手动计算百分等级4.2 使用 PERCENT_RANK 的优势4.3 使用 PERCENT_RANK 5. 总结 在 MySQL 中&#xff0c;PERCENT_RANK 函数用于计算一个值在其分组中的百分等级。 它的返回值范围是从 0 …...

宏任务与微任务

一、宏任务 1、概念 指消息队列中等地被主线程执行的事件 2、种类 script主代码块、setTimeout 、setInterval 、nodejs的setImmediate 、MessageChannel&#xff08;react的fiber用到&#xff09;、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

简单写了一下关于文本生成接口的调用&#xff0c;其余更多的调用方法可在官网查看 import os from dotenv import load_dotenv, find_dotenv from openai import OpenAI import httpxdef gpt_config():# 为了安全起见&#xff0c;将key写到当前项目根目录下的.env文件中# find…...

YOLOV8 目标检测:训练自定义数据集

1、下载 yolov8项目&#xff1a;ultralytics/ultralytics&#xff1a;新增 - PyTorch 中的 YOLOv8 &#x1f680; > ONNX > OpenVINO > CoreML > TFLite --- ultralytics/ultralytics: NEW - YOLOv8 &#x1f680; in PyTorch > ONNX > OpenVINO > CoreM…...

动态更新自建的Redis连接池连接数量

/*** 定时更新Redis连接池信息&#xff0c;防止资源让费*/private static final ScheduledThreadPoolExecutor DYNAMICALLY_UPDATE_REDIS_POOL_THREAD new ScheduledThreadPoolExecutor(1, new ThreadFactory() {Overridepublic Thread newThread(Runnable r) {Thread thread …...

浅谈设计师的设计地位

在当今这个创意无限的时代&#xff0c;设计师的地位日益凸显。他们以独特的视角和精湛的技能&#xff0c;为我们的生活带来了无尽的色彩与灵感。然而&#xff0c;随着行业的不断发展&#xff0c;设计师如何在众多同行中脱颖而出&#xff0c;提升自己的设计地位呢&#xff1f;答…...

C/C++ string模拟实现

1.模拟准备 1.1因为是模拟string&#xff0c;防止与库发生冲突&#xff0c;所以需要命名空间namespace隔离一下&#xff0c;我们来看一下基本内容 namespace yx {class string{private://char _buff[16]; lunix下小于16字节就存buff里char* _str;size_t _size;size_t _capac…...

微信小程序学习(八):behaviors代码复用

小程序的 behaviors 方法是一种代码复用的方式&#xff0c;可以将一些通用的逻辑和方法提取出来&#xff0c;然后在多个组件中复用&#xff0c;从而减少代码冗余&#xff0c;提高代码的可维护性。 如果需要 behavior 复用代码&#xff0c;需要使用 Behavior() 方法&#xff0c…...

【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&#xff0c;我们需要找出从某个单元格出发可以访问的最大单元格数量。移动规则是可以从当前单元格移动到同一行或同一列的任何其他单元格&#xff0c;但目标单元格的值必须严格大于当前单元格的值。需要返回最大可访问的单元格数量。 示例…...

git创建子模块

有种情况我们经常会遇到&#xff1a;某个工作中的项目需要包含并使用另一个项目。 也许是第三方库&#xff0c;或者你独立开发的&#xff0c;用于多个父项目的库。 现在问题来了&#xff1a;你想要把它们当做两个独立的项目&#xff0c;同时又想在一个项目中使用另一个。 Git …...

把Deepin塞进U盘,即插即用!Deepin To Go来袭

前言 小伙伴之前在某篇文章下留言说&#xff1a;把Deepin塞进U盘的教程。 这不就来了吗&#xff1f; 事实是可以的。这时候你要先做点小准备&#xff1a; 一个大小为8GB或以上的普通U盘 一个至少64GB或以上的高速U盘 一个Deepin系统镜像文件 普通U盘的大概介绍&#xff1…...

​​给【AI硬件】创业者的论文、开源项目和产品整理

一、AI 硬件精选论文 《DrEureka: Language Model Guided Sim-To-Real Transfer》 瑜伽球上遛「狗」这项研究由宾夕法尼亚大学、 NVIDIA 、得克萨斯大学奥斯汀分校的研究者联合打造&#xff0c;并且完全开源。他们提出了 DrEureka&#xff08;域随机化 Eureka&#xff09;&am…...

模拟面试题卷二

1. 什么是JavaEE框架&#xff0c;你能列举一些常用的JavaEE框架吗&#xff1f; 答&#xff1a;JavaEE框架是一套用于开发企业级应用的技术规范和工具集合。常用的JavaEE框架有Spring、Hibernate、Struts、JSF等。 2. 请解释一下面向对象技术和设计原则是什么&#xff0c;你能…...

22种常用设计模式示例代码

文章目录 创建型模式结构型模式行为模式 仓库地址https://github.com/Xiamu-ssr/DesignPatternsPractice 参考教程 refactoringguru设计模式-目录 创建型模式 软件包复杂度流行度工厂方法factorymethod❄️⭐️⭐️⭐️抽象工厂abstractfactory❄️❄️⭐️⭐️⭐️生成器bui…...

Java面试题:对比ArrayList和LinkedList的内部实现,以及它们在不同场景下的适用性

ArrayList和LinkedList是Java中常用的两个List实现&#xff0c;它们在内部实现和适用场景上有很大差异。下面是详细的对比分析&#xff1a; 内部实现 ArrayList 数据结构&#xff1a;内部使用动态数组&#xff08;即一个可变长的数组&#xff09;实现。存储方式&#xff1a;…...

ping: www.baidu.com: 未知的名称或服务(IP号不匹配)

我用的是VMware上的Red Hat Enterprise Linux 9&#xff0c;出现了能联网但ping不通外网的情况。 问题描述&#xff1a;设置中显示正常连接&#xff0c;而且虚拟机右上角有联网的图标&#xff0c;但不能通外网。 按照网上教程修改了/etc/resolv.conf和/etc/sysconfig/network-…...

谷神前端组件增强:子列表

谷神Ag-Grid导出Excel // 谷神Ag-Grid导出Excel let allDiscolumns detailTable.getAllDisColumns() let columnColIds columns.map(column > column.colId) let columnKeys columnColIds.filter(item > ![select, "_OPT_FIELD_"].includes(item)) detailT…...

测试cudaStream队列的深度

测试cudaStream队列的深度 一.代码二.编译运行[得出队列深度为512] 以下代码片段用于测试cudaStream队列的深度 方法: 主线程一直发任务,启一个线程cudaEventQuery查询已完成的任务,二个计数器的值相减 一.代码 #include <iostream> #include <thread> #include …...

​海康威视 isecure center 综合安防管理平台任意文件上传漏洞

文章目录 前言声明一、漏洞描述二、影响版本三、漏洞复现四、修复方案 前言 海康威视是以视频为核心的智能物联网解决方案和大数据服务提供商,业务聚焦于综合安防、大数据服务和智慧业务。 海康威视其产品包括摄像机、多屏控制器、交通产品、传输产品、存储产品、门禁产品、消…...

eclipse与jsp网站开发/seo排名技术软件

一、什么是SMO1、SMO&#xff1a;SQL SERVER Management Object2、扩展了SQL-DMO&#xff08;Distributed Management Object&#xff09; 更好的性能 更佳的控制 包含了绝大部分SQL-DMO的功能 支持SQL Server 20053、兼容&#xff1a;SQL Server7.0&#xff0c;SQL Se…...

无锡高端网站设计建设/湖南网站建设平台

P12 判断语句1.判断语句1 — if2.判断语句2 — if ... else3.判断语句3 — if ... else if ... else4.语句练习5.if 语句和三元运算符的互换系统&#xff1a;Win10 Java&#xff1a;1.8.0_333 1.判断语句1 — if if 语句第一种格式&#xff1a;if if(判断条件) {语句体; }执行…...

0fees 安装 wordpress/营销推广的特点

这篇文章主要介绍了thinkPHP5.0框架整体架构,简单介绍了thinkPHP5.0的应用,模块,MVC,驱动,行为,命名空间等概念与基本用法,需要的朋友可以参考下本文讲述了thinkPHP5.0框架整体架构。分享给大家供大家参考&#xff0c;具体如下&#xff1a;ThinkPHP5.0应用基于MVC(模型-视图-控…...

印度网站建设多少钱/搜索引擎优化哪些方面

我们今天来用 pytroch 来实现一个简单的回归分析&#xff0c;也借此机会来熟悉 pytorch 的一些基本操作。1. 建立数据集2. 构建神经网络import torchimport torch.nn.functional as F # 激励函数都在这class Net(torch.nn.Module): # 继承 torch 的 Moduledef __init__(self,…...

雅安市建设网站/青岛百度整站优化服务

description 给定2到15个不同的正整数&#xff0c;你的任务是计算这些数里面有多少个数对满足&#xff1a;数对中一个数是另一个数的两倍。比如给定1 4 3 2 9 7 18 22&#xff0c;得到的答案是3&#xff0c;因为2是1的两倍&#xff0c;4是2个两倍&#xff0c;18是9的两倍。 in…...

wordpress健身房主题/东莞网站建设优化

模型绑定器是否不支持JSON对象的数组&#xff1f;下面的代码在发送单个JSON域对象作为ajax帖子的一部分时起作用。但是&#xff0c;在发送JSON域对象数组时&#xff0c;action参数为null。var domains [{DomainName: testt1,Price: 19.99,Available: true}, {DomainName: test…...