2013-05-23 3 views
0

Я настраиваю общий сервер разработки для проекта Ruby on Rails.Перезапустить сервер rails на git commit

Есть ли способ установить его для перезапуска или перезагрузить код каждый раз, когда кто-то нажимает фиксацию на главную ветку (например)? Я не забочусь о создании драгоценных камней и т. Д. Каждый раз, à la Heroku - я просто хочу запустить новый код.

Если возникнут какие-либо проблемы, я могу запустить и перезагрузить сервер вручную - я просто не хочу делать это каждый раз.

+1

У меня нет большого опыта работы с ними, но вы можете проверить родной [git hooks] (http://git-scm.com/book/en/Customizing-Git-Git-Hooks). – ajp15243

ответ

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 
+0

Должен быть более чистый способ получить pid серверного процесса. Проверьте это. Этот пример будет иметь неожиданные последствия, если он используется, когда на вашем компьютере запущено несколько экземпляров «rails s». – Kashyap