myrails 4.0.0 → 5.0.0

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 (97) hide show
  1. checksums.yaml +4 -4
  2. data/lib/myrails.rb +366 -167
  3. data/lib/myrails/templates/capistrano/config/deploy/templates/maintenance/index.html +41 -0
  4. data/lib/myrails/templates/capistrano/config/deploy/templates/monit.conf.erb +4 -0
  5. data/lib/myrails/templates/capistrano/config/deploy/templates/nginx.conf.erb +69 -0
  6. data/lib/myrails/templates/capistrano/config/deploy/templates/unicorn.rb.erb +26 -0
  7. data/lib/myrails/templates/capistrano/config/deploy/templates/unicorn_init.sh.erb +71 -0
  8. data/lib/myrails/templates/capistrano/lib/capistrano/tasks/maintenance.rake +16 -0
  9. data/lib/myrails/templates/capistrano/lib/capistrano/tasks/monit.rake +64 -0
  10. data/lib/myrails/templates/capistrano/lib/capistrano/tasks/nginx.rake +68 -0
  11. data/lib/myrails/templates/capistrano/lib/capistrano/tasks/unicorn.rake +114 -0
  12. data/lib/myrails/templates/{assets → rails/app/assets/javascripts}/application.js +0 -1
  13. data/lib/myrails/templates/{assets → rails/app/assets/stylesheets}/animate.scss +0 -0
  14. data/lib/myrails/templates/{assets → rails/app/assets/stylesheets}/application.css.sass +0 -2
  15. data/lib/myrails/templates/{assets → rails/app/assets/stylesheets/bootstrap}/bootstrap_themes/cerulean.scss +0 -0
  16. data/lib/myrails/templates/{assets → rails/app/assets/stylesheets/bootstrap}/bootstrap_themes/cosmo.scss +0 -0
  17. data/lib/myrails/templates/{assets → rails/app/assets/stylesheets/bootstrap}/bootstrap_themes/cyborg.scss +0 -0
  18. data/lib/myrails/templates/{assets → rails/app/assets/stylesheets/bootstrap}/bootstrap_themes/darkly.scss +0 -0
  19. data/lib/myrails/templates/{assets → rails/app/assets/stylesheets/bootstrap}/bootstrap_themes/flatly.scss +0 -0
  20. data/lib/myrails/templates/{assets → rails/app/assets/stylesheets/bootstrap}/bootstrap_themes/journal.scss +0 -0
  21. data/lib/myrails/templates/{assets → rails/app/assets/stylesheets/bootstrap}/bootstrap_themes/lumen.scss +0 -0
  22. data/lib/myrails/templates/{assets → rails/app/assets/stylesheets/bootstrap}/bootstrap_themes/paper.scss +0 -0
  23. data/lib/myrails/templates/{assets → rails/app/assets/stylesheets/bootstrap}/bootstrap_themes/readable.scss +0 -0
  24. data/lib/myrails/templates/{assets → rails/app/assets/stylesheets/bootstrap}/bootstrap_themes/sandstone.scss +0 -0
  25. data/lib/myrails/templates/{assets → rails/app/assets/stylesheets/bootstrap}/bootstrap_themes/simplex.scss +0 -0
  26. data/lib/myrails/templates/{assets → rails/app/assets/stylesheets/bootstrap}/bootstrap_themes/slate.scss +0 -0
  27. data/lib/myrails/templates/{assets → rails/app/assets/stylesheets/bootstrap}/bootstrap_themes/spacelab.scss +0 -0
  28. data/lib/myrails/templates/{assets → rails/app/assets/stylesheets/bootstrap}/bootstrap_themes/superhero.scss +0 -0
  29. data/lib/myrails/templates/{assets → rails/app/assets/stylesheets/bootstrap}/bootstrap_themes/united.scss +0 -0
  30. data/lib/myrails/templates/{assets → rails/app/assets/stylesheets/bootstrap}/bootstrap_themes/yeti.scss +0 -0
  31. data/lib/myrails/templates/{assets → rails/app/assets/stylesheets}/will_paginate.scss +0 -0
  32. data/lib/myrails/templates/rails/{controller.rb → app/controllers/controller.rb} +0 -0
  33. data/lib/myrails/templates/rails/{namespace_controller.rb → app/controllers/namespace_controller.rb} +0 -0
  34. data/lib/myrails/templates/rails/{application_helper.rb → app/helpers/application_helper.rb} +0 -0
  35. data/lib/myrails/templates/{mailer → rails/app/mailers}/dev_mail_interceptor.rb +0 -0
  36. data/lib/myrails/templates/{mailer → rails/app/mailers}/sendgrid.rb +0 -0
  37. data/lib/myrails/templates/rails/{model.rb → app/models/model.rb} +0 -0
  38. data/lib/myrails/templates/rails/{namespace_model.rb → app/models/namespace_model.rb} +0 -0
  39. data/lib/myrails/templates/rails/{pundit.rb → app/policies/pundit.rb} +0 -0
  40. data/lib/myrails/templates/{presenters → rails/app/presenters}/base.rb +0 -0
  41. data/lib/myrails/templates/{presenters → rails/app/presenters}/presenter.rb +0 -0
  42. data/lib/myrails/templates/{presenters → rails/app/presenters}/presenter_config.rb +0 -0
  43. data/lib/myrails/templates/{presenters → rails/app/presenters}/presenter_spec.rb +0 -0
  44. data/lib/myrails/templates/{layout → rails/app/views/layout/bootstrap}/_error_messages.html.haml +0 -0
  45. data/lib/myrails/templates/{layout → rails/app/views/layout/bootstrap}/_footer.html.haml +0 -0
  46. data/lib/myrails/templates/{layout → rails/app/views/layout/bootstrap}/_info_messages.html.haml +0 -0
  47. data/lib/myrails/templates/{layout → rails/app/views/layout/bootstrap}/_nav.html.haml +0 -0
  48. data/lib/myrails/templates/{layout → rails/app/views/layout/bootstrap}/_success_message.html.haml +0 -0
  49. data/lib/myrails/templates/{layout → rails/app/views/layout/bootstrap}/application.html.haml +0 -0
  50. data/lib/myrails/templates/{layout → rails/app/views/layout/bootstrap}/footers/css/footer-distributed-with-address-and-phones.scss +0 -0
  51. data/lib/myrails/templates/{layout → rails/app/views/layout/bootstrap}/footers/css/footer-distributed-with-contact-form.scss +0 -0
  52. data/lib/myrails/templates/{layout → rails/app/views/layout/bootstrap}/footers/css/footer-distributed-with-search.scss +0 -0
  53. data/lib/myrails/templates/{layout → rails/app/views/layout/bootstrap}/footers/css/footer-distributed.scss +0 -0
  54. data/lib/myrails/templates/{layout → rails/app/views/layout/bootstrap}/footers/footer-distributed-with-address-and-phones.html.haml +0 -0
  55. data/lib/myrails/templates/{layout → rails/app/views/layout/bootstrap}/footers/footer-distributed-with-contact-form.html.haml +0 -0
  56. data/lib/myrails/templates/{layout → rails/app/views/layout/bootstrap}/footers/footer-distributed-with-search.html.haml +0 -0
  57. data/lib/myrails/templates/{layout → rails/app/views/layout/bootstrap}/footers/footer-distributed.html.haml +0 -0
  58. data/lib/myrails/templates/rails/app/views/layout/material/_detailed_pagination.html.haml +4 -0
  59. data/lib/myrails/templates/rails/app/views/layout/material/_error_messages.html.haml +9 -0
  60. data/lib/myrails/templates/rails/app/views/layout/material/_footer.html.haml +24 -0
  61. data/lib/myrails/templates/rails/app/views/layout/material/_info_messages.html.haml +14 -0
  62. data/lib/myrails/templates/rails/app/views/layout/material/_nav.html.haml +27 -0
  63. data/lib/myrails/templates/rails/app/views/layout/material/_simple_pagination.html.haml +2 -0
  64. data/lib/myrails/templates/rails/app/views/layout/material/_success_message.html.haml +7 -0
  65. data/lib/myrails/templates/rails/app/views/layout/material/application.html.haml +19 -0
  66. data/lib/myrails/templates/rails/app/views/layout/material/mailer.html.haml +246 -0
  67. data/lib/myrails/templates/rails/app/views/layout/material/mailer.text.haml +1 -0
  68. data/lib/myrails/templates/rails/config/application.example.yml +40 -0
  69. data/lib/myrails/templates/spec/controller.rb +123 -0
  70. data/lib/myrails/templates/{rspec → spec}/factory.rb +1 -1
  71. data/lib/myrails/templates/spec/feature.rb +8 -0
  72. data/lib/myrails/templates/{rspec → spec}/files.rb +0 -0
  73. data/lib/myrails/templates/spec/helper.rb +2 -0
  74. data/lib/myrails/templates/{rspec → spec}/model.rb +0 -0
  75. data/lib/myrails/templates/{rspec → spec}/pundit.rb +0 -0
  76. data/lib/myrails/templates/{rspec → spec}/request.rb +0 -0
  77. data/lib/myrails/templates/{rspec → spec}/request_shared_example.rb +0 -0
  78. data/lib/myrails/templates/{rspec → spec}/shared_example.rb +0 -0
  79. data/lib/myrails/templates/{rspec → spec/support/configs}/database_cleaner.rb +0 -0
  80. data/lib/myrails/templates/{rspec → spec/support/configs}/devise.rb +1 -1
  81. data/lib/myrails/templates/spec/support/configs/factory_bot.rb +3 -0
  82. data/lib/myrails/templates/{rspec → spec/support/configs}/mailer.rb +0 -0
  83. data/lib/myrails/templates/{rspec → spec/support/configs}/shoulda_matchers.rb +0 -0
  84. data/lib/myrails/templates/{rspec → spec/support/configs}/silence_backtrace.rb +0 -0
  85. data/lib/myrails/templates/spec/support/helpers/javascript.rb +12 -0
  86. data/lib/myrails/templates/spec/support/helpers/mailer.rb +9 -0
  87. data/lib/myrails/templates/spec/support/shared_examples/requires_authentication.rb +14 -0
  88. data/lib/myrails/templates/spec/support/shared_examples/requires_authorization.rb +16 -0
  89. data/lib/myrails/templates/spec/support/shared_examples/supports_file_type.rb +25 -0
  90. data/lib/myrails/version.rb +1 -1
  91. metadata +91 -68
  92. data/lib/myrails/templates/initializers/application_vars.rb +0 -2
  93. data/lib/myrails/templates/rails/application.yml +0 -19
  94. data/lib/myrails/templates/rspec/controller.rb +0 -98
  95. data/lib/myrails/templates/rspec/factory_girl.rb +0 -3
  96. data/lib/myrails/templates/rspec/javascript.rb +0 -8
  97. data/lib/myrails/templates/rspec/router.rb +0 -7
@@ -0,0 +1,41 @@
1
+ <html lang="en">
2
+ <head>
3
+ <meta charset="utf-8">
4
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
5
+ <meta name="description" content="">
6
+ <meta name="author" content="">
7
+ <title>Lovell.Direct | Maintenance</title>
8
+ </head>
9
+
10
+ <style>
11
+ #upper_nav {background-color: #363940; padding: 20px; text-align: center;}
12
+ body {background-color: #ECECEC; margin: 0;}
13
+ .logo { background: url('/wtw_logo.png'); height: 49px; width: 74px; display: block; margin: 0 auto;}
14
+ #container_body {
15
+ text-align: center;
16
+ max-width: 600px;
17
+ padding: 0 20px;
18
+ margin: 0 auto;
19
+ color: #5a5a5a;
20
+ font-family: Helvetica-neue, Helvetica, sans-serif;
21
+ }
22
+ #container_body h4 { font-size: 24px; margin-bottom: 10px;}
23
+ #container_body p { font-size: 16px; margin-bottom: 20px;line-height: 24px;}
24
+ #container_body p a { color: #80c8ac; }
25
+ </style>
26
+
27
+ <body>
28
+ <div id="upper_nav">
29
+ <div class="logo"></div>
30
+ </div>
31
+ <div id='container_body'>
32
+ <h4>I'll be right back!</h4>
33
+ <p>I am currently applying some upgrades to make your experience even better.</p>
34
+
35
+ <p><i>lovell.direct should be back online shortly.</i></p>
36
+
37
+ <p>If you have any questions or concerns, you can send me a message at <a href="mailto:vmcilwain@me.com" target="_top">vmcilwain@me.com</a>.</p>
38
+ </div>
39
+
40
+ </body>
41
+ </body>
@@ -0,0 +1,4 @@
1
+ check process <%= fetch(:application) %>_unicorn with pidfile /var/www/<%= fetch(:application) %>/current/tmp/pids/unicorn.pid
2
+ start "/etc/init.d/<%= fetch(:application) %>_unicorn start"
3
+ stop "/etc/init.d/<%= fetch(:application) %>_unicorn stop"
4
+ group <%= fetch(:application) %>
@@ -0,0 +1,69 @@
1
+ upstream <%= fetch(:application) %> {
2
+ # Path to Unicorn SOCK file, as defined previously
3
+ server unix:<%= current_path %>/tmp/sockets/unicorn.<%= fetch(:application) %>.sock fail_timeout=0;
4
+ }
5
+
6
+ server {
7
+ <%#- listen 80 default_server; %>
8
+ listen 443 ssl;
9
+
10
+ server_name <%= fetch(:fqdn) %> www.<%= fetch(:fqdn) %>;
11
+ ssl_certificate /etc/letsencrypt/live/<%= fetch(:fqdn) %>/fullchain.pem;
12
+ ssl_certificate_key /etc/letsencrypt/live/<%= fetch(:fqdn) %>/privkey.pem;
13
+
14
+ ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
15
+ ssl_prefer_server_ciphers on;
16
+ ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';
17
+
18
+ # Application root, as defined previously
19
+ root /var/www/<%= fetch(:application) %>/public;
20
+
21
+ try_files $uri/index.html $uri @<%= fetch(:application) %>;
22
+
23
+ location @<%= fetch(:application) %> {
24
+ proxy_pass http://<%= fetch(:application) %>;
25
+ proxy_set_header Host $http_host;
26
+ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
27
+ proxy_set_header X-Forwarded-Proto $scheme;
28
+ proxy_set_header X-Forwarded-Ssl on; # Optional
29
+ proxy_set_header X-Forwarded-Port $server_port;
30
+ proxy_set_header X-Forwarded-Host $host;
31
+ proxy_redirect off;
32
+ }
33
+
34
+ error_page 500 502 503 504 /500.html;
35
+ client_max_body_size 4G;
36
+ keepalive_timeout 10;
37
+
38
+ if ( -f <%= shared_path %>/.maintenance ) {
39
+ set $maintenance 1;
40
+ }
41
+
42
+ if ( $uri ~ ^/maintenance/ ) {
43
+ set $maintenance 0;
44
+ }
45
+
46
+ if ( $maintenance ) {
47
+ rewrite (.*) /maintenance/index.html last;
48
+ }
49
+
50
+ location ~ ^/(maintenance)/ {
51
+ root <%= shared_path %>/public;
52
+ gzip_static on; # to serve pre-gzipped version
53
+ expires max;
54
+ add_header Cache-Control public;
55
+ }
56
+
57
+ location ~ ^/(assets)/ {
58
+ root <%= current_path %>/public;
59
+ gzip_static on; # to serve pre-gzipped version
60
+ expires max;
61
+ add_header Cache-Control public;
62
+ }
63
+ }
64
+
65
+ server {
66
+ listen 80;
67
+ server_name <%= fetch(:fqdn) %> www.<%= fetch(:fqdn) %>;
68
+ return 301 https://$host$request_uri;
69
+ }
@@ -0,0 +1,26 @@
1
+ # config/unicorn.rb
2
+ #
3
+ # Set the working application directory
4
+ # working_directory '/path/to/your/app'
5
+ working_directory "/var/www/<%= fetch(:application) %>/current"
6
+
7
+ # Unicorn PID file location
8
+ # pid '/path/to/pids/unicorn.pid'
9
+ pid "/var/www/<%= fetch(:application) %>/current/tmp/pids/unicorn.pid"
10
+
11
+ # Path to logs
12
+ # stderr_path '/path/to/log/unicorn.log'
13
+ # stdout_path '/path/to/log/unicorn.log'
14
+ stderr_path "/var/www/<%= fetch(:application) %>/current/log/unicorn.log"
15
+ stdout_path "/var/www/<%= fetch(:application) %>/current/log/unicorn.log"
16
+
17
+ # Unicorn socket
18
+ # listen '/tmp/unicorn.[application name].sock'
19
+ listen "<%= current_path %>/tmp/sockets/unicorn.<%= fetch(:application) %>.sock"
20
+
21
+ # Number of processes
22
+ # worker_processes 4
23
+ worker_processes 2
24
+
25
+ # Time-out
26
+ timeout 30
@@ -0,0 +1,71 @@
1
+ #!/bin/sh
2
+ set -e
3
+ # Example init script, this can be used with nginx, too,
4
+ # since nginx and unicorn accept the same signals
5
+
6
+ # Feel free to change any of the following variables for your app:
7
+ TIMEOUT=${TIMEOUT-60}
8
+ APP_ROOT=/var/www/<%= fetch(:application) %>/current
9
+ PID=$APP_ROOT/tmp/pids/unicorn.pid
10
+ CMD="$APP_ROOT/bin/unicorn -D -c $APP_ROOT/config/unicorn.rb -E <%= fetch(:stage) %>"
11
+ action="$1"
12
+ set -u
13
+
14
+ old_pid="$PID.oldbin"
15
+
16
+ cd $APP_ROOT || exit 1
17
+
18
+ sig () {
19
+ test -s "$PID" && kill -$1 `cat $PID`
20
+ }
21
+
22
+ oldsig () {
23
+ test -s $old_pid && kill -$1 `cat $old_pid`
24
+ }
25
+
26
+ case $action in
27
+ start)
28
+ sig 0 && echo >&2 "Already running" && exit 0
29
+ su -c "$CMD" - deploy
30
+ ;;
31
+ stop)
32
+ sig QUIT && exit 0
33
+ echo >&2 "Not running"
34
+ ;;
35
+ force-stop)
36
+ sig TERM && exit 0
37
+ echo >&2 "Not running"
38
+ ;;
39
+ restart|reload)
40
+ sig HUP && echo reloaded OK && exit 0
41
+ echo >&2 "Couldn't reload, starting '$CMD' instead"
42
+ su -c "$CMD" - deploy
43
+ ;;
44
+ upgrade)
45
+ if sig USR2 && sleep 2 && sig 0 && oldsig QUIT
46
+ then
47
+ n=$TIMEOUT
48
+ while test -s $old_pid && test $n -ge 0
49
+ do
50
+ printf '.' && sleep 1 && n=$(( $n - 1 ))
51
+ done
52
+ echo
53
+
54
+ if test $n -lt 0 && test -s $old_pid
55
+ then
56
+ echo >&2 "$old_pid still exists after $TIMEOUT seconds"
57
+ exit 1
58
+ fi
59
+ exit 0
60
+ fi
61
+ echo >&2 "Couldn't upgrade, starting '$CMD' instead"
62
+ su -c "$CMD" - deploy
63
+ ;;
64
+ reopen-logs)
65
+ sig USR1
66
+ ;;
67
+ *)
68
+ echo >&2 "Usage: $0 "
69
+ exit 1
70
+ ;;
71
+ esac
@@ -0,0 +1,16 @@
1
+ namespace :maintenance do
2
+ desc 'Turn maintenance mode ON'
3
+ task :on do
4
+ on roles(:app) do
5
+ execute :mkdir, "#{shared_path}/public/maintenance" if test("[ ! -d #{shared_path}/public/maintenance ]")
6
+ upload! "config/deploy/templates/maintenance/index.html", "#{shared_path}/public/maintenance/index.html"
7
+ execute :touch, "#{shared_path}/.maintenance"
8
+ end
9
+ end
10
+ desc 'Turn maintenance mode OFF'
11
+ task :off do
12
+ on roles(:app) do
13
+ execute :rm, "#{shared_path}/.maintenance"
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,64 @@
1
+ # Monit file for setting up monit during application deployment
2
+ set :template, "config/deploy/templates/monit.conf.erb"
3
+ set :monit_conf, "tmp/monit.conf"
4
+
5
+ namespace :monit do
6
+
7
+ desc 'creation of monit file for application'
8
+ task :write_monit_conf do
9
+ on roles(:app) do
10
+ info "Creating monit config"
11
+ open(fetch(:monit_conf), 'a') do |f|
12
+ f.puts(ERB.new(File.read("#{fetch(:template)}"), nil, '-').result(binding))
13
+ end
14
+ end
15
+ end
16
+
17
+ desc 'restart monit application'
18
+ task :reload do
19
+ on roles(:app) do
20
+ info 'Reloading initialize monit'
21
+ execute :sudo, 'service monit reload' # re-read /etc/monit/monitrc
22
+ end
23
+ end
24
+
25
+ desc 'stop monit application'
26
+ task :stop do
27
+ on roles(:app) do
28
+ info 'Stopping initialize monit'
29
+ execute :sudo, 'service monit stop'
30
+ end
31
+ end
32
+
33
+ desc 'start monit application'
34
+ task :start do
35
+ on roles(:app) do
36
+ info 'Starting initialize monit'
37
+ execute :sudo, 'service monit start'
38
+ end
39
+ end
40
+
41
+ desc 'upload monit config to app'
42
+ task :upload do
43
+ on roles(:app) do
44
+ upload!(fetch(:monit_conf), "#{current_path}/config")
45
+ end
46
+ end
47
+
48
+ desc 'remove temp file'
49
+ task :remove do
50
+ on roles(:app) do
51
+ FileUtils.rm(fetch(:monit_conf))
52
+ end
53
+ end
54
+
55
+ desc 'start creation of monit file for application'
56
+ task :create_monit_conf do
57
+ on roles(:app) do
58
+ info "Creating #{fetch(:application)} config/monit.config"
59
+ invoke 'monit:write_monit_conf'
60
+ invoke 'monit:upload'
61
+ invoke 'monit:remove'
62
+ end
63
+ end
64
+ end
@@ -0,0 +1,68 @@
1
+ # Capistrano file for setting up nginx during application deployment
2
+ set :nginx_template, 'config/deploy/templates/nginx.conf.erb'
3
+ set :nginx_conf, "tmp/nginx.conf"
4
+
5
+ namespace :nginx do
6
+ desc 'restart nginx'
7
+ task :restart do
8
+ on roles(:app) do
9
+ info 'Restarting nginx'
10
+ # execute :sudo, "fuser -k 80/tcp"
11
+ execute :sudo, 'service nginx stop'
12
+ execute :sudo, "service nginx start"
13
+ end
14
+ end
15
+
16
+ desc "create #{fetch(:application)} nginx.conf"
17
+ task :generate_nginx_conf do
18
+ on roles(:app) do
19
+ info "Generating #{fetch(:application)} nginx.conf file"
20
+ open(fetch(:nginx_conf), 'w') do |f|
21
+ f.puts(ERB.new(File.read(fetch(:nginx_template))).result(binding))
22
+ end
23
+ end
24
+ end
25
+
26
+ desc "upload #{fetch(:application)} nginx.conf"
27
+ task :upload do
28
+ on roles(:app) do
29
+ upload!(fetch(:nginx_conf), "#{current_path}/config")
30
+ end
31
+ end
32
+
33
+ desc "delete local #{fetch(:application)} nginx.conf"
34
+ task :remove do
35
+ on roles(:app) do
36
+ info 'Removing local nginx.conf'
37
+ FileUtils.rm(fetch(:nginx_conf))
38
+ end
39
+ end
40
+
41
+ desc "create symlink for #{fetch(:application)} nginx.conf"
42
+ task :create_symlink do
43
+ on roles(:app) do
44
+ info 'Creating symlink on remote system'
45
+ execute :sudo, "ln -s #{current_path}/config/nginx.conf /etc/nginx/sites-enabled/#{fetch(:application)}"
46
+ end
47
+ end
48
+
49
+ desc "remove symlink for #{fetch(:application)} nginx.conf"
50
+ task :remove_symlink do
51
+ on roles(:app) do
52
+ info 'Removing symlink on remote system'
53
+ execute :sudo, "rm -rf /etc/nginx/sites-enabled/#{fetch(:application)}"
54
+ end
55
+ end
56
+
57
+ desc "add nginx config to #{fetch(:application)}"
58
+ task :create_nginx_config do
59
+ on roles(:app) do |host|
60
+ info "Creating #{fetch(:application)} nginx.conf"
61
+ invoke 'nginx:generate_nginx_conf'
62
+ invoke 'nginx:upload'
63
+ invoke 'nginx:remove'
64
+ invoke 'nginx:remove_symlink'
65
+ invoke 'nginx:create_symlink'
66
+ end
67
+ end
68
+ end
@@ -0,0 +1,114 @@
1
+ # Capistrano file for setting up unicorn during application deployment
2
+ set :template_path, 'config/deploy/templates'
3
+ set :unicorn_conf_template, "#{fetch(:template_path)}/unicorn.rb.erb"
4
+ set :unicorn_init_template, "#{fetch(:template_path)}/unicorn_init.sh.erb"
5
+ set :unicorn_conf, "tmp/unicorn.rb"
6
+ set :unicorn_init, "tmp/unicorn_init.sh"
7
+
8
+ namespace :unicorn do
9
+ desc "generate unicorn.conf for #{fetch(:application)}"
10
+ task :generate_unicorn_conf do
11
+ on roles(:app) do
12
+ info "generating #{fetch(:application)} unicorn.conf file"
13
+ open(fetch(:unicorn_conf), 'w') do |f|
14
+ f.puts(ERB.new(File.read(fetch(:unicorn_conf_template))).result(binding))
15
+ end
16
+ end
17
+ end
18
+
19
+ desc "generate unicorn_init.sh for #{fetch(:application)}"
20
+ task :generate_unicorn_init do
21
+ on roles(:app) do
22
+ info "generating #{fetch(:application)} unicorn_init.sh file"
23
+ open(fetch(:unicorn_init), 'w') do |f|
24
+ f.puts(ERB.new(File.read(fetch(:unicorn_init_template))).result(binding))
25
+ end
26
+ end
27
+ end
28
+
29
+ desc "upload #{fetch(:application)} unicorn.conf"
30
+ task :upload_unicorn_conf do
31
+ on roles(:app) do
32
+ upload!(fetch(:unicorn_conf), "#{current_path}/config")
33
+ end
34
+ end
35
+
36
+ desc "upload #{fetch(:application)} unicorn_init.sh"
37
+ task :upload_unicorn_init do
38
+ on roles(:app) do
39
+ upload!(fetch(:unicorn_init), "#{current_path}/config")
40
+ end
41
+ end
42
+
43
+ desc "delete local #{fetch(:application)} unicorn.conf"
44
+ task :remove_unicorn_conf do
45
+ on roles(:app) do
46
+ info 'Deleting local unicorn.conf'
47
+ FileUtils.rm(fetch(:unicorn_conf))
48
+ end
49
+ end
50
+
51
+ desc "delete local #{fetch(:application)} unicorn.init.sh"
52
+ task :remove_unicorn_init do
53
+ on roles(:app) do
54
+ info 'Deleting local unicorn_init.sh'
55
+ FileUtils.rm(fetch(:unicorn_init))
56
+ end
57
+ end
58
+
59
+ desc "create symlink for #{fetch(:application)} unicorn_init.sh"
60
+ task :create_symlink do
61
+ on roles(:app) do
62
+ info 'Symlinking unicorn_init.sh'
63
+ execute :sudo, "chmod +x #{current_path}/config/unicorn_init.sh"
64
+ execute :sudo, "ln -s #{current_path}/config/unicorn_init.sh /etc/init.d/#{fetch(:application)}_unicorn"
65
+ end
66
+ end
67
+
68
+ desc "remove symlink for #{fetch(:application)} unicorn_init.sh"
69
+ task :remove_symlink do
70
+ on roles(:app) do
71
+ info 'Removing unicorn_init.sh symlink'
72
+ execute :sudo, "rm -rf /etc/init.d/unicorn-#{fetch(:application)}"
73
+ execute :sudo, "rm -rf /etc/init.d/#{fetch(:application)}_unicorn"
74
+ end
75
+ end
76
+
77
+ desc "add unicorn config to #{fetch(:application)}"
78
+ task :create_unicorn_config do
79
+ on roles(:app) do |host|
80
+ invoke 'unicorn:generate_unicorn_conf'
81
+ invoke 'unicorn:upload_unicorn_conf'
82
+ invoke 'unicorn:remove_unicorn_conf'
83
+ end
84
+ end
85
+
86
+ desc "restart unicorn for #{fetch(:application)}"
87
+ task :restart do
88
+ on roles(:app) do
89
+ info 'Restarting unicorn'
90
+ execute :sudo, "/etc/init.d/#{fetch(:application)}_unicorn stop"
91
+ sleep 3
92
+ execute :sudo, "/etc/init.d/#{fetch(:application)}_unicorn start"
93
+ end
94
+ end
95
+
96
+ desc "Set auto-start of unicorn for #{fetch(:application)}"
97
+ task :autostart do
98
+ on roles(:app) do
99
+ info 'Setting unicorn autostart in rc.*'
100
+ execute :sudo, 'update-rc.d online_community_unicorn defaults'
101
+ end
102
+ end
103
+
104
+ desc "add unicorn init config to #{fetch(:application)}"
105
+ task :create_unicorn_init do
106
+ on roles(:app) do |host|
107
+ invoke 'unicorn:generate_unicorn_init'
108
+ invoke 'unicorn:upload_unicorn_init'
109
+ invoke 'unicorn:remove_unicorn_init'
110
+ invoke 'unicorn:remove_symlink'
111
+ invoke 'unicorn:create_symlink'
112
+ end
113
+ end
114
+ end