VSCode + WSL 2 + Ruby環境搭建詳解
阿新 • • 發佈:2020-06-17
## vscode配置ruby開發環境
> vscode近年來發展迅速,幾乎在3年之間就搶佔了原來vim、sublime text的很多份額,猶記得在2015-2016年的時候,ruby[推薦的開發環境](https://ruby-china.org/wiki/tools)基本上都是vim和sublime text,然而,隨著vscode的發展,vscode下ruby的開發體驗已經非常不錯。現在基本上使用win 10 wsl2 + vscode + windows terminal的體驗已經不遜於mac + vim (sublime) + item 2的體驗了
### 總體步驟
使用win10專業版配置ruby開發環境大致分為以下幾步:
1. 開啟win10 wsl功能
2. 升級wsl2
3. 安裝ubuntu
4. 安裝ruby(rvm)
5. 安裝vscode
6. 安裝vscode wsl擴充套件
7. 安裝vscode ruby相關擴充套件
經過以上7步就可以開始愉悅的ruby開發了,再開始之前,可以先看個效果圖。
![效果圖](https://img2020.cnblogs.com/blog/402942/202006/402942-20200616214711769-630327661.gif)
### 1. 開啟win10 wsl功能
ruby對Linux和Mac比較友好,在windows下很多第三方庫要配合mingw或msys2才能安裝,不過好在windows 10提供了Linux子系統,在win10 2004版本中wsl也升級到了wsl2,速度更快,功能更完善。
要使用wsl2需要先在控制面板中開啟wsl功能:
- 適用於Linux的Windows子系統
- 虛擬機器平臺
![控制面板](https://img2020.cnblogs.com/blog/402942/202006/402942-20200616214734550-657289730.png)
### 2. 升級wsl2
目前wsl2還需要安裝一個核心升級包,具體可參考微軟說明:
- [wsl2安裝說明](https://docs.microsoft.com/zh-cn/windows/wsl/install-win10)
- [wsl2 update包](https://docs.microsoft.com/zh-cn/windows/wsl/wsl2-kernel)
更新包安裝完成後,輸入命令
``` bash
wsl --set-default-version 2
```
### 3. 安裝Ubuntu
在微軟應用商店安裝Ubuntu,當前Ubuntu版本為20.04 LTS
安裝完成以後,配置Ubuntu預設為wsl2
```bash
# 檢視
wsl --list --verbose
# 設定
wsl --set-version Ubuntu 2
```
### 4. 安裝ruby
在Linux下安裝ruby有多種方法,比較主流的方法是RVM,不過為了簡單起見,我直接通過ubuntu的apt工具進行了安裝。
關於RVM的安裝可參考如下網站:
- [RVM官網](http://rvm.io/)
- [RVM實用指南](https://ruby-china.org/wiki/rvm-guide)
通過APT安裝,輸入下列命令即可
```bash
sudo apt install ruby ruby-dev ri ruby-bundle
```
安裝完成以後需要配置gem國內映象,參考如下網址:
- [gem中文映象](https://gems.ruby-china.com/)
輸入下列命令
```bash
# 設定gem source
gem sources --add https://gems.ruby-china.com/ --remove https://rubygems.org/
# 檢視gem source
gem sources -l
# 設定bundle
bundle config mirror.https://rubygems.org https://gems.ruby-china.com
```
### 5. 安裝vscode
vscode直接在官網下載安裝即可,這裡我選擇了`System Installer`
- [vscode官網下載頁面](https://code.visualstudio.com/#alt-downloads)
### 6. 安裝vscode wsl擴充套件
vscode安裝完成以後,可以在plugin中找到**Remote - WSL**擴充套件,點選安裝即可
![](https://img2020.cnblogs.com/blog/402942/202006/402942-20200616214801225-313428469.png)
### 7. 安裝vscode ruby相關擴充套件
直接在plugin中搜索ruby在**wsl**中安裝下列五個擴充套件即可
- Peng Lv/Ruby
- Castwide/Ruby Solargraph(Language Server)
- misogi/ruby-rubocop(Lint)
- Simple Ruby ERB
- endwise
![](https://img2020.cnblogs.com/blog/402942/202006/402942-20200616214820799-1208901865.png)
其中,`ruby solargraph`和`rubocop`除了安裝擴充套件,還需要通過gem安裝第三方包
```bash
sudo gem install rubocop
sudo gem install solargraph
```
重新載入vscode-wsl就可以愉快的使用ruby language進行開發了
### vscode使用
在使用上基本只要require了相應的庫,就solargraph就會對require的庫中涉及的類和模組進行提示,非常方便。唯一有問題的地方就是require的時候沒有提示,這可能就需要自己記一下庫的名稱,不過相比於原來已經好太多了,應該說在可以接受的範圍內。
#### 1. 如果安裝了新的第三方庫會提示嗎?
如果安裝了sinatra這樣的庫,vscode-ruby如何給出提示呢?只需要Ctrl + Shift + P,選擇`solargraph: build new gem documention`即可
![](https://img2020.cnblogs.com/blog/402942/202006/402942-20200616214846350-856436167.png)
#### 2. rubocop如何使用?
rubocop是一個Ruby Lint工具,可以進行Ruby程式碼風格檢查,並能夠自動修復,只需要Ctrl + Shift + P,選擇`Ruby: autocorrect by rubocop`即可
![](https://img2020.cnblogs.com/blog/402942/202006/402942-20200616214923093-481737993.gif)
#### 3. 常用型別註釋
ruby是動態強型別語言,由於不需要指定函式返回值型別,這導致IDE無法自動推斷一些變數的型別。目前Python、PHP、TypeScript都在不斷的強化型別以方便IDE進行靜態檢查。IDE只有在知道型別的情況下才能準確地進行智慧提示。
在ruby 2當中,我們可以通過型別註釋的方式增強IDE推斷能力。常見的型別註釋可參考[YARD專案](https://rubydoc.info/gems/yard/file/docs/Tags.md)
下面程式碼給出了一些示例。
```ruby
require 'socket'
server = TCPServer.new 2000
loop do
# 程式碼塊引數型別註釋
# @param {TCPSocket} client
Thread.start(server.accept) do |client|
client.puts 'hello !'
client.puts "Time is #{Time.now}"
client.close
end
end
server = TCPServer.new 2000
loop do
# 變數註釋
# @type {TCPSocket} client
client = server.accept
end
# 函式引數和返回值註釋,陣列型別
# @param {Array(Integer)} nums
# @param {Integer} target
# @return {Array(Integer)}
def two_sum(nums, target)
hash_nums = {}
result = []
nums.each_with_index do |num, index|
hash_nums[num] = index
end
nums.each_with_index do |num, index|
another = target - num
if hash_nums[another] && hash_nums[another] != index
result.push(index, hash_nums[another])
break
end
end
result