Последние три дня я провел, пытаясь развернуть приложение jruby / rails / couchdb в среде linux / tomcat. Я готов что-то снять. Моя текущая проблема заключается в следующем: есть определенный гем "simply_stored", который действует на драйвере верхнего уровня для couchdb. всякий раз, когда я нажимаю код в приложении, которое касается этого драгоценного камня, я получаю этот след:
IOError in HomeController#index
closed stream
/var/lib/tomcat6/webapps/ROOT/WEB-INF/gems/gems/simply_stored-0.3.6/lib/simply_stored.rb:7
/var/lib/tomcat6/webapps/ROOT/WEB-INF/gems/gems/simply_stored-0.3.6/lib/simply_stored.rb:31:in 'require'
/var/lib/tomcat6/webapps/ROOT/WEB-INF/gems/gems/activesupport-2.3.8/lib/active_support/dependencies.rb:156:in 'require'
/var/lib/tomcat6/webapps/ROOT/WEB-INF/gems/gems/activesupport-2.3.8/lib/active_support/dependencies.rb:521:in 'new_constants_in'
/var/lib/tomcat6/webapps/ROOT/WEB-INF/gems/gems/activesupport-2.3.8/lib/active_support/dependencies.rb:156:in 'require'
/var/lib/tomcat6/webapps/ROOT/WEB-INF/gems/gems/simply_stored-0.3.6/lib/simply_stored/couch.rb:5
/var/lib/tomcat6/webapps/ROOT/WEB-INF/gems/gems/simply_stored-0.3.6/lib/simply_stored/couch.rb:380:in 'load'
/var/lib/tomcat6/webapps/ROOT/WEB-INF/gems/gems/activesupport-2.3.8/lib/active_support/dependencies.rb:380:in 'load_file'
/var/lib/tomcat6/webapps/ROOT/WEB-INF/gems/gems/activesupport-2.3.8/lib/active_support/dependencies.rb:521:in 'new_constants_in'
/var/lib/tomcat6/webapps/ROOT/WEB-INF/gems/gems/activesupport-2.3.8/lib/active_support/dependencies.rb:379:in 'load_file'
/var/lib/tomcat6/webapps/ROOT/WEB-INF/gems/gems/activesupport-2.3.8/lib/active_support/dependencies.rb:259:in 'require_or_load'
/var/lib/tomcat6/webapps/ROOT/WEB-INF/gems/gems/activesupport-2.3.8/lib/active_support/dependencies.rb:425:in 'load_missing_constant'
/var/lib/tomcat6/webapps/ROOT/WEB-INF/gems/gems/activesupport-2.3.8/lib/active_support/dependencies.rb:80:in 'const_missing_with_dependencies'
/var/lib/tomcat6/webapps/ROOT/WEB-INF/app/models/job.rb:2
/var/lib/tomcat6/webapps/ROOT/WEB-INF/app/models/job.rb:380:in 'load'
/var/lib/tomcat6/webapps/ROOT/WEB-INF/gems/gems/activesupport-2.3.8/lib/active_support/dependencies.rb:380:in 'load_file'
/var/lib/tomcat6/webapps/ROOT/WEB-INF/gems/gems/activesupport-2.3.8/lib/active_support/dependencies.rb:521:in 'new_constants_in'
/var/lib/tomcat6/webapps/ROOT/WEB-INF/gems/gems/activesupport-2.3.8/lib/active_support/dependencies.rb:379:in 'load_file'
/var/lib/tomcat6/webapps/ROOT/WEB-INF/gems/gems/activesupport-2.3.8/lib/active_support/dependencies.rb:259:in 'require_or_load'
/var/lib/tomcat6/webapps/ROOT/WEB-INF/gems/gems/activesupport-2.3.8/lib/active_support/dependencies.rb:425:in 'load_missing_constant'
/var/lib/tomcat6/webapps/ROOT/WEB-INF/gems/gems/activesupport-2.3.8/lib/active_support/dependencies.rb:80:in 'const_missing_with_dependencies'
/var/lib/tomcat6/webapps/ROOT/WEB-INF/gems/gems/activesupport-2.3.8/lib/active_support/dependencies.rb:92:in 'const_missing'
/var/lib/tomcat6/webapps/ROOT/WEB-INF/gems/gems/activesupport-2.3.8/lib/active_support/dependencies.rb:437:in 'load_missing_constant'
/var/lib/tomcat6/webapps/ROOT/WEB-INF/gems/gems/activesupport-2.3.8/lib/active_support/dependencies.rb:96:in 'const_missing'
/var/lib/tomcat6/webapps/ROOT/WEB-INF/app/controllers/home_controller.rb:3:in 'index'
/var/lib/tomcat6/webapps/ROOT/WEB-INF/gems/gems/actionpack-2.3.8/lib/action_controller/base.rb:1331:in 'perform_action'
/var/lib/tomcat6/webapps/ROOT/WEB-INF/gems/gems/actionpack-2.3.8/lib/action_controller/filters.rb:617:in 'call_filters'
/var/lib/tomcat6/webapps/ROOT/WEB-INF/gems/gems/actionpack-2.3.8/lib/action_controller/filters.rb:610:in 'perform_action_with_filters'
/var/lib/tomcat6/webapps/ROOT/WEB-INF/gems/gems/actionpack-2.3.8/lib/action_controller/benchmarking.rb:68:in 'perform_action_with_benchmark'
/var/lib/tomcat6/webapps/ROOT/WEB-INF/gems/gems/activesupport-2.3.8/lib/active_support/core_ext/benchmark.rb:17:in 'ms'
/var/lib/tomcat6/webapps/ROOT/WEB-INF/gems/gems/activesupport-2.3.8/lib/active_support/core_ext/benchmark.rb:17:in 'ms'
/var/lib/tomcat6/webapps/ROOT/WEB-INF/gems/gems/actionpack-2.3.8/lib/action_controller/benchmarking.rb:68:in 'perform_action_with_benchmark'
/var/lib/tomcat6/webapps/ROOT/WEB-INF/gems/gems/actionpack-2.3.8/lib/action_controller/rescue.rb:160:in 'perform_action_with_rescue'
/var/lib/tomcat6/webapps/ROOT/WEB-INF/gems/gems/actionpack-2.3.8/lib/action_controller/flash.rb:151:in 'perform_action_with_flash'
/var/lib/tomcat6/webapps/ROOT/WEB-INF/gems/gems/actionpack-2.3.8/lib/action_controller/base.rb:532:in 'process'
/var/lib/tomcat6/webapps/ROOT/WEB-INF/gems/gems/actionpack-2.3.8/lib/action_controller/filters.rb:606:in 'process_with_filters'
/var/lib/tomcat6/webapps/ROOT/WEB-INF/gems/gems/actionpack-2.3.8/lib/action_controller/base.rb:391:in 'process'
/var/lib/tomcat6/webapps/ROOT/WEB-INF/gems/gems/actionpack-2.3.8/lib/action_controller/base.rb:386:in 'call'
/var/lib/tomcat6/webapps/ROOT/WEB-INF/gems/gems/actionpack-2.3.8/lib/action_controller/routing/route_set.rb:438:in 'call'
трассировка каркаса:
file:/var/lib/tomcat6/webapps/ROOT/WEB-INF/lib/jruby-stdlib-1.5.2.jar!/META-INF/jruby.home/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in 'require'
file:/var/lib/tomcat6/webapps/ROOT/WEB-INF/lib/jruby-stdlib-1.5.2.jar!/META-INF/jruby.home/lib/ruby/1.8/benchmark.rb:308:in 'realtime'
/var/lib/tomcat6/webapps/ROOT/WEB-INF/gems/gems/actionpack-2.3.8/lib/action_controller/dispatcher.rb:87:in 'dispatch'
/var/lib/tomcat6/webapps/ROOT/WEB-INF/gems/gems/actionpack-2.3.8/lib/action_controller/dispatcher.rb:121:in '_call'
/var/lib/tomcat6/webapps/ROOT/WEB-INF/gems/gems/actionpack-2.3.8/lib/action_controller/dispatcher.rb:130:in 'build_middleware_stack'
file:/var/lib/tomcat6/webapps/ROOT/WEB-INF/lib/jruby-rack-1.0.3.jar!/vendor/rack-1.2.1/rack/head.rb:9:in 'call'
file:/var/lib/tomcat6/webapps/ROOT/WEB-INF/lib/jruby-rack-1.0.3.jar!/vendor/rack-1.2.1/rack/methodoverride.rb:24:in 'call'
file:/var/lib/tomcat6/webapps/ROOT/WEB-INF/lib/jruby-rack-1.0.3.jar!/vendor/rack-1.2.1/rack/lock.rb:11:in 'call'
/var/lib/tomcat6/webapps/ROOT/WEB-INF/gems/gems/actionpack-2.3.8/lib/action_controller/dispatcher.rb:114:in 'call'
/var/lib/tomcat6/webapps/ROOT/WEB-INF/gems/gems/actionpack-2.3.8/lib/action_controller/dispatcher.rb:108:in 'call'
file:/var/lib/tomcat6/webapps/ROOT/WEB-INF/lib/jruby-rack-1.0.3.jar!/rack/adapter/rails.rb:36:in 'serve_rails'
file:/var/lib/tomcat6/webapps/ROOT/WEB-INF/lib/jruby-rack-1.0.3.jar!/rack/adapter/rails.rb:41:in 'call'
file:/var/lib/tomcat6/webapps/ROOT/WEB-INF/lib/jruby-rack-1.0.3.jar!/jruby/rack/rails.rb:180:in 'call'
file:/var/lib/tomcat6/webapps/ROOT/WEB-INF/lib/jruby-rack-1.0.3.jar!/rack/handler/servlet.rb:19:in 'call'
Теперь моя первоначальная реакция заключается в том, что это как-то связано с общением с couchdb. это все еще возможно, хотя вряд ли. указание несуществующего адреса имеет тот же эффект. эта библиотека прекрасно работает для многих людей (включая меня, в моей среде разработки - os x / WEBRick). копая глубже, я нашел несколько (довольно разбросанных) ссылок на похожие проблемы, с различными функциями. вот один из них: что может быть причиной того, что этот rails ioerror закрыл поток?
Интересно то, что обе ошибки, по-видимому, происходят в короткие сроки после первой загрузки / обработки файла active_support. Может ли эта проблема потока быть связана с загрузкой файлов ruby, а не с tcp-соединением?
Я в полном недоумении, любая помощь будет принята с благодарностью.
edit : интересный новый лакомый кусочек - эта проблема исчезает в той же конфигурации, если использовать glassfish вместо tomcat. тот же сервер, тот же файл войны.