jruby采用的版本并非netbeans自带的1.1.4,原因是rails 2.2.2需要gem版本为1.3,而jruby 1.1.4自带的gem版本是1.2,虽然之前我的第一篇文章里面介绍了如何将jruby gem版本升级,但是在部署的时候总是不成功,系统仍然认为gem版本为1.2,无奈之下只好采用jruby 1.2.0,下载链接http://jruby.codehaus.org/
netbeans里面可以很方便的添加和切换ruby平台,只需要你手工指定新的1.2.0的jruby.bat文件就行了
不过这下就得为jruby 1.2.0 重新安装所有的gem了,其中快速调试器的安装比较特殊,这里说明下
目前netbeans还不支持自动为jruby安装快速调试器,得自己动手,有篇wiki介绍了如何安装
http://wiki.netbeans.org/RubyDebugging
大致步骤如下:
首先下载ruby-debug-base-0.10.3.1-java.gem
然后在命令行下安装
jruby -S gem install -l ruby-debug-base-0.10.3.1-java.gem
最后安装debug ide
jruby -S gem install --ignore-dependencies -v 0.3.4 ruby-debug-ide
注意debug-ide的版本号,据我试验0.3.1也是可以用的,netbeans里面自带的就是0.3.1,而更高的0.4的不能用
下面进入正题
首先你得安装warbler这个gem,这个在建立项目的时候就有提示
然后我参考了JE上一篇文章来做,不过过程较为不同http://chengj.iteye.com/blog/184479
activerecord-jdbc-adapter 这个gem是一定要装的,而activerecord-jdbcmysql-adapter 我没装也仍然打包成功(我的项目里面采用的是JDBC方式连接数据库)
项目中所有用到的jar包都要放到lib根目录下,包括项目中自带的那个mysql-connector-java-5.1.6-bin.jar
(写到这里时我突然想到:也许安装了activerecord-jdbcmysql-adapter 之后就可以不用引这个jar包了?)
修改enviroment.rb文件,将项目引用到的第三方gem写进去,例如我的项目使用了mislav-will_page,那就在里面添加
下面在命令行下进入项目目录,执行命令
在config目录下面会生成一个warble.rb的文件,打开修改它,取消这样一行的注释
最后仍然在项目目录下执行命令
于是一个war文件将会出现在项目根目录下,将它放到tomcat的webapps下面就行了,大功告成!
特别提醒 :由于jruby中存在一个BUG,导致最后一步命令在window下执行时会报这样一个错
这个BUG的原因可以参见这里http://jira.codehaus.org/browse/JRUBY-3598
简单的说是jruby在windows下执行ENV["PATH"]时无法取得path环境变量,而只有通过ENV["Path"]才能正确获取
那么解决方法就是自己手动修改rake下面的repaired_system.rb文件,将109行里面的PATH改为Path,或者在上面添加一行