0

在我的 Rails 应用程序中,当用户单击一个按钮时,它当前会在后台启动一个内部创建的脚本。为简单起见,我们姑且称之为myScript。所以在我的 Rails 应用程序中,我基本上有:

def run!
  `myScript with some arguments`
end

现在,该脚本将作为进程在运行 Rails 应用程序的同一台机器上运行。

我们希望在一台服务器上托管我们所有的 Ruby/Rails 应用程序,并使用单独的服务器来运行脚本。是否可以启动该脚本,但在不同的机器上?如果您需要更多信息,请告诉我。

4

2 回答 2

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 监听器也不是一个坏主意。

于 2013-04-17T23:26:50.733 回答
1

完全窃取 Dogbert 的答案:我会使用 HTTP 解决方案。创建一个后台作业(Sidekick、Queue Classic)并有一个简单的作业,在第二台服务器上执行 get 或 post 或其他任何操作。

HTTP 解决方案将涉及一些设置成本(可能需要时间和学习),但最终它将比 SSH 解决方案更强大,因为您不必担心 IP 或用户等。只是一个直接的 URL。另外,如果您使用 Capistrano 等进行操作,您的部署将非常容易。

这些作业无法在您的网络服务器上运行,而是使用后台进程,是否有原因?

于 2013-04-17T23:32:43.143 回答