capistrano-ops 0.2.14 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (78) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +121 -29
  3. data/lib/capistrano/ops/backup/helper.rb +56 -0
  4. data/lib/capistrano/ops/{capistrano/v3/tasks/backup → backup/tasks}/database/create.rake +1 -2
  5. data/lib/capistrano/ops/{capistrano/v3/tasks/backup → backup/tasks}/database/pull.rake +1 -2
  6. data/lib/capistrano/ops/{capistrano/v3/tasks/backup → backup/tasks}/storage/create.rake +1 -2
  7. data/lib/capistrano/ops/{capistrano/v3/tasks/backup → backup/tasks}/storage/pull.rake +1 -2
  8. data/lib/capistrano/ops/backup.rb +14 -4
  9. data/lib/capistrano/ops/capistrano.rb +8 -13
  10. data/lib/capistrano/ops/figaro_yml/helpers.rb +184 -0
  11. data/lib/capistrano/ops/figaro_yml/paths.rb +19 -0
  12. data/lib/capistrano/ops/figaro_yml/tasks/backup.rake +26 -0
  13. data/lib/capistrano/ops/figaro_yml/tasks/check.rake +12 -0
  14. data/lib/capistrano/ops/figaro_yml/tasks/check_config_present.rake +12 -0
  15. data/lib/capistrano/ops/figaro_yml/tasks/check_figaro_file_exists.rake +12 -0
  16. data/lib/capistrano/ops/figaro_yml/tasks/check_git_tracking.rake +12 -0
  17. data/lib/capistrano/ops/{capistrano/v3/tasks/figaro_yml → figaro_yml/tasks}/compare.rake +10 -19
  18. data/lib/capistrano/ops/figaro_yml/tasks/create_local.rake +27 -0
  19. data/lib/capistrano/ops/figaro_yml/tasks/figaro_yml_symlink.rake +10 -0
  20. data/lib/capistrano/ops/figaro_yml/tasks/get.rake +45 -0
  21. data/lib/capistrano/ops/figaro_yml/tasks/get_stage.rake +15 -0
  22. data/lib/capistrano/ops/figaro_yml/tasks/load.rake +10 -0
  23. data/lib/capistrano/ops/figaro_yml/tasks/rollback.rake +22 -0
  24. data/lib/capistrano/ops/figaro_yml/tasks/setup.rake +16 -0
  25. data/lib/capistrano/ops/{capistrano/v3/tasks/figaro_yml → figaro_yml/tasks}/sort_local.rake +2 -4
  26. data/lib/capistrano/ops/figaro_yml.rb +29 -0
  27. data/lib/capistrano/ops/helper.rb +14 -0
  28. data/lib/capistrano/ops/invoke/tasks/invoke.rake +25 -0
  29. data/lib/capistrano/ops/invoke.rb +3 -0
  30. data/lib/capistrano/ops/logrotate/helpers.rb +50 -0
  31. data/lib/capistrano/ops/logrotate/paths.rb +47 -0
  32. data/lib/capistrano/ops/{capistrano/v3/tasks/logrotate → logrotate/tasks}/check.rake +3 -5
  33. data/lib/capistrano/ops/{capistrano/v3/tasks/logrotate → logrotate/tasks}/disable.rake +2 -5
  34. data/lib/capistrano/ops/logrotate/tasks/enable.rake +28 -0
  35. data/lib/capistrano/ops/logrotate/tasks/load.rake +10 -0
  36. data/lib/capistrano/ops/logrotate.rb +19 -0
  37. data/lib/capistrano/ops/logs/helpers.rb +16 -0
  38. data/lib/capistrano/ops/logs/paths.rb +23 -0
  39. data/lib/capistrano/ops/logs/tasks/load.rake +9 -0
  40. data/lib/capistrano/ops/logs/tasks/rails.rake +18 -0
  41. data/lib/capistrano/ops/logs/tasks/sidekiq.rake +42 -0
  42. data/lib/capistrano/ops/logs.rb +18 -0
  43. data/lib/capistrano/ops/{backup → rails/lib/backup}/s3.rb +1 -1
  44. data/lib/capistrano/ops/rails/lib/backup.rb +6 -0
  45. data/lib/capistrano/ops/rails/lib/notification.rb +9 -0
  46. data/lib/capistrano/ops/rails/lib/railtie.rb +17 -0
  47. data/lib/capistrano/ops/{tasks → rails/lib/tasks}/pg/postgres_helper.rb +1 -1
  48. data/lib/capistrano/ops/version.rb +1 -1
  49. data/lib/capistrano/ops/{capistrano/v3/tasks/whenever.rake → whenever/tasks/show_crontab.rake} +1 -3
  50. data/lib/capistrano/ops/whenever.rb +17 -0
  51. data/lib/capistrano/ops/wkhtmltopdf/helpers.rb +50 -0
  52. data/lib/capistrano/ops/wkhtmltopdf/tasks/setup.rake +17 -0
  53. data/lib/capistrano/ops/wkhtmltopdf.rb +17 -1
  54. data/lib/capistrano/ops.rb +4 -3
  55. metadata +60 -36
  56. data/lib/capistrano/ops/capistrano/tasks/wkhtmltopdf.rake +0 -48
  57. data/lib/capistrano/ops/capistrano/v3/tasks/backup/backup_helper.rb +0 -50
  58. data/lib/capistrano/ops/capistrano/v3/tasks/figaro_yml/figaro_yaml_helper.rb +0 -74
  59. data/lib/capistrano/ops/capistrano/v3/tasks/figaro_yml/get.rake +0 -68
  60. data/lib/capistrano/ops/capistrano/v3/tasks/figaro_yml/get_stage.rake +0 -13
  61. data/lib/capistrano/ops/capistrano/v3/tasks/figaro_yml.rb +0 -3
  62. data/lib/capistrano/ops/capistrano/v3/tasks/invoke.rake +0 -23
  63. data/lib/capistrano/ops/capistrano/v3/tasks/logrotate/enable.rake +0 -24
  64. data/lib/capistrano/ops/capistrano/v3/tasks/logrotate/logrotate_helper.rb +0 -68
  65. data/lib/capistrano/ops/capistrano/v3/tasks/logs/rails.rake +0 -16
  66. data/lib/capistrano/ops/notification.rb +0 -9
  67. data/lib/capistrano/ops/railtie.rb +0 -15
  68. /data/lib/capistrano/ops/{capistrano/v3/tasks/logrotate → logrotate/tasks}/templates/logrotate.conf.erb +0 -0
  69. /data/lib/capistrano/ops/{capistrano/v3/tasks/logrotate → logrotate/tasks}/templates/schedule.rb.erb +0 -0
  70. /data/lib/capistrano/ops/{backup → rails/lib/backup}/api.rb +0 -0
  71. /data/lib/capistrano/ops/{backup → rails/lib/backup}/s3_helper.rb +0 -0
  72. /data/lib/capistrano/ops/{notification → rails/lib/notification}/api.rb +0 -0
  73. /data/lib/capistrano/ops/{notification → rails/lib/notification}/slack.rb +0 -0
  74. /data/lib/capistrano/ops/{notification → rails/lib/notification}/webhook.rb +0 -0
  75. /data/lib/capistrano/ops/{tasks → rails/lib/tasks}/pg/dump.rake +0 -0
  76. /data/lib/capistrano/ops/{tasks → rails/lib/tasks}/pg/remove_old_dumps.rake +0 -0
  77. /data/lib/capistrano/ops/{tasks → rails/lib/tasks}/storage/backup.rake +0 -0
  78. /data/lib/capistrano/ops/{tasks → rails/lib/tasks}/storage/remove_old_backups.rake +0 -0
@@ -1,23 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- namespace :invoke do
4
- # Defalut to :app roles
5
- rake_roles = fetch(:rake_roles, :app)
6
-
7
- desc 'Execute a rake task on a remote server (cap invoke:rake TASK=db:migrate)'
8
- task :rake do
9
- if ENV['TASK']
10
- on roles(rake_roles) do
11
- within current_path do
12
- with rails_env: fetch(:rails_env) do
13
- execute :rake, ENV['TASK']
14
- end
15
- end
16
- end
17
-
18
- else
19
- puts "\n\nFailed! You need to specify the 'TASK' parameter!",
20
- 'Usage: cap <stage> invoke:rake TASK=your:task'
21
- end
22
- end
23
- end
@@ -1,24 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative 'logrotate_helper'
4
-
5
- namespace :logrotate do
6
- include LogrotateHelper
7
- desc 'Enable logrotate for the application'
8
- task :enable do
9
- on roles(:app) do
10
- within release_path do
11
- set_config
12
- if logrotate_enabled
13
- puts "logrotate already enabled:\n========================="
14
- puts capture "cat #{@config_file_path}"
15
- else
16
- make_basepath
17
- upload! StringIO.new(@config_template), @config_file_path
18
- upload! StringIO.new(@schedule_template), @schedule_file_path
19
- whenever 'update' if logrotate_enabled
20
- end
21
- end
22
- end
23
- end
24
- end
@@ -1,68 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module LogrotateHelper
4
- # rubocop:disable Naming/MemoizedInstanceVariableName
5
- def set_config
6
- info ''
7
- @shared_path ||= shared_path
8
- @log_file_path ||= fetch(:log_file_path) || "#{@shared_path}/log"
9
- @template_config_filename ||= fetch(:logrotate_template_config_file) || 'templates/logrotate.conf.erb'
10
- @template_schedule_filename ||= fetch(:logrotate_template_schedule_file) || 'templates/schedule.rb.erb'
11
- @basepath ||= fetch(:logrotate_basepath) || "#{shared_path}/logrotate"
12
- @config_filename ||= File.basename(@template_config_filename, '.erb')
13
- @schedule_filename ||= File.basename(@template_schedule_filename, '.erb')
14
- @config_file_path ||= "#{@basepath}/#{@config_filename}"
15
- @schedule_file_path ||= "#{@basepath}/#{@schedule_filename}"
16
- @config_template ||= config_template
17
- @schedule_template ||= schedule_template
18
- end
19
- # rubocop:enable Naming/MemoizedInstanceVariableName
20
-
21
- def config
22
- {
23
- template_config_file: fetch(:logrotate_template_config_file) || 'templates/logrotate.conf.erb',
24
- template_schedule_file: fetch(:logrotate_template_schedule_file) || 'templates/schedule.rb.erb'
25
- }
26
- end
27
-
28
- def make_basepath
29
- puts capture "mkdir -pv #{@basepath}"
30
- end
31
-
32
- def delete_files
33
- puts capture "rm -rfv #{@basepath}"
34
- end
35
-
36
- def config_template
37
- return nil unless @template_config_filename && File.exist?(File.expand_path(@template_config_filename, __dir__))
38
-
39
- ERB.new(File.read(File.expand_path(@template_config_filename, __dir__))).result(binding)
40
- end
41
-
42
- def schedule_template
43
- return nil unless @template_schedule_filename && File.exist?(File.expand_path(@template_schedule_filename, __dir__))
44
-
45
- ERB.new(File.read(File.expand_path(@template_schedule_filename, __dir__))).result(binding)
46
- end
47
-
48
- def logrotate_enabled
49
- test("[ -f #{@config_file_path} ]") && test("[ -f #{@schedule_file_path} ]")
50
- end
51
-
52
- def logrotate_disabled
53
- !(test("[ -f #{@config_file_path} ]") && test("[ -f #{@schedule_file_path} ]"))
54
- end
55
-
56
- def whenever(type)
57
- case type
58
- when 'clear'
59
- puts capture :bundle, :exec, :whenever, '--clear-crontab',
60
- "-f #{@schedule_file_path} #{fetch(:whenever_identifier)}_logrotate"
61
- when 'update'
62
- puts capture :bundle, :exec, :whenever, '--update-crontab', "-f #{@schedule_file_path}",
63
- "-i #{fetch(:whenever_identifier)}_logrotate"
64
- else
65
- puts 'type not found'
66
- end
67
- end
68
- end
@@ -1,16 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- namespace :logs do
4
- # Default to :app role
5
- rake_roles = fetch(:rake_roles, :app)
6
- desc 'tail rails logs'
7
- task :rails do
8
- on roles(rake_roles) do
9
- trap('SIGINT') do
10
- puts "\nDisconnecting..."
11
- exit
12
- end
13
- execute "tail -f #{shared_path}/log/#{fetch(:rails_env)}.log"
14
- end
15
- end
16
- end
@@ -1,9 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'capistrano/ops/notification/api'
4
- require 'capistrano/ops/notification/slack'
5
- require 'capistrano/ops/notification/webhook'
6
-
7
- module Notification
8
- class Error < StandardError; end
9
- end
@@ -1,15 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'rails'
4
- # require 'capistrano/ops'
5
- module Capistrano
6
- module Ops
7
- class Railtie < ::Rails::Railtie
8
- railtie_name :ops
9
- rake_tasks do
10
- path = File.expand_path(__dir__)
11
- Dir.glob("#{path}/tasks/**/*.rake").each { |f| load f }
12
- end
13
- end
14
- end
15
- end