将jruby on rails 开发的应用部署到tomcat

环境说明

  • windows XP
  • jdk 6u12
  • jruby 1.2.0
  • rails 2.2.2
  • netbeans 6.5.1
  • tomcat 5.5
  • mysql 5

升级到jruby 1.2.0

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打包项目

下面进入正题

首先你得安装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,那就在里面添加

Ruby代码   收藏代码
  1. config.gem  'mislav-will_paginate':version  =>  '~> 2.3.8':lib  =>  'will_paginate' ,   :source  =>  'http://gems.github.com'   
config.gem 'mislav-will_paginate', :version => '~> 2.3.8', :lib => 'will_paginate',  :source => 'http://gems.github.com'

 

下面在命令行下进入项目目录,执行命令

Ruby代码   收藏代码
  1. jruby -S warble config   
jruby -S warble config 

 
在config目录下面会生成一个warble.rb的文件,打开修改它,取消这样一行的注释

Ruby代码   收藏代码
  1. config.gems = [ "activerecord-jdbc-adapter""jruby-openssl" ]   
config.gems = ["activerecord-jdbc-adapter", "jruby-openssl"] 

 

最后仍然在项目目录下执行命令

Ruby代码   收藏代码
  1. jruby -S warble war   
jruby -S warble war 

 
于是一个war文件将会出现在项目根目录下,将它放到tomcat的webapps下面就行了,大功告成!

 

 特别提醒 :由于jruby中存在一个BUG,导致最后一步命令在window下执行时会报这样一个错

Ruby代码   收藏代码
  1. private method `split' called  for   nil : NilClass   
  2. Q:/app/codehaus/jruby_1_2_0/lib/ruby/gems/1.8/gems/rake-0.8.4/lib/rake/repaired_system.rb:109:in  `find_runnable'  
  3. (See full trace by running task with --trace)  
private method `split' called for nil:NilClass
Q:/app/codehaus/jruby_1_2_0/lib/ruby/gems/1.8/gems/rake-0.8.4/lib/rake/repaired_system.rb:109:in `find_runnable'
(See full trace by running task with --trace)

 这个BUG的原因可以参见这里http://jira.codehaus.org/browse/JRUBY-3598

简单的说是jruby在windows下执行ENV["PATH"]时无法取得path环境变量,而只有通过ENV["Path"]才能正确获取

那么解决方法就是自己手动修改rake下面的repaired_system.rb文件,将109行里面的PATH改为Path,或者在上面添加一行

Ruby代码   收藏代码
  1. ENV[ "PATH" ]=“你的PATH环境变量” 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值