2010-07-20 59 views
0

我正试图在rails应用上部署jruby。在rails应用上部署jruby

现在我正在使用mod_proxy的反向代理运行mongrel + Apache2。但是,因为mongrel_jcluster不能用于最新版本的jruby,所以我只能运行一台mongrel服务器,并且无法利用apache2的负载平衡。

有没有其他方法可以创建杂种群集?我真的很喜欢mongrel cluster + apache2到一个java servlet类型系统。

我已经试过码头这里使用说明:http://jetty-rails.rubyforge.org/

,但启动时的码头服务器,即使我在JRuby和其检查了我的ActiveRecord-jdbcmysql适配器宝石版本,我得到以下错误那里和版本0.9.7

DEPRECATION WARNING: require "activesupport" is deprecated and will be removed in Rails 3. Use require "active_support" instead. (called from /home/andrew/.gem/jruby/1.8/gems/activesupport-2.3.8/lib/activesupport.rb:2) 
2010-07-20 17:00:46.820::INFO: Logging to STDERR via org.mortbay.log.StdErrLog 
Starting server 3000 
2010-07-20 17:00:47.134::INFO: jetty-6.1.14 
2010-07-20 17:01:03.511:/:INFO: Info: using runtime pool timeout of 30 seconds 
2010-07-20 17:01:03.511:/:INFO: Info: received min runtimes = 1 
2010-07-20 17:01:03.511:/:INFO: Info: received max runtimes = 5 
Loading parser from serialized file lib/stanford-parser/englishPCFG.ser.gz ... done [4.6 sec]. 
2010-07-20 17:01:14.341:/:WARN: Error: unable to initialize application 
org.jruby.rack.RackInitializationException: Please install the jdbcmysql adapter: `gem install activerecord-jdbcmysql-adapter` (no such file to load -- active_record/connection_adapters/jdbcmysql_adapter) 

任何意见,将不胜感激,谢谢!

编辑:我不知道这是否有差别,但我可以告诉大家,它崩溃之前,jetty_rails成功加载在environment.rb中声明的全局变量

编辑:这里是jruby -S gem list --local

*** LOCAL GEMS *** 

actionmailer (2.3.8) 
actionpack (2.3.8) 
activerecord (2.3.8) 
activerecord-jdbc-adapter (0.9.7) 
activerecord-jdbcmysql-adapter (0.9.7) 
activeresource (2.3.8) 
activesupport (2.3.8) 
builder (2.1.2) 
gem_plugin (0.2.3) 
jdbc-mysql (5.0.4) 
jetty-rails (0.8.1) 
jruby-jars (1.5.1) 
jruby-openssl (0.7) 
jruby-rack (1.0.1) 
mizuno (0.3.6) 
mongrel (1.1.5) 
rack (1.1.0) 
rails (2.3.8) 
rake (0.8.7) 
rubyzip (0.9.4) 
sources (0.0.1) 
warbler (1.1.0) 

回答

1

也许你正在多个Ruby解释器(通过RVM或手动)之间切换,我完全宝石名单。确保 你有2.3.8 gems for rails,它的依赖关系是使用Jruby运行“gem list”。

如果您没有Jruby下的宝石,请运行“gem install -v = 2.3.8 rails”。 您可以通过运行“rake rails:freeze:gems”来打包项目树中的rails gems。

+0

我确实有jruby下的宝石,jruby -S gem list --local给了我一个宝石列表,他们有正确的版本,但是码头没有找到它们。冻结rails gem修正了确切的错误,但是我首先得到了机架的相同错误,我通过卸载并重新安装gem解决了这个问题,现在我解决了activerecord-jdbcmysql-adapter问题(尝试卸载并重新安装,以及冷冻,冻结只是没有工作) – Andrew 2010-07-20 23:58:14

1

我知道的唯一可能的答案是系统上有两个红宝石解释器,而被码头环境拾取的解释器缺少宝石。 ruby -v会给你一个不同于jruby -v的答案吗?

这就是说,你有没有一个原因,你不想使用warble和部署到Jetty或Tomcat的战争?我觉得这很好。

+0

我认为这可能是一个问题,所以在我发布这个问题之前我卸载了ruby,所以ruby -v给我'ruby目前未安装' while jruby -v给我 jruby 1.4.0(ruby 1.8.7 patchlevel 174)(2010-02-11 6586)(Java HotSpot(TM)Client VM 1.6.0_20)[i386-java] – Andrew 2010-07-21 00:31:58