capsum 0.8.8 → 0.9.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/VERSION +1 -1
- data/lib/capsum/autostart.rb +44 -0
- data/lib/capsum/daemons.rb +13 -36
- data/lib/capsum/sidekiq.rb +23 -0
- data/lib/capsum/whenever.rb +9 -34
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ec67b573af714877258fb710ad60c5a71ae75744
|
4
|
+
data.tar.gz: 3a6eb08c0689f689d62245b40c4ca54455326cd4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6ac3efa87dd7875444a0b3e84867504ad0093d57803df51447192f6ef454fcefa4f4311e8d0d1a48fdda97a856466dc0baff767d770591c50c5bba27883bace7
|
7
|
+
data.tar.gz: e1cc5be6b0ff43510bd2ba7c51d23b73f9b9425cd3d22ab896d907e3a02ce1709d50dc1438ac926c5a914844962776627758c5f60fe832902ca232d0a6d947e1
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.9.0
|
@@ -0,0 +1,44 @@
|
|
1
|
+
require File.expand_path("../../capsum.rb", __FILE__)
|
2
|
+
require File.expand_path("../whenever.rb", __FILE__)
|
3
|
+
|
4
|
+
Capistrano::Configuration.instance(true).load do
|
5
|
+
|
6
|
+
_cset(:autostart_server_commands, {})
|
7
|
+
_cset(:autostart_schedule_file) { "schedule.daemons.rb" }
|
8
|
+
_cset(:autostart_identifier) { "#{deploy_to}#daemons" }
|
9
|
+
_cset(:autostart_whenever_update_command) { "#{whenever_command} --update-crontab #{autostart_identifier} --load-file #{autostart_schedule_file}" }
|
10
|
+
_cset(:autostart_whenever_clear_command) { "#{whenever_command} --clear-crontab #{autostart_identifier} --load-file /dev/null; true" }
|
11
|
+
_cset(:autostart_whenever_command) { "if [ -e #{autostart_schedule_file} ]; then #{autostart_whenever_update_command}; else #{autostart_whenever_clear_command}; fi" }
|
12
|
+
|
13
|
+
namespace :autostart do
|
14
|
+
task :update_crontab do
|
15
|
+
on_rollback do
|
16
|
+
if fetch(:previous_release)
|
17
|
+
run "cd #{previous_release} && #{autostart_whenever_command}"
|
18
|
+
else
|
19
|
+
run "cd #{release_path} && #{autostart_whenever_clear_command}"
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
autostart_server_commands.each_pair do |server, commands|
|
24
|
+
next if commands.empty?
|
25
|
+
schedule_content=<<-EOF
|
26
|
+
every(:reboot) do
|
27
|
+
#{commands.map{ |cmd| " command #{cmd.inspect}" }.join("\n")}
|
28
|
+
end
|
29
|
+
EOF
|
30
|
+
|
31
|
+
top.put schedule_content, File.join(release_path, autostart_schedule_file), hosts: server.host
|
32
|
+
end
|
33
|
+
run "cd #{release_path} && #{autostart_whenever_command}"
|
34
|
+
end
|
35
|
+
|
36
|
+
task :rollback do
|
37
|
+
run "cd #{previous_release} && #{autostart_whenever_command}"
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
before "deploy:finalize_update", "autostart:update_crontab"
|
42
|
+
after "deploy:rollback", "autostart:rollback"
|
43
|
+
end
|
44
|
+
|
data/lib/capsum/daemons.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require File.expand_path("../../capsum.rb", __FILE__)
|
2
|
+
require File.expand_path("../autostart.rb", __FILE__)
|
2
3
|
|
3
4
|
Capistrano::Configuration.instance(true).load do
|
4
5
|
|
@@ -27,48 +28,19 @@ Capistrano::Configuration.instance(true).load do
|
|
27
28
|
daemons.start
|
28
29
|
end
|
29
30
|
|
30
|
-
desc "
|
31
|
-
task :
|
31
|
+
desc "setup daemons to autostart"
|
32
|
+
task :setup_autostart, :roles => :app do
|
33
|
+
autostart_server_commands = fetch(:autostart_server_commands)
|
34
|
+
|
32
35
|
find_servers(:roles => :app).each do |server|
|
36
|
+
autostart_server_commands[server] ||= []
|
33
37
|
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
whenever_clear_command = "if [ type whenever > /dev/null 2>&1 ]; then whenever --clear-crontab #{identifier} --load-file /dev/null; fi"
|
38
|
-
whenever_update_command = "whenever --update-crontab #{identifier} --load-file #{schedule_file_path}"
|
39
|
-
|
40
|
-
command = "if [ -e #{schedule_file_path} ]; then #{whenever_update_command}; else #{whenever_clear_command}; fi"
|
41
|
-
|
42
|
-
# on_rollback do
|
43
|
-
# schedule_dir = fetch(:previous_release) || release_path
|
44
|
-
# run (command % { :schedule_dir => schedule_dir }), :hosts => server.host
|
45
|
-
# end
|
46
|
-
|
47
|
-
matcher = server.options[:daemons]
|
48
|
-
daemon_commands = daemon_list.map do |daemon|
|
49
|
-
"cd #{current_path}; #{daemon[:start]}" if match(matcher, daemon)
|
50
|
-
end.compact
|
51
|
-
|
52
|
-
if !daemon_commands.empty?
|
53
|
-
schedule_content=<<-EOF
|
54
|
-
every(:reboot) do
|
55
|
-
#{daemon_commands.map{ |cmd| " command #{cmd.inspect}" }.join("\n")}
|
56
|
-
end
|
57
|
-
EOF
|
58
|
-
top.put schedule_content, (schedule_file_path % { :schedule_dir => release_path }), :hosts => server.host
|
38
|
+
daemon_list.each do |daemon|
|
39
|
+
autostart_server_commands[server] << "cd #{current_path}; #{daemon[:start]}" if match(matcher, daemon)
|
59
40
|
end
|
60
|
-
|
61
|
-
run (command % { :schedule_dir => release_path }), :hosts => server.host
|
62
41
|
end
|
63
42
|
end
|
64
43
|
|
65
|
-
after "deploy:create_symlink", "daemons:update_cron"
|
66
|
-
after "deploy:rollback", "daemons:update_cron"
|
67
|
-
|
68
|
-
after "deploy:start", "daemons:start"
|
69
|
-
after "deploy:stop", "daemons:stop"
|
70
|
-
after "deploy:restart", "daemons:restart"
|
71
|
-
|
72
44
|
def match(matcher, daemon)
|
73
45
|
return matcher.call(daemon[:name]) if matcher.respond_to?(:call)
|
74
46
|
return matcher.match(daemon[:name]) if matcher.respond_to?(:match)
|
@@ -109,5 +81,10 @@ EOF
|
|
109
81
|
end
|
110
82
|
end
|
111
83
|
|
84
|
+
before "autostart:update_crontab", "daemons:setup_autostart"
|
85
|
+
|
86
|
+
after "deploy:start", "daemons:start"
|
87
|
+
after "deploy:stop", "daemons:stop"
|
88
|
+
after "deploy:restart", "daemons:restart"
|
112
89
|
end
|
113
90
|
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require File.expand_path("../../capsum.rb", __FILE__)
|
2
|
+
require File.expand_path("../autostart.rb", __FILE__)
|
3
|
+
require 'sidekiq/capistrano'
|
4
|
+
|
5
|
+
|
6
|
+
Capistrano::Configuration.instance(true).load do
|
7
|
+
namespace :sidekiq do
|
8
|
+
|
9
|
+
desc "setup sidekiq daemon to autostart"
|
10
|
+
task :setup_autostart do
|
11
|
+
autostart_server_commands = fetch(:autostart_server_commands)
|
12
|
+
rails_env = fetch(:rails_env, "production")
|
13
|
+
find_servers(roles: fetch(:sidekiq_role)).each do |server|
|
14
|
+
autostart_server_commands[server] ||= []
|
15
|
+
for_each_process do |pid_file, idx|
|
16
|
+
autostart_server_commands[server] << "cd #{current_path} ; nohup #{fetch(:sidekiq_cmd)} -e #{rails_env} -C #{current_path}/config/sidekiq.yml -i #{idx} -P #{pid_file} >> #{current_path}/log/sidekiq.log 2>&1 &"
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
before "autostart:update_crontab", "sidekiq:setup_autostart"
|
23
|
+
end
|
data/lib/capsum/whenever.rb
CHANGED
@@ -1,38 +1,13 @@
|
|
1
1
|
require File.expand_path("../../capsum.rb", __FILE__)
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
find_servers(:roles => :app).each do |server|
|
9
|
-
whenever_settings = server.options[:whenever]
|
10
|
-
if whenever_settings
|
11
|
-
variables = whenever_settings.to_s
|
12
|
-
if whenever_settings.is_a?(Hash)
|
13
|
-
variables = whenever_settings.map{ |key, value| "#{key}=#{value}" }.join("&")
|
14
|
-
end
|
15
|
-
|
16
|
-
command = "if [ -e #{current_path}/config/schedule.rb ]; then cd #{current_path}; RAILS_ENV=#{rails_env} #{whenever_bin} --update-crontab #{identifier} --set \"environment=#{rails_env}&%s\"; fi"
|
17
|
-
run (command % variables), :hosts => server.host
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
desc 'Cleanup the crontab'
|
23
|
-
task :cleanup, :roles => :app do
|
24
|
-
identifier = fetch(:whenever_identifier, deploy_to)
|
25
|
-
run "if [ -e #{current_path}/config/schedule.rb ]; then cd #{current_path}; RAILS_ENV=#{rails_env} #{whenever_bin} --update-crontab #{identifier} --load-file /dev/null; fi"
|
26
|
-
end
|
3
|
+
begin
|
4
|
+
require "whenever/capistrano"
|
5
|
+
rescue LoadError => e
|
6
|
+
# skip
|
7
|
+
end
|
27
8
|
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
"whenever"
|
33
|
-
end
|
34
|
-
end
|
35
|
-
end
|
36
|
-
|
37
|
-
after "deploy:create_symlink", "whenever:update"
|
9
|
+
Capistrano::Configuration.instance(true).load do
|
10
|
+
set(:whenever_command) { fetch(:use_bundle, false) ? "#{fetch(:bundle_cmd, 'bundle')} exec whenever" : "whenever" }
|
11
|
+
set(:whenever_options) { { roles: fetch(:whenever_roles), only: { whenever: true } } }
|
12
|
+
set(:whenever_identifier) { deploy_to }
|
38
13
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: capsum
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.9.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sunteya
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-07-
|
11
|
+
date: 2013-07-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: capistrano
|
@@ -81,6 +81,7 @@ files:
|
|
81
81
|
- VERSION
|
82
82
|
- capsum.gemspec
|
83
83
|
- lib/capsum.rb
|
84
|
+
- lib/capsum/autostart.rb
|
84
85
|
- lib/capsum/bundler.rb
|
85
86
|
- lib/capsum/cache.rb
|
86
87
|
- lib/capsum/daemons.rb
|
@@ -89,6 +90,7 @@ files:
|
|
89
90
|
- lib/capsum/passenger.rb
|
90
91
|
- lib/capsum/setup.rb
|
91
92
|
- lib/capsum/shared.rb
|
93
|
+
- lib/capsum/sidekiq.rb
|
92
94
|
- lib/capsum/typical.rb
|
93
95
|
- lib/capsum/whenever.rb
|
94
96
|
homepage: http://github.com/sunteya/capsum
|