badger-rails 1.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (114) hide show
  1. data/BadgerGit.png +0 -0
  2. data/COPYING +674 -0
  3. data/LICENSING +30 -0
  4. data/Manifest +112 -0
  5. data/README.md +80 -0
  6. data/Rakefile +36 -0
  7. data/badger-rails.gemspec +34 -0
  8. data/bin/badger +486 -0
  9. data/lib/badger/Capfile +1 -0
  10. data/lib/badger/config/deploy.rb +211 -0
  11. data/lib/badger/config/rails-app.yml +6 -0
  12. data/lib/badger/config/rails-app.yml.bk +6 -0
  13. data/lib/badger/core/claws/app.claw +112 -0
  14. data/lib/badger/core/claws/db-app.claw +59 -0
  15. data/lib/badger/core/claws/rails-app.claw +125 -0
  16. data/lib/badger/core/files/badger/info +0 -0
  17. data/lib/badger/core/files/cap/Capfile +4 -0
  18. data/lib/badger/core/files/cap/deploy/production-app.rb +139 -0
  19. data/lib/badger/core/files/cap/deploy/production.rb +136 -0
  20. data/lib/badger/core/files/cap/deploy/staging-app.rb +139 -0
  21. data/lib/badger/core/files/cap/deploy/staging.rb +134 -0
  22. data/lib/badger/core/files/cap/deploy.rb +6 -0
  23. data/lib/badger/core/files/git/git +0 -0
  24. data/lib/badger/core/files/god/angel/resque-dev.god +54 -0
  25. data/lib/badger/core/files/god/angel/resque-stg.god +54 -0
  26. data/lib/badger/core/files/god/angel/resque.god +55 -0
  27. data/lib/badger/core/files/god/angel/unicorn-stg.god +62 -0
  28. data/lib/badger/core/files/god/angel/unicorn.god +62 -0
  29. data/lib/badger/core/files/god/god +108 -0
  30. data/lib/badger/core/files/god/unicorn-stg.rb +70 -0
  31. data/lib/badger/core/files/god/unicorn.rb +70 -0
  32. data/lib/badger/core/files/logrotate/logrotate.conf +23 -0
  33. data/lib/badger/core/files/logrotate/logrotate.cron +8 -0
  34. data/lib/badger/core/files/mysql/database.yml.bk +18 -0
  35. data/lib/badger/core/files/mysql/db_stats +0 -0
  36. data/lib/badger/core/files/mysql/my.cnf +11 -0
  37. data/lib/badger/core/files/nginx/nginx +106 -0
  38. data/lib/badger/core/files/nginx/nginx.conf +30 -0
  39. data/lib/badger/core/files/nginx/sites/port443.btl +42 -0
  40. data/lib/badger/core/files/nginx/sites/port80.btl +39 -0
  41. data/lib/badger/core/files/nginx/sites/production-web +117 -0
  42. data/lib/badger/core/files/nginx/sites/staging-web +41 -0
  43. data/lib/badger/core/files/postfix/main.cf +678 -0
  44. data/lib/badger/core/files/postfix/master.cf +81 -0
  45. data/lib/badger/core/files/redis/redis-server +59 -0
  46. data/lib/badger/core/files/redis/redis.conf +444 -0
  47. data/lib/badger/core/files/resque/resque.rb +5 -0
  48. data/lib/badger/core/files/resque/resque.yml +19 -0
  49. data/lib/badger/core/files/resque/resque_web.rb +2 -0
  50. data/lib/badger/core/files/ssh/authorized_keys +0 -0
  51. data/lib/badger/core/functions +174 -0
  52. data/lib/badger/core/scripts/app_info +40 -0
  53. data/lib/badger/core/scripts/app_scale +15 -0
  54. data/lib/badger/core/scripts/remove_app +25 -0
  55. data/lib/badger/core/scripts/remove_app_db +30 -0
  56. data/lib/badger/core/scripts/remove_gems +2 -0
  57. data/lib/badger/core/teeth/automake.th +9 -0
  58. data/lib/badger/core/teeth/badger.th +27 -0
  59. data/lib/badger/core/teeth/bison.th +20 -0
  60. data/lib/badger/core/teeth/bundler.th +4 -0
  61. data/lib/badger/core/teeth/capistrano-ext.th +37 -0
  62. data/lib/badger/core/teeth/chkconfig.th +4 -0
  63. data/lib/badger/core/teeth/curl.th +24 -0
  64. data/lib/badger/core/teeth/faac.th +11 -0
  65. data/lib/badger/core/teeth/ffmpeg.th +28 -0
  66. data/lib/badger/core/teeth/firewall.th +70 -0
  67. data/lib/badger/core/teeth/gcc-c++.th +9 -0
  68. data/lib/badger/core/teeth/gcc.th +9 -0
  69. data/lib/badger/core/teeth/git.th +23 -0
  70. data/lib/badger/core/teeth/god.th +17 -0
  71. data/lib/badger/core/teeth/lame.th +9 -0
  72. data/lib/badger/core/teeth/libffi.th +4 -0
  73. data/lib/badger/core/teeth/libid3tag.th +10 -0
  74. data/lib/badger/core/teeth/libmad.th +11 -0
  75. data/lib/badger/core/teeth/libogg.th +9 -0
  76. data/lib/badger/core/teeth/libtool.th +9 -0
  77. data/lib/badger/core/teeth/libxml2.th +19 -0
  78. data/lib/badger/core/teeth/libxslt.th +19 -0
  79. data/lib/badger/core/teeth/libyaml.th +19 -0
  80. data/lib/badger/core/teeth/logrotate.th +19 -0
  81. data/lib/badger/core/teeth/madplay.th +10 -0
  82. data/lib/badger/core/teeth/make.th +9 -0
  83. data/lib/badger/core/teeth/mysql-config.th +40 -0
  84. data/lib/badger/core/teeth/mysql-server.th +16 -0
  85. data/lib/badger/core/teeth/mysql.th +14 -0
  86. data/lib/badger/core/teeth/nginx.th +56 -0
  87. data/lib/badger/core/teeth/ntp.th +15 -0
  88. data/lib/badger/core/teeth/openssl.th +19 -0
  89. data/lib/badger/core/teeth/pcre.th +9 -0
  90. data/lib/badger/core/teeth/plugins.th +14 -0
  91. data/lib/badger/core/teeth/postfix.th +11 -0
  92. data/lib/badger/core/teeth/pwgen.th +9 -0
  93. data/lib/badger/core/teeth/rake.th +12 -0
  94. data/lib/badger/core/teeth/readline.th +19 -0
  95. data/lib/badger/core/teeth/redis.th +18 -0
  96. data/lib/badger/core/teeth/resque.th +12 -0
  97. data/lib/badger/core/teeth/ruby.th +52 -0
  98. data/lib/badger/core/teeth/rubygems.th +17 -0
  99. data/lib/badger/core/teeth/san_juan.th +4 -0
  100. data/lib/badger/core/teeth/sox.th +12 -0
  101. data/lib/badger/core/teeth/speex.th +12 -0
  102. data/lib/badger/core/teeth/sqlite3.th +14 -0
  103. data/lib/badger/core/teeth/ssh_keys.th +10 -0
  104. data/lib/badger/core/teeth/sshpass.th +9 -0
  105. data/lib/badger/core/teeth/sudo.th +9 -0
  106. data/lib/badger/core/teeth/syslog-ng.th +16 -0
  107. data/lib/badger/core/teeth/sysv-rc-conf.th +4 -0
  108. data/lib/badger/core/teeth/x264.th +11 -0
  109. data/lib/badger/core/teeth/xvid.th +11 -0
  110. data/lib/badger/core/teeth/yasm.th +11 -0
  111. data/lib/badger/core/teeth/zlib.th +9 -0
  112. data/lib/core.rb +313 -0
  113. data/lib/errors.rb +202 -0
  114. metadata +297 -0
@@ -0,0 +1,6 @@
1
+ username: "typically root"
2
+ password: "server password"
3
+ domain: "domain or ip of the server"
4
+ port: "ssh port usually port 22"
5
+ redis: false #true will host redis locally
6
+ environment: "production" # or "staging", development and testing are excluded.
@@ -0,0 +1,112 @@
1
+ #!/bin/bash
2
+ source /etc/badger/core/functions
3
+ if [ "$(cat /etc/issue | egrep '(CentOS)|(Red\ Hat)')" ]
4
+ then
5
+ yum_gcc
6
+ yum_make
7
+ yum_gcc-c++
8
+ yum_automake
9
+ yum_libtool
10
+ yum_logrotate
11
+ yum_syslog-ng
12
+ yum_openssl
13
+ yum_openssl-devel
14
+ ssh_badger
15
+ yum_sudo
16
+ yum_curl
17
+ yum_curl-devel
18
+ yum_ntpd
19
+ #------------------
20
+ #install_media_group
21
+ config_badger
22
+ yum_postfix
23
+ yum_bison
24
+ yum_bison-devel
25
+ yum_readline
26
+ yum_readline-devel
27
+ yum_zlib
28
+ yum_zlib-devel
29
+ yum_libxml2
30
+ yum_libxml2-devel
31
+ yum_libxslt
32
+ yum_libxslt-devel
33
+ yum_sqlite3
34
+ yum_mysql
35
+ yum_mysql-devel
36
+ yum_libyaml
37
+ yum_libyaml-devel
38
+ install_source_ruby
39
+ install_source_rubygems 1.8.21 badger badger && echo 'RubyGems Installed'
40
+ echo 'Gems take forever......'
41
+ gem_rake
42
+ gem_san_juan
43
+ gem_god
44
+ gem_capistrano-ext
45
+ yum_sshpass
46
+ git_repo
47
+ gem_bundler
48
+ yum_pcre-devel
49
+ config_god
50
+ config_capistrano staging
51
+ rm -rf /etc/badger/core/files/mysql/database.yml
52
+ firewall web
53
+ elif [ "$(cat /etc/issue | grep Ubuntu)" ]
54
+ then
55
+ apt_gcc
56
+ apt_make
57
+ apt_g++
58
+ apt_automake
59
+ apt_libtool
60
+ apt_logrotate
61
+ apt_sysv-rc-conf
62
+ apt_syslog-ng
63
+ apt_openssl
64
+ apt_libssl-dev
65
+ ssh_badger
66
+ apt_sudo
67
+ apt_curl
68
+ apt_curl_openssl-dev
69
+ apt_curl_gnutls-dev
70
+ apt_ntp
71
+ apt_chkconfig
72
+ apt_git
73
+ #------------------
74
+ #install_media_group
75
+ config_badger
76
+ apt_postfix
77
+ apt_bison
78
+ apt_libbison-dev
79
+ apt_libreadline6
80
+ apt_libreadline6-dev
81
+ apt_libxml2
82
+ apt_libxml2-dev
83
+ apt_libxslt
84
+ apt_libxslt-dev
85
+ apt_sqlite3
86
+ apt_sqlite3-dev
87
+ apt_mysql-server
88
+ apt_libmysqlclient && echo 'Libmysqlclient Installed'
89
+ apt_libyaml
90
+ apt_libyaml-dev
91
+ apt_libffi-dev
92
+ install_source_ruby
93
+ install_source_rubygems 1.8.21 badger badger && echo 'RubyGems Installed'
94
+ echo 'Gems take forever......'
95
+ source /root/.bashrc
96
+ source /root/.profile
97
+ gem_rake
98
+ gem_san_juan
99
+ gem_capistrano-ext
100
+ gem_god
101
+ apt_sshpass
102
+ git_repo
103
+ gem_bundler
104
+ apt_libpcre3-dev
105
+ config_god
106
+ config_capistrano staging
107
+ rm -rf /etc/badger/core/files/mysql/database.yml
108
+ firewall web
109
+ else
110
+ echo "ERROR: Incompatible Operating System."
111
+ exit 64
112
+ fi
@@ -0,0 +1,59 @@
1
+ #!/bin/bash
2
+ source /etc/badger/core/functions
3
+ if [ "$(cat /etc/issue | egrep '(CentOS)|(Red\ Hat)')" ]
4
+ then
5
+ yum_gcc
6
+ yum_make
7
+ yum_gcc-c++
8
+ yum_automake
9
+ yum_libtool
10
+ yum_logrotate
11
+ yum_syslog-ng
12
+ yum_openssl
13
+ yum_openssl-devel
14
+ ssh_badger
15
+ yum_sudo
16
+ yum_curl
17
+ yum_curl-devel
18
+ yum_ntpd
19
+ yum_sqlite3
20
+ yum_mysql
21
+ yum_mysql-devel
22
+ yum_pwgen
23
+ yum_mysql-server
24
+ config_mysql-privileges-rails
25
+ config_mysql-external
26
+ #install_source_redis
27
+ firewall db
28
+ elif [ "$(cat /etc/issue | egrep '(Ubuntu)|(Debian)')" ]
29
+ then
30
+ apt_gcc
31
+ apt_make
32
+ apt_g++
33
+ apt_automake
34
+ apt_libtool
35
+ apt_logrotate
36
+ apt_sysv-rc-conf
37
+ apt_syslog-ng
38
+ apt_openssl
39
+ apt_libssl-dev
40
+ ssh_badger
41
+ apt_sudo
42
+ apt_curl
43
+ apt_curl_openssl-dev
44
+ apt_curl_gnutls-dev
45
+ apt_ntp
46
+ apt_chkconfig
47
+ apt_sqlite3
48
+ apt_sqlite3-dev
49
+ apt_mysql-server
50
+ apt_libmysqlclient && echo 'Libmysqlclient Installed'
51
+ apt_pwgen
52
+ config_mysql-privileges-rails
53
+ config_mysql-external
54
+ #install_source_redis
55
+ firewall db
56
+ else
57
+ echo "ERROR: Incompatible Operating System."
58
+ exit 64
59
+ fi
@@ -0,0 +1,125 @@
1
+ #!/bin/bash
2
+ source /etc/badger/core/functions
3
+ before
4
+ if [ "$(cat /etc/issue | egrep '(CentOS)|(Red\ Hat)')" ]
5
+ then
6
+ yum_gcc
7
+ yum_make
8
+ yum_gcc-c++
9
+ yum_automake
10
+ yum_libtool
11
+ yum_logrotate
12
+ yum_syslog-ng
13
+ yum_openssl
14
+ yum_openssl-devel
15
+ ssh_badger
16
+ yum_sudo
17
+ yum_curl
18
+ yum_curl-devel
19
+ yum_ntpd
20
+ dev
21
+ config_badger
22
+ yum_postfix
23
+ yum_bison
24
+ yum_bison-devel
25
+ yum_readline
26
+ yum_readline-devel
27
+ yum_zlib
28
+ yum_zlib-devel
29
+ yum_libxml2
30
+ yum_libxml2-devel
31
+ yum_libxslt
32
+ yum_libxslt-devel
33
+ yum_sqlite3
34
+ yum_mysql
35
+ yum_mysql-devel
36
+ yum_libyaml
37
+ yum_libyaml-devel
38
+ install_source_ruby
39
+ install_source_rubygems 1.8.21 badger badger && echo 'RubyGems Installed'
40
+ echo 'Gems take forever......'
41
+ gem_san_juan
42
+ gem_capistrano-ext
43
+ gem_god
44
+ git_clone
45
+ gem_rake
46
+ gem_bundler
47
+ yum_pwgen
48
+ yum_mysql-server
49
+ config_mysql-privileges-rails
50
+ config_mysql-badger
51
+ yum_pcre-devel
52
+ config_god
53
+ #install_source_redis
54
+ config_capistrano staging
55
+ install_source_nginx
56
+ config_nginx
57
+ nginx_add_site staging-web
58
+ rm -rf /etc/badger/core/files/mysql/database.yml
59
+ firewall web
60
+ elif [ "$(cat /etc/issue | egrep '(Ubuntu)|(Debian)')" ]
61
+ then
62
+ apt_gcc
63
+ apt_make
64
+ apt_g++
65
+ apt_automake
66
+ apt_libtool
67
+ apt_logrotate
68
+ apt_sysv-rc-conf
69
+ apt_syslog-ng
70
+ apt_openssl
71
+ apt_libssl-dev
72
+ ssh_badger
73
+ apt_sudo
74
+ apt_curl
75
+ apt_curl_openssl-dev
76
+ apt_curl_gnutls-dev
77
+ apt_ntp
78
+ apt_chkconfig
79
+ dev
80
+ config_badger
81
+ apt_postfix
82
+ apt_bison
83
+ apt_libbison-dev
84
+ apt_libreadline6
85
+ apt_libreadline6-dev
86
+ apt_libxml2
87
+ apt_libxml2-dev
88
+ apt_libxslt
89
+ apt_libxslt-dev
90
+ apt_sqlite3
91
+ apt_sqlite3-dev
92
+ apt_mysql-server
93
+ apt_libmysqlclient && echo 'Libmysqlclient Installed'
94
+ apt_libyaml
95
+ apt_libyaml-dev
96
+ apt_libffi-dev
97
+ install_source_ruby
98
+ install_source_rubygems 1.8.21 badger badger && echo 'RubyGems Installed'
99
+ echo 'Gems take forever......'
100
+ source /root/.bashrc
101
+ source /root/.profile
102
+ gem_rake
103
+ gem_san_juan
104
+ gem_capistrano-ext
105
+ gem_god
106
+ apt_git
107
+ git_clone
108
+ gem_bundler
109
+ apt_pwgen
110
+ config_mysql-privileges-rails
111
+ config_mysql-badger
112
+ apt_libpcre3-dev
113
+ config_god
114
+ #install_source_redis
115
+ config_capistrano staging
116
+ apt_nginx
117
+ config_nginx
118
+ nginx_add_site staging-web
119
+ rm -rf /etc/badger/core/files/mysql/database.yml
120
+ firewall web
121
+ else
122
+ echo "ERROR: Incompatible Operating System."
123
+ exit 64
124
+ fi
125
+ after
File without changes
@@ -0,0 +1,4 @@
1
+ load 'deploy' if respond_to?(:namespace) # cap2 differentiator
2
+ Dir['vendor/plugins/*/recipes/*.rb'].each { |plugin| load(plugin) }
3
+
4
+ load 'config/deploy' # remove this line to skip loading any of the default tasks
@@ -0,0 +1,139 @@
1
+ load "deploy"
2
+ load "deploy/assets"
3
+ require 'rubygems'
4
+ require 'yaml'
5
+ require 'bundler/capistrano'
6
+ require './lib/badger_plugin.rb' if File.exists?("lib/badger_plugin.rb")
7
+
8
+ `git pull origin master`
9
+ YAML::ENGINE.yamler = 'syck'
10
+ yml = YAML.load_file "/opt/tmp/web/config/badger.yml"
11
+ name = yml[app_domain]['project_name']
12
+
13
+ yml.keys.each do |k|
14
+ if k.include?("app")
15
+ host_server = true
16
+ end
17
+ end
18
+
19
+ begin
20
+ database_yml = YAML.load_file "/opt/tmp/web/config/database_example.yml"
21
+ rescue
22
+ host_server = false
23
+ raise LoadError, "could not read from database_example.yml"
24
+ end
25
+
26
+ set :bundle_dir, ""
27
+ set :bundle_flags, ""
28
+ set :bundle_without, [:development, :test]
29
+ set :bundle_path, "/home/badger/.bundler"
30
+
31
+ set :application, "web"
32
+
33
+ set :repository, "git@#{yml['domain']}:/opt/git/#{name}.git"
34
+ set :rails_env, "production"
35
+
36
+ set :scm, :git
37
+ set :branch, "master"
38
+ set :git_enable_submodules, 1
39
+ set :git_shallow_clone, 1
40
+
41
+ default_run_options[:pty] = true #fix for teamcity
42
+ ssh_options[:auth_methods] = %w(publickey)
43
+ ssh_options[:keys] = %w(/root/.ssh/id_rsa)
44
+
45
+ set :user, "badger"
46
+ set :domain, yml[app_domain]['domain']
47
+
48
+ set :deploy_to, "/opt/#{application}"
49
+
50
+ set :use_sudo, true
51
+ set :keep_releases, 30
52
+
53
+ require 'san_juan'
54
+ role :app, domain
55
+ role :web, domain
56
+ role :db, domain, :primary => true
57
+
58
+ san_juan.role :web, %w(nginx)
59
+ set :app_port, 4001
60
+
61
+ set :rake, "/opt/ruby/bin/rake"
62
+ set :default_environment, {
63
+ 'PATH' => '/opt/ruby/bin:/opt/rubygems/bin:$PATH',
64
+ 'GEM_HOME' => '/opt/rubygems'
65
+ }
66
+
67
+ namespace :configuration do
68
+ task :db do
69
+ run "cp #{release_path}/config/database_example.yml #{release_path}/config/database.yml"
70
+ end
71
+ end
72
+
73
+ namespace :resque do
74
+ task :prepare_resque, :roles => :app do
75
+ if host_server == true
76
+ resque_rake = "begin\n require 'resque'\n require 'resque/tasks'\n task \"resque:setup\" => :environment\nrescue LoadError\nend"
77
+ file = File.open("/opt/tmp/web/Rakefile")
78
+ rakefile = file.read
79
+ unless rakefile.include?(resque_rake)
80
+ file = File.open("#{release_path}/Rakefile", "a+") {|f| f.write("\n\n" + resque_rake) }
81
+ end
82
+ run "/bin/bash -c 'source /etc/badger/core/teeth/resque.th; dbResque=#{database_yml['production']['host']}; source /etc/badger/core/files/resque/resque.yml; resque_yml #{release_path}; config_resque #{release_path}'"
83
+ end
84
+ end
85
+
86
+ task :load_config, :roles => :app do
87
+ run "mkdir -p #{release_path}/config/god"
88
+ run "rsync /etc/badger/core/files/god/angel/resque-dev.god #{release_path}/config/god/resque-dev.god"
89
+ run "rsync /etc/badger/core/files/god/angel/resque-stg.god #{release_path}/config/god/resque-stg.god"
90
+ run "rsync /etc/badger/core/files/god/angel/resque.god #{release_path}/config/god/resque.god"
91
+ if File.exists?('/home/badger/resque.god')
92
+ run "sudo /opt/rubygems/bin/god load /home/badger/resque.god"
93
+ else
94
+ run "sudo /opt/rubygems/bin/god load /etc/badger/core/files/god/angel/resque.god"
95
+ end
96
+ end
97
+
98
+ task :restart, :roles => :app do
99
+ run "sudo /opt/rubygems/bin/god restart resque"
100
+ end
101
+ end
102
+
103
+ namespace :deploy do
104
+ desc "Restarting services using"
105
+ task :restart, :roles => :app, :except => { :no_release => true } do
106
+ resque.prepare_resque
107
+ resque.load_config
108
+ #resque.restart
109
+ end
110
+
111
+ [:start, :stop].each do |t|
112
+ desc "#{t} task is a no-op with passenger"
113
+ task t, :roles => :app do ; end
114
+ end
115
+
116
+ task :badger_plugin do
117
+ BadgerPlugin.new() if File.exists?("lib/badger_plugin.rb")
118
+ end
119
+
120
+ task :migrations do
121
+ run "cd #{release_path} && #{rake} db:migrate RAILS_ENV=production"
122
+ end
123
+
124
+ task :seeds do
125
+ run "cd #{release_path} && #{rake} db:seed_fu RAILS_ENV=production"
126
+ end
127
+
128
+ task :link_audio do
129
+ run "ln -sf /opt/recordings #{release_path}/public/recordings"
130
+ end
131
+ end
132
+
133
+ after 'deploy:finalize_update', :roles => :app do
134
+ configuration.db
135
+ deploy.migrations
136
+ #deploy.seeds
137
+ #deploy.link_audio
138
+ deploy.cleanup
139
+ end
@@ -0,0 +1,136 @@
1
+ load "deploy"
2
+ load "deploy/assets"
3
+ require 'rubygems'
4
+ require 'yaml'
5
+ require 'bundler/capistrano'
6
+ require './lib/badger_plugin.rb' if File.exists?("lib/badger_plugin.rb")
7
+
8
+ `git pull origin master`
9
+ YAML::ENGINE.yamler = 'syck'
10
+ yml = YAML.load_file "/opt/tmp/web/config/badger.yml"
11
+ name = `cat /etc/badger/core/files/badger/info`
12
+
13
+ yml.keys.each do |k|
14
+ if k.include?("app")
15
+ host_server = true
16
+ end
17
+ end
18
+
19
+ begin
20
+ database_yml = YAML.load_file "/opt/tmp/web/config/database_example.yml"
21
+ rescue
22
+ host_server = false
23
+ end
24
+
25
+ set :bundle_dir, ""
26
+ set :bundle_flags, ""
27
+ set :bundle_without, [:development, :test]
28
+ set :bundle_path, "/home/badger/.bundler"
29
+
30
+ set :application, "web"
31
+
32
+ set :repository, "git@#{yml['domain']}:/opt/git/#{name.chomp}.git"
33
+ set :rails_env, "production"
34
+ #set :normalize_asset_timestamps, false
35
+ set :scm, :git
36
+ set :branch, "master"
37
+ set :git_enable_submodules, 1
38
+ set :git_shallow_clone, 1
39
+
40
+ default_run_options[:pty] = true #fix for teamcity
41
+ ssh_options[:auth_methods] = %w(publickey)
42
+ ssh_options[:keys] = %w(/root/.ssh/id_rsa)
43
+
44
+ set :user, "badger"
45
+ set :domain, "#{yml['domain']}"#system('cat /etc/badger/core/files/badger/info')
46
+
47
+ set :deploy_to, "/opt/#{application}"
48
+
49
+ set :use_sudo, true
50
+ set :keep_releases, 30
51
+
52
+ require 'san_juan'
53
+ role :app, domain
54
+ role :web, domain
55
+ role :db, domain, :primary => true
56
+
57
+ san_juan.role :web, %w(nginx)
58
+ set :app_port, 4001
59
+
60
+ set :rake, "bundle exec /opt/rubygems/bin/rake"
61
+ set :default_environment, {
62
+ 'PATH' => '/usr/bin:/bin/bash:/opt/ruby/bin:/opt/rubygems/bin:$PATH',
63
+ 'GEM_HOME' => '/opt/rubygems'
64
+ }
65
+
66
+ assets_compile = true
67
+
68
+ namespace :configuration do
69
+ task :resque, :roles => :app do
70
+ if host_server
71
+ run "/bin/bash -c 'source /etc/badger/core/teeth/resque.th; dbResque=#{database_yml['production']['host']}; source /etc/badger/core/files/resque/resque.yml; resque_yml #{release_path}; config_resque #{release_path}'"
72
+ end
73
+ end
74
+
75
+ task :db do
76
+ if yml['local_db'] == false
77
+ run "cp -rf #{release_path}/config/database_example.yml #{release_path}/config/database.yml"
78
+ else
79
+ run "cp -rf /etc/badger/core/files/mysql/database.yml #{release_path}/config/database.yml"
80
+ end
81
+ run "cp -rf /etc/badger/core/files/god/unicorn-stg.rb #{release_path}/config/unicorn-stg.rb"
82
+ run "cp -rf /etc/badger/core/files/god/unicorn.rb #{release_path}/config/unicorn.rb"
83
+ end
84
+ end
85
+
86
+ namespace :unicorn do
87
+ task :load_config, :roles => :app do
88
+ run "mkdir -p #{release_path}/config/god"
89
+ run "rsync /etc/badger/core/files/god/angel/resque-dev.god #{release_path}/config/god/resque-dev.god"
90
+ run "rsync /etc/badger/core/files/god/angel/resque-stg.god #{release_path}/config/god/resque-stg.god"
91
+ run "rsync /etc/badger/core/files/god/angel/resque.god #{release_path}/config/god/resque.god"
92
+ run "sudo /opt/rubygems/bin/god load /etc/badger/core/files/god/angel/unicorn.god"
93
+ end
94
+
95
+ task :restart, :roles => :app do
96
+ run "sudo /opt/rubygems/bin/god restart unicorn"
97
+ end
98
+ end
99
+
100
+ namespace :deploy do
101
+ desc "Restarting unicorn using"
102
+ task :restart, :roles => :app, :except => { :no_release => true } do
103
+ unicorn.load_config
104
+ unicorn.restart
105
+ end
106
+
107
+ [:start, :stop].each do |t|
108
+ desc "#{t} task is a no-op with passenger"
109
+ task t, :roles => :app do ; end
110
+ end
111
+
112
+ task :badger_plugin do
113
+ BadgerPlugin.new() if File.exists?("lib/badger_plugin.rb")
114
+ end
115
+
116
+ task :migrations do
117
+ run "cd #{release_path} && #{rake} db:migrate RAILS_ENV=production"
118
+ end
119
+
120
+ task :seeds do
121
+ run "cd #{release_path} && #{rake} db:seed_fu RAILS_ENV=production"
122
+ end
123
+
124
+ task :link_audio do
125
+ run "ln -sf /opt/recordings #{release_path}/public/recordings"
126
+ end
127
+ end
128
+
129
+ after 'deploy:finalize_update', :roles => :app do
130
+ configuration.resque
131
+ configuration.db
132
+ deploy.migrations
133
+ #deploy.seeds
134
+ #deploy.link_audio
135
+ deploy.cleanup
136
+ end