production.rb 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. set :stage, "production"
  2. role :app, %w{ubuntu@your-server.net}
  3. set :deploy_to, '/srv/contactrocket/engine'
  4. server 'your-server.net',
  5. user: 'ubuntu',
  6. roles: %w{app},
  7. ssh_options: {
  8. user: 'ubuntu',
  9. keys: %w(/Users/machine/.ssh/rockbox.pem),
  10. forward_agent: true,
  11. auth_methods: %w(publickey)
  12. }
  13. set :linked_files, %w{config/database.yml config/sidekiq.yml}
  14. set :linked_dirs, %w{tmp/cache vendor/bundle log tmp/pids}
  15. set :pty, true
  16. set :use_sudo, true
  17. set :scm, :git
  18. set :branch, :master
  19. set :format, :pretty
  20. set :log_level, :debug
  21. set :keep_releases, 2
  22. set :local_repository, "file://."
  23. set :deploy_via, :copy
  24. # cache only seems to work if use scm
  25. set :copy_cache, true
  26. set :copy_via, :scp
  27. set :copy_exclude, [".zeus*", ".bundle", ".git", "tmp/*", "doc", "log/*", "fixtures/*"]
  28. task :deploy_from_local_repo do
  29. run_locally do
  30. execute "tar -zcvf /tmp/engine_repo.tgz .git"
  31. end
  32. set :repo_url, "file:///tmp/.git"
  33. on roles(:app) do
  34. upload! '/tmp/engine_repo.tgz', '/tmp/engine_repo.tgz'
  35. execute 'tar -zxvf /tmp/engine_repo.tgz -C /tmp'
  36. end
  37. end
  38. task :remove_repo do
  39. on roles(:app) do
  40. execute "rm -rf /tmp/*.git"
  41. end
  42. end
  43. namespace :deploy do
  44. desc "Make sure local git is in sync with remote."
  45. task :check_revision do
  46. on roles(:app) do
  47. unless `git rev-parse HEAD` == `git rev-parse origin/master`
  48. puts "WARNING: HEAD is not the same as origin/master"
  49. puts "Run `git push` to sync changes."
  50. exit
  51. end
  52. end
  53. end
  54. before :deploy, :deploy_from_local_repo
  55. after :finishing, :cleanup
  56. after :finishing, :restart
  57. after :deploy, :remove_repo
  58. end