NoMethodError при запуске sinatra на jruby с синхронизацией sinatra

Я пытаюсь интегрировать базовое приложение jruby sinatra «hello world» с синхронизацией sinatra и продолжаю сталкиваться с ошибками.

приложение.rb:

require 'sinatra/synchrony'

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

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

config.ru:

require 'sinatra'
require 'app.rb'

run App

Я пытался запустить это на нескольких разных веб-серверах и получаю разные ошибки, связанные с потоками или утечками памяти.


person mhriess    schedule 14.10.2013    source источник
comment
Синхронность специфична для Eventmachine. Вы действительно пытаетесь использовать Eventmachine с JRuby?   -  person tbuehlmann    schedule 16.10.2013


Ответы (1)


Библиотеки Synchrony для Ruby разработаны с использованием волокон в циклах обработки событий а-ля Eventmachine. В этом конкретном случае вам следует рассмотреть возможность использования MRI и Goliath.io в качестве стоечного сервера.

Тем не менее, Jruby растет как на дрожжах. Я использовал его в течение последних нескольких месяцев и вообще избегал парадигмы цикла событий. Попробуйте удалить библиотеку Synchrony из своего примера и запустить ее с помощью puma.io.

Имейте в виду, что JVM нужно немного «разогреться». Нажмите несколько тысяч раз, чтобы оптимизировать скорость.

person Sean Dixon    schedule 21.10.2013