分享 Window 10 下的开发 Rails

torvaldsdb · 2016年12月10日 · 最后由 msl12 回复于 2017年04月21日 · 9549 次阅读
本帖已被管理员设置为精华贴

Guide

window 下开发需要条件

  • 首先下载虚拟机 vagrant: Vagrant 下载,Vagrant 是一个基于 Ruby 的工具,用于创建和部署虚拟化开发环境。它使用 Oracle 的开源 VirtualBox 虚拟化系统,使用 Chef 创建自动化虚拟环境。那么我们需要下载 VirtualBox
  • 然后下载 VirtualBox: VirtualBox 下载
  • 我们还需要一个命令还工具:cmdercmder 下载 cmder 很多 github 上得给的下载链接都失效了,我这个暂时是可用的
  • vagrant 封装好的 Ubuntu 镜像我们把它叫做ubuntu14.03-server-rails.box
  • 当然还有我们喜爱的编辑器sublime text 3

都下载安装好之后,我们需要配置一下 cmder

  1. 下载好cmder后,解压即可使用。只是这样使用很不方便,然后我们接着做以下操作
  2. cmder 加到环境变量:把 Cmder.exe 存放的目录添加到系统环境变量;加完之后,Win+r 一下输入 cmder,这样就可以启动 cmder
  3. 添加 cmder 到右键菜单:在命令提示符 (管理员)(A)的终端中输入Cmder.exe /REGISTER ALL,这样以后我们可以在任意文件点击鼠标右键可以看到cmder here

到此为止cmder必须的配置已经搞定

我们可以开工了。

  • 首先我们向虚拟机里面添加ubuntu14.03-server-rails.boxvagrant box add ubuntu-rails ubuntu14.03-server-rails.box,ubuntu-rails 是生成系统的名字,这里我的 cmder 已经切换到ubuntu14.03-server-rails.box所在的目录下
  • 接着在你工作的目录下进行一下操作 mkdir workspace cd workspace mkdir ubuntu-rails cd ubuntu-rails
  • 将本目录初始化化为 ubuntu 系统 vagrant init ubuntu-rails

接下来可以直接启动系统了

  • 启动系统 vagrant up
  • 登录系统 vagrant ssh 到了这一步,你就可以看到,你的系统已经不再是你的 win 系统而是你的 ubuntu 系统
D:\workspace\ubuntu-rails (master)
λ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Clearing any previously set forwarded ports...
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
    default: Adapter 1: nat
    default: Adapter 2: hostonly
==> default: Forwarding ports...
    default: 3000 (guest) => 3001 (host) (adapter 1)
    default: 22 (guest) => 2222 (host) (adapter 1)
==> default: Running 'pre-boot' VM customizations...
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...
    default: SSH address: 127.0.0.1:2222
    default: SSH username: vagrant
    default: SSH auth method: private key
==> default: Machine booted and ready!
==> default: Checking for guest additions in VM...
    default: The guest additions on this VM do not match the installed version of
    default: VirtualBox! In most cases this is fine, but in rare cases it can
    default: prevent things such as shared folders from working properly. If you see
    default: shared folder errors, please make sure the guest additions within the
    default: virtual machine match the version of VirtualBox you have installed on
    default: your host and reload your VM.
    default:
    default: Guest Additions Version: 5.0.8
    default: VirtualBox Version: 5.1
==> default: Configuring and enabling network interfaces...
==> default: Mounting shared folders...
    default: /vagrant => D:/workspace/ubuntu-rails
    default: /home/vagrant/workspace => D:/workspace/ubuntu-rails
==> default: Machine already provisioned. Run `vagrant provision` or use the `--provision`
==> default: flag to force provisioning. Provisioners marked to run always will still run.

D:\workspace\ubuntu-rails (master)
λ vagrant ssh
Welcome to Ubuntu 14.04.3 LTS (GNU/Linux 3.19.0-25-generic x86_64)

 * Documentation:  https://help.ubuntu.com/

  System information as of Sat Dec 10 18:56:48 CST 2016

  System load:  0.74              Processes:           88
  Usage of /:   34.1% of 6.76GB   Users logged in:     0
  Memory usage: 9%                IP address for eth0: 10.0.2.15
  Swap usage:   0%                IP address for eth1: 192.168.33.10

  Graph this data and manage this system at:
    https://landscape.canonical.com/

179 packages can be updated.
126 updates are security updates.

New release '16.04.1 LTS' available.
Run 'do-release-upgrade' to upgrade to it.

Last login: Sat Dec 10 16:33:37 2016 from 10.0.2.2
vagrant@ubuntu:~$ ls
workspace
vagrant@ubuntu:~$ cd workspace/myblog/
vagrant@ubuntu:~/workspace/myblog$ rails s
=> Booting WEBrick
=> Rails 4.2.4 application starting in development on http://localhost:3000
=> Run `rails server -h` for more startup options
=> Ctrl-C to shutdown server
[2016-12-10 18:58:40] INFO  WEBrick 1.3.1
[2016-12-10 18:58:40] INFO  ruby 2.2.1 (2015-02-26) [x86_64-linux]
[2016-12-10 18:58:40] INFO  WEBrick::HTTPServer#start: pid=2699 port=3000

这样我们的项目就跑起来了,不过这样跑起来,浏览器并不能与我们的服务互动。我们需要一点小操作:

我们在启动服务的时候,不要用 localhost 这个主机

我们需要指定主机 rails s -b 0.0.0.0

这样服务跑起来是:

vagrant@ubuntu:~/workspace/myblog$ rails s -b 0.0.0.0
=> Booting WEBrick
=> Rails 4.2.4 application starting in development on http://0.0.0.0:3000
=> Run `rails server -h` for more startup options
=> Ctrl-C to shutdown server
[2016-12-10 19:05:06] INFO  WEBrick 1.3.1
[2016-12-10 19:05:06] INFO  ruby 2.2.1 (2015-02-26) [x86_64-linux]
[2016-12-10 19:05:06] INFO  WEBrick::HTTPServer#start: pid=2710 port=3000

然后我们可以在我们 windows 下的浏览器中访问我们的服务了 http://localhost:3001

特别☆强调

浏览器访问的时候用的端口是:3001 上面vagrant up启动虚拟机的时候已经告知:

==> default: Forwarding ports...
    default: 3000 (guest) => 3001 (host) (adapter 1)
    default: 22 (guest) => 2222 (host) (adapter 1)

温馨提示

  • 在 cmder 中切换 windows 下路径可以 cd .. 不过如果更换根目录的时候需要类似 cd /d D:\download这个/d不可省略,或者用pushd D:\download

  • 下载好了sublime text 3之后我们需要实现 subl .启动文件的功能

  • 打开 Cmder 安装目录下的 config 文件夹下的 aliases 文件。

  • 在 aliases 中增加一行,添加别名。 subl="D:\PROGRA~1\sublimeText3\sublime_text.exe"

如果你的屏幕足够大或者你分辨率足够高你可以选择 subl="D:\PROGRA~1\sublimeText3\sublime_text.exe" $1 -new_console:s50H这样你左边是终端,右边是 sublime

这样你已经可以很舒服地在 windows 下开发了,还有一些小细节,可以参考相关文献

未解决的问题

第一次用这个 windows 下的 sublime,全局搜索快捷键ctrl + shift + f,无法使用

学习了 这种应该比 linux on windows 快

我用的 linux on windows 新的感觉不错,除了 IO 速度慢的一坨。

配合好看的终端工具不错。

Docker on windows 也很强大

等明年春季的 Creator Update,利用 WSL 做 Ruby 开发,应该没啥问题了,添加了目前缺失的 syscall 支持还有升级 Ubuntu User land 到 16.04

jasl 将本帖设为了精华贴。 12月11日 02:38

加个精吧,方便用 Windows 的人,不过还是看好 WSL 的成熟~

另外推荐一个 Terminal 叫 MobaXTerm,这个是我在 Win 下用过最强大的 Terminal 了,比 Cmder 要好用很多(当然也复杂了很多...),缺点就是启动速度慢

vagrant 用 ubuntu 原版镜像就行了,改版不知加了什么料。

Spring 开始依赖文件系统的事件,对原生系统是好事,对虚拟机不友好,会出现文件修改应用不自动更新,我不得已放弃虚拟机了。

期待 Ubuntu on Windows 实用起来,gorails 有个教程 https://gorails.com/setup/windows/10

有没有人试过 Windows + Jruby 开发 ?

不错,相当于运行环境在 ubuntu,编辑在 win

ctrl + shift + f 应该是和搜狗输入法的简体\繁体切换快捷键冲突了

#8 楼 @dami_2015 哇哦,我回去看了一下,这么多是……Thq soooo much.

win 下也可以用 aptanaStudio,是一个 eclipse 的扩展。也能应付 win 下的开发。

这...我还以为是原生开发经验贴,想进来学习学习,结果点开一看虚拟机...

12 楼 已删除

收藏一下 这个真的好 哈哈

哈哈。怎么不用 ubundows?

为了 ruby,我入了 macbookpro2016

我想请教的是 vagrant ssh 你是怎么链接的

#16 楼 @hammer vagrant up 把虚拟机启动后,vagrant ssh远程已启动的虚拟机

端口是可以在 vagrant 设置转发的吧😏

#17 楼 @torvaldsdb windows 默认没有 ssh 的啊,我本地是不能直接连接的,用 git-for-win 提供的 ssh.exe 也不可以。

Putty 用 vagrant 生成的 key 也不能连接,提示生成的密钥格式不一样。

密钥格式有 IETF OpenSSH PuTTYgen ... Putty 转换了一阵也是不行。

vagrant ssh 我连不上啊

而且如果设置了 Vagrant 跟宿主机 文件同步,在宿主机用 sublime 修改文件,Guard 是监控不到的的,因为 Guard 需要用到 linux inotify 通知。

也可能我的测试架构是个奇葩

这个坑弄惨我了 😿

#21 楼 @hammer 现在 spring 也监控不到,无法自动更新。

期待有人测试一下 Ruby on Rails on Ubuntu on Windows 的开发体验。

#20 楼 @hammer 下载 cmder,就可以在 win 系统下使用 unix 命令行了……

#22 楼 @Rei 感觉应该从里往外挂,走个 sshfs 啥的,别从外往里挂了

无论怎么折腾只要用到 virtualbox 来跑开发环境 IO 就是个问题

有啥用。。。

windows10 用 Docker 也不错,有 Docker for windows

#25 楼 @heimirror 会用 vim 的话可以不用共享目录,vboxsf 共享文件系统的速度的确是个坑。上回我手贱在共享目录下跑了 npm install,根本跑不完╮(╯_╰)╭

Docker for Windows 坑也挺多的,例如可执行文件的属性没有啦,git clone 回来的换行符被转了啊之类的

#29 楼 @luikore 确实 docker-machine 更好,更稳定

这篇文章和我的思路一样,不过我的思路更糙快猛一些:开一个虚拟机,共享文件系统,在里面建立 Rails 项目,Windows 里一个 subl 加一个 putty 就能做开发、调试。

至于 WSL,在刚出的时候我就尝试过新建并运行 Rails 项目,遇到了很多导致失败的原因;后来社区有修复,但还有一部分原因是 WSL 自身造成的,所以问题依旧;随着时间我相信 WSL 会越来越好,但显然,在 Rails in WSL 的道路上还有非常多的坑要踩。

新手真的不建议用 windows 开发,除非你是技术大牛,在开发过程中会有很多很多莫名其妙的问题别人没遇到过

😁 😁 ubuntu14.03-server-rails.box 开眼界了~

新手不建议用 windows 开发 rails +1

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