vscode配置ruby开发环境

vscode近年来发展迅速,几乎在3年之间就抢占了原来vim、sublime text的很多份额,犹记得在2015-2016年的时候,ruby推荐的开发环境基本上都是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开发了,再开始之前,可以先看个效果图。

1. 开启win10 wsl功能

ruby对Linux和Mac比较友好,在windows下很多第三方库要配合mingw或msys2才能安装,不过好在windows 10提供了Linux子系统,在win10 2004版本中wsl也升级到了wsl2,速度更快,功能更完善。

要使用wsl2需要先在控制面板中开启wsl功能:

  • 适用于Linux的Windows子系统
  • 虚拟机平台

2. 升级wsl2

目前wsl2还需要安装一个内核升级包,具体可参考微软说明:

更新包安装完成后,输入命令

wsl --set-default-version 2

3. 安装Ubuntu

在微软应用商店安装Ubuntu,当前Ubuntu版本为20.04 LTS

安装完成以后,配置Ubuntu默认为wsl2

# 查看
wsl --list --verbose # 设置
wsl --set-version Ubuntu 2

4. 安装ruby

在Linux下安装ruby有多种方法,比较主流的方法是RVM,不过为了简单起见,我直接通过ubuntu的apt工具进行了安装。

关于RVM的安装可参考如下网站:

通过APT安装,输入下列命令即可

sudo apt install ruby ruby-dev ri ruby-bundle

安装完成以后需要配置gem国内镜像,参考如下网址:

输入下列命令

# 设置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

6. 安装vscode wsl扩展

vscode安装完成以后,可以在plugin中找到Remote - WSL扩展,点击安装即可

7. 安装vscode ruby相关扩展

直接在plugin中搜索ruby在wsl中安装下列五个扩展即可

  • Peng Lv/Ruby
  • Castwide/Ruby Solargraph(Language Server)
  • misogi/ruby-rubocop(Lint)
  • Simple Ruby ERB
  • endwise

其中,ruby solargraphrubocop除了安装扩展,还需要通过gem安装第三方包

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即可

2. rubocop如何使用?

rubocop是一个Ruby Lint工具,可以进行Ruby代码风格检查,并能够自动修复,只需要Ctrl + Shift + P,选择Ruby: autocorrect by rubocop即可

3. 常用类型注释

ruby是动态强类型语言,由于不需要指定函数返回值类型,这导致IDE无法自动推断一些变量的类型。目前Python、PHP、TypeScript都在不断的强化类型以方便IDE进行静态检查。IDE只有在知道类型的情况下才能准确地进行智能提示。

在ruby 2当中,我们可以通过类型注释的方式增强IDE推断能力。常见的类型注释可参考YARD项目

下面代码给出了一些示例。

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
end

VSCode + WSL 2 + Ruby环境搭建详解的更多相关文章

  1. Windows GTK+ 环境搭建(详解)

    来源:http://blog.sina.com.cn/s/blog_a6fb6cc901017ygy.html Windows GTK+ 环境搭建 最近要做界面的一些东西,但是对微软提供的类库MFC不 ...

  2. Python环境搭建详解(Window平台)

    前言 Python,是一种面向对象的解释型计算机程序设计语言,是纯粹的自由软件,Python语法简洁清晰,特色是强制用空白符作为语句缩进,具有丰富和强大的库,它常被称为胶水语言. Python是一种解 ...

  3. nginx+php环境搭建详解(Linux)

    今天在内网环境下,给linux主机安装nginx+php环境,由于是内网环境,只能手动解压缩包进行安装,在这过程中我也着实遇到了一些问题(困扰了我许久),还好最后搭建环境成功了,所以写篇博客记录一下, ...

  4. Windows下的SVN环境搭建详解

    前言:最近因为要和其他人合作开发项目,所以花时间搭建了SVN的环境. 因为是初次使用SVN,对于SVN的环境搭建很不熟悉,再加上网上的教程都介绍的比较粗略,导致前前后后重做了几次. 当然最终是搭建成功 ...

  5. Vue.js 运行环境搭建详解(基于windows的手把手安装教学)及vue、node基础知识普及

    Vue.js 是一套构建用户界面的渐进式框架.他自身不是一个全能框架——只聚焦于视图层.因此它非常容易学习,非常容易与其它库或已有项目整合.在与相关工具和支持库一起使用时,Vue.js 也能完美地驱动 ...

  6. AngularJS4.0环境搭建详解--windows系统环境

    第一步:安装NodeJS 下载最新版的NodeJS并安装,安装完成后打开CMD命令行,输入以下命令: node -v 若返回类似版本号则代表NodeJS安装成功,如下: 第二部 安装npm 新版的No ...

  7. windows 64位下,React-Native环境搭建详解 (Android)

    React-Native环境搭建需要: 1.安装Java JDK 2.安装Android Studio 3.安装node.js 4.安装git 5.安装Python 2.x (注意目前不支持Pytho ...

  8. python webdriver 环境搭建详解

    学了一个月用java编写selenium driver 测试脚本,也将公司做的系统基本可用的模块做了一次自动化,虽然写的比较简陋,但是基本可用跑一遍,并用testNG生成了测试报告. 学习方式无非是: ...

  9. eclipseIDE for javaee developers 开发环境搭建详解图文

    使用eclipse真的有年头了,相信java程序员没有不知道它的,最近在给团队中新来的应届生做指导,专门讲解了一下Eclipse开发环境的搭建过程,一是帮助他们尽快的熟悉IDE的使用,二也是保证团队开 ...

随机推荐

  1. python遍历

    实现遍历: #coding=utf-8 #遍历的2种方式 import os #1.使用os.listdir(f) def traverse(f): fs = os.listdir(f) for f1 ...

  2. js 遍历删除数组

    $(function(){ var aa = [1,1,2,3,3,4,4,5]; alert(aa); for (var i = aa.length-1;i >= 0 ;i--) { if ( ...

  3. 深度学习入门: CNN与LSTM(RNN)

    1. 理解深度学习与CNN: 台湾李宏毅教授的入门视频<一天搞懂深度学习>:https://www.bilibili.com/video/av16543434/ 其中对CNN算法的矩阵卷积 ...

  4. Rocket - subsystem - CrossingWrapper

    https://mp.weixin.qq.com/s/3-MfNJDCIgOBqUbf4fuerQ 简单介绍CrossingWrapper的实现. 1. CrossesToOnlyOneClockDo ...

  5. jchdl - GSL实例 - ComplementTwo(二的补码)

    https://mp.weixin.qq.com/s/Gh2xJJvfg1SlyuayK4LRyQ   二的补码指对二进制数的所有位数整体求补.二进制运算下0,1互为补数,n位二进制数a的补数为2^n ...

  6. Linux磁盘与文件系统管理概要

    Linux磁盘与文件系统管理 硬盘组成与分区 硬盘组成 圆形的盘片(主要记录数据) 机械手臂与磁头(可读取盘片上的数据) 主轴马达,转动盘片,让机械手臂的磁头在盘片上读取数据 扇区(Sector)为最 ...

  7. UML ——六种依赖关系.md

    在UML类图中,常见的有以下几种关系: 泛化(Generalization), 实现(Realization), 关联(Association), 聚合(Aggregation), 组合(Compos ...

  8. Java实现 LeetCode 715 Range 模块(选范围)

    715. Range 模块 Range 模块是跟踪数字范围的模块.你的任务是以一种有效的方式设计和实现以下接口. addRange(int left, int right) 添加半开区间 [left, ...

  9. Java实现蓝桥杯历届试题回文数字

    历届试题 回文数字 时间限制:1.0s 内存限制:256.0MB 提交此题 问题描述 观察数字:12321,123321 都有一个共同的特征,无论从左到右读还是从右向左读,都是相同的.这样的数字叫做: ...

  10. Java实现 蓝桥杯 算法提高 三进制数位和

    算法提高 三进制数位和 时间限制:1.0s 内存限制:256.0MB 提交此题 问题描述 给定L和R,你需要对于每一个6位三进制数(允许前导零),计算其每一个数位上的数字和,设其在十进制下为S. 一个 ...