Запуск ssh туннеля с сервера rails / passenger на другую машину - PullRequest
1 голос
/ 07 июля 2010

У меня есть приложение 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 будут отправлять обновления на этот компьютер.

1 Ответ

1 голос
/ 07 июля 2010

Удалось решить эту проблему с помощью config / environment / *. Rb и быстрого взлома форка.Смотрите суть: http://gist.github.com/466267

Итак, он будет запущен, если вы используете RAILS_ENV = production, но не для тестирования / разработки.

...