badger-rails 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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