rails3项目解析之五——rails on windows
rails3项目解析之5——rails on windows上一篇:rails3项目解析之4——异步和定时任务序:本来不想写这篇,我知道
rails3项目解析之5——rails on windows
上一篇:rails3项目解析之4——异步和定时任务
序:本来不想写这篇,我知道在rails界,大家一直都是很鄙视在windows上做rails的象我一样的开发者。但是这几天连续看到仍然有人在不停地发帖询问rails on windows的问题。这个解决方案我已经在本系列第2篇末尾简单地写了一段,估计看到的人不多。所以我就干脆给扩成一篇,可能会让一些人少走些弯路,顺便也给我的系列充个数。ubuntu和mac上做开发的就不用看了。谨以此篇,献给仍然工作在windows上的被鄙视者。在本篇被成功投隐之前,请尽快观看。
我天朝(面对北京方向,抱拳拱手)泱泱大国,以诚信为本。在目前的环境下,windows确实是最流行最好用最容易和别人沟通的操作系统。如果有人和我一样,除了开发rails,还需要写doc、ppt并且要和别人互通有无,需要用太多只能跑在win甚至IE上的网银来付款划账,需要在开发之余玩玩CS等游戏,需要安装个最新版的QQ跟美女打情骂俏,尤其是,多年来的使用习惯确实不想更换。那么恭喜你,你不要听他们让你安装ubuntu、买个macbook、再装个虚拟机的诸多建议。那是他们霸权主义的个别人亡我之心不死,纯粹是不负责任无中生有空穴来风别有用心的恶毒攻击,在向他们表示不满抗议强烈谴责严正交涉并深表遗憾之余,接着情绪稳定地用你的windows好了。大不了花点精力多配置一下。
我的环境:windows 7 sp1 32bit ultimate 英文版(我正版我脚傲),XP也差不多。server系列没用过,请自行摸石头过河。
1、ruby和编译环境
请访问一个不存在的网站 rubyinstaller.org,下载上面的ruby-1.8或ruby-1.9的7-zip压缩包和devkit。
1.1 ruby安装很简单,解压7-zip,放置到你自己喜欢的目录,如D:/xxx/ruby,在系统环境变量的path中,添加“D:/xxx/ruby/bin”,使得ruby环境可用。
1.2 安装devkit。按照rubyinstaller上的安装说明,两三个命令之后,即可安装完毕。
2、基础组件和服务
2.1 mysql,去mysql官网下载windows版的,安装或直接解压,即可。
安装完mysql后,进入D:/xxx/ruby/bin,运行命令建立符号连接:
5、速度速度可能是rails on windows的永远的痛。随便敲一个rake命令都得按分钟来计算。启动服务也是一样。我也专门拿出一天的时间去找过国外的社区,看他们有没有解决方案。结果很遗憾,除了一大堆人在那里狂喊sooooooo slowwwwwwww之外,仍然没有根本的解决办法。我也在rails启动的每一个环节都加了timer,想看看到底是哪儿造成了速度的瓶颈,最后得出结论是,所有只要涉及到ruby代码的地方,都是瓶颈。fast_require也试过了,暂时还有很多问题,放弃。我甚至把所有的rails开发环境都放到了一个ramdisk上,速度仍然没有改观,于是我就相信了这个奇迹。
不过,rake命令并不是天天运行,rails s也不会时常重新再来一次,rails c有reload!,可以解决大部分问题。最后就只剩下一个,rspec测试。如果每次跑rspec都要一两分钟,我肯定就格式化windows,装ubuntu了。
还好,我们仍然有spork。
spork跑一个drb服务,预先加载好环境,rspec的时候会去调用它,spork默认会起两个provider,每跑一个rspec命令就会消耗一个,被消耗的那个provider会马上重新启动。这样的话,跑完一个rspec会有发现错误并修改的时间,而且在此期间你还有另一个provider可用,于是,这最后困扰我们的问题也解决了。经实际使用,每个rspec命令的预加载时间也就是几秒钟,和其它平台在一个数量级上,完全可以承受。
还有一个小问题,如果你用了spork,同时又用了factory_girl_rails,那就会造成model和factory的preload,导致你对model和factory的修改不会立即生效。在官方没有推出解决方案之前,可以在Gemfile中对factory_girl_rails加入:require => false,然后在Spork.each_run里require 'factory_girl_rails',即可搞定。
6、缺点除了上面提到的控制台乱码,还有SystemTimer,最大的缺点就是慢,对于那些无可逃避的慢,就只能稍等一会了。好在我们无论谁在上班的时候都会开着QQ,听着音乐,吃着火锅还唱着歌,也不会在乎在速度上一天多浪费的这几分十几分钟。何况你也可以趁此机会休息一下,照顾一下QQ上弹出的无数窗口。记得有同事在ubuntu上专门安装了个小插件每隔一段时间就锁屏提示休息几分钟,如果他用windows,完全就可以节省下这个插件了。
想要享用windows带来的其它便利,肯定就要忍受随之而来的诸多不便。收之桑榆必会失之东隅,这是亘古不变的人生哲理。世上永远不存在完美,我想这个道理在你刻骨铭心的初恋情人离你远去的那一刻,你就应该明白了。