Ruby ruby 学习环境搭建(wsl+ubuntu+ruby+rubymine+debug)

wanxd · 2022年08月16日 · 最后由 n5ken 回复于 2022年08月28日 · 543 次阅读

ruby 学习环境搭建(wsl+ubuntu+ruby+rubymine+debug)

之前纠结在 windows 10 安装 ruby 需要的环境,哎,各种坑,比如 mysql2 的安装,找了很多解决文章,综合后解决了。结果又遇到问题了,那一刻我知道我错了。我打算自己装一个虚拟机,装 linux 环境。而就在这个时候发现原来 wsl 比虚拟机更加便利。所以方向就以 wsl 虚拟机为方向去搭建。

  • wsl 安装 Ubuntu

    安装方式参考官方:wsl 安装

    • 默认安装的是 Ubuntu,而且还是 C 盘,最好是迁移到其它盘:网上查询下就能找到:wsl ubuntu 迁移
    • Ubuntu 换源:网上也可以找到,建议阿里云,不是清华的那个。换源
    • 涉及到 vim 编辑器常用命令,网上可以找下:基本命令 dd 删除所有文本,i 进行编辑摸索 ,拷贝源进入 source.list ,然后 esc 命令,:wq 保存。
    • rbenv 安装 ruby,rails 等

参考文章:ubuntu 安装 rbenv,其中 sudo apt install autoconf bison build-essential libssl-dev libyaml-dev libreadline6-dev zlib1g-dev libncurses5-dev libffi-dev libgdbm5 libgdbm-dev 该命令执行的时候,好像是它们两个的其中一个 libgdbm5 libncurses5-dev 执行失败,按照提示可以把报错的一个 5 版本弄成 6 就可以了。

  • 宿主机安装 ide(rubymine,vscode)

rubymine 是安装在宿主机,也就是 windows10 的,当然也可以使用 vscode,都是 windows 安装。只是 vscode 需要单独安装 remote-wsl 插件。ruby mine 自带的

  • wsl Ubuntu 是可以访问其它盘符的 /mnt/c,/mnt/d,/mnt/e 这些就是 windows 里面的,它们可以相互访问的。意味着到时候你在 windows 的 ide 编辑文件,服务在 wsl ubuntu 里面跑起来。

  • rubymine debug wsl

    • setting ---》Ruby SDK and Gems
    • + 新增 new remote,wsl
    • 重点注意:ruby or version manager path 这个位置,看意思就是知道是 ruby 的路径或者管理 ruby 第三方的路径。我本地的第三方管理是这个:/root/.rbenv/bin/rbenv 一般还会弹出一个下拉框,就是 ruby 的版本(如果你安装了多个 ruby 版本的话)。
    • 最后就是在当前弹框,Ruby SDK and Gems,+ - 后面的 第三个按钮,edit path mappings 观察下,windows 和 wsl 里面的项目路径是否对的上,一般是需不需要修改的,都对的上。
    • 最后就是点击 debug 按钮,项目跑起来了。然后就可以进行 debug
  • wsl 安装 docker

    可以参考:安装 docker

    我 windows 宿主机也按照了最新的 docker,而且利用的是 wsl 启动的。等 wsl 安装 docker 后我发现原来 wsl 里面用的还是外面宿主机的 docker

wsl 的前方可是地狱啊,至今不知道如何解决连接本机 clash 或 v2ray 开放的代理端口 proxy 问题 https://github.com/microsoft/WSL/issues/5211

Tanatos 回复

在 WSL2 里装一个命令行客户端即可

FrankFang 回复

不需要这么复杂,直接用宿主机的 ip 地址即可,在 zshrc 中加一段脚本设置代理地址

host_ip=`tail -1 /etc/resolv.conf | cut -d' ' -f 2`
export ALL_PROXY=$host_ip:7890
Tanatos 回复

哎,之前还没有遇到这个问题,只是简单的测试语法,现在刚好遇到 wsl 里面的 ruby 应用去调用 windows 里面的项目,就遇到你说的这个坑了,试了好多都没有用,采用了终极办法,关闭所有防火墙,三个都关闭,局域网,专用网,公用网络。就好了。wsl 就可以访问 windows 里面的项目了。😂

v2 需要在设置里面打开允许局域网连接,端口换成 10811,还是写成自由切换的函数比较好,默认不开启

proxy_on() {
  host_ip=$(cat /etc/resolv.conf | grep nameserver | awk '{ print $2 }')
  export http_proxy="http://${host_ip}:10811"
  export https_proxy="http://${host_ip}:10811"
}

proxy_off() {
  unset http_proxy
  unset https_proxy
}

感谢楼主的贴子让我一时兴起从 VSCode Remote + Virtualbox 虚拟机的方案切到了 WSL2 + RubyMine。

Mac + VSCode + Docker = Yummy!

需要 登录 后方可回复, 如果你还没有账号请 注册新账号