将jruby on rails 开发的应用部署到tomcat
2011-05-22 16:53
260 查看
环境说明
windows XPjdk 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,而jruby1.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上一篇文章来做,不过过程较为不同/article/7476075.html
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代码
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代码
jruby -S warble config
jruby -S warble config
在config目录下面会生成一个warble.rb的文件,打开修改它,取消这样一行的注释
Ruby代码
config.gems = [
"activerecord-jdbc-adapter"
,
"jruby-openssl"
]
config.gems = ["activerecord-jdbc-adapter", "jruby-openssl"]
最后仍然在项目目录下执行命令
Ruby代码
jruby -S warble war
jruby -S warble war
于是一个war文件将会出现在项目根目录下,将它放到tomcat的webapps下面就行了,大功告成!
特别提醒
:由于jruby中存在一个BUG,导致最后一步命令在window下执行时会报这样一个错
Ruby代码
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)
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代码
ENV[
"PATH"
]=“你的PATH环境变量”
相关文章推荐
- Myeclipse8.6+maven3+tomcat6开发加远程部署应用
- 抛弃LCDS和FMS,在tomcat下开发Red5应用(第一篇)-将Red5部署到tomcat中
- 使用jBPM开发企业流程应用之在Tomcat上部署流程引擎及控制台
- web应用从开发环境自动部署至tomcat的方法
- 使用jBPM开发企业流程应用之在Tomcat上部署流程引擎及控制台
- Spring构建Web应用部署至Tomcat开发过程中的数据编码问题
- jBPM开发企业流程应用之在Tomcat上部署流程引擎及控制台
- 企业级搜索应用服务器Solr4.10.4部署开发详解(2)- Solr使用-创建集合表、存储、查询
- Tomcat中部署web应用的三种方式
- IDEA开发工具中添加Tomcat并部署项目
- J2EE 定义一个Tomcat中webapps以外的部署应用的Context
- 在tomcat部署iOS应用发布
- eclipse中项目名称修改后部署到tomcat中应用名称仍然是旧的
- 更改Eclipse中使用Tomcat测试应用时的部署目录
- 如何在tomcat部署应用
- 仿Tomcat应用隔离机制开发Openfire插件隔离功能笔记
- Shell脚本--自动部署tomcat应用服务
- 在云计算资源池上自动部署业务应用的大数据平台组件开发实战
- Tomcat部署JSP网站(部署web应用?)
- 部署在tomcat webapps相应的应用目录下的文件被自动清除