guard-sidekiq 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore ADDED
@@ -0,0 +1,5 @@
1
+ *.gem
2
+ .bundle
3
+ Gemfile.lock
4
+ pkg/*
5
+ .rvmrc
data/CHANGELOG.md ADDED
@@ -0,0 +1,26 @@
1
+ ## 0.0.3
2
+
3
+ * Forked from guard-delayed and guard-resque
4
+
5
+
6
+ -- guard-delayed --
7
+
8
+ ## 0.1.0 (2011-07-28)
9
+
10
+ * Fixed options for current delayed_job version (from dbloete)
11
+ * Environment settings needed to be passed in via RAILS_ENV=
12
+
13
+ ## 0.0.9 (2011-06-22)
14
+
15
+ * Fixed argument passing to the start script
16
+ * Cleaned up some documentation.
17
+
18
+ ## 0.0.8 (2011-05-24)
19
+
20
+ * Changed template to include :environment => 'development'
21
+ * Changed name from 'guard-delayed_job' to 'guard-delayed'
22
+ * Fixed options passing
23
+
24
+ ## 0.0.3 (2011-05-23)
25
+
26
+ * Initial release.
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source :rubygems
2
+
3
+ # Specify your gem's dependencies in guard-sidekiq.gemspec
4
+ gemspec
data/Guardfile ADDED
@@ -0,0 +1,10 @@
1
+ guard 'bundler' do
2
+ watch(/^Gemfile/)
3
+ watch(/^.+\.gemspec/)
4
+ end
5
+
6
+ guard 'rspec', :version => 2 do
7
+ watch(/^spec\/.*_spec\.rb/)
8
+ watch(/^lib\/(.*)\.rb/) { |m| "spec/#{m[1]}_spec.rb" }
9
+ watch(/^spec\/spec_helper\.rb/) { "spec" }
10
+ end
data/README.markdown ADDED
@@ -0,0 +1,90 @@
1
+ # Guard::Sidekiq
2
+
3
+ Guard::Sidekiq automatically starts/stops/restarts Sidekiq workers
4
+
5
+ *forked from [Guard::Resque](https://github.com/guard/guard-resque)*
6
+
7
+ ## Install
8
+
9
+ Please be sure to have [Guard](http://github.com/guard/guard) installed before continue.
10
+
11
+ Install the gem:
12
+
13
+ gem install guard-sidekiq
14
+
15
+ Add it to your Gemfile (inside test group):
16
+
17
+ gem 'guard-sidekiq'
18
+
19
+ Add guard definition to your Guardfile by running this command:
20
+
21
+ guard init sidekiq
22
+
23
+ ## Usage
24
+
25
+ Please read [Guard usage doc](http://github.com/guard/guard#readme).
26
+
27
+ I suggest you put the sidekiq guard definition *before* your test/rspec guard if your tests depend on it
28
+ being active.
29
+
30
+ ## Guardfile
31
+
32
+ guard 'sidekiq', :environment => 'development' do
33
+ watch(%r{^workers/(.+)\.rb})
34
+ end
35
+
36
+ ## Options
37
+
38
+ You can customize the sidekiq task via the following options:
39
+
40
+ * `environment`: the rails environment to run the workers in (defaults to `nil`)
41
+ * `queue`: the sidekiq queue to run (defaults to `"*"`)
42
+ * `timeout`: shutdown timeout
43
+ * `concurrency`: the number of threads to include (defaults to `1`)
44
+ * `verbose`: whether to use verbose logging (defaults to `nil`)
45
+ * `stop_signal`: how to kill the process when restarting (defaults to `QUIT`)
46
+
47
+
48
+ ## Development
49
+
50
+ * Source hosted at [GitHub](http://github.com/uken/guard-sidekiq)
51
+ * Report issues/Questions/Feature requests on [GitHub Issues](http://github.com/uken/guard-sidekiq/issues)
52
+
53
+ Pull requests are very welcome! Make sure your patches are well tested. Please create a topic branch for every separate change
54
+ you make.
55
+
56
+ ## Testing the gem locally
57
+
58
+ gem install guard-sidekiq-0.x.x.gem
59
+
60
+ ## Building and deploying gem
61
+
62
+ * Update the version number in `lib/guard/sidekiq/version.rb`
63
+ * Update `CHANGELOG.md`
64
+ * Build the gem:
65
+
66
+ gem build guard-sidekiq.gemspec
67
+
68
+ * Push to rubygems.org:
69
+
70
+ gem push guard-sidekiq-0.x.x.gem
71
+
72
+ ## Guard::Delayed Authors
73
+
74
+ [David Parry](https://github.com/suranyami)
75
+ [Dennis Reimann](https://github.com/dbloete)
76
+
77
+ Ideas for this gem came from [Guard::WEBrick](http://github.com/fnichol/guard-webrick).
78
+
79
+
80
+ ## Guard::Resque Authors
81
+
82
+ [Jacques Crocker](https://github.com/railsjedi)
83
+
84
+ I hacked this together from the `guard-delayed` gem for use with Resque. All credit go to the original authors though. I just search/replaced and tweaked a few things
85
+
86
+ ## Guard::Sidekiq Authors
87
+ Mark Bolusmjak
88
+ Pitr Vernigorov
89
+
90
+ Replaces "rescue" with "sidekiq"
data/Rakefile ADDED
@@ -0,0 +1,6 @@
1
+ require 'bundler'
2
+ Bundler::GemHelper.install_tasks
3
+
4
+ require 'rspec/core/rake_task'
5
+ RSpec::Core::RakeTask.new(:spec)
6
+ task :default => :spec
@@ -0,0 +1,28 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "guard/sidekiq/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "guard-sidekiq"
7
+ s.version = Guard::Sidekiq::Version::STRING
8
+ s.platform = Gem::Platform::RUBY
9
+ s.authors = ["Mark Bolusmjak", "pitr"]
10
+ s.email = ["team@uken.com"]
11
+ s.homepage = 'http://github.com/uken/guard-sidekiq'
12
+ s.summary = %q{guard gem for sidekiq}
13
+ s.description = %q{Guard::Sidekiq automatically starts/stops/restarts sidekiq worker}
14
+
15
+ s.add_dependency 'guard', '>= 0.8'
16
+ s.add_dependency 'sidekiq'
17
+
18
+ s.add_development_dependency 'bundler'
19
+ s.add_development_dependency 'rake'
20
+ s.add_development_dependency 'rspec', '~> 2.5.0'
21
+ s.add_development_dependency 'guard-rspec', '>= 0.2.0'
22
+ s.add_development_dependency 'guard-bundler', '>= 0.1.1'
23
+
24
+ s.files = `git ls-files`.split("\n")
25
+ s.test_files = `git ls-files -- spec/*`.split("\n")
26
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
27
+ s.require_paths = ["lib"]
28
+ end
@@ -0,0 +1,10 @@
1
+ ### Guard::Sidekiq
2
+ # available options:
3
+ # - :verbose
4
+ # - :queue (defaults to "*")
5
+ # - :concurrency (defaults to 1)
6
+ # - :timeout
7
+ # - :environment (corresponds to RAILS_ENV for the Sidekiq worker)
8
+ guard 'sidekiq', :environment => 'development' do
9
+ watch(%r{^workers/(.+)\.rb$})
10
+ end
@@ -0,0 +1,7 @@
1
+ module Guard
2
+ module Sidekiq
3
+ module Version
4
+ STRING = "0.0.3"
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,95 @@
1
+ require 'guard'
2
+ require 'guard/guard'
3
+
4
+ module Guard
5
+ class Sidekiq < Guard
6
+
7
+ DEFAULT_SIGNAL = :QUIT
8
+ DEFAULT_QUEUE = '*'.freeze
9
+ DEFAULT_CONCURRENCY = 1
10
+
11
+ # Allowable options are:
12
+ # - :environment e.g. 'test'
13
+ # - :queue e.g. '*'
14
+ # - :timeout e.g. 5
15
+ # - :concurrency, e.g. 20
16
+ # - :verbose e.g. true
17
+ # - :stop_signal e.g. :QUIT or :SIGQUIT
18
+ def initialize(watchers = [], options = {})
19
+ @options = options
20
+ @pid = nil
21
+ @stop_signal = options[:stop_signal] || DEFAULT_SIGNAL
22
+ @options[:queue] ||= DEFAULT_QUEUE
23
+ @options[:concurrency] ||= DEFAULT_CONCURRENCY
24
+ @options[:verbose] = @options.fetch(:verbose, true)
25
+ super
26
+ end
27
+
28
+ def start
29
+ stop
30
+ UI.info 'Starting up sidekiq...'
31
+ UI.info [ cmd, env.map{|v| v.join('=')} ].join(' ')
32
+
33
+ # launch Sidekiq worker
34
+ @pid = spawn(env, cmd)
35
+ end
36
+
37
+ def stop
38
+ if @pid
39
+ UI.info 'Stopping sidekiq...'
40
+ ::Process.kill @stop_signal, @pid
41
+ begin
42
+ Timeout.timeout(15) do
43
+ ::Process.wait @pid
44
+ end
45
+ rescue Timeout::Error
46
+ UI.info 'Sending SIGKILL to sidekiq, as it\'s taking too long to shutdown.'
47
+ ::Process.kill :KILL, @pid
48
+ ::Process.wait @pid
49
+ end
50
+ UI.info 'Stopped process sidekiq'
51
+ end
52
+ rescue Errno::ESRCH
53
+ UI.info 'Guard::Sidekiq lost the Sidekiq worker subprocess!'
54
+ ensure
55
+ @pid = nil
56
+ end
57
+
58
+ # Called on Ctrl-Z signal
59
+ def reload
60
+ UI.info 'Restarting sidekiq...'
61
+ restart
62
+ end
63
+
64
+ # Called on Ctrl-/ signal
65
+ def run_all
66
+ true
67
+ end
68
+
69
+ # Called on file(s) modifications
70
+ def run_on_change(paths)
71
+ restart
72
+ end
73
+
74
+ def restart
75
+ stop
76
+ start
77
+ end
78
+
79
+ private
80
+
81
+ def cmd
82
+ command = ['bundle exec sidekiq']
83
+
84
+ # trace setting
85
+ command << "--queue #{@options[:queue]}"
86
+ command << "--verbose" if @options[:verbose]
87
+ command << "--environment #{@options[:environment]}" if @options[:environment]
88
+ command << "--timeout #{@options[:timeout]}" if @options[:timeout]
89
+ command << "--concurrency #{@options[:concurrency]}"
90
+
91
+ command.join(' ')
92
+ end
93
+
94
+ end
95
+ end
@@ -0,0 +1 @@
1
+ require 'guard/sidekiq'
@@ -0,0 +1,47 @@
1
+ require 'spec_helper'
2
+
3
+ describe Guard::Sidekiq do
4
+ describe 'start' do
5
+
6
+ it 'should accept :environment option' do
7
+ environment = :foo
8
+
9
+ obj = Guard::Sidekiq.new [], :environment => environment
10
+ obj.send(:cmd).should include "--environment #{environment}"
11
+ end
12
+
13
+ it 'should accept :queue option' do
14
+ queue = :foo
15
+
16
+ obj = Guard::Sidekiq.new [], :queue => queue
17
+ obj.send(:cmd).should include "--queue #{queue}"
18
+ end
19
+
20
+ it 'should accept :timeout option' do
21
+ timeout = 2
22
+
23
+ obj = Guard::Sidekiq.new [], :timeout => timeout
24
+ obj.send(:cmd).should include "--timeout #{timeout}"
25
+ end
26
+
27
+ it 'should accept :concurrency option' do
28
+ concurrency = 2
29
+
30
+ obj = Guard::Sidekiq.new [], :concurrency => concurrency
31
+ obj.send(:cmd).should include "--concurrency #{concurrency}"
32
+ end
33
+
34
+ it 'should accept :verbose option' do
35
+ obj = Guard::Sidekiq.new [], :verbose => true
36
+ obj.send(:cmd).should include '--verbose'
37
+ end
38
+
39
+ it 'should provide default options' do
40
+ obj = Guard::Sidekiq.new []
41
+ obj.send(:cmd).should include "--queue #{Guard::Sidekiq::DEFAULT_QUEUE}"
42
+ obj.send(:cmd).should include "--concurrency #{Guard::Sidekiq::DEFAULT_CONCURRENCY}"
43
+ obj.send(:cmd).should include '--verbose'
44
+ end
45
+
46
+ end
47
+ end
@@ -0,0 +1,10 @@
1
+ require 'rspec'
2
+ require 'guard/sidekiq'
3
+
4
+ ENV['GUARD_ENV'] = 'test'
5
+
6
+ RSpec.configure do |config|
7
+ config.color_enabled = true
8
+ config.filter_run :focus => true
9
+ config.run_all_when_everything_filtered = true
10
+ end
metadata ADDED
@@ -0,0 +1,144 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: guard-sidekiq
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.3
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Mark Bolusmjak
9
+ - pitr
10
+ autorequire:
11
+ bindir: bin
12
+ cert_chain: []
13
+ date: 2012-06-21 00:00:00.000000000Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: guard
17
+ requirement: &70334955149000 !ruby/object:Gem::Requirement
18
+ none: false
19
+ requirements:
20
+ - - ! '>='
21
+ - !ruby/object:Gem::Version
22
+ version: '0.8'
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: *70334955149000
26
+ - !ruby/object:Gem::Dependency
27
+ name: sidekiq
28
+ requirement: &70334955147120 !ruby/object:Gem::Requirement
29
+ none: false
30
+ requirements:
31
+ - - ! '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: *70334955147120
37
+ - !ruby/object:Gem::Dependency
38
+ name: bundler
39
+ requirement: &70334955145740 !ruby/object:Gem::Requirement
40
+ none: false
41
+ requirements:
42
+ - - ! '>='
43
+ - !ruby/object:Gem::Version
44
+ version: '0'
45
+ type: :development
46
+ prerelease: false
47
+ version_requirements: *70334955145740
48
+ - !ruby/object:Gem::Dependency
49
+ name: rake
50
+ requirement: &70334955144980 !ruby/object:Gem::Requirement
51
+ none: false
52
+ requirements:
53
+ - - ! '>='
54
+ - !ruby/object:Gem::Version
55
+ version: '0'
56
+ type: :development
57
+ prerelease: false
58
+ version_requirements: *70334955144980
59
+ - !ruby/object:Gem::Dependency
60
+ name: rspec
61
+ requirement: &70334955143860 !ruby/object:Gem::Requirement
62
+ none: false
63
+ requirements:
64
+ - - ~>
65
+ - !ruby/object:Gem::Version
66
+ version: 2.5.0
67
+ type: :development
68
+ prerelease: false
69
+ version_requirements: *70334955143860
70
+ - !ruby/object:Gem::Dependency
71
+ name: guard-rspec
72
+ requirement: &70334955142460 !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: 0.2.0
78
+ type: :development
79
+ prerelease: false
80
+ version_requirements: *70334955142460
81
+ - !ruby/object:Gem::Dependency
82
+ name: guard-bundler
83
+ requirement: &70334955141820 !ruby/object:Gem::Requirement
84
+ none: false
85
+ requirements:
86
+ - - ! '>='
87
+ - !ruby/object:Gem::Version
88
+ version: 0.1.1
89
+ type: :development
90
+ prerelease: false
91
+ version_requirements: *70334955141820
92
+ description: Guard::Sidekiq automatically starts/stops/restarts sidekiq worker
93
+ email:
94
+ - team@uken.com
95
+ executables: []
96
+ extensions: []
97
+ extra_rdoc_files: []
98
+ files:
99
+ - .gitignore
100
+ - CHANGELOG.md
101
+ - Gemfile
102
+ - Guardfile
103
+ - README.markdown
104
+ - Rakefile
105
+ - guard-sidekiq.gemspec
106
+ - lib/guard-sidekiq.rb
107
+ - lib/guard/sidekiq.rb
108
+ - lib/guard/sidekiq/templates/Guardfile
109
+ - lib/guard/sidekiq/version.rb
110
+ - spec/guard/sidekiq_spec.rb
111
+ - spec/spec_helper.rb
112
+ homepage: http://github.com/uken/guard-sidekiq
113
+ licenses: []
114
+ post_install_message:
115
+ rdoc_options: []
116
+ require_paths:
117
+ - lib
118
+ required_ruby_version: !ruby/object:Gem::Requirement
119
+ none: false
120
+ requirements:
121
+ - - ! '>='
122
+ - !ruby/object:Gem::Version
123
+ version: '0'
124
+ segments:
125
+ - 0
126
+ hash: -3647367652343109123
127
+ required_rubygems_version: !ruby/object:Gem::Requirement
128
+ none: false
129
+ requirements:
130
+ - - ! '>='
131
+ - !ruby/object:Gem::Version
132
+ version: '0'
133
+ segments:
134
+ - 0
135
+ hash: -3647367652343109123
136
+ requirements: []
137
+ rubyforge_project:
138
+ rubygems_version: 1.8.15
139
+ signing_key:
140
+ specification_version: 3
141
+ summary: guard gem for sidekiq
142
+ test_files:
143
+ - spec/guard/sidekiq_spec.rb
144
+ - spec/spec_helper.rb