我正在为 Ruby on Rails 项目设置共享开发服务器。
有没有一种好方法可以将其设置为重新启动,或者每次有人将提交推送到主分支时重新加载代码(例如)?我不关心每次都设置 gem 等,à la Heroku - 我只想运行新代码。
如果有任何问题,我可以进入并手动重新启动服务器 - 我只是不想每次都这样做。
我正在为 Ruby on Rails 项目设置共享开发服务器。
有没有一种好方法可以将其设置为重新启动,或者每次有人将提交推送到主分支时重新加载代码(例如)?我不关心每次都设置 gem 等,à la Heroku - 我只想运行新代码。
如果有任何问题,我可以进入并手动重新启动服务器 - 我只是不想每次都这样做。
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
post-receive 钩子在整个过程完成后运行,可用于更新其他服务或通知用户。
在 post-receive 钩子中,您很可能需要 grep 获取 Ruby PID,终止该进程,然后重新启动 Rails 服务器。