【发布时间】:2010-07-07 11:36:57
【问题描述】:
我有一个 Rails (2.3.8) 应用程序,每当应用程序使用“脚本/服务器”启动或使用Passenger 启动时,它都需要启动和维护一个 SSH 隧道。当脚本/服务器被 ^C'd 或乘客实例被关闭时,SSH 隧道应该被破坏。
我不希望在运行“脚本/控制台”时启动隧道 - 所以使用 config/environment.rb 看起来不是一个好选择。
因此,我不希望隧道成为后台 - 我希望它被 ruby 进程附加并拥有,并且我只希望每台服务器有一个隧道。
隧道本身很可能通过直接运行 SSH 来启动,但如果有使用 SSH 库的简单方法,我将使用它。
有没有办法在 Rails 中做到这一点?我可以想到一种使用 config/environment.rb 的方法,使用一系列锁定文件和其他一些乱七八糟的东西,但我希望有某种 :on_server_start 和 :on_server_exit 钩子。
--
出于好奇,我需要这样做,因为 Rails 应用程序在位置 A 运行,并将接收来自位置 B 的一系列服务的更新。但是,位置 B 没有到位置 A 的直接路由。我将启动从应用程序到位置 B 的机器的 SSH 隧道,而位置 B 中的服务将向该机器发送更新。
【问题讨论】:
标签: ruby-on-rails ssh passenger