У меня есть приложение Rails (2.3.8), которое нужно будет запускать и поддерживать SSH-туннель всякий раз, когда приложение запускается с использованием 'script / server' или когда запускается с использованием Passenger. Когда скрипт / сервер находится в режиме ^ C'd или экземпляр Passenger закрыт, туннель SSH должен быть уничтожен.
Я не хочу, чтобы туннель запускался при запуске 'script / console' - поэтому использование config / environment.rb не выглядит хорошим вариантом.
Как таковой, я не хочу, чтобы туннель был задним фоном - я хочу, чтобы он был присоединен и принадлежал процессу ruby, и мне нужен только один туннель на сервер.
Скорее всего, сам туннель будет запущен при запуске SSH напрямую, но если есть простой способ сделать это с использованием библиотек SSH, я буду использовать его вместо этого.
Есть ли способ сделать это в Rails? Я могу придумать способ сделать это, используя config / environment.rb, используя серию файлов блокировки и другие мелочи, но я надеялся на что-то вроде: on_server_start и: on_server_exit hook.
-
Для любопытных мне нужно сделать это, так как приложение Rails работает в местоположении A и будет получать обновления от ряда служб в местоположении B. Однако расположение B не имеет прямого маршрута к расположению A. I будет запускать SSH-туннель от приложения к компьютеру в местоположении B, а службы в местоположении B будут отправлять обновления на этот компьютер.