1-ruby介紹、環境搭建、運行 hello world 程序

1-ruby介紹、環境搭建、運行 hello world 程序

Ruby 簡介

Ruby 是一種開源的、面向對象的、解釋型的動態編程語言,由 Yukihiro “Matz” Matsumoto 于 1995 年發布。主要特點包括:

  • 純面向對象:所有東西都是對象
  • 動態類型:變量不需要聲明類型
  • 簡潔優雅的語法
  • 強大的元編程能力
  • 豐富的標準庫和活躍的社區
  • 著名的 Ruby on Rails 框架

環境搭建

Ruby 可以安裝在 windows、linux、macOS 系統上,下面以 windows 為例進行環境搭建介紹

1. 安裝 Ruby

Windows 系統

使用 RubyInstaller,下載地址如下:

  • 官網:http://rubyinstaller.org/downloads/
  • 國內:https://rubyinstaller.cn/

1751101867989

https://rubyinstaller.cn/rbenv-for-windows

1751102092190

軟件需要
  • Windows 7 SP1+ / Windows Server 2008+

  • PowerShell 5 (or later, include PowerShell Core) and .NET Framework 4.5 (or later)

    PowerShell must be enabled for your user account e.g.

    Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
    
  • cURL

  • Git

  • 7zip

安裝 PowerShell

https://learn.microsoft.com/zh-cn/powershell/scripting/install/installing-powershell-on-windows?view=powershell-7.5#winget

  • 在CMD終端:搜索最新版本的 PowerShell
winget search Microsoft.PowerShell

1751103083814

  • 使用 id 參數安裝 PowerShell 或 PowerShell 預覽版
# 安裝 PowerShell
winget install --id Microsoft.PowerShell --source winget# 安裝 PowerShell 預覽版
winget install --id Microsoft.PowerShell.Preview --source winget

這里我就安裝 PowerShell 就好了,如下:

winget install --id Microsoft.PowerShell --source winget

1751103251311

1751106006068

安裝好了之后,可以啟動 PowerShell:

1751106918487

查看 PowerShell 的版本:

$PSVersionTable.PSVersion | Select-Object -ExpandProperty Major

1751107034434

安裝 rbenv-for-windows

在 PowerShell 終端中運行:

# 自定義你想安裝到的位置,最好不要有空格
$env:RBENV_ROOT = "G:\RubyInstall\Ruby-on-Windows"
$s = (iwr -useb "https://gitee.com/RubyMetric/rbenv-for-windows/raw/main/tool/install.ps1")
icm -sc ([scriptblock]::Create($s.Content)) -arg "install", "cn"

1751107205971

1751107401956

查看下載安裝好的文件:

1751107435438

然后在$profile中添加這些內容:

# rbenv for Windows
$env:RBENV_ROOT = "G:\RubyInstall\Ruby-on-Windows"# 國內用戶使用內置鏡像
# 注意,這一行必須放在init之前
$env:RBENV_USE_MIRROR = "CN"& "$env:RBENV_ROOT\rbenv\bin\rbenv.ps1" init

1751107638853

打開 PowerShell

Win + R,輸入 powershell 并回車,打開 PowerShell

檢查 $PROFILE 文件是否存在

運行以下命令檢查當前用戶的 PowerShell 配置文件是否存在:

Test-Path $PROFILE

1751112871644

  • 如果返回 True,說明配置文件已存在,可以直接編輯。

  • 如果返回 False,需要先創建配置文件:

    New-Item -Path $PROFILE -Type File -Force
    

1751113060754

創建好的文件:

1751113186250

編輯 $PROFILE 文件

C:\Users\Administrator\Documents\PowerShell\Microsoft.PowerShell_profile.ps1

添加 rbenv 環境變量

在打開的 $PROFILE 文件中,添加以下內容

# rbenv for Windows
$env:RBENV_ROOT = "G:\RubyInstall\Ruby-on-Windows"# 國內用戶使用內置鏡像
# 注意,這一行必須放在init之前
$env:RBENV_USE_MIRROR = "CN"& "$env:RBENV_ROOT\rbenv\bin\rbenv.ps1" init

1751113346620

重新加載 $PROFILE

運行以下命令使更改生效:

. $PROFILE

或者直接重啟 PowerShell。

1751113720513

驗證 rbenv 是否可用

運行以下命令檢查 rbenv 是否正常工作:

rbenv --version

1751113799601

如果正確配置,會顯示 rbenv 的版本信息。

使用 rbenv 安裝 ruby 版本

列出所有可安裝的 Ruby 版本

rbenv install -l

1751112028780

安裝特定版本的 Ruby

rbenv install 3.2.2

1751114263971

安裝 rbenv 發現缺少 7-zip、scoop 等工具,還需要安裝。

安裝 scoop

在 PowerShell 中運行以下命令:

# 1. 允許執行遠程腳本
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser# 2. 安裝 Scoop
irm get.scoop.sh | iex

1751114883834

如果安裝出現權限問題,如下:

1751296583355

可以使用管理員的角色安裝,如下:

iex "& {$(irm get.scoop.sh)} -RunAsAdmin"

驗證 Scoop 是否安裝成功

scoop --version

1751114966066

1751115444570

檢查環境變量:

$env:PATH

1751115106267

如果沒有環境變量,那么也可以手動添加:

# 手動添加 Scoop 到 PATH:
# 臨時生效(僅當前會話)
$env:PATH += ";$HOME\scoop\shims"# 永久生效(需重啟 PowerShell)
[Environment]::SetEnvironmentVariable("PATH", "$env:PATH;$HOME\scoop\shims", "User")

1751115282972

安裝 7-zip
# 通過 Scoop 安裝 7-Zip
scoop install 7zip

1751115570157

# 檢查 7-Zip 是否安裝成功
7z

1751115625251

使用 rbenv 安裝 ruby 版本
rbenv install -l # 列出可以安裝的版本
rbenv install 3.2.2 # 安裝特定版本
rbenv global 3.2.2   # 設置為全局默認版本
rbenv rehash         # 更新 shims

1751115813427

根據上圖顯示,已經成功安裝 ruby 了。也可以安裝多個版本,進行切換。

其他命令:

# 設置本地目錄特定的 Ruby 版本
rbenv local 3.1.4
設置系統環境變量

上面 PowerShell 雖然已經配置好環境變量,但是系統環境變量還需要手動配置一下,不然在CMD命令行下,則無法執行,如下:

1751118564607

需要新增這兩個環境變量:

# rbenv for Windows
$env:RBENV_ROOT = "G:\RubyInstall\Ruby-on-Windows"# 國內用戶使用內置鏡像
# 注意,這一行必須放在init之前
$env:RBENV_USE_MIRROR = "CN"

1751118875490

1751118899479

配置之后,再次 CMD 查看 ruby 版本,如下:

1751118957543

2.配置 gem 國內鏡像源

為了解決網絡問題,你可以使用國內的 RubyGems 鏡像,如 Ruby China 的鏡像。以下是如何配置和使用 RubyGems 鏡像的步驟:

打開命令行工具,輸入以下命令來修改 Gem 的源:

# 查看當前的鏡像源
gem sources -l
# 輸出
# *** CURRENT SOURCES ***
# https://rubygems.org/# 列出所有配置的源
gem sources --list | grep "current"# 移除默認鏡像源
gem sources --remove https://rubygems.org/
# 輸出: https://rubygems.org/ removed from sources# 添加國內鏡像源
gem sources -a https://gems.ruby-china.com/
# 輸出: https://gems.ruby-china.com/ added to sources# 再次查看當前的鏡像源
gem sources -l
# 輸出
# *** CURRENT SOURCES ***
# https://gems.ruby-china.com/

3.升級 gem 工具

# 升級至 3.6.9
gem update --system 3.6.9

第一個 Ruby 程序:Hello World

方法1:交互式 Ruby (IRB)

  1. 打開終端/命令行
  2. 輸入 irb 進入交互式 Ruby 環境
  3. 輸入:
puts "Hello, World!"

1751116196359

方法2:創建 Ruby 文件

配置 rubymine 使用 ruby sdk ,如下:

1751119583767

1751119608147

選擇 ruby 某個版本的 bin 目錄下,選擇 ruby.exe

1751119648923

1751119668023

創建 hello.rb文件,輸入以下內容:

# hello.rb
puts "Hello, World!"

執行效果如下:

1751119771809

使用 Byebug 或 Pry 進行調試

Ruby 程序的 Debug 使用

使用 byebugpry

byebugpry 是兩個流行的 Ruby 調試器。它們允許你在代碼的特定位置暫停執行,檢查變量值、步進代碼等。

安裝 byebug
gem install byebug
基本用法
def some_method# 你的代碼byebug# 更多的代碼
end

運行應用,當執行到 byebug 時,Rails 會暫停執行,可以在控制臺中查看變量、步進(step)、繼續執行等。

  • 基本用法:在代碼中插入 byebug 語句,程序執行到該處會暫停進入調試模式
  • 常用命令:
    • next:執行下一行代碼(跳過方法調用)
    • step:步入方法內部
    • continue:繼續執行直到下一個斷點
  • 特點:支持斷點管理、堆棧導航和變量檢查
代碼示例
require 'byebug'def some_method# 你的代碼puts "this is some method"# 使用 byebug 進行調試byebug# 更多的代碼puts "continue to run1"# 使用 byebug 進行調試byebugputs "continue to run2"
end# 調用方法
some_method

執行如下:

[root@jd-server 01_base]# ruby byebug_example.rb 
this is some method[6, 15] in /work/ruby_project/ruby-practice/01_base/byebug_example.rb6: 7:   # 使用 byebug 進行調試8:   byebug9: 10:   # 更多的代碼
=> 11:   puts "continue to run1"12: 13:   # 使用 byebug 進行調試14:   byebug15: 
# 執行 next 指令:執行下一行代碼(跳過方法調用)
(byebug) next
continue to run1[9, 18] in /work/ruby_project/ruby-practice/01_base/byebug_example.rb9: 10:   # 更多的代碼11:   puts "continue to run1"12: 13:   # 使用 byebug 進行調試
=> 14:   byebug15: 16:   puts "continue to run2"17: end18: 
# 繼續執行直到下一個斷點
(byebug) continue[11, 20] in /work/ruby_project/ruby-practice/01_base/byebug_example.rb11:   puts "continue to run1"12: 13:   # 使用 byebug 進行調試14:   byebug15: 
=> 16:   puts "continue to run2"17: end18: 19: # 調用方法20: some_method
(byebug) 
continue to run2
[root@jd-server 01_base]# 
?Pry 調試工具?
安裝 pry-byebug

安裝方式:需要 pry-byebug gem(結合了 Pry 和 Byebug 功能)

gem install pry-byebug
基本用法

無論是在開發復雜的業務邏輯、調試棘手的bug,還是在優化性能時,pry-byebug都可以大展拳腳。例如,當需要追蹤一個方法的調用過程,或是檢查特定狀態下的變量值時,只需要在適當位置插入binding.pry并啟動調試會話即可。

控制執行流程:

  • nextn - 執行下一行(不進入方法)
  • steps - 進入方法調用
  • continuec - 繼續執行直到下一個斷點
  • finishf - 執行直到當前方法結束
  • breakb - 設置斷點

查看上下文:

  • whereami@ - 顯示當前代碼位置
  • backtracebt - 顯示調用棧
  • up - 在調用棧中上移
  • down - 在調用棧中下移

檢查變量:

  • ls - 列出當前作用域變量和方法
  • cd - 進入對象上下文
  • show-source - 查看方法源代碼
代碼示例
require "pry-byebug"def some_methoda = 1binding.pry   # 程序會在這里暫停b = 2puts a + b
end# 調用方法
some_method

執行如下:

1752401934088

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/95223.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/95223.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/95223.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

PPO、DPO和GRPO的區別

一、 核心思想一句話概括 首先,我們用三個比喻來快速理解它們的核心思想:PPO (近端策略優化): 「比武招親」 模型(AI)通過試錯和與裁判(獎勵模型)的互動來學習。它生成多個回答,裁判…

使用組合子構建抽象語法樹

引言 組合子(Combinator)是一種函數式編程中的概念,它允許我們通過組合簡單的函數來構建復雜的邏輯。在解析器和抽象語法樹(AST)的構建中,組合子提供了一種簡潔且模塊化的方法。本文將介紹如何使用組合子來…

20.27《24GB顯卡輕松訓練ChatGLM3-6B!QLoRA極速微調實戰指南》

24GB顯卡輕松訓練ChatGLM3-6B!QLoRA極速微調實戰指南 import torch from transformers import AutoModel, AutoTokenizer, BitsAndBytesConfig# 配置4-bit量化參數 bnb_config = BitsAndBytesConfig(load_in_4bit=True,bnb_4bit_use_double_quant=True

JSP 輸出語法全面解析

JSP 輸出語法全面解析 JSP 提供了多種輸出內容到響應流的方式&#xff0c;每種方式都有其特定的使用場景和特點。以下是 JSP 輸出語法的詳細解析。 總結 JSP直接編寫普通字符串 翻譯到service方法的out.write(“這里面”) <%%> 翻譯到service方法體內部&#xff0c;里面是…

前端學習——CSS

前面我們已經學習過來HTML。但是對于前端網頁來說&#xff0c;HTML只是網頁的骨架。而只是使用HTML的網頁是十分簡陋的&#xff0c;一般沒辦法應用于實際應用。因此我們還要學習CSS對網頁進行美化。 相關代碼已經上傳至gitee&#xff1a;前端學習代碼: 前端學習&#xff0c;喜歡…

【stm32】對射式紅外傳感器計次以及旋轉編碼器計次

對射式紅外傳感器計次 1. 將傳感器的功能分裝在一個模塊里CountsSenser2.配置外部中斷1.配置RCC&#xff0c;將涉及的外設的時鐘都打開 2.配置GPIO&#xff0c;選擇端口為輸入模式 3.配置AFIO&#xff0c;選擇前面使用的一路GPIO,連接到后面的EXTI 4.配置EXTI&#xff0c;選擇邊…

人工智能學習:Python相關面試題

1、Python與其他語言&#xff08;如Java/C&#xff09;的核心區別是什么&#xff1f;Python是動態類型的解釋型語言&#xff0c;語法簡潔&#xff0c;支持多種編程范式&#xff08;面向對象、函數式、過程式&#xff09;。與Java相比&#xff0c; Python無需編譯且語法更簡潔&a…

【Canvas與旗幟】哥倫比亞旗圓餅

【成圖】【代碼】<!DOCTYPE html> <html lang"utf-8"> <meta http-equiv"Content-Type" content"text/html; charsetutf-8"/> <head><title>哥倫比亞旗圓餅 Draft1</title><style type"text/css&qu…

Linux 系統 poll 與 epoll 機制2:實現原理與應用實踐

接上文poll機制&#xff1a;Linux 系統 poll 與 epoll 機制1。 3. epoll 機制&#xff1a;高并發 I/O 的優化實現? epoll(Efficient event polling implementation)機制誕生于 Linux 2.5.44 版本&#xff0c;是內核為解決高并發 I/O 場景&#xff08;如萬級以上 FD 監聽&…

Mamba LLM 架構簡介:機器學習的新范式

Mamba LLM 架構簡介&#xff1a;機器學習的新范式探索 Mamba LLM 的強大功能&#xff0c;Mamba LLM 是來自一流大學的變革性架構&#xff0c;重新定義了 AI 中的序列處理。語言模型是一種經過訓練的機器學習模型&#xff0c;用于在自然語言上執行概率分布。它們的架構主要由多層…

GaussDB生產擴容引起的PANIC問題處理案例

1 環境信息CPU:8C內存&#xff1a;64GGaussDB版本&#xff1a;24.7.32解決方案部署形態&#xff1a;HCS部署形態&#xff1a;1主1從1日志擴容原因&#xff1a;當前的配置滿足不了max_connections為2000值&#xff0c;即當前的業務最大連接數超過2000個而按照8C64G的配置最多滿足…

【168頁PPT】華為流程管理體系構建與落地(附下載方式)

篇幅所限&#xff0c;本文只提供部分資料內容&#xff0c;完整資料請看下面鏈接 https://download.csdn.net/download/2501_92796370/91662548 資料解讀&#xff1a;【168頁PPT】華為流程管理體系構建與落地 詳細資料請看本解讀文章的最后內容。華為&#xff0c;作為全球知名…

基于CotSegNet網絡和機器學習的棉花點云器官分割和表型信息提取

一、引言PointNet作為點云處理領域的先驅與里程碑式深度學習模型&#xff0c;以其卓越的性能和對無序點云數據直接處理的能力而聞名。博主將分享1篇發表在《Computers and Electronics in Agriculture》&#xff08;中科院1區TOP&#xff09;的“Organ segmentation and phenot…

經典卷積神經網絡CNN

一、CNN視覺處理三大任務&#xff1a;圖像分類、目標檢測、圖像分割上游&#xff1a;提取特征&#xff0c;CNN下游&#xff1a;分類、目標、分割等&#xff0c;具體的業務1. 概述卷積神經網絡是深度學習在計算機視覺領域的突破性成果。在計算機視覺領域, 往往我們輸入的圖像都很…

11.1.5 實現文件刪除,共享和共享下載排行榜

1、圖床分享圖片api_sharepicture.cc sharepicture_cgi.c 分享后每個人都可以看到。 數據庫&#xff1a; DROP TABLE IF EXISTS share_picture_list; CREATE TABLE share_picture_list (id int(11) NOT NULL AUTO_INCREMENT COMMENT 編號,user varchar(32) NOT NULL COMMENT …

【Java后端】SpringBoot配置多個環境(開發、測試、生產)

在 Spring Boot 中配置多個環境&#xff08;開發、測試、生產&#xff09;通常用 配置文件分環境管理 啟動參數切換 的方式來實現。下面一個完整的實踐指南&#xff1a;&#x1f539; 1. 使用多配置文件管理環境 Spring Boot 默認支持 application-{profile}.properties 或 ap…

HTTP 分塊傳輸編碼:深度解析與報文精髓

分塊傳輸編碼&#xff08;Chunked Transfer Encoding&#xff09;是 HTTP/1.1 協議中的一項核心特性&#xff0c;它允許服務器在不預先知道響應體總大小的情況下&#xff0c;高效地傳輸數據。這項技術解決了傳統 Content-Length 機制的局限性&#xff0c;使得 HTTP 協議能夠完美…

Vue 項目首屏加載速度優化

Vue 項目首屏加載從 5s 到 1.5s&#xff1a;4 步落地優化方案&#xff0c;附完整代碼 數據對比前段時間我在做一個活動時&#xff0c;打包加載后發現打開頁面要等半天&#xff0c;經過幾天的優化&#xff0c;最終將首屏加載時間從5秒壓到 1.5 秒。這篇文章會把整個優化過程拆解…

Java學習第十六部分——JUnit框架

目錄 一.概述 二.作用 三.版本 四.優勢 五.局限性 六.發展方向 七.核心組件 1 測試用例 2.斷言&#xff08;Assertions&#xff09; 3.測試生命周期 4.測試運行器 八.簡單示例 九.JUnit 4 與 JUnit 5 的區別 十.idea項目實戰 1.在idea中創建Java項目&#xff0c…

[吾愛原創] 千千每日計劃

[吾愛原創] 千千每日計劃 鏈接&#xff1a;https://pan.xunlei.com/s/VOYuE8p-KIV-NJr2_0d1Ak9YA1?pwdbqez# 介紹&#xff1a;千千系列的最后一款軟件,一款每日計劃的一款軟件&#xff0c;并且支持時間段修改和打卡和導入導出等功能。 功能&#xff1a; 1.設置每天的計劃 2…