Nailgun模式下JRuby 1.7上的Rails应用程序无法启动

lza*_*zap 10 ruby-on-rails jruby nailgun

我在RVM中安装了JRuby 1.7.2,创建了一个gemset,执行了bundle install.现在,我运行这个:

第1学期:

[lzap@lzapx my_app]$ bundle exec jruby --ng-serv
NGServer started on all interfaces, port 2113.
Run Code Online (Sandbox Code Playgroud)

第2学期:

[lzap@lzapx my_app]$ JRUBY_OPTS="--1.9 --ng" bundle exec rails s
Run Code Online (Sandbox Code Playgroud)

问题是没有任何反应,双方都没有打印任何东西,它只是永远挂起.Top没有显示任何java/jruby进程正常工作.

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

当然禁用防火墙.

kun*_*sch 1

一台钉枪服务器

\n\n

可以为 Rails \xe2\x80\xa6 生成 binstub

\n\n
$ bundle binstubs rails\n
Run Code Online (Sandbox Code Playgroud)\n\n

\xe2\x80\xa6 并编辑它以设置 JRUBY_OPTS。

\n\n
ENV['JRUBY_OPTS'] = '--1.9 --ng --nailgun-port 2113'\nload Gem.bin_path('rails', 'rails')\n
Run Code Online (Sandbox Code Playgroud)\n\n

这样,只有客户端的捆绑器包装部分在捆绑器包装的钉枪服务器中执行。

\n\n

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

\n\n
class RailsController < ApplicationController\n  def stop\n    Process.kill :INT, 0\n  end\nend\n
Run Code Online (Sandbox Code Playgroud)\n\n

基准:

\n\n
$ time bin/rails -v  # modified\nRails 3.0.11\n\nreal    0m3.737s\nuser    0m6.579s\nsys     0m0.223s\n\n$ time bin/rails -v  # unmodified\nRails 3.0.11\n\nreal    0m5.547s\nuser    0m12.739s\nsys     0m0.411s\n\n$ time bundle exec rails -v\nRails 3.0.11\n\nreal    0m9.145s\nuser    0m20.708s\nsys     0m0.682s\n
Run Code Online (Sandbox Code Playgroud)\n\n

两台钉枪服务器

\n\n

理论上可以使用第二个“非捆绑执行”服务器。为了避免显式重新启动但允许终止(按两次 Ctrl-C),我建议使用以下循环:

\n\n
$ while sleep 1; do jruby --ng-server 2112; done\n
Run Code Online (Sandbox Code Playgroud)\n\n

必须在外部客户端中指定第二个钉枪实例的端口:

\n\n
$ JRUBY_OPTS='--1.9 --ng --nailgun-port 2112' bin/rails s\n
Run Code Online (Sandbox Code Playgroud)\n\n

我没有看到性能改进,并且出现在“错误”控制台中的输出很烦人。但也许这在其他系统上更快。其他人可能会看到改进这种方法的方法吗?

\n