Почему рубин рушится? - PullRequest
       17

Почему рубин рушится?

0 голосов
/ 15 февраля 2012

Я пытаюсь использовать "redmine_git_hosting" из git://github.com/ericpaulbishop/redmine_git_hosting.git

Когда я пытаюсь получить к нему доступ, я получаю сообщение об ошибке /var/log/apache2/error.log:

/lib/redmine/scm/adapters/git_adapter.rb:26: warning: already initialized constant GIT_BIN

Я могу получить доступ к сайту Redmine, но если я обновлюсь, я получу:

/usr/share/redmine_dev/lib/redmine/scm/adapters/git_adapter.rb:26: warning: already initialized constant GIT_BIN
[ pid=31351 thr=3075225872 file=ext/apache2/Hooks.cpp:817 time=2012-02-15 15:41:08.102 ]: The backend application (process 3677) did not send a valid HTTP response; instead, it sent nothing at all. It is possible that it has crashed; please check whether there are crashing bugs in this application.
[ pid=3677 thr=-609445668 file=utils.rb:176 time=2012-02-15 15:41:08.103 ]: *** Exception NameError in application (uninitialized constant Redmine::Scm::Adapters::CommandFailed) (process 3677, thread #<Thread:0xb75931b8>):

Я получаю 500 Внутренняя ошибка.

С top Я вижу, что один процесс Ruby был убит.

Моя среда:

  • Ubuntu 11.10
  • PostgreSQL 8.4
  • Apache2.20
  • Рубин 1.8.7
  • Redmine 1.3.0
  • Phusion версия 3.0.11
  • Рельсы (2.3.14)
  • Rubygems 1.6.2

1 Ответ

0 голосов
/ 29 февраля 2012

Похоже, что это та же ошибка, о которой сообщалось на вилке Chiliproject: https://www.chiliproject.org/issues/828

Кажется, что это происходит только в режиме разработки, после первого запроса (начиная со второго запроса)Поскольку rails выгружает ваши модули, вам не нужно перезапускать приложение каждый раз, когда вы вносите изменения.В application_controller все классы репозитория scm загружаются снова с require_dependency при каждом запросе.Но модули, от которых эти scm зависят, например, от git_adapter и abstract_adapter, загружаются со стандартным требованием ruby, поэтому они не загружаются снова.Следовательно, неинициализированные постоянные ошибки в разработке.

Там было предложено решение

... удалить требования из модулей и интегрировать их в application_controller:

  require_dependency 'redmine/scm/adapters/abstract_adapter'
  Redmine::Scm::Base.all.each do |scm|
      require_dependency "repository/#{scm.underscore}" 
      require_dependency "redmine/scm/adapters/#{scm.underscore}_adapter" 
  end
...