immosquare-capistrano 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: fd4a36233e060600fceaf3284d69e888a1cc2e878f0f2989e2ee84133b109dbc
4
+ data.tar.gz: 86d11c5ff55f124e30e032983c87473beb5cde9026f89870b1bd7a812d2583be
5
+ SHA512:
6
+ metadata.gz: 14f0e82c609fc01e275979e552bb43ff5c59c87162cb036968b53796e44c3197f69f41f0217545108b3fbf7923e9a05715e09d94e7715338cdf5832ebffd9df7
7
+ data.tar.gz: 391981483ca9e86340f7386805b46058e3ac06feafd20a63db3dc8dc4d9649a644288e68df52fd87d999acaa640bf68125adc804fbbb60ecb76d22fda9af3659
@@ -0,0 +1,5 @@
1
+ namespace :load do
2
+ task :defaults do
3
+ set_if_empty :solid_queue_service_unit_name, -> { "solid_queue_#{fetch(:application)}_puma_#{fetch(:stage)}" }
4
+ end
5
+ end
@@ -0,0 +1,24 @@
1
+ module Capistrano
2
+ module SolidQueue
3
+ module Helpers
4
+ ##============================================================##
5
+ ## Get the path to bundle command
6
+ ##============================================================##
7
+ def self.expanded_bundle_command
8
+ SSHKit.config.command_map[:bundle].to_s
9
+ end
10
+
11
+ def self.template_path(service)
12
+ "#{File.dirname(__FILE__)}/templates/#{service}.service.erb"
13
+ end
14
+
15
+ def self.service_name
16
+ "#{fetch(:solid_queue_service_unit_name)}.service"
17
+ end
18
+
19
+ def self.result_path
20
+ "#{fetch(:tmp_dir)}/#{service_name}"
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,9 @@
1
+ require_relative "defaults"
2
+ require_relative "helpers"
3
+
4
+ load File.expand_path("tasks/solid_queue.rake", __dir__)
5
+
6
+ # SolidQueue hooks
7
+ after "deploy:starting", "solid_queue:stop"
8
+ after "deploy:published", "solid_queue:start"
9
+ after "deploy:failed", "solid_queue:restart"
@@ -0,0 +1,80 @@
1
+
2
+ namespace :solid_queue do
3
+ ##============================================================##
4
+ ## Install SolidQueue service
5
+ ##============================================================##
6
+ desc "Install SolidQueue service"
7
+ task :install do
8
+ on roles(:app) do
9
+ template_path = File.read(Capistrano::SolidQueue::Helpers.template_path("solid_queue"))
10
+ result = ERB.new(template_path).result(binding)
11
+ result_path = Capistrano::SolidQueue::Helpers.result_path
12
+
13
+ ##============================================================##
14
+ ## Upload the service file to the server
15
+ ##============================================================##
16
+ upload!(StringIO.new(result), result_path)
17
+
18
+ ##============================================================##
19
+ ## Move the service file to the systemd directory
20
+ ##============================================================##
21
+ sudo "mv #{result_path} /etc/systemd/system/#{Capistrano::SolidQueue::Helpers.service_name}"
22
+
23
+ ##============================================================##
24
+ ## Reload the systemd daemon and quiet the service
25
+ ##============================================================##
26
+ sudo "systemctl daemon-reload"
27
+ sudo "systemctl enable #{Capistrano::SolidQueue::Helpers.service_name}"
28
+ end
29
+ end
30
+
31
+ ##============================================================##
32
+ ## Uninstall SolidQueue service
33
+ ##============================================================##
34
+ desc "Uninstall SolidQueue service"
35
+ task :uninstall do
36
+ on roles(:app) do
37
+ service_name = Capistrano::SolidQueue::Helpers.service_name
38
+
39
+ if test("systemctl list-units --full -all | grep -Fq '#{service_name}'")
40
+ sudo("systemctl stop #{service_name}")
41
+ sudo("systemctl disable #{service_name}")
42
+ sudo("rm -f /etc/systemd/system/#{service_name}")
43
+ sudo("systemctl daemon-reload")
44
+ else
45
+ info("Service #{service_name} does not exist and does not need to be disabled.")
46
+ end
47
+ end
48
+ end
49
+
50
+
51
+ ##============================================================##
52
+ ## Start solid_queue
53
+ ##============================================================##
54
+ desc "Start solid_queue"
55
+ task :start do
56
+ on roles(:app) do
57
+ sudo "systemctl start #{Capistrano::SolidQueue::Helpers.service_name}"
58
+ end
59
+ end
60
+
61
+ ##============================================================##
62
+ ## Stop solid_queue (force immediate termination)
63
+ ##============================================================##
64
+ desc "Stop solid_queue (force immediate termination)"
65
+ task :stop do
66
+ on roles(:app) do
67
+ sudo "systemctl stop #{Capistrano::SolidQueue::Helpers.service_name}"
68
+ end
69
+ end
70
+
71
+ ##============================================================##
72
+ ## Restart solid_queue
73
+ ##============================================================##
74
+ desc "Restart solid_queue"
75
+ task :restart do
76
+ on roles(:app) do
77
+ sudo "systemctl restart #{Capistrano::SolidQueue::Helpers.service_name}"
78
+ end
79
+ end
80
+ end
@@ -0,0 +1,25 @@
1
+ [Unit]
2
+ Description=SolidQueue for <%= "#{fetch(:application)} (#{fetch(:stage)})" %>
3
+ After=syslog.target network.target
4
+
5
+ [Service]
6
+ Type=simple
7
+ Environment=RAILS_ENV=<%= fetch(:stage) %>
8
+ User=<%= fetch(:solid_queue_user) %>
9
+ WorkingDirectory=<%= current_path %>
10
+
11
+ ExecStart=<%= Capistrano::SolidQueue::Helpers.expanded_bundle_command %> exec rake solid_queue:start
12
+ ExecReload=/bin/kill -HUP $MAINPID
13
+ ExecStop=/bin/kill -TERM $MAINPID
14
+
15
+
16
+ StandardOutput=append:<%= shared_path %>/log/solidqueue_access.log
17
+ StandardError=append:<%= shared_path %>/log/solidqueue_error.log
18
+
19
+ RestartSec=1
20
+ Restart=on-failure
21
+
22
+ SyslogIdentifier=<%= fetch(:solid_queue_service_unit_name) %>
23
+
24
+ [Install]
25
+ WantedBy=multi-user.target
@@ -0,0 +1,3 @@
1
+ module ImmosquareCapistrano
2
+ VERSION = "0.1.0".freeze
3
+ end
File without changes
metadata ADDED
@@ -0,0 +1,64 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: immosquare-capistrano
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - IMMO SQUARE
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2024-04-17 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: capistrano
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '3.0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '3.0'
27
+ description: Puma, Sidekiq & SolidQueue services integrations for Capistrano
28
+ email:
29
+ - jules@immosquare.com
30
+ executables: []
31
+ extensions: []
32
+ extra_rdoc_files: []
33
+ files:
34
+ - lib/immosquare-capistrano.rb
35
+ - lib/immosquare-capistrano/version.rb
36
+ - lib/immosquare/capistrano/defaults.rb
37
+ - lib/immosquare/capistrano/helpers.rb
38
+ - lib/immosquare/capistrano/solid_queue.rb
39
+ - lib/immosquare/capistrano/tasks/solid_queue.rake
40
+ - lib/immosquare/capistrano/templates/solid_queue.service.erb
41
+ homepage: https://github.com/IMMOSQUARE/immosquare-capistrano
42
+ licenses:
43
+ - MIT
44
+ metadata: {}
45
+ post_install_message:
46
+ rdoc_options: []
47
+ require_paths:
48
+ - lib
49
+ required_ruby_version: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ version: 2.7.2
54
+ required_rubygems_version: !ruby/object:Gem::Requirement
55
+ requirements:
56
+ - - ">="
57
+ - !ruby/object:Gem::Version
58
+ version: '0'
59
+ requirements: []
60
+ rubygems_version: 3.5.7
61
+ signing_key:
62
+ specification_version: 4
63
+ summary: Puma, Sidekiq & SolidQueue services integrations for Capistrano
64
+ test_files: []