从rails / passenger服务器到另一台机器运行ssh隧道

时间:2010-07-07 02:13:57

标签: ruby-on-rails ssh passenger

我有一个Rails(2.3.8)应用程序,无论何时使用“脚本/服务器”启动应用程序或使用Passenger启动应用程序,都需要启动和维护SSH隧道。当脚本/服务器被^ 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的直接路由。将启动从应用程序到位置B中的计算机的SSH隧道,而位置B中的服务将改为向该计算机发送更新。

1 个答案:

答案 0 :(得分:1)

使用config / environments / * .rb和快速分叉攻击来解决这个问题。见要点:http://gist.github.com/466267

因此,如果您使用RAILS_ENV =生产而不是测试/开发,它将被运行。