(第一篇:http://jeff312.iteye.com/admin/b
logs/1179889)
第一篇的实验, 到后来居然又跑不起来active-record, 经调查原因可能是mysql 5.1 的libmysql.dll 不兼容, 需要用5.0的
版本, 或者本地编译, 总之, 让我不胜其烦. 最终决定不再用windows来搞ruby, 反正我还有macbook pro, 谁怕谁啊.
macosx是类unix系统, 安装ruby和gem可以像linux一样用rvm(Ruby Version Manager), 不仅简单顺利, 还可以非常方便地同时安装多个ruby版本, 且各版本都拥有独立的一套gem. 到rvm的官网上下载并按说明安装一路顺利, 完成后"rvm"就可以作为系统命令来使用了. 请注意整个过程尽量不要用sudo, 否则权限会乱, 不好管理.
接下来, 首先安装ruby:
rvm install 1.9.2
rvm install 1.8.7
rvm install ...
需要说明的是, osx本身就预装了ruby的, 本人刚升级到lion, ruby版本是1.8.7, 但是多数人都不建议直接用osx的自带ruby搞开发, 所以如需要ruby1.8.7, 最好还是在rvm里新装一个. 安装rvm和ruby期间, 有可能出现'make'相关的
错误, 这主要是xcode没有安装或版本跟系统不兼容引起的(比如, 我从snow leopard
在线升级到lion之后,没有更新xcode), 如果系统是lion, 则最好升级到xcode 4.x, 在线安装就可以, 免费的.
接下来是安装gem. 我们知道, rvm下可以有多个ruby版本,而你可以为每个ruby版本安装不同的gem, 所以在安装gem之前, 我们必须先指定这个gem将装在哪个版本上:
rvm use 1.9.2
这样, 接下来的gem安装就会在ruby1.9.2上进行而不会影响到1.8.7或其它版本包括系统ruby. 在以上命令中可以添加 --default 参数, 这样这个use的版本将被作为系统默认ruby来工作(其实没必要). 现在可以装gem了,首先当然是rails:
rvm gem install rails
在写这篇文章的这段时间, 如果不指定-v参数, 则默认会安装最新的3.1版的rails. 很多人在osx下面会在这个命令执行后遇到 file 'lib' not found 的错误, 由于所有的相关依赖gem都正确地装上了, 我倒觉得没什么, 但如果实在不喜欢这些错误信息, 那么改用:
rvm gemset install rails
也是可以的, 并且这个安装不会看到错误信息(天知道是不是自欺欺人).
我在mac上安装的数据库是mysql, 所以为了让active record工作, mysql2 这个gem也是要装的, 最简单的命令是:
rvm gem install mysql2
当前默认的版本是0.3.7(想起windows来了, 在第一篇文章中, mysql2的0.3.x的win32版本全都不能用). 不过, 由于mysql2需要用到mysql的一些库, 而多数情况下它也找不到mysql的库目录, 这使得将来启动server的时候, 可能会出现:
Reason: image not found - /Library/Ruby/Gems/1.9/gems/mysql2-0.3.7/lib/mysql2/mysql2.bundle
这类错误. 因此, 我们可以在安装mysql2的时候, 指定 --with--mysql--lib 参数, 用于指定mysql的 lib/ 目录. 如果你像我一样, 不幸没有指定这个目录, 有一个解决办法就是:
install_name_tool -change libmysqlclient.16.dylib /usr/local/mysql/lib/libmysqlclient.16.dylib ~/.rvm/gems/ruby-1.9.2-p290/gems/mysql2-0.3.7/lib/mysql2/mysql2.bundle
以上命令中的数字是不一定的, 要根据你得到的错误信息来调整.
好了, 终于可以开始写点代码了, ide我选的是rubymine(of course cracked), 每新建一个项目都会询问你选择哪个ruby版本来开发, 很好很强大, eclipse啥时候能有这功能, 动态选择jvm...
------------------ 临时分割线 --------------------
由于macbook经常被老婆征用,台式电脑还得接着用,于是在win7之外又装了个ubuntu-11-x64,并随手搭建RoR环境,所以这里补充一点linux下的注意事项. 在我的ubuntu 11 下, 装完rvm 并装上ruby后, 如果马上就试图安装rails:
rvm gemset install rails
可能会遇到'no such file to load --zlib' 的错误. 这种情况下, 首先要安装zlib:
rvm pkg install zlib
(有的rvm版本pkg要写成pakcage), 然后重装ruby和rails:
rvm remove 1.9.2
rvm install 1.9.2
rvm use 1.9.2
rvm gemset install rails
在osx下出现的libmysqlclient错误,在ubuntu下只需要apt-get补充安装这个类库即可:
sudo apt-get install libmysqlclient-dev
这样装好后再安装mysql2,连--with--mysql-xxx这些参数都可以省略了。
由于我的ubuntu是为玩RoR匆忙装上的,所以经常遇到缺少某库某库的错误,比如,此时我直接到项目目录下运行:
rails server
就遇到了 `autodetect': Could not find a JavaScript runtime. 这样的错误,该死的后面误导我去安装execjs,好吧我装:
rvm gem install execjs
安装顺利,但是错误依旧,还是说找不到js运行库,建议我安装execjs,罢了,google一下后
发现所谓缺少的js运行库是os级别的,ruby装在gem里面的不算数,于是:
sudo apt-get install nodejs
ok,终于把WEBrick跑起来了。