mina-sidekiq 0.1.1 → 0.2.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.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/.travis.yml +6 -0
- data/Changelog.md +14 -0
- data/Gemfile.lock +20 -0
- data/README.md +16 -2
- data/Rakefile +52 -0
- data/lib/mina_sidekiq/tasks.rb +121 -0
- data/lib/mina_sidekiq/version.rb +5 -0
- data/lib/mina_sidekiq.rb +4 -0
- data/mina-sidekiq.gemspec +10 -1
- data/test_env/config/deploy.rb +46 -0
- metadata +17 -7
- data/VERSION +0 -1
- data/lib/mina-sidekiq/sidekiq.rb +0 -88
- data/lib/mina-sidekiq.rb +0 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b00138ad54880e131c60c2d955511bbfbdd9d262
|
4
|
+
data.tar.gz: f66cdab70f47c85ac99a0a7ffaaa5d04e79e3cfb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7ce054e9deb259727dcd88232968ce6dc07d8a9cf921e3680277f3e250fa91be3fcbdb0e6146c5c957ebd8c03910e84d47eb2f18c7d48496474c3c3b5dd559e2
|
7
|
+
data.tar.gz: 66ef72fcfc9521ef8e4938e285b4c1384088edf353d61c8da5b14e7538eb6f53521b0cea8e0021a267a56686b9a7e74c7297e65157e7c927bd40217b0e992d64
|
data/.gitignore
CHANGED
data/.travis.yml
ADDED
data/Changelog.md
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
Changelog
|
2
|
+
=========
|
3
|
+
|
4
|
+
0.2.0 2013-08-18
|
5
|
+
----------------
|
6
|
+
|
7
|
+
Breaking Changes:
|
8
|
+
|
9
|
+
* to load the tasks requiring 'mina_sidekiq/tasks' is needed now
|
10
|
+
|
11
|
+
Enhancements:
|
12
|
+
|
13
|
+
* add sidekiq_processes to allow launching multiple sidekiq instances
|
14
|
+
* improved checking, if old instances of sidekiq are still running
|
data/Gemfile.lock
ADDED
data/README.md
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
mina-sidekiq
|
2
2
|
============
|
3
3
|
|
4
|
+
[](https://travis-ci.org/Mic92/mina-sidekiq)
|
5
|
+
|
4
6
|
mina-sidekiq is a gem that adds tasks to aid in the deployment of [Sidekiq] (http://mperham.github.com/sidekiq/)
|
5
7
|
using [Mina] (http://nadarei.co/mina).
|
6
8
|
|
@@ -12,14 +14,25 @@ using [Mina] (http://nadarei.co/mina).
|
|
12
14
|
|
13
15
|
## Example
|
14
16
|
|
15
|
-
|
17
|
+
## Usage example
|
18
|
+
|
19
|
+
require 'mina_sidekiq/tasks'
|
16
20
|
...
|
21
|
+
# to make logs persistent between deploys
|
22
|
+
set :shared_paths, ['log']
|
23
|
+
|
24
|
+
task :setup do
|
25
|
+
# sidekiq needs a place to store its pid file and log file
|
26
|
+
queue! %[mkdir -p "#{deploy_to}/shared/pids/"]
|
27
|
+
queue! %[mkdir -p "#{deploy_to}/shared/log/"]
|
28
|
+
end
|
17
29
|
|
18
|
-
task :deploy
|
30
|
+
task :deploy do
|
19
31
|
deploy do
|
20
32
|
# stop accepting new workers
|
21
33
|
invoke :'sidekiq:quiet'
|
22
34
|
invoke :'git:clone'
|
35
|
+
invoke :'deploy:link_shared_paths'
|
23
36
|
...
|
24
37
|
|
25
38
|
to :launch do
|
@@ -43,6 +56,7 @@ using [Mina] (http://nadarei.co/mina).
|
|
43
56
|
* sidekiq\_timeout: Sets a upper limit of time a worker is allowed to finish, before it is killed.
|
44
57
|
* sidekiq\_log: Sets the path to the log file of sidekiq
|
45
58
|
* sidekiq\_pid: Sets the path to the pid file of a sidekiq worker
|
59
|
+
* sidekiq_processes: Sets the number of sidekiq processes launched
|
46
60
|
|
47
61
|
## Copyright
|
48
62
|
|
data/Rakefile
ADDED
@@ -0,0 +1,52 @@
|
|
1
|
+
require 'rake'
|
2
|
+
|
3
|
+
desc 'Run integration tests'
|
4
|
+
task :test do
|
5
|
+
Dir.chdir("#{Rake.original_dir}/test_env") do
|
6
|
+
if ENV['FORCE_ADD_SSH_KEY']
|
7
|
+
force_add_ssh_key
|
8
|
+
end
|
9
|
+
|
10
|
+
FileUtils.rm_rf('deploy')
|
11
|
+
sh 'mina setup --verbose'
|
12
|
+
begin
|
13
|
+
# fresh deploy
|
14
|
+
sh 'mina deploy --verbose'
|
15
|
+
# second deploy
|
16
|
+
sh 'mina deploy --verbose'
|
17
|
+
rescue Exception => e
|
18
|
+
puts e.message
|
19
|
+
puts e.backtrace.inspect
|
20
|
+
log = "./deploy/shared/sidekiq.log"
|
21
|
+
if File.exists?(log)
|
22
|
+
puts "cat #{log}"
|
23
|
+
puts File.open(log).read
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
def force_add_ssh_key(&block)
|
30
|
+
ssh_key = File.expand_path("~/.ssh/id_rsa.pub")
|
31
|
+
unless File.exists?(ssh_key)
|
32
|
+
sh "ssh-keygen -t rsa -N '' -f ~/.ssh/id_rsa"
|
33
|
+
end
|
34
|
+
file = File.open(ssh_key)
|
35
|
+
pub_key = file.readline
|
36
|
+
file.close
|
37
|
+
|
38
|
+
authorized_keys = File.expand_path("~/.ssh/authorized_keys")
|
39
|
+
begin
|
40
|
+
File.open(authorized_keys, 'a+') do |f|
|
41
|
+
File.chmod(0600, authorized_keys)
|
42
|
+
f.puts(pub_key)
|
43
|
+
end
|
44
|
+
rescue Exception => e
|
45
|
+
puts e.message
|
46
|
+
puts e.backtrace.inspect
|
47
|
+
ensure
|
48
|
+
File.chmod(0400, authorized_keys)
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
task :default => :test
|
@@ -0,0 +1,121 @@
|
|
1
|
+
# # Modules: Sidekiq
|
2
|
+
# Adds settings and tasks for managing Sidekiq workers.
|
3
|
+
#
|
4
|
+
# ## Usage example
|
5
|
+
# require 'mina_sidekiq/tasks'
|
6
|
+
# ...
|
7
|
+
# task :setup do
|
8
|
+
# # sidekiq needs a place to store its pid file
|
9
|
+
# queue! %[mkdir -p "#{deploy_to}/shared/pids/"]
|
10
|
+
# end
|
11
|
+
#
|
12
|
+
# task :deploy do
|
13
|
+
# deploy do
|
14
|
+
# invoke :'sidekiq:quiet'
|
15
|
+
# invoke :'git:clone'
|
16
|
+
# ...
|
17
|
+
#
|
18
|
+
# to :launch do
|
19
|
+
# ...
|
20
|
+
# invoke :'sidekiq:restart'
|
21
|
+
# end
|
22
|
+
# end
|
23
|
+
# end
|
24
|
+
|
25
|
+
require 'mina/bundler'
|
26
|
+
require 'mina/rails'
|
27
|
+
|
28
|
+
# ## Settings
|
29
|
+
# Any and all of these settings can be overriden in your `deploy.rb`.
|
30
|
+
|
31
|
+
# ### sidekiq
|
32
|
+
# Sets the path to sidekiq.
|
33
|
+
set_default :sidekiq, lambda { "#{bundle_bin} exec sidekiq" }
|
34
|
+
|
35
|
+
# ### sidekiqctl
|
36
|
+
# Sets the path to sidekiqctl.
|
37
|
+
set_default :sidekiqctl, lambda { "#{bundle_prefix} sidekiqctl" }
|
38
|
+
|
39
|
+
# ### sidekiq_timeout
|
40
|
+
# Sets a upper limit of time a worker is allowed to finish, before it is killed.
|
41
|
+
set_default :sidekiq_timeout, 10
|
42
|
+
|
43
|
+
# ### sidekiq_config
|
44
|
+
# Sets the path to the configuration file of sidekiq
|
45
|
+
set_default :sidekiq_config, "./config/sidekiq.yml"
|
46
|
+
|
47
|
+
# ### sidekiq_log
|
48
|
+
# Sets the path to the log file of sidekiq
|
49
|
+
#
|
50
|
+
# To disable logging set it to "/dev/null"
|
51
|
+
set_default :sidekiq_log, lambda { "#{deploy_to}/#{current_path}/log/sidekiq.log" }
|
52
|
+
|
53
|
+
# ### sidekiq_pid
|
54
|
+
# Sets the path to the pid file of a sidekiq worker
|
55
|
+
set_default :sidekiq_pid, lambda { "#{deploy_to}/#{shared_path}/pids/sidekiq.pid" }
|
56
|
+
|
57
|
+
# ### sidekiq_processes
|
58
|
+
# Sets the number of sidekiq processes launched
|
59
|
+
set_default :sidekiq_processes, 1
|
60
|
+
|
61
|
+
# ## Control Tasks
|
62
|
+
namespace :sidekiq do
|
63
|
+
def for_each_process(&block)
|
64
|
+
sidekiq_processes.times do |idx|
|
65
|
+
pid_file = if idx == 0
|
66
|
+
sidekiq_pid
|
67
|
+
else
|
68
|
+
"#{sidekiq_pid}-#{idx}"
|
69
|
+
end
|
70
|
+
yield(pid_file, idx)
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
# ### sidekiq:quiet
|
75
|
+
desc "Quiet sidekiq (stop accepting new work)"
|
76
|
+
task :quiet do
|
77
|
+
queue %[echo "-----> Quiet sidekiq (stop accepting new work)"]
|
78
|
+
for_each_process do |pid_file, idx|
|
79
|
+
queue %{
|
80
|
+
if [ -d #{deploy_to}/#{current_path} ] && [ -f #{pid_file} ] && kill -0 `cat #{pid_file}`> /dev/null 2>&1; then
|
81
|
+
#{echo_cmd %{cd #{deploy_to}/#{current_path} && #{sidekiqctl} quiet #{pid_file}} }
|
82
|
+
else
|
83
|
+
echo 'Sidekiq is not running'
|
84
|
+
fi
|
85
|
+
}
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
# ### sidekiq:stop
|
90
|
+
desc "Stop sidekiq"
|
91
|
+
task :stop do
|
92
|
+
queue %[echo "-----> Stop sidekiq"]
|
93
|
+
for_each_process do |pid_file, idx|
|
94
|
+
queue %[
|
95
|
+
if [ -d #{deploy_to}/#{current_path} ] && [ -f #{pid_file} ] && kill -0 `cat #{pid_file}`> /dev/null 2>&1; then
|
96
|
+
#{echo_cmd %[cd #{deploy_to}/#{current_path} && #{sidekiqctl} stop #{pid_file} #{sidekiq_timeout}]}
|
97
|
+
else
|
98
|
+
echo 'Sidekiq is not running'
|
99
|
+
fi
|
100
|
+
]
|
101
|
+
end
|
102
|
+
end
|
103
|
+
|
104
|
+
# ### sidekiq:start
|
105
|
+
desc "Start sidekiq"
|
106
|
+
task :start do
|
107
|
+
queue %[echo "-----> Start sidekiq"]
|
108
|
+
for_each_process do |pid_file, idx|
|
109
|
+
queue %{
|
110
|
+
#{echo_cmd %[cd #{deploy_to}/#{current_path}; nohup #{sidekiq} -e #{rails_env} -C #{sidekiq_config} -P #{pid_file} >> #{sidekiq_log} 2>&1 &] }
|
111
|
+
}
|
112
|
+
end
|
113
|
+
end
|
114
|
+
|
115
|
+
# ### sidekiq:restart
|
116
|
+
desc "Restart sidekiq"
|
117
|
+
task :restart do
|
118
|
+
invoke :'sidekiq:stop'
|
119
|
+
invoke :'sidekiq:start'
|
120
|
+
end
|
121
|
+
end
|
data/lib/mina_sidekiq.rb
ADDED
data/mina-sidekiq.gemspec
CHANGED
@@ -1,8 +1,10 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
2
|
|
3
|
+
require "./lib/mina_sidekiq/version.rb"
|
4
|
+
|
3
5
|
Gem::Specification.new do |s|
|
4
6
|
s.name = "mina-sidekiq"
|
5
|
-
s.version =
|
7
|
+
s.version = MinaSidekiq.version
|
6
8
|
s.authors = ["Joerg Thalheim"]
|
7
9
|
s.email = ["joerg@higgsboson.tk"]
|
8
10
|
s.homepage = "http://github.com/Mic92/mina-sidekiq"
|
@@ -14,6 +16,13 @@ Gem::Specification.new do |s|
|
|
14
16
|
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
15
17
|
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
16
18
|
s.require_paths = ["lib"]
|
19
|
+
s.post_install_message = <<-MESSAGE
|
20
|
+
Starting with 0.2.0, you have to add:
|
21
|
+
|
22
|
+
require 'mina_sidekiq/tasks'
|
23
|
+
|
24
|
+
in your deploy.rb to load the library
|
25
|
+
MESSAGE
|
17
26
|
|
18
27
|
s.add_runtime_dependency "mina"
|
19
28
|
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
require 'mina'
|
2
|
+
require 'mina/git'
|
3
|
+
require 'mina_sidekiq/tasks'
|
4
|
+
require 'mina/git'
|
5
|
+
require 'mina/bundler'
|
6
|
+
require 'mina/rvm'
|
7
|
+
require 'fileutils'
|
8
|
+
|
9
|
+
FileUtils.mkdir_p "#{Dir.pwd}/deploy"
|
10
|
+
|
11
|
+
set :ssh_options, '-o StrictHostKeyChecking=no'
|
12
|
+
|
13
|
+
set :domain, 'localhost'
|
14
|
+
set :deploy_to, "#{Dir.pwd}/deploy"
|
15
|
+
set :repository, 'https://github.com/Mic92/mina-sidekiq-test-rails.git'
|
16
|
+
set :keep_releases, 2
|
17
|
+
set :sidekiq_processes, 2
|
18
|
+
|
19
|
+
set :shared_paths, ['log']
|
20
|
+
|
21
|
+
task :environment do
|
22
|
+
invoke :'rvm:use[ruby-2.0.0]'
|
23
|
+
end
|
24
|
+
|
25
|
+
task :setup => :environment do
|
26
|
+
queue! %[mkdir -p "#{deploy_to}/shared/pids/"]
|
27
|
+
queue! %[mkdir -p "#{deploy_to}/shared/log/"]
|
28
|
+
end
|
29
|
+
|
30
|
+
task :deploy => :environment do
|
31
|
+
deploy do
|
32
|
+
invoke :'git:clone'
|
33
|
+
invoke :'deploy:link_shared_paths'
|
34
|
+
invoke :'bundle:install'
|
35
|
+
|
36
|
+
to :launch do
|
37
|
+
invoke :'sidekiq:start'
|
38
|
+
queue! %[sleep 3; kill -0 `cat #{sidekiq_pid}`]
|
39
|
+
|
40
|
+
invoke :'sidekiq:quiet'
|
41
|
+
|
42
|
+
invoke :'sidekiq:stop'
|
43
|
+
queue! %[(kill -0 `cat #{sidekiq_pid}`) 2> /dev/null && exit 1 || exit 0]
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mina-sidekiq
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Joerg Thalheim
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-08-
|
11
|
+
date: 2013-08-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: mina
|
@@ -32,18 +32,28 @@ extensions: []
|
|
32
32
|
extra_rdoc_files: []
|
33
33
|
files:
|
34
34
|
- .gitignore
|
35
|
+
- .travis.yml
|
36
|
+
- Changelog.md
|
35
37
|
- Gemfile
|
38
|
+
- Gemfile.lock
|
36
39
|
- LICENSE
|
37
40
|
- README.md
|
38
|
-
-
|
39
|
-
- lib/
|
40
|
-
- lib/
|
41
|
+
- Rakefile
|
42
|
+
- lib/mina_sidekiq.rb
|
43
|
+
- lib/mina_sidekiq/tasks.rb
|
44
|
+
- lib/mina_sidekiq/version.rb
|
41
45
|
- mina-sidekiq.gemspec
|
46
|
+
- test_env/config/deploy.rb
|
42
47
|
homepage: http://github.com/Mic92/mina-sidekiq
|
43
48
|
licenses:
|
44
49
|
- MIT
|
45
50
|
metadata: {}
|
46
|
-
post_install_message:
|
51
|
+
post_install_message: |
|
52
|
+
Starting with 0.2.0, you have to add:
|
53
|
+
|
54
|
+
require 'mina_sidekiq/tasks'
|
55
|
+
|
56
|
+
in your deploy.rb to load the library
|
47
57
|
rdoc_options: []
|
48
58
|
require_paths:
|
49
59
|
- lib
|
@@ -59,7 +69,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
59
69
|
version: '0'
|
60
70
|
requirements: []
|
61
71
|
rubyforge_project:
|
62
|
-
rubygems_version: 2.0.
|
72
|
+
rubygems_version: 2.0.6
|
63
73
|
signing_key:
|
64
74
|
specification_version: 4
|
65
75
|
summary: Tasks to deploy Sidekiq with mina.
|
data/VERSION
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
0.1.1
|
data/lib/mina-sidekiq/sidekiq.rb
DELETED
@@ -1,88 +0,0 @@
|
|
1
|
-
# # Modules: Sidekiq
|
2
|
-
# Adds settings and tasks for managing Sidekiq workers.
|
3
|
-
#
|
4
|
-
# ## Usage example
|
5
|
-
# require 'mina-sidekiq/sidekiq'
|
6
|
-
# ...
|
7
|
-
#
|
8
|
-
# task :deploy => :enviroment do
|
9
|
-
# deploy do
|
10
|
-
# invoke :'sidekiq:quiet'
|
11
|
-
# invoke :'git:clone'
|
12
|
-
# ...
|
13
|
-
#
|
14
|
-
# to :launch do
|
15
|
-
# ...
|
16
|
-
# invoke :'sidekiq:restart'
|
17
|
-
# end
|
18
|
-
# end
|
19
|
-
# end
|
20
|
-
|
21
|
-
require 'mina/bundler'
|
22
|
-
require 'mina/rails'
|
23
|
-
|
24
|
-
# ## Settings
|
25
|
-
# Any and all of these settings can be overriden in your `deploy.rb`.
|
26
|
-
|
27
|
-
# ### sidekiq
|
28
|
-
# Sets the path to sidekiq.
|
29
|
-
set_default :sidekiq, lambda { "#{bundle_bin} exec sidekiq" }
|
30
|
-
|
31
|
-
# ### sidekiqctl
|
32
|
-
# Sets the path to sidekiqctl.
|
33
|
-
set_default :sidekiqctl, lambda { "#{bundle_prefix} sidekiqctl" }
|
34
|
-
|
35
|
-
# ### sidekiq_timeout
|
36
|
-
# Sets a upper limit of time a worker is allowed to finish, before it is killed.
|
37
|
-
set_default :sidekiq_timeout, 10
|
38
|
-
|
39
|
-
# ### sidekiq_config
|
40
|
-
# Sets the path to the configuration file of sidekiq
|
41
|
-
set_default :sidekiq_config, "./config/sidekiq.yml"
|
42
|
-
|
43
|
-
# ### sidekiq_log
|
44
|
-
# Sets the path to the log file of sidekiq
|
45
|
-
#
|
46
|
-
# To disable logging set it to "/dev/null"
|
47
|
-
set_default :sidekiq_log, "./log/sidekiq.log"
|
48
|
-
|
49
|
-
# ### sidekiq_pid
|
50
|
-
# Sets the path to the pid file of a sidekiq worker
|
51
|
-
set_default :sidekiq_pid, lambda { "#{deploy_to}/#{shared_path}/pids/sidekiq.pid" }
|
52
|
-
|
53
|
-
# ## Control Tasks
|
54
|
-
namespace :sidekiq do
|
55
|
-
# ### sidekiq:quiet
|
56
|
-
desc "Quiet sidekiq (stop accepting new work)"
|
57
|
-
task :quiet do
|
58
|
-
queue %{ if [ -f #{sidekiq_pid} ]; then
|
59
|
-
echo "-----> Quiet sidekiq (stop accepting new work)"
|
60
|
-
#{echo_cmd %{(cd #{deploy_to}/#{current_path} && #{sidekiqctl} quiet #{sidekiq_pid})} }
|
61
|
-
fi }
|
62
|
-
end
|
63
|
-
|
64
|
-
# ### sidekiq:stop
|
65
|
-
desc "Stop sidekiq"
|
66
|
-
task :stop do
|
67
|
-
queue %[ if [ -f #{sidekiq_pid} ]; then
|
68
|
-
echo "-----> Stop sidekiq"
|
69
|
-
#{echo_cmd %[(cd #{deploy_to}/#{current_path} && #{sidekiqctl} stop #{sidekiq_pid} #{sidekiq_timeout})]}
|
70
|
-
fi ]
|
71
|
-
end
|
72
|
-
|
73
|
-
# ### sidekiq:start
|
74
|
-
desc "Start sidekiq"
|
75
|
-
task :start do
|
76
|
-
queue %{
|
77
|
-
echo "-----> Start sidekiq"
|
78
|
-
#{echo_cmd %[(cd #{deploy_to}/#{current_path}; nohup #{sidekiq} -e #{rails_env} -C #{sidekiq_config} -P #{sidekiq_pid} >> #{sidekiq_log} 2>&1 </dev/null &) ] }
|
79
|
-
}
|
80
|
-
end
|
81
|
-
|
82
|
-
# ### sidekiq:restart
|
83
|
-
desc "Restart sidekiq"
|
84
|
-
task :restart do
|
85
|
-
invoke :'sidekiq:stop'
|
86
|
-
invoke :'sidekiq:start'
|
87
|
-
end
|
88
|
-
end
|
data/lib/mina-sidekiq.rb
DELETED