Linux系统安装Ruby语言

news2024/11/24 20:29:11

  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 / 3600
  minutes = (seconds % 3600) / 60
  seconds = seconds % 60

  "#{hours}:#{minutes}:#{seconds}"
end
# 调用方法
puts seconds_to_hms(6000)

判断语句:

name = "山里灵活"
age = 18

if age < 18
  puts "#{name}没到18岁"
elsif age == 18
  puts "#{name}刚满18岁"
else
  puts "#{name}已经不在18岁"
end

循环语句:

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

面向对象:

class Person
  def initialize(name, age, address, phone_number, email)
    @name = name
    @age = age
    @address = address
    @phone_number = phone_number
    @email = email
  end

  def greet
    puts "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
end

person = Person.new("Charlie", 28, "123 Main St.", "(555)-555-5555", "charlie@example.com")
person.greet

 

添加注释:

# 这是单行注释

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

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

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

相关文章

今日早报 每日精选15条新闻简报 每天一分钟 知晓天下事 6月16日,星期日

每天一分钟&#xff0c;知晓天下事&#xff01; 2024年6月16日 星期日 农历五月十一 1、 国家网信办&#xff1a;将涉网络暴力违法情形记入用户信用记录。 2、 卫健委&#xff1a;超三成3岁以下婴幼儿家庭有入托需求&#xff0c;托育服务关注度持续上升。 3、 大陆对台134项关…

单片机与DHT11温湿度检测设计

本次设计是采用STC89C54单片机加上低成本的温湿度模块DHT11构成的温湿度检测系统。设计主要由硬件与软件两部分设计构成。硬件方面包括单片机STC89C54、温湿度模块DHT11、显示模块LCD1602、电池电源、I2C存储器以及控制按键等5个部分。此系统完全基于单片机最小系统并进行一定的…

英伟达与斯坦福携手,打造未来全息XR眼镜:头带时代的终结

在XR(扩展现实)技术的演进过程中,一个显著的挑战在于如何平衡设备的便携性与视觉体验。传统的XR设备由于需要厚重的头带固定光学器件和显示器,不仅增加了体积,还为用户带来了社交上的不便。然而,随着英伟达与斯坦福大学戈登韦茨斯坦教授领导的研究团队的合作,这一难题似…

极致深耕,打造核心竞争壁垒——探寻蓝思科技穿越周期的密码

作者 | 曾响铃 文 | 响铃说 一家企业&#xff0c;如何才能在时代变幻的风云中不计较一时得失&#xff0c;长期稳健发展&#xff0c;穿越周期&#xff1f;本期主题就来探寻一家在湖南的国际化企业的发展密码。 穿越周期的企业&#xff0c;都在坚持一个驱动发展的“原点” 细…

【新课程】PICO VR 交互开发指南

从PICO开始&#xff0c;迈向XR跨平台开发 Unity XR Interaction Toolkit &#xff08;简称XRI&#xff09;是一套跨平台的 XR 交互开发工具包&#xff0c;随着版本的更新与完善&#xff0c;逐渐获得了开发者的青睐。各 XR 平台逐步推荐开发者采用 XRI 作为首选的交互开发工具为…

【FreeRTOS】ARM架构汇编实例

目录 ARM架构简明教程1. ARM架构电脑的组成1.2 RISC1.2 提出问题1.3 CPU内部寄存器1.4 汇编指令 2. C函数的反汇编 学习视频 【FreeRTOS入门与工程实践 --由浅入深带你学习FreeRTOS&#xff08;FreeRTOS教程 基于STM32&#xff0c;以实际项目为导向&#xff09;】 https://www.…

每日一练——用队列实现栈

225. 用队列实现栈 - 力扣&#xff08;LeetCode&#xff09; Queue.h #pragma once #include<stdlib.h> #include<assert.h> #include<stdbool.h>typedef int QDataType;typedef struct QNode {QDataType data;struct QNode* next; } QNode;typedef struct …

【RabbitMQ】异步消息及Rabbitmq安装

https://blog.csdn.net/weixin_73077810/article/details/133836287 https://www.bilibili.com/video/BV1mN4y1Z7t9/ 同步调用和异步调用 如果我们的业务需要实时得到服务提供方的响应&#xff0c;则应该选择同步通讯&#xff08;同步调用&#xff09;。 如果我们追求更高的效…

【MySQL】在CentOS环境下安装MySQL

目录 一、卸载残留环境 二、获取官方yum源 三、安装yum源 四、安装MySQL 五、启动MySQL 一、卸载残留环境 输入 ps axj | grep mysql 查看是否存在正在运行的MySQL服务 如果有&#xff0c;则先输入 systemctl stop mysqld 来关闭服务 然后输入 rpm -qa | grep mysql 查看…

搭建k8s集群报错unknown command “\u00a0“ for “kubeadm init“

搭建k8s报错unknown command “\u00a0” for “kubeadm init” 网上搜了一下&#xff0c;是因为复制过来的命令前面包含了空格&#xff0c;将复制的命令放到idea可以清楚看到几个命令前面有空格&#xff0c;删除掉就好了&#xff0c;记录一下

达梦基于什么数据库?

达梦数据库&#xff08;DM Database&#xff09;是中国自主研发的高性能关系型数据库管理系统。它并不是基于其他现有的数据库系统&#xff0c;而是完全自主开发的。这种独立开发使其具有很多独特的特点和优势&#xff0c;特别是在安全性、性能优化、适应中国本地化需求等方面。…

【Linux】软硬连接

目录 一.现象 二.硬链接 用处 三.软链接 用处 ​编辑 hello&#xff0c;大家好&#xff0c;今天&#xff0c;我们要学习的内容是软硬链接的。我们将从软连接的作用&#xff0c;硬链接的作用 和软硬链接的区别等方面学习。那我们就开始啦&#xff01; 在看本篇博客之前&a…

leetcode第709题:转换成小写字母

注意字符不仅有26个英文字母&#xff0c;还有特殊字符。特殊字符的话&#xff0c;原样输出。 public class Solution {public char toLowChar(char c){if(c>a&&c<z){return c;}else if(c>A&&c<Z){int n(int)c32;return (char)n;}return c;}publi…

华为机考入门python3--(36)牛客36-字符串加密

分类&#xff1a;字符串 知识点&#xff1a; 判断一个元素是否在集合中 if char not in key_set 计算字母差 index ord(char) - ord(a) 题目来自【牛客】 # 生成加密表 def generate_cipher_table(key):key_set set()cipher_table ""# 去重for char in k…

红队攻防渗透技术实战流程:中间件安全:JettyJenkinsWeblogicWPS

红队攻防渗透实战 1. 中间件安全1.1 中间件-Jetty-CVE&信息泄漏1.2 中间件-Jenkins-CVE&RCE执行1.2.1 cve_2017_1000353 JDK-1.8.0_291 其他版本失效1.2.2 CVE-2018-10008611.2.3 cve_2019_100300 需要用户帐号密码1.3 中间件-Weblogic-CVE&反序列化&RCE1.4 应…

微软正在推动 OpenAI 转变为营利性公司!Sam Altman 或拥有更多股权 股东也“逼宫”保时捷

目前&#xff0c;OpenAI估值为860亿美元&#xff0c;转型为营利性公司或加速OpenAI IPO&#xff0c;微软及其他投资者认为&#xff0c;若 Altman拥有更多股权&#xff0c;可能就不会那么有动力专注于其他项目和投资其他AI公司。 根据The Information最新报道&#xff0c;Sam A…

使用mysqldump导出mysql数据库的数据

使用mysqldump导出mysql数据库的数据 mysqldump是mysql自带的一个工具&#xff0c;路径一般是C:\Program Files\MySQL\MySQL Server 5.7\bin\mysqldump.exe 有点需要导出的数据库&#xff0c;选择导入/导出&#xff0c;选择用mysqldump导出 在使用 IntelliJ IDEA 通过 mysqldum…

59.WEB渗透测试-信息收集- 端口、目录扫描、源码泄露(7)

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 内容参考于&#xff1a; 易锦网校会员专享课 上一个内容&#xff1a;58.WEB渗透测试-信息收集- 端口、目录扫描、源码泄露&#xff08;6&#xff09; 关于御剑…

Integer溢出问题

0. 背景 在刷 LeetCode 时&#xff0c;代码的执行结果与预期出现了偏差&#xff0c;原因是 Int 值超过了允许范围 [ − 2 31 , 2 31 − 1 ] [-2^{31},2^{31}-1 ] [−231,231−1]。工作中从来没有遇到过这种情况&#xff0c;之前的认知是如果 Int 中存储的值超过了允许范围也许…

Java_FileIO流

存储数据的方案 有些数据想长久保存起来&#xff0c;咋整&#xff1f; 文件时非常重要的存储方式&#xff0c;在计算机硬盘中。 即便断电&#xff0c;或者程序终止了&#xff0c;存储在硬盘文件中的数据也不会丢失。 File File 是Java.io.包下的类&#xff0c;File类对象&…