Ruby on Rails 初学手记 (一)
近期公司Java项目彻底宣告失败,没了工期的压力和牵挂,有了很多闲暇来研究一些期待已久却无暇涉及的技术,RoR就是其中一个。由于公司的电脑始终有好几个gem安装不成,干脆决定白天在公司了解Grails,晚上回家学习RoR(反正都是rails,齐头并进也很好),没有任务压力,倒也自得其乐。
我的电脑是Win7x64的系统,安装rails毛病何其多也,即使有了包括ruby,rails,DevKit一体的RailsInstaller(Ruby1.92+Rails3.1),仍有一些核心gem版本跟不上的问题。
第一个是mysql2,最新的版本是0.3.7,如默认参数安装:
gem install mysql2
,就会是这个版本。但经试验,所有0.3.x的版本目前在win32的驱动上都有问题,至少在我的机器上无法安装,即使加上诸多with-mysql的参数也不行。换成0.2.6:
gem install mysql2 -v 0.2.6
之后才装成了。接下来mysql2安装好了,server却还是run不起来。经google发现我的mysql5.5-x64的lib尚未被0.2.6支持(猜想0.3.x的版本是支持的,只可惜在win上搞不成),于是把mysql5.1-x86安装包中的libmysql.dll拷贝到ruby的bin目录下,并重新安装mysql20.2.6。终于,在项目目录下运行
rails server
命令后,默认服务器WEBrick跑起来了……。当然之后还有一些曲折,比如新创建的view无法访问,无论怎么改routes.rb都无效,经简单思考,把默认的view的相关文件删除后便ok了。
第二个是mongrel。很多人不喜欢Ruby默认的WEBrick,用mongrel的人好像比较多,robin似乎比较推荐lightTPD。作为rails初学者,我也暂时不想管那么多,既然mongrel比较流行那我也试试看。首先用最简单的方式,在GemFiles里添加
gem 'mongrel'
之后在项目目录下运行:
bundle install
结果是成功安装了mongrel1.1.5(作为最新的正式发行版本),但是在启动的时候爆出一个“msvcrt-ruby18.dllwasnotfound”的windows错误,看来这个1.1.5的mongrel尚未支持高于1.8的Ruby。以这个错误信息在stackoverflow上搜索,发现下面workaround:
http://stackoverflow.com/questions/3250406/msvcrt-ruby18-dll-was-not-found-with-ruby
按照网页中的提示,我卸载mongrel-1.1.5并成功安装了mongrelpre版本1.2.0,这个是支持Ruby1.9x的。但是再次运行
mongrel_rails start
却仍提示缺少mongrel-1.1.5。怎么办呢,呵呵,说来简单,我重装1.1.5之后,再跑到gem的目录去,用1.2.0pre的内容去替换1.1.5目录下的文件,哈,这下mongrel真正跑起来了!
感想:在win下面搞RoR的环境真的是很辛苦,而且由于其需要DevKit帮你搞cygwin这种模拟unix环境,做很多事情都极慢且易出错。罢了罢了,玩玩而已,真要上RoR,看来非OSX、linux不可。