Cайт веб-разработчика, программиста Ruby on Rails ESV Corp. Екатеринбург, Москва, Санкт-Петербург, Новосибирск, Первоуральск

Phusion Passenger 6.1.4 не работает с версиями Ruby ранее 2.5

Работал, работал исправно Phusion Passenger, и вдруг поломался после обновления gem passenger до версии 6.1.4 - перестал работать с Ruby 2.4.10. Я написал разработчикам, начали вместе разбираться... оказывается, они "провели для себя грань" минимально допустимых версий Ruby, начиная с 2.5. В процессе общения выяснилось, что они "не собираются поддерживать всякое старьё" - и плевать им на тех, у кого ещё старые сайты на Ruby on Rails. Начал я разбираться самостоятельно. В общем, всё дело оказалось в "новомодном синтаксисе" блоков с обработкой исключений:

something.each do | a |
  ...
rescue => e
  ...
end

в более ранних версиях блок должен быть оформлен несколько иначе:

something.each do | a |
  begin
    ...
  rescue => e
    ...
  end
end

Посмотрел в исходный код Phusion Passenger, нашёл в src/ruby_supportlib/phusion_passenger/rack/thread_handler_extension.rb всего 2 таких блока - строки 120 и 176. Требуются совсем незначительные изменения:

# строка 120
env[RACK_RESPONSE_FINISHED].reverse_each do | cb |
  ## my patch
  begin
    cb.call(env, status, headers, e)
  rescue => e
    print_exception("Rack application object", e)
  end
end
# строка 176
env[RACK_RESPONSE_FINISHED].reverse_each do | cb |
  ## my patch
  begin
    cb.call(env, status, headers, nil)
  rescue => e
    print_exception("Rack application object", e)
  end
end

Я сообщил разработчикам Phusion Passenger, но снобизм разработчика @CamJN (ник на GitHub) просто зашкаливает - не стал вносить изменения в свой код (вплоть до версии PP 6.1.7 - изменений так и нет). Но нет ничего сложного самостоятельно исправить в исходниках, даже после каждого обноления gem ckeditor. Зато сайты работают!