Ruby on rails JRuby 1.7上处于钉枪模式的Rails应用程序未启动

Ruby on rails JRuby 1.7上处于钉枪模式的Rails应用程序未启动,ruby-on-rails,jruby,nailgun,Ruby On Rails,Jruby,Nailgun,我在RVM中安装了JRuby 1.7.2,创建了一个gemset,执行了bundle安装。现在,我运行以下命令: 第1项: [lzap@lzapx my_app]$ bundle exec jruby --ng-serv NGServer started on all interfaces, port 2113. 第2项: [lzap@lzapx my_app]$ JRUBY_OPTS="--1.9 --ng" bundle exec rails s 问题是什么都没有发生,在两侧的终端都不打

我在RVM中安装了JRuby 1.7.2,创建了一个gemset,执行了bundle安装。现在,我运行以下命令:

第1项:

[lzap@lzapx my_app]$ bundle exec jruby --ng-serv
NGServer started on all interfaces, port 2113.
第2项:

[lzap@lzapx my_app]$ JRUBY_OPTS="--1.9 --ng" bundle exec rails s
问题是什么都没有发生,在两侧的终端都不打印任何内容,它只是永远挂起。Top不显示任何正在工作的java/jruby进程

如果我尝试在不使用--ng的情况下启动应用程序,它可以正常工作。问题是什么?捆绑机

防火墙当然被禁用。

一台钉枪服务器 可以为rails生成一个容器

$ bundle binstubs rails
…并对其进行编辑以设置JRUBY_选项

ENV['JRUBY_OPTS'] = '--1.9 --ng --nailgun-port 2113'
load Gem.bin_path('rails', 'rails')
这样,只有客户机的bundler包装部分在bundler包装的nailgun服务器中执行

由于钉枪不传播信号,您可能需要使用控制器停止:

class RailsController < ApplicationController
  def stop
    Process.kill :INT, 0
  end
end
两台钉枪服务器 理论上可以使用第二个“非捆绑执行”服务器。为了避免显式重启,但允许终止(按两次Ctrl-C键),我建议使用以下循环:

$ while sleep 1; do jruby --ng-server 2112; done
必须在外部客户端中指定第二个nailgun实例的端口:

$ JRUBY_OPTS='--1.9 --ng --nailgun-port 2112' bin/rails s

我没有看到性能的提高,而且“错误”控制台中出现的输出令人讨厌。但在其他系统上,这可能更快。其他人可能会看到一种改进这种方法的方法?

哪个版本的Rails?ruby-v说什么?它是否与WebRick一起运行?当然可以。JRuby是1.7.2。。。用最新的马厩试过,运气不好。
$ JRUBY_OPTS='--1.9 --ng --nailgun-port 2112' bin/rails s