在我的Rails应用程序中,当用户单击按钮时,它将在后台启动内部创建的脚本。为简单起见,我们只需将其称为myScript
。所以在我的Rails应用程序中,我基本上有:
def run!
`myScript with some arguments`
end
现在,此脚本将作为运行Rails应用程序的同一台计算机上的进程运行。
我们希望在一台服务器上托管所有Ruby / Rails应用程序,并使用单独的服务器来运行脚本。是否可以在另一台机器上启动该脚本?如果您需要其他信息,请与我们联系。
答案 0 :(得分:3)
我将ssh用于这些类型的事情。
require 'net/ssh'
Net::SSH.start('server.com', 'username', password: "asdasd") do |ssh|
$stdout.print ssh.exec!("cdc && curl https://gist.github.com/mhenrixon/asdasd123123/raw/123123asdasd/update.rb | rails c production")
end
这是最简单的方法我认为,但sinatra / rails听众也不是一个坏主意。
答案 1 :(得分:1)
要彻底解决偷走Dogbert的回答:我会选择HTTP解决方案。创建一个后台作业(Sidekick,Queue Classic)并拥有一个简单的工作,可以在第二台服务器上执行get或post或者其他任务。
HTTP解决方案将涉及一些设置成本(可能是时间和学习),但最终它将比SSH解决方案更强大,因为您不必担心IP或用户等。只是一个直接的URL。此外,如果您正在使用Capistrano等,您的部署将非常简单。
是否有理由不能在您的网络服务器上运行这些作业,而是使用后台进程?