capistrano-ops 0.2.14 → 1.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 (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