【VS Code】Windows10下VS Code配置Ruby语言环境
文章目錄
- 0. Ruby官方文檔
- 1. 下載安裝Ruby
- 2. 下載安裝插件
- 3. 安裝Ruby依賴
- 4. 書寫Ruby單文件下配置文件
- 5. 嘗試調(diào)試Ruby代碼
這篇文章屬于本人參考諸多博客、教程、文檔等資料,所撰寫的「Windows10上配置VS Code」系列文章之一,內(nèi)容隨時(shí)可能發(fā)生更新變動(dòng),歡迎關(guān)注和收藏VS Code系列配置總目錄一文以作備忘。
不管怎樣,獲取了VS Code編輯器之后,我們將在VS Code中配置Ruby的語言學(xué)習(xí)環(huán)境,目前還缺少Ruby的編譯器和解釋器,缺少支持插件和配置代碼……不過,有關(guān)VSCode和Ruby的配合使用,我也不是太懂,慢慢學(xué)慢慢改吧……同樣的,我會(huì)在個(gè)人代碼庫 CodeWorld 中建立 Code_Ruby 文件夾,里面的文件夾是 Ruby_Single 和 Ruby_Multiple ,分別存放不同的分類代碼文件夾,即程序運(yùn)行目標(biāo)分別是單個(gè)源代碼文件或少數(shù)幾個(gè)源代碼文件的組合。
0. Ruby官方文檔
訪問這一網(wǎng)站https://ruby-doc.org/,可以看到Ruby的核心API、標(biāo)準(zhǔn)庫API文檔、起步教程和其他亂七八糟的東西:
不過感覺排版不是很好,可以訪問這一中文網(wǎng)站http://www.ruby-lang.org/zh_cn/documentation/作為代替/首選:
1. 下載安裝Ruby
先打開Ruby中文官網(wǎng)http://www.ruby-lang.org/zh_cn/downloads/,點(diǎn)擊紅框位置:
進(jìn)入https://rubyinstaller.org/網(wǎng)站:
再點(diǎn)擊 Download 進(jìn)入下載界面,右邊有詳細(xì)的解釋。如果不知道安裝哪個(gè)版本的話,建議使用 Ruby+Devkit 2.7.x (x64) 安裝包,它提供了最多數(shù)量的兼容gem,且和Ruby一起安裝了 MSYS2 Devkit ,可以編譯具有C擴(kuò)展名的gem。僅當(dāng)必須使用自定義32位本機(jī)DLL或者COM對(duì)象時(shí),才建議使用32位x86版本。
可能你不是很了解MSYS2,但是作為一個(gè)程序員,你肯定知道MinGW,而MSYS2就集成了MinGW,同時(shí)還具有其他的一些特性,例如包管理器Pacman(用過ArchLinux的應(yīng)該都知道Pacman)等等,這篇文章做了更詳細(xì)的區(qū)分和總結(jié):Cygwin、MSYS、MinGW、MinGW64、MSYS2 區(qū)別。總而言之,MSYS2可以在Windows下搭建一個(gè)比較完美的類Linux環(huán)境(雖然對(duì)我而言用處不是很大),包括Bash、Vim、gcc、make等工具,都可以通過包管理器來添加和卸載。
我在這里選擇的是最新版 Ruby+Devkit 3.0.1-1 (x64) 。由于官網(wǎng)下載太慢,很久都下載不下來,可以點(diǎn)擊此處下載我分享的安裝包資源。下載完成之后,點(diǎn)擊運(yùn)行,先接受許可:
自定義安裝目錄,然后勾選全部?jī)身?xiàng),點(diǎn)擊 Install :
然后選擇要安裝的組件,默認(rèn)全部勾選,點(diǎn)擊 Next 即可:
最后就開始了安裝:
前面默認(rèn)選擇了MSYS2,這里也勾選這個(gè),然后點(diǎn)擊 Finish :
出現(xiàn)如下界面,即使之前我在配置C++語言環(huán)境時(shí)安裝了MinGW-w64,還是保險(xiǎn)起見,此處輸入3:
之后開始用GnuPG生成密鑰,然后開始用 pacman 安裝一系列亂七八糟的東西:
最后出現(xiàn)下圖時(shí),按回車退出:
打開安裝文件夾可以看到整套MSYS2開發(fā)環(huán)境和MinGW64工具鏈。MSYS2小巧玲瓏,主要以基本的Linux工具為主,還有更優(yōu)秀的包管理器 pacman ,不喜歡龐大的 Cygwin 的用戶可以試試MSYS2。
進(jìn)入 usr/bin 目錄,可以看到(隨著Ruby下載安裝的)MSYS2提供的包管理器 pacman ,要使用它需要將當(dāng)前目錄添加進(jìn)環(huán)境變量:
現(xiàn)在,打開你的命令行,輸入 ruby -v 查看Ruby的版本號(hào),如果成功就安裝成功了:
順便試一下Pacman:
2. 下載安裝插件
打開VS Code,Ctrl+Shift+X 進(jìn)入擴(kuò)展界面,輸入Ruby安裝對(duì)應(yīng)插件:
安裝Ruby插件后,隨手新建 hello.rb :
然后在VS Code的終端控制臺(tái)中運(yùn)行該程序:
注意,如果報(bào)錯(cuò)說——無法將“ruby”項(xiàng)識(shí)別為 cmdlet、函數(shù)、腳本文件或可運(yùn)行程序,可能是權(quán)限不夠(為什么啊?),找到VS Ccode的 Code.exe ,右鍵選擇屬性,在兼容性中勾選【以管理員權(quán)限運(yùn)行此程序】,然后重啟VS Code即可。
3. 安裝Ruby依賴
本節(jié)參考Ruby插件對(duì)應(yīng)的文檔:https://github.com/rubyide/vscode-ruby/blob/main/docs/debugger.md。我們先要在控制臺(tái)中輸入下面幾個(gè)命令,安裝Ruby依賴:
gem install bundle gem install bundler gem install debase-ruby_core_source gem install debase gem install ruby-debug-ide一口氣安裝如下:
如果失敗,可能需要修改gem的源:
再執(zhí)行下面的兩條命令,先刪除原有sources 源,再添加新源,然后重新運(yùn)行上述安裝命令:
gem sources --remove https://rubygems.org/ gem sources -a https://mirrors.ustc.edu.cn/rubygems/執(zhí)行 rdebug-ide 查看 ruby-debug-ide 的使用參數(shù):
> rdebug-ide Using ruby-debug-base 0.2.5.beta2 Usage: rdebug-ide is supposed to be called from RDT, NetBeans, RubyMine, orthe IntelliJ IDEA Ruby plugin. The command line interface toruby-debug is rdebug.Options:-h, --host HOST Host name used for remote debugging-p, --port PORT Port used for remote debugging--dispatcher-port PORT Port used for multi-process debugging dispatcher--evaluation-timeout TIMEOUT evaluation timeout in seconds (default: 10)--evaluation-control trace to_s evaluation-m, --memory-limit LIMIT evaluation memory limit in mb (default: 10)-t, --time-limit LIMIT evaluation time limit in milliseconds (default: 100)--stop stop when the script is loaded-x, --trace turn on line tracing--skip_wait_for_start skip wait for 'start' command-l, --load-mode load mode (experimental)-d, --debug Debug self - prints information for debugging ruby-debug itself--xml-debug Debug self - sends information <message>s for debugging ruby-debug itself-I, --include PATH Add PATH to $LOAD_PATH--attach-mode Tells that rdebug-ide is working in attach mode--key-value Key/Value presentation of hash items--ignore-port Generate another port--keep-frame-binding Keep frame bindings--disable-int-handler Disables interrupt signal handler--rubymine-protocol-extensionsEnable all RubyMine-specific incompatible protocol extensions--catchpoint-deleted-event Enable chatchpointDeleted event--value-as-nested-element Allow to pass variable's value as nested element instead of attribute--socket-path PATH Listen for debugger on the given UNIX domain socket pathCommon options:-v, --version Show versionMust specify a script to run如果 gem install 死活安裝不上 debase 或者 ruby-debug-ide ,可以按照如下方法,從源碼安裝:
或者也有可能你把Ruby安裝到了一個(gè)帶有空格的路徑下,此時(shí)最好刪除原有安裝目錄、刪除Ruby的環(huán)境變量、重新下載RubyInstaller、重新安裝Ruby。要做到這一點(diǎn),關(guān)鍵是拋棄把所有編程軟件安裝在一個(gè)目錄下的強(qiáng)迫癥……FxxK Ruby!!!
4. 書寫Ruby單文件下配置文件
如果想要添加全局配置,可以直接在不打開文件夾時(shí)運(yùn)行->添加配置,然后會(huì)跳轉(zhuǎn)到全局的配置文件 settings.json 中(關(guān)于用戶配置和工作區(qū)配置,見此處文章)——我的 LaTeX\LaTeXLATE?X 配置代碼,目前就在全局配置文件中(也許有一天我還會(huì)建立一個(gè) Code_LaTeX 文件夾,然后把相關(guān) TeX\TeXTE?X 文件都放進(jìn)去,只是不一定轉(zhuǎn)為工作區(qū)配置):
不然就像我一樣,建立一個(gè) CodeWorld/Code_Ruby 文件夾,然后打開該文件夾。類似于C/C++單文件語言學(xué)習(xí)環(huán)境的建立,這里先在其中創(chuàng)建一個(gè)名為 Seven_Weeks_Seven_Languages 的文件夾,用于《七周七語言》一書的學(xué)習(xí)。
然后使用運(yùn)行->添加配置,(在打開文件夾且存在源文件時(shí))自動(dòng)創(chuàng)建 .vscode 文件夾和其中的 launch.json 文件。或者,可以點(diǎn)擊下面的創(chuàng)建 launch.json 文件:
VS Code會(huì)嘗試自動(dòng)檢測(cè)你的調(diào)試環(huán)境,不過如果失敗了,就需要手動(dòng)選擇,這里我們選擇 Ruby :
接著需要選擇生成的那一份 configuration 的 name ,這里選中 Debug Local File :
然后就生成了一份 launch.json 配置文件,用于Ruby的調(diào)試。現(xiàn)在回到文件瀏覽器,可以發(fā)現(xiàn)VS Code創(chuàng)建了一個(gè) .vscode 文件夾,并且添加了 launch.json 文件到工作區(qū)。
其中 launch.json 文件的內(nèi)容如下:
這只是 configurations 數(shù)組中的一個(gè)配置,我們可以添加任意多個(gè)配置,只要它們的 name 都獨(dú)一無二。經(jīng)過反復(fù)修改后,我在 CodeWorld/Code_Ruby 下的 .vscode/launch.json 文件內(nèi)容如下,configurations 中的注釋是我自己添加的:
{ // 欲了解更多信息,請(qǐng)?jiān)L問: https://go.microsoft.com/fwlink/?linkid=830387"version": "0.2.0","configurations": [ {//name是字符串形式的配置名稱,顯示在啟動(dòng)配置下拉菜單中,在配置數(shù)組中必須獨(dú)一無二"name": "Debug Local File",//type是配置類型,必須是Ruby,告訴VS Code運(yùn)行什么調(diào)試器"type": "Ruby",//request是請(qǐng)求配置類型,可以是launch(允許直接從VS Code中啟動(dòng)提供的程序),//或者是attach,允許你附加到遠(yuǎn)程調(diào)試會(huì)話(remote debug session)."request": "launch", //cwd調(diào)試程序時(shí)的工作目錄,需要是源碼文件所在的文件夾位置(program字符串指出的位置)"cwd": "${fileDirname}",//program是將要進(jìn)行調(diào)試的程序的完整路徑,不應(yīng)該依賴于相對(duì)路徑.//如果文件在你的工作區(qū),program通常是這樣一個(gè)字符串"${workspaceRoot}/path/to/script.rb"//- ${workspaceRoot} 開啟在VS Code中的文件夾的路徑//- ${file} 當(dāng)前打開的文件(的完整路徑)//- ${fileBasename} 當(dāng)前打開的文件的basename(即文件名.擴(kuò)展名)//- ${fileDirname} 當(dāng)前打開的文件的dirname//- ${fileExtname} 當(dāng)前打開的文件的擴(kuò)展名"program": "${fileDirname}/${fileBasename}",//stopOnEntry設(shè)為true時(shí)調(diào)試程序?qū)和T诔绦蛉肟谔?相當(dāng)于在main上打斷點(diǎn)"stopOnEntry": false,//showDebuggerOutput展示一些額外的輸出信息到調(diào)試終端,尤其是關(guān)于rdebug-ide的運(yùn)行"showDebuggerOutput": true,//args數(shù)組是程序調(diào)試時(shí)提供給程序的命令行參數(shù),里面每個(gè)字符串都被作為一個(gè)單獨(dú)參數(shù)進(jìn)行傳送"args": [],//env提供要在啟動(dòng)程序之前設(shè)置的環(huán)境變量// "env": {// "BASE": "${fileDirname}",// "EXT": "${fileExtname}",// "RAILS_ENV": "test"// },//如果不是'ruby',就是Ruby可執(zhí)行文件的路徑,用于運(yùn)行程序(在沒有調(diào)試器時(shí)) //"pathToRuby": "ruby",//如果'rdebug-ide'不在PATH環(huán)境變量中,需要提供'rdebug-ide'的絕對(duì)路徑值,比如"c:\ruby\rdebug-ide.bat" "pathToRDebugIDE": "rdebug-ide",//"pathToBundler": "bundle"},{"name": "Minitest - current line","type": "Ruby","request": "launch", "cwd": "${fileDirname}","program": "${fileDirname}/bin/rails","args": ["test","${file}:${lineNumber}"]},{ //僅對(duì)當(dāng)前打開的測(cè)試文件運(yùn)行Test::Unit"name": "Test::Unit - open test file","type": "Ruby","request": "launch","cwd": "${fileDirname}", "program": "${file}","includes": ["test", "lib"] //使用includes在$LOAD_PATH中包含其他路徑。},{ //在當(dāng)前打開的文件中,對(duì)單個(gè)選定的測(cè)試運(yùn)行Test::Unit "name": "Test::Unit - single selected test","type": "Ruby","request": "launch","cwd": "${fileDirname}", "program": "${file}","includes": ["test", "lib"],"args": ["-n","${selectedText}"]},{ //這將在源文件目錄下運(yùn)行rails服務(wù)器,假設(shè)binstubs已經(jīng)通過bundler install --binstubs安裝"name": "Rails server","type": "Ruby","request": "launch","cwd": "${fileDirname}","program": "${fileDirname}/bin/rails","args": ["server"]},{ //使用傳遞過來的額外參數(shù),運(yùn)行所有的spec"name": "RSpec - all","type": "Ruby","request": "launch","cwd": "${fileDirname}","program": "${fileDirname}/bin/rspec","args": ["-I", "${fileDirname}","--require", "spec_helper","--require", "rails_helper","--format", "documentation",]},{ //運(yùn)行RSpec,不過只在當(dāng)前打開的spec文件上"name": "RSpec - active spec file only","type": "Ruby","request": "launch","cwd": "${fileDirname}","program": "${fileDirname}/bin/rspec","args": ["-I","${fileDirname}","${file}"]}, { //運(yùn)行所有cuke"name": "Cucumber","type": "Ruby","request": "launch","cwd": "${fileDirname}","program": "${fileDirname}/bin/cucumber"},// { //用于遠(yuǎn)程調(diào)試的配置,暫時(shí)用不到// "name": "Listen for rdebug-ide",// "type": "Ruby",// "request": "attach",// "remoteHost": "127.0.0.1",// "remotePort": "1234",// "remoteWorkspaceRoot": "${workspaceRoot}"// },] }5. 嘗試調(diào)試Ruby代碼
一份十分簡(jiǎn)單的Ruby代碼:
rec = {"name"=>"first", "label"=>"second"} puts "#{rec}" puts "#{rec.size()}" puts "Hello Ruby World!"在運(yùn)行和調(diào)試圖標(biāo)下,選擇 Debug Local File :
點(diǎn)擊這個(gè)綠色的小三角,開始調(diào)試程序:
然后前進(jìn)一步:
前進(jìn)到程序結(jié)束:
現(xiàn)在我們就可以運(yùn)行和調(diào)試Ruby程序了!
總結(jié)
以上是生活随笔為你收集整理的【VS Code】Windows10下VS Code配置Ruby语言环境的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CHD6.3.1部署文档
- 下一篇: Tegra X2 系统上安装 openp