简体   繁体   English

在Rails应用程序上部署jruby

[英]deployment for jruby on rails app

I am trying to deploy a jruby on rails application. 我正在尝试在Rails应用程序上部署一个jruby。

Right now I am running mongrel + Apache2 using reverse proxy from mod_proxy. 现在,我正在使用来自mod_proxy的反向代理运行mongrel + Apache2。 However, because mongrel_jcluster does not work for the latest versions of jruby, I am only able to run one mongrel server, and cant take advantage of load balancing from apache2. 但是,由于mongrel_jcluster不适用于最新版本的jruby,因此我只能运行一个mongrel服务器,并且无法利用apache2的负载平衡功能。

Is there any way other way to create a mongrel cluster? 还有其他方法可以创建杂种群集吗? I'd really prefer mongrel cluster + apache2 to a java servlet type system. 我真的更喜欢杂种集群+ apache2而不是Java servlet类型的系统。

I've tried jetty using the instructions here: http://jetty-rails.rubyforge.org/ 我已经按照这里的说明尝试了码头: http : //jetty-rails.rubyforge.org/

but I get the following error when starting up the jetty server, even though I've checked my activerecord-jdbcmysql-adapter gem version under jruby and its there and version 0.9.7 但是即使我已经在jruby及其下的0.9.7版本下检查了我的activerecord-jdbcmysql-adapter gem版本,但在启动码头服务器时却遇到以下错误

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)

any suggestions would be appreciated, thanks! 任何建议将不胜感激,谢谢!

EDIT: I don't know if this makes a difference, but I am able to tell that before it crashes, jetty_rails successfully loads a global variable declared in the environment.rb 编辑:我不知道这是否有所作为,但我能够告诉您,在崩溃之前,jetty_rails成功加载了在environment.rb中声明的全局变量

EDIT: here is my full gem list from jruby -S gem list --local 编辑:这是我从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)

Maybe you're switching between multiple ruby interpreters (via RVM or manually). 也许您正在多个红宝石解释器之间切换(通过RVM或手动)。 Make sure that you have 2.3.8 gems for rails and it's dependencies by running "gem list" using Jruby. 通过使用Jruby运行“ gem list”,确保具有2.3.8的rails gem及其依赖项。

If you don't have the gems under Jruby, run "gem install -v=2.3.8 rails". 如果您在Jruby下没有gems,请运行“ gem install -v = 2.3.8 rails”。 You could pack the rails gems inside the project tree by running "rake rails:freeze:gems". 您可以通过运行“ rake rails:freeze:gems”将rails gem打包到项目树中。

The only possible answer that I know is that you have two ruby interpreters on the system, and the one being picked up by the jetty environment is missing gems. 我知道的唯一可能的答案是,系统上有两个红宝石解释器,而码头环境所捡拾的那个解释器缺少宝石。 Does ruby -v give you a different answer than jruby -v ? ruby -v给您的答案与jruby -v不同吗?

That being said, is there a reason why you don't want to use warble and deploy a war to Jetty or Tomcat? 话虽如此,您是否有理由不想使用Warble并向Jetty或Tomcat部署战争? I find that works well. 我发现效果很好。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM