加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 在Nailgun模式的JRuby 1.7上的Rails应用程序不

发布时间:2020-12-16 22:03:04 所属栏目:百科 来源:网络整理
导读:我在RVM中安装了J Ruby 1.7.2,创建了一个gemset,执行了bundle安装.现在,我运行这个: 期限1: [lzap@lzapx my_app]$bundle exec jruby --ng-servNGServer started on all interfaces,port 2113. 期限2: [lzap@lzapx my_app]$JRUBY_OPTS="--1.9 --ng" bundle
我在RVM中安装了J Ruby 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

问题没有发生,终端不要打印任何东西,它只是永远挂起来.顶部不显示任何java / jruby进程工作.

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

防火墙当然是禁用的.

解决方法

一个指甲服务器

可以为rails生成binstub …

$bundle binstubs rails

…并编辑它以设置JRUBY_OPTS.

ENV['JRUBY_OPTS'] = '--1.9 --ng --nailgun-port 2113'
load Gem.bin_path('rails','rails')

这样,只有捆绑包裹的客户端部分在捆绑包裹的指甲枪服务器中执行.

由于指甲枪不传播信号,您可能希望使用控制器来阻止它:

class RailsController < ApplicationController
  def stop
    Process.kill :INT,0
  end
end

基准测试:

$time bin/rails -v  # modified
Rails 3.0.11

real    0m3.737s
user    0m6.579s
sys     0m0.223s

$time bin/rails -v  # unmodified
Rails 3.0.11

real    0m5.547s
user    0m12.739s
sys     0m0.411s

$time bundle exec rails -v
Rails 3.0.11

real    0m9.145s
user    0m20.708s
sys     0m0.682s

两个指甲服务器

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

$while sleep 1; do jruby --ng-server 2112; done

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

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

我没有看到性能提升,出现在“错误”控制台中的输出是令人讨厌的.但也许这在其他系统上更快.还有其他人可能会看到改进这种方法的方法?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读