0

我正在尝试将一个基本的“hello world”jruby sinatra 应用程序与 sinatra-synchrony 集成并不断出错。

应用程序.rb:

require 'sinatra/synchrony'

class App < Sinatra::Base
  register Sinatra::Synchrony

  get '/' do
    'Hello world!'
  end
end

配置.ru:

require 'sinatra'
require 'app.rb'

run App

我尝试在几个不同的 Web 服务器上运行它,并得到与线程或内存泄漏有关的不同错误。

4

1 回答 1

0

Ruby 的同步库是围绕在事件循环中使用 Fibers 而设计的,例如 Eventmachine。对于这种特殊情况,您应该考虑使用 MRI 和Goliath.io作为您的机架服务器。

然而,Jruby 正在突飞猛进地发展。过去几个月我一直在使用它,并且完全避免了事件循环范式。尝试从您的示例中删除同步库并使用puma.io运行它。

请记住,JVM 需要一些时间来“热身”。击打它几千次以优化速度。

于 2013-10-21T21:59:24.103 回答