guard-resque-scheduler 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,6 @@
1
+ *.gem
2
+ .bundle
3
+ Gemfile.lock
4
+ pkg/*
5
+ .rvmrc
6
+ .rbx
@@ -0,0 +1,4 @@
1
+ ## 0.0.1
2
+
3
+ * Initial release
4
+ * Code mostly borrowed from Guard::Resque
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in guard-resque-scheduler.gemspec
4
+ gemspec
@@ -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
@@ -0,0 +1,96 @@
1
+ # Guard::Resque
2
+
3
+ Guard::Resque automatically starts/stops/restarts resque scheduler
4
+
5
+ *forked from [Guard::Resque](http://github.com/railsjedi/guard-resque)*
6
+
7
+
8
+ ## Install
9
+
10
+ Please be sure to have [Guard](http://github.com/guard/guard) installed before continue.
11
+
12
+ Install the gem:
13
+
14
+ gem install guard-resque-scheduler
15
+
16
+ Add it to your Gemfile (inside test group):
17
+
18
+ gem 'guard-resque-scheduler'
19
+
20
+ Add guard definition to your Guardfile by running this command:
21
+
22
+ guard init resque-scheduler
23
+
24
+
25
+ ## Usage
26
+
27
+ Please read [Guard usage doc](http://github.com/guard/guard#readme).
28
+
29
+
30
+ ## Guardfile
31
+
32
+ guard 'resque-scheduler', :environment => 'development' do
33
+ watch('config/schedule.yml')
34
+ end
35
+
36
+ Scheduler only needs to reload when the schedule changes, so point it there.
37
+
38
+
39
+ ## Options
40
+
41
+ You can customize the resque task via the following options:
42
+
43
+ * `environment`: the rails environment to run the workers in (defaults to `nil`)
44
+ * `task`: the name of the rake task to use (defaults to `"resque:scheduler"`)
45
+ * `verbose`: whether to use verbose logging (defaults to `nil`)
46
+ * `trace`: whether to include `--trace` on the rake command (defaults to `nil`)
47
+ * `stop_signal`: how to kill the process when restarting (defaults to `QUIT`)
48
+
49
+
50
+ ## Development
51
+
52
+ * Source hosted at [GitHub](http://github.com/dlnichols/resque-scheduler)
53
+ * Report issues/Questions/Feature requests on [GitHub Issues](http://github.com/dlnichols/resque-scheduler/issues)
54
+
55
+ Pull requests are very welcome! Make sure your patches are well tested.
56
+ Please create a topic branch for every separate change you make.
57
+
58
+
59
+ ## Testing the gem locally
60
+
61
+ gem install guard-resque-scheduler-0.x.x.gem
62
+
63
+
64
+ ## Building and deploying gem
65
+
66
+ * Update the version number in `lib/guard/resque-scheduler/version.rb`
67
+ * Update `CHANGELOG.md`
68
+ * Build the gem:
69
+
70
+ gem build guard-resque-scheduler.gemspec
71
+
72
+ * Push to rubygems.org:
73
+
74
+ gem push guard-resque-scheduler-0.x.x.gem
75
+
76
+
77
+ ## Guard::Delayed Authors
78
+
79
+ [David Parry](https://github.com/suranyami)
80
+ [Dennis Reimann](https://github.com/dbloete)
81
+
82
+ Ideas for this gem came from [Guard::WEBrick](http://github.com/fnichol/guard-webrick).
83
+
84
+
85
+ ## Guard::Resque Author
86
+
87
+ [Jacques Crocker](https://github.com/railsjedi)
88
+
89
+ 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
90
+
91
+
92
+ ## Guard::ResqueScheduler Author
93
+
94
+ [Dan Nichols](https://github.com/dlnichols)
95
+
96
+ Hacked up Guard::Resque because I needed a simple way to launch the scheduler daemon. Mostly a search/replace, and I removed some of the resque options that didn't apply.
@@ -0,0 +1,33 @@
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
7
+
8
+ namespace :spec do
9
+ desc "Run all specs on multiple ruby versions (requires rvm)"
10
+ task :portability do
11
+
12
+ command = <<-BASH
13
+ source ~/.rvm/scripts/rvm;
14
+ rvm #{ENV['RUBIES'] || 'all'} do bundle exec rake spec
15
+ BASH
16
+ system "bash -c '#{command}'"
17
+
18
+ end
19
+
20
+ namespace :portability do
21
+ desc 'Installs bundler/rake and runs bundle install for all rubies'
22
+ task :prepare do
23
+ # FIXME: This isn't working for me when it gets to JRuby, specs are running fine - RL
24
+ command = <<-BASH
25
+ source ~/.rvm/scripts/rvm;
26
+ rvm #{ENV['RUBIES'] || 'all'} do gem install bundler rake;
27
+ rvm #{ENV['RUBIES'] || 'all'} do bundle install
28
+ BASH
29
+
30
+ system "bash -c '#{command}'"
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,32 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "guard/resque-scheduler/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "guard-resque-scheduler"
7
+ s.version = Guard::ResqueSchedulerVersion::VERSION
8
+ s.platform = Gem::Platform::RUBY
9
+ s.authors = ["Dan Nichols"]
10
+ s.email = ["hnipster@gmail.com"]
11
+ s.homepage = 'http://github.com/dlnichols/guard-resque-scheduler'
12
+ s.summary = %q{guard gem for resque-scheduler}
13
+ s.description = %q{Guard::Resque automatically starts/stops/restarts resque scheduler}
14
+
15
+ s.required_rubygems_version = '>= 1.3.6'
16
+ s.rubyforge_project = "guard-resque-scheduler"
17
+
18
+ s.add_dependency 'guard', '~> 1.0'
19
+ s.add_dependency 'resque'
20
+ s.add_dependency 'resque-scheduler'
21
+
22
+ s.add_development_dependency 'bundler'
23
+ s.add_development_dependency 'rake'
24
+ s.add_development_dependency 'rspec', '~> 2.5.0'
25
+ s.add_development_dependency 'guard-rspec', '>= 0.2.0'
26
+ s.add_development_dependency 'guard-bundler', '>= 0.1.1'
27
+
28
+ s.files = `git ls-files`.split("\n")
29
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
30
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
31
+ s.require_paths = ["lib"]
32
+ end
@@ -0,0 +1 @@
1
+ require 'guard/resque-scheduler'
@@ -0,0 +1,98 @@
1
+ require 'guard'
2
+ require 'guard/guard'
3
+ require 'timeout'
4
+
5
+ module Guard
6
+ class ResqueScheduler < Guard
7
+
8
+ DEFAULT_SIGNAL = :QUIT
9
+ DEFAULT_TASK = 'resque:scheduler'.freeze
10
+
11
+ # Allowable options are:
12
+ # - :environment e.g. 'test'
13
+ # - :task .e.g 'resque:work'
14
+ # - :verbose e.g. true
15
+ # - :trace e.g. true
16
+ # - :stop_signal e.g. :QUIT or :SIGQUIT
17
+ def initialize(watchers = [], options = {})
18
+ @options = options
19
+ @pid = nil
20
+ @stop_signal = options[:stop_signal] || DEFAULT_SIGNAL
21
+ @options[:task] ||= DEFAULT_TASK
22
+ super
23
+ end
24
+
25
+ def start
26
+ stop
27
+ UI.info 'Starting up resque-scheduler...'
28
+ UI.info [ cmd, env.map{|v| v.join('=')} ].join(' ')
29
+
30
+ # Launch ResqueScheduler
31
+ @pid = spawn(env, cmd)
32
+ end
33
+
34
+ def stop
35
+ if @pid
36
+ UI.info 'Stopping resque-scheduler...'
37
+ ::Process.kill @stop_signal, @pid
38
+ begin
39
+ Timeout.timeout(15) do
40
+ ::Process.wait @pid
41
+ end
42
+ rescue Timeout::Error
43
+ UI.info 'Sending SIGKILL to resque-scheduler, as it\'s taking too long to shutdown.'
44
+ ::Process.kill :KILL, @pid
45
+ ::Process.wait @pid
46
+ end
47
+ UI.info 'Stopped process resque-scheduler'
48
+ end
49
+ rescue Errno::ESRCH
50
+ UI.info 'Guard::ResqueScheduler lost the ResqueScheduler worker subprocess!'
51
+ ensure
52
+ @pid = nil
53
+ end
54
+
55
+ # Called on Ctrl-Z signal
56
+ def reload
57
+ UI.info 'Restarting resque-scheduler...'
58
+ restart
59
+ end
60
+
61
+ # Called on Ctrl-/ signal
62
+ def run_all
63
+ true
64
+ end
65
+
66
+ # Called on file(s) modifications
67
+ def run_on_change(paths)
68
+ restart
69
+ end
70
+
71
+ def restart
72
+ stop
73
+ start
74
+ end
75
+
76
+ private
77
+
78
+ def cmd
79
+ command = ['bundle exec rake', @options[:task].to_s]
80
+
81
+ # trace setting
82
+ command << '--trace' if @options[:trace]
83
+
84
+ return command.join(' ')
85
+ end
86
+
87
+ def env
88
+ var = Hash.new
89
+
90
+ var['RAILS_ENV'] = @options[:environment].to_s if @options[:environment]
91
+
92
+ var['VERBOSE'] = '1' if @options[:verbose]
93
+
94
+ return var
95
+ end
96
+ end
97
+ end
98
+
@@ -0,0 +1,9 @@
1
+ # guard-resque-scheduler
2
+ # available options:
3
+ # - :task (defaults to 'resque:scheduler')
4
+ # - :verbose (set to anything but false to activate)
5
+ # - :trace
6
+ # - :environment (corresponds to RAILS_ENV for the Resque scheduler)
7
+ guard 'resque-scheduler', :environment => 'development' do
8
+ watch('config/schedule.yml')
9
+ end
@@ -0,0 +1,5 @@
1
+ module Guard
2
+ module ResqueSchedulerVersion
3
+ VERSION = "0.0.1"
4
+ end
5
+ end
@@ -0,0 +1,36 @@
1
+ require 'spec_helper'
2
+
3
+ describe Guard::ResqueScheduler do
4
+ describe 'start' do
5
+
6
+ it 'should accept :environment option' do
7
+ environment = :foo
8
+
9
+ obj = Guard::ResqueScheduler.new [], :environment => environment
10
+ obj.send(:env).should include 'RAILS_ENV' => environment.to_s
11
+ end
12
+
13
+ it 'should accept :verbose option' do
14
+ obj = Guard::ResqueScheduler.new [], :verbose => true
15
+ obj.send(:env).should include 'VERBOSE'
16
+ end
17
+
18
+ it 'should accept :trace option' do
19
+ obj = Guard::ResqueScheduler.new [], :trace => true
20
+ obj.send(:cmd).should include '--trace'
21
+ end
22
+
23
+ it 'should accept :task option' do
24
+ task = 'environment foo'
25
+
26
+ obj = Guard::ResqueScheduler.new [], :task => task
27
+ obj.send(:cmd).should include task
28
+ obj.send(:cmd).should_not include Guard::ResqueScheduler::DEFAULT_TASK
29
+ end
30
+
31
+ it 'should provide default options' do
32
+ obj = Guard::ResqueScheduler.new []
33
+ obj.send(:cmd).should include Guard::ResqueScheduler::DEFAULT_TASK
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,10 @@
1
+ require 'rspec'
2
+ require 'guard/resque-scheduler'
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,186 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: guard-resque-scheduler
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Dan Nichols
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-09-13 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: guard
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ~>
20
+ - !ruby/object:Gem::Version
21
+ version: '1.0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ version: '1.0'
30
+ - !ruby/object:Gem::Dependency
31
+ name: resque
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ type: :runtime
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
+ - !ruby/object:Gem::Dependency
47
+ name: resque-scheduler
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ type: :runtime
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ - !ruby/object:Gem::Dependency
63
+ name: bundler
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ type: :development
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ - !ruby/object:Gem::Dependency
79
+ name: rake
80
+ requirement: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ! '>='
84
+ - !ruby/object:Gem::Version
85
+ version: '0'
86
+ type: :development
87
+ prerelease: false
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ! '>='
92
+ - !ruby/object:Gem::Version
93
+ version: '0'
94
+ - !ruby/object:Gem::Dependency
95
+ name: rspec
96
+ requirement: !ruby/object:Gem::Requirement
97
+ none: false
98
+ requirements:
99
+ - - ~>
100
+ - !ruby/object:Gem::Version
101
+ version: 2.5.0
102
+ type: :development
103
+ prerelease: false
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ~>
108
+ - !ruby/object:Gem::Version
109
+ version: 2.5.0
110
+ - !ruby/object:Gem::Dependency
111
+ name: guard-rspec
112
+ requirement: !ruby/object:Gem::Requirement
113
+ none: false
114
+ requirements:
115
+ - - ! '>='
116
+ - !ruby/object:Gem::Version
117
+ version: 0.2.0
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ none: false
122
+ requirements:
123
+ - - ! '>='
124
+ - !ruby/object:Gem::Version
125
+ version: 0.2.0
126
+ - !ruby/object:Gem::Dependency
127
+ name: guard-bundler
128
+ requirement: !ruby/object:Gem::Requirement
129
+ none: false
130
+ requirements:
131
+ - - ! '>='
132
+ - !ruby/object:Gem::Version
133
+ version: 0.1.1
134
+ type: :development
135
+ prerelease: false
136
+ version_requirements: !ruby/object:Gem::Requirement
137
+ none: false
138
+ requirements:
139
+ - - ! '>='
140
+ - !ruby/object:Gem::Version
141
+ version: 0.1.1
142
+ description: Guard::Resque automatically starts/stops/restarts resque scheduler
143
+ email:
144
+ - hnipster@gmail.com
145
+ executables: []
146
+ extensions: []
147
+ extra_rdoc_files: []
148
+ files:
149
+ - .gitignore
150
+ - CHANGELOG.md
151
+ - Gemfile
152
+ - Guardfile
153
+ - README.markdown
154
+ - Rakefile
155
+ - guard-resque-scheduler.gemspec
156
+ - lib/guard-resque-scheduler.rb
157
+ - lib/guard/resque-scheduler.rb
158
+ - lib/guard/resque-scheduler/templates/Guardfile
159
+ - lib/guard/resque-scheduler/version.rb
160
+ - spec/guard/resque_scheduler_spec.rb
161
+ - spec/spec_helper.rb
162
+ homepage: http://github.com/dlnichols/guard-resque-scheduler
163
+ licenses: []
164
+ post_install_message:
165
+ rdoc_options: []
166
+ require_paths:
167
+ - lib
168
+ required_ruby_version: !ruby/object:Gem::Requirement
169
+ none: false
170
+ requirements:
171
+ - - ! '>='
172
+ - !ruby/object:Gem::Version
173
+ version: '0'
174
+ required_rubygems_version: !ruby/object:Gem::Requirement
175
+ none: false
176
+ requirements:
177
+ - - ! '>='
178
+ - !ruby/object:Gem::Version
179
+ version: 1.3.6
180
+ requirements: []
181
+ rubyforge_project: guard-resque-scheduler
182
+ rubygems_version: 1.8.24
183
+ signing_key:
184
+ specification_version: 3
185
+ summary: guard gem for resque-scheduler
186
+ test_files: []