0

我正在为 Ruby on Rails 项目设置共享开发服务器。

有没有一种好方法可以将其设置为重新启动,或者每次有人将提交推送到主分支时重新加载代码(例如)?我不关心每次都设置 gem 等,à la Heroku - 我只想运行新代码。

如果有任何问题,我可以进入并手动重新启动服务器 - 我只是不想每次都这样做。

4

2 回答 2

3

Git Hooks是您正在寻找的。

使用这些,您可以根据特定条件运行自定义命令。

post-commit在您的文件夹下创建一个名为的.git/hooks文件,如下所示:

#!/bin/sh

exec rake deploy

在你的 Rakefile 中,

task :deploy do
  pid = IO.open("ps").grep(/script\/rails/) { |x| x.split(" ").first }.first
  sh "kill -9 #{pid}"
  sh "rails s"
end
于 2013-05-23T17:24:50.367 回答
3

post-receive 钩子在整个过程完成后运行,可用于更新其他服务或通知用户。

在 post-receive 钩子中,您很可能需要 grep 获取 Ruby PID,终止该进程,然后重新启动 Rails 服务器。

于 2013-05-23T17:18:48.520 回答