scheduler_daemon 1.1.3 → 1.1.6

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: 701f89d51ba0579a0b12a071b684d0510ae12d0efe2a37bae5ba028d6a30ecc4
4
+ data.tar.gz: 7e951ba8633e040ff58dfb69330556e1065ca22a2e42c427381e2c5c94e222f3
5
+ SHA512:
6
+ metadata.gz: 3111774072db7a5cae2351a677577871f0b649b2097cbaf2af64ae87f49a7385f75cc7bb6c5eaf14c5a133d80c2e4a0be080e2fd7816e67a01a7b9687bd55623
7
+ data.tar.gz: 9d3acc9ff3ac601f665e4e11f2ed31ba0f368e0212543867d2258bd346bf705969a5c1e65115ddc8c0d07714eae8c12c5d9ab432592b27fa9936715fc875dbc4
data/Gemfile CHANGED
@@ -1,7 +1,2 @@
1
1
  source "http://rubygems.org"
2
2
  gemspec
3
- gem 'eventmachine', '>= 0.12.8'
4
- gem 'daemons', '>= 1.0.10'
5
- gem 'rufus-scheduler', '>= 2.0.1'
6
- gem 'chronic', '>= 0.2.0'
7
- gem 'activesupport'
data/Gemfile.lock CHANGED
@@ -1,36 +1,53 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- scheduler_daemon (1.1.0)
4
+ scheduler_daemon (1.1.6)
5
5
  activesupport
6
6
  chronic (>= 0.2.0)
7
- chronic (>= 0.2.0)
8
- daemons (>= 1.0.10)
9
7
  daemons (>= 1.0.10)
10
8
  eventmachine (>= 0.12.8)
11
- eventmachine (>= 0.12.8)
12
- rufus-scheduler (>= 2.0.1)
13
- rufus-scheduler (>= 2.0.1)
14
- scheduler_daemon
9
+ rufus-scheduler (~> 2.0.24)
15
10
 
16
11
  GEM
17
12
  remote: http://rubygems.org/
18
13
  specs:
19
- activesupport (3.0.6)
20
- chronic (0.3.0)
21
- daemons (1.1.2)
22
- eventmachine (0.12.10)
23
- rufus-scheduler (2.0.8)
24
- tzinfo (>= 0.3.23)
25
- tzinfo (0.3.26)
14
+ activesupport (7.0.4.2)
15
+ concurrent-ruby (~> 1.0, >= 1.0.2)
16
+ i18n (>= 1.6, < 2)
17
+ minitest (>= 5.1)
18
+ tzinfo (~> 2.0)
19
+ chronic (0.10.2)
20
+ concurrent-ruby (1.2.0)
21
+ daemons (1.4.1)
22
+ diff-lcs (1.5.0)
23
+ eventmachine (1.2.7)
24
+ i18n (1.12.0)
25
+ concurrent-ruby (~> 1.0)
26
+ minitest (5.17.0)
27
+ rspec (3.12.0)
28
+ rspec-core (~> 3.12.0)
29
+ rspec-expectations (~> 3.12.0)
30
+ rspec-mocks (~> 3.12.0)
31
+ rspec-core (3.12.0)
32
+ rspec-support (~> 3.12.0)
33
+ rspec-expectations (3.12.2)
34
+ diff-lcs (>= 1.2.0, < 2.0)
35
+ rspec-support (~> 3.12.0)
36
+ rspec-mocks (3.12.3)
37
+ diff-lcs (>= 1.2.0, < 2.0)
38
+ rspec-support (~> 3.12.0)
39
+ rspec-support (3.12.0)
40
+ rufus-scheduler (2.0.24)
41
+ tzinfo (>= 0.3.22)
42
+ tzinfo (2.0.6)
43
+ concurrent-ruby (~> 1.0)
26
44
 
27
45
  PLATFORMS
28
46
  ruby
29
47
 
30
48
  DEPENDENCIES
31
- activesupport
32
- chronic (>= 0.2.0)
33
- daemons (>= 1.0.10)
34
- eventmachine (>= 0.12.8)
35
- rufus-scheduler (>= 2.0.1)
49
+ rspec (~> 3.12.0)
36
50
  scheduler_daemon!
51
+
52
+ BUNDLED WITH
53
+ 2.4.3
data/README.markdown CHANGED
@@ -1,146 +1,163 @@
1
- Scheduler Daemon
2
- ================
1
+ # Scheduler Daemon
3
2
 
4
3
  Rails 3+ compatible scheduler daemon (see branches for older versions).
5
4
 
6
- Replaces cron/rake pattern of periodically running rake tasks
7
- to perform maintenance tasks in Rails apps. Scheduler Daemon is made specifically for your Rails app,
8
- and only loads the environment once, no matter how many tasks run.
5
+ Replaces cron/rake pattern of periodically running rake tasks to perform maintenance
6
+ tasks in Rails apps. Scheduler Daemon is made specifically for your Rails app, and only
7
+ loads the environment once, no matter how many tasks run.
9
8
 
10
- What's so great about it? Well, I'm glad you asked!
9
+ What's so great about it? Well, I'm glad you asked!
11
10
 
12
11
  - Only loads your Rails environment once on daemon start, not every time a task is run
13
- - Allows you to easily deploy the scheduled tasks with your Rails app instead of depending on an
14
- administrator to update crontab
12
+ - Allows you to easily deploy the scheduled tasks with your Rails app instead of depending on an administrator to update crontab
15
13
  - Can be installed as a gem or a plugin (I suggest gem)
16
14
  - It doesn't use rake or cron!
17
15
  - Gets you up and running with your own daemon in under 2 minutes
18
16
  - Specially designed to work with your rails app!
19
17
 
20
- Setup
21
- =====
18
+ ## Setup
22
19
 
23
20
  Install as a gem or plugin.
24
21
 
25
22
  As a gem, the old-fashioned way:
26
23
 
27
- gem install scheduler_daemon
24
+ ```
25
+ gem install scheduler_daemon
26
+ ```
28
27
 
29
- As a gem with bundler, add to your ./Gemfile:
28
+ As a gem with bundler, add to your `./Gemfile`:
30
29
 
31
- gem 'scheduler_daemon'
32
-
33
- I pretty much assume you chose this option below and prefix most commands with "bundle exec"
30
+ ```
31
+ gem 'scheduler_daemon'
32
+ ```
34
33
 
35
- As a plugin: (might be awkward to call the binary to start up the daemon...)
34
+ I pretty much assume you chose this option below and prefix most commands with `bundle exec`
36
35
 
37
- script/plugin install git://github.com/ssoroka/scheduler_daemon.git
38
- # Install required gems
39
- gem install daemons rufus-scheduler eventmachine chronic -s http://gemcutter.org
36
+ As a plugin (deprecated): (might be awkward to call the binary to start up the daemon...)
37
+
38
+ ```
39
+ rails plugin install git://github.com/ssoroka/scheduler_daemon.git
40
+ # Install required gems
41
+ gem install daemons rufus-scheduler eventmachine chronic -s http://gemcutter.org
42
+ ```
40
43
 
41
44
  Optionally generate the default scheduler daemon task for your rails app:
42
45
 
43
- script/rails generate scheduler_task MyNewTask
46
+ ```
47
+ rails generate scheduler_task MyNewTask
48
+ ```
44
49
 
45
- which will create an task named:
50
+ which will create a task named:
46
51
 
47
- scheduled_tasks/my_new_task.rb
52
+ ```
53
+ scheduled_tasks/my_new_task.rb
54
+ ```
48
55
 
49
- Usage
50
- =====
56
+ ## Usage
51
57
 
52
58
  generate a new scheduled task:
53
59
 
54
- script/rails generate scheduler_task MyTaskName
60
+ ```
61
+ rails generate scheduler_task MyTaskName
62
+ ```
63
+
64
+ If you have problems with that, the template for new tasks is [here](lib/scheduler_daemon/rails/generators/scheduler_task/templates/scheduled_tasks/example_task.rb)
55
65
 
56
- If you have problems with that, the template for new tasks is in the gem under:
57
-
58
- lib/scheduler_daemon/rails/generators/scheduler_task/templates/scheduled_tasks/example_task.rb
59
-
60
- you can always copy it and make modifications, or see "Manually create tasks" below.
66
+ You can always copy it and make modifications, or see [Manually create tasks](#manually-create-tasks)
61
67
 
62
68
  Tasks support their own special DSL; commands are:
63
69
 
64
- environments :production, :staging # run only in environments listed. (:all by default)
65
- every '1d' # run every day
66
- every '1d', :first_at => Chronic.parse("2 am") # run every day, starting at 2 am (see caveat below)
67
- at Cronic.parse('5 pm') # run *once* at 5 pm today
68
- # (relative to scheduler start/restart time )
69
- # (happens every time scheduler starts/restarts)
70
- # (see caveat below )
71
- cron '* 4 * * *' # cron style (run every 4 am)
72
- in '30s' # run once, 30 seconds from scheduler start/restart
70
+ ```rb
71
+ environments :production, :staging # run only in environments listed. (:all by default)
72
+ every '1d' # run every day
73
+ every '1d', :first_at => Chronic.parse("2 am") # run every day, starting at 2 am (see caveat below)
74
+ at Cronic.parse('5 pm') # run *once* at 5 pm today
75
+ # (relative to scheduler start/restart time )
76
+ # (happens every time scheduler starts/restarts)
77
+ # (see caveat below )
78
+ cron '* 4 * * *' # cron style (run every 4 am)
79
+ self.in '30s' # run once, 30 seconds from scheduler start/restart
80
+ # "self." is required--"in" is a keyword
81
+ ```
73
82
 
74
83
  fire up the daemon in console mode to test it out
75
84
 
76
- bundle exec scheduler_daemon run
85
+ ```
86
+ bundle exec scheduler_daemon run
87
+ ```
77
88
 
78
- For production environments, add the daemon to the system start-up, and
79
- capistrano deploy scripts, etc. Something like:
89
+ For production environments, add the daemon to the system start-up, and capistrano
90
+ deploy scripts, etc. Something like:
80
91
 
81
- export RAILS_ENV=production
82
- bundle exec scheduler_daemon start
92
+ ```
93
+ export RAILS_ENV=production
94
+ bundle exec scheduler_daemon start
95
+ ```
83
96
 
84
97
  Selectively run tasks like so:
85
98
 
86
- bundle exec scheduler_daemon start -- --only=task_name1,task_name2 --except=not_me
99
+ ```
100
+ bundle exec scheduler_daemon start -- --only=task_name1,task_name2 --except=not_me
101
+ ```
87
102
 
88
- Manually create tasks
89
- =====================
103
+ ## Manually create tasks
90
104
 
91
- If you don't want to use this gem with Rails, you can manually create tasks in a scheduled_tasks/ subdirectory and start the daemon with --skip-rails (though it'll figure it out anyway if there's no config/environment.rb file in the launch directory or --dir=/path)
105
+ If you don't want to use this gem with Rails, you can manually create tasks in a
106
+ `scheduled_tasks/` subdirectory and start the daemon with `--skip-rails` (though it'll
107
+ figure it out anyway if there's no `config/environment.rb` file in the launch directory
108
+ or `--dir=/path`)
92
109
 
93
110
  Here's an example task file.
94
111
 
95
- class CleanUpTask < Scheduler::SchedulerTask
96
- every '2m'
97
-
98
- def run
99
- do_something
100
- log("I've done things")
101
- end
102
- end
112
+ ```rb
113
+ class CleanUpTask < Scheduler::SchedulerTask
114
+ every '2m'
103
115
 
104
- Specs
105
- =====
116
+ def run
117
+ do_something
118
+ log("I've done things")
119
+ end
120
+ end
121
+ ```
106
122
 
107
- See the spec for session cleaner for an idea on how to write specs for your tasks
123
+ ## Specs
108
124
 
109
- To Do
110
- =====
125
+ See [this example spec](scheduler_daemon/spec/scheduled_tasks/session_cleaner_task_spec.rb)
126
+ for an idea on how to write specs for your tasks.
127
+
128
+ ## To Do
111
129
 
112
130
  Looking for suggestions!
113
131
 
114
132
  Send requests to ssoroka78@gmail.com or on twitter, @ssoroka
115
133
 
116
- Bugs
117
- ====
134
+ ## Bugs
118
135
 
119
- Submit bugs here http://github.com/ssoroka/scheduler_daemon/issues
136
+ Submit bugs [here](http://github.com/ssoroka/scheduler_daemon/issues)
120
137
 
121
- Caveats
122
- =======
138
+ ## Caveats
123
139
 
124
- When using the cronic gem to parse dates, be careful of how it interprets your date,
125
- for example:
140
+ When using the cronic gem to parse dates, be careful of how it interprets your date, for
141
+ example:
126
142
 
127
- every '24h', :first_at => Chronic.parse('noon')
143
+ ```
144
+ every '24h', :first_at => Chronic.parse('noon')
145
+ ```
128
146
 
129
147
  will be once a day at noon, but the first time the server starts up (or restarts), noon
130
- is relative to the current time of day. Before lunch, and it's in the future. If the
131
- daemon starts up after lunch, the date is in the past, *and the task is immediately run*
132
- because it thinks it missed its last execution time. Depending on what your task is,
133
- this may or may not be a problem. If you always want the date to resolve in the future
134
- with terms like "noon", "3 am" and "midnight", prepend "next" to it. ie:
148
+ is relative to the current time of day. Before lunch, and it's in the future. If the
149
+ daemon starts up after lunch, the date is in the past, *and the task is immediately run*
150
+ because it thinks it missed its last execution time. Depending on what your task is,
151
+ this may or may not be a problem. If you always want the date to resolve in the future
152
+ with terms like "noon", "3 am" and "midnight", prepend "next" to it. ie:
135
153
 
136
- every '24h', :first_at => Chronic.parse('next noon')
154
+ ```
155
+ every '24h', :first_at => Chronic.parse('next noon')
156
+ ```
137
157
 
138
- Author
139
- ======
158
+ ## Author
140
159
 
141
160
  Steven Soroka
142
161
 
143
162
  * [@ssoroka](http://twitter.com/ssoroka)
144
163
  * [My Github repo](http://github.com/ssoroka)
145
- * [My blog](http://blog.stevensoroka.ca)
146
-
data/Rakefile CHANGED
@@ -5,8 +5,8 @@ begin
5
5
  require 'jeweler'
6
6
  Jeweler::Tasks.new do |gem|
7
7
  gem.name = "scheduler_daemon"
8
- gem.summary = %Q{Rails 3 compatible scheduler daemon. Replaces cron/rake pattern of periodically running rake tasks
9
- to perform maintenance tasks in Rails apps. Scheduler Daemon is made specifically for your Rails app,
8
+ gem.summary = %Q{Rails 3 compatible scheduler daemon. Replaces cron/rake pattern of periodically running rake tasks
9
+ to perform maintenance tasks in Rails apps. Scheduler Daemon is made specifically for your Rails app,
10
10
  and only loads the environment once, no matter how many tasks run.
11
11
 
12
12
  What's so great about it? Well, I'm glad you asked!
@@ -22,16 +22,18 @@ begin
22
22
  gem.email = "ssoroka78@gmail.com"
23
23
  gem.homepage = "http://github.com/ssoroka/scheduler_daemon"
24
24
  gem.authors = ["Steven Soroka"]
25
+ gem.add_dependency('activesupport')
25
26
  gem.add_dependency('eventmachine', '>= 0.12.8')
26
27
  gem.add_dependency('daemons', '>= 1.0.10')
27
- gem.add_dependency('rufus-scheduler', '>= 2.0.1')
28
+ gem.add_dependency('rufus-scheduler', '~> 2.0.24')
28
29
  gem.add_dependency('chronic', '>= 0.2.0')
30
+ gem.add_development_dependency('rspec', '~> 3.12.0')
29
31
 
30
32
  gem.executables = ['scheduler_daemon']
31
-
33
+
32
34
  everything_from_dirs = %w(bin lib spec)
33
35
  gem.files = everything_from_dirs.map{|d| Dir["#{d}/**/*"] }.flatten
34
- gem.files += Dir['*'] - (everything_from_dirs + ['pkg'])
36
+ gem.files += Dir['*'] - (everything_from_dirs + %w(pkg vendor))
35
37
  # gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
36
38
  end
37
39
 
@@ -44,16 +46,16 @@ end
44
46
  # spec.libs << 'lib' << 'spec'
45
47
  # spec.spec_files = FileList['spec/**/*_spec.rb']
46
48
  # end
47
- #
49
+ #
48
50
  # Spec::Rake::SpecTask.new(:rcov) do |spec|
49
51
  # spec.libs << 'lib' << 'spec'
50
52
  # spec.pattern = 'spec/**/*_spec.rb'
51
53
  # spec.rcov = true
52
54
  # end
53
- #
54
- #
55
+ #
56
+ #
55
57
  # task :default => :spec
56
- #
58
+ #
57
59
  # require 'rake/rdoctask'
58
60
  # Rake::RDocTask.new do |rdoc|
59
61
  # if File.exist?('VERSION.yml')
@@ -62,10 +64,10 @@ end
62
64
  # else
63
65
  # version = ""
64
66
  # end
65
- #
67
+ #
66
68
  # rdoc.rdoc_dir = 'rdoc'
67
69
  # rdoc.title = "scheduler_daemon #{version}"
68
70
  # rdoc.rdoc_files.include('README*')
69
71
  # rdoc.rdoc_files.include('lib/**/*.rb')
70
72
  # end
71
- #
73
+ #
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.1.3
1
+ 1.1.6
data/bin/scheduler_daemon CHANGED
@@ -41,16 +41,20 @@ end
41
41
 
42
42
  app_args[:dir] ||= Dir.pwd
43
43
  app_args[:pid_dir] ||= File.expand_path(File.join(app_args[:dir], 'log'))
44
+ app_args[:log_dir] ||= File.expand_path(File.join(app_args[:dir], 'log'))
45
+ app_args[:multiple] ||= false
44
46
  scheduler = File.join(File.dirname(__FILE__), %w(.. lib loader scheduler_loader.rb))
45
47
 
46
- raise "#{pid_dir} does not exist" unless File.exist?(app_args[:pid_dir])
48
+ raise "#{app_args[:pid_dir]} does not exist" unless File.exist?(app_args[:pid_dir])
49
+ raise "#{app_args[:log_dir]} does not exist" unless File.exist?(app_args[:log_dir])
47
50
 
48
51
  app_options = {
49
52
  :app_name => 'scheduler_daemon',
50
53
  :ARGV => launch_args(app_args),
51
54
  :dir_mode => :normal,
52
55
  :dir => app_args[:pid_dir],
53
- :multiple => false,
56
+ :log_dir => app_args[:log_dir],
57
+ :multiple => app_args[:multiple],
54
58
  :backtrace => true,
55
59
  :log_output => true,
56
60
  :monitor => true
@@ -39,7 +39,7 @@ module Scheduler
39
39
  @env_name = @options['env_name'] || 'scheduler'
40
40
  @rufus_scheduler = nil
41
41
  @tasks = []
42
-
42
+
43
43
  log("initialized with settings: #{@options.inspect}")
44
44
 
45
45
  if !@options['skip_init']
@@ -48,14 +48,14 @@ module Scheduler
48
48
  run_scheduler
49
49
  end
50
50
  end
51
-
51
+
52
52
  # registers a task class with the scheduler
53
53
  def register_task(task)
54
-
54
+
55
55
  end
56
-
56
+
57
57
  def load_rails_env
58
- if File.exists?('config/environment.rb') && !@options['skip_rails']
58
+ if File.exist?('config/environment.rb') && !@options['skip_rails']
59
59
  log("loading rails environment")
60
60
  require File.expand_path('./config/environment')
61
61
  @env_name = ::Rails.env
@@ -64,7 +64,7 @@ module Scheduler
64
64
  log("Error loading rails environment; #{$!.class.name}: #{$!.message}")
65
65
  raise $!
66
66
  end
67
-
67
+
68
68
  # time redefines itself with a faster implementation, since it gets called a lot.
69
69
  def time
70
70
  if Time.respond_to?(:zone) && Time.zone
@@ -74,7 +74,7 @@ module Scheduler
74
74
  end
75
75
  time
76
76
  end
77
-
77
+
78
78
  def log(*args)
79
79
  return if @options[:silent]
80
80
  Kernel::puts(%([#{time}] #{args.join("\n")}))
@@ -92,12 +92,13 @@ module Scheduler
92
92
 
93
93
  EventMachine::run {
94
94
  @rufus_scheduler = Rufus::Scheduler::EmScheduler.start_new
95
+ @rufus_scheduler.singleton_class.send :define_method, :log, self.method(:log).to_proc
95
96
 
96
97
  def @rufus_scheduler.handle_exception(job, exception)
97
- msg = "[#{env_name}] scheduler job #{job.job_id} (#{job.tags * ' '}) caught exception #{exception.inspect}"
98
+ msg = "[#{@env_name}] scheduler job #{job.job_id} (#{job.tags * ' '}) caught exception #{exception.inspect}"
98
99
  log msg
99
100
  log exception.backtrace.join("\n")
100
- Scheduler::ExceptionHandler.handle_exception(exception, job, message)
101
+ Scheduler::ExceptionHandler.handle_exception(exception, job, msg)
101
102
  end
102
103
 
103
104
  def @rufus_scheduler.daemon_scheduler
@@ -106,10 +107,10 @@ module Scheduler
106
107
 
107
108
  # This is where the magic happens. tasks in scheduled_tasks/*.rb are loaded up.
108
109
  tasks.each do |task|
109
- if task.should_run_in_current_environment?(env_name)
110
+ if task.should_run_in_current_environment?(@env_name)
110
111
  task.add_to(@rufus_scheduler)
111
112
  else
112
- log "[#{env_name}] #{task} not configured to run; skipping."
113
+ log "[#{@env_name}] #{task} not configured to run; skipping."
113
114
  end
114
115
  end
115
116
  }
@@ -19,7 +19,7 @@ module Scheduler
19
19
  ensure
20
20
  # Note: AR's ActiveRecord::Base.connection_pool.with_connection(&block) seems broken;
21
21
  # it doesn't release the connection properly.
22
- ActiveRecord::Base.connection_pool.release_connection
22
+ ActiveRecord::Base.connection_pool.release_connection if defined?(ActiveRecord)
23
23
  end
24
24
  end
25
25
  end
@@ -67,9 +67,9 @@ module Scheduler
67
67
  def run
68
68
  nil
69
69
  end
70
-
70
+
71
71
  def log(*args)
72
- daemon_scheduler.log(*args)
72
+ daemon_scheduler.log(*args) if daemon_scheduler
73
73
  end
74
74
  alias :puts :log
75
75
  end
Binary file
@@ -2,17 +2,19 @@
2
2
  # DO NOT EDIT THIS FILE DIRECTLY
3
3
  # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
4
  # -*- encoding: utf-8 -*-
5
+ # stub: scheduler_daemon 1.1.6 ruby lib
5
6
 
6
7
  Gem::Specification.new do |s|
7
- s.name = "scheduler_daemon"
8
- s.version = "1.1.3"
8
+ s.name = "scheduler_daemon".freeze
9
+ s.version = "1.1.6"
9
10
 
10
- s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
- s.authors = ["Steven Soroka"]
12
- s.date = "2013-03-07"
13
- s.description = "a Rails 2.3, Rails 3, and Ruby compatible scheduler daemon. Replaces cron/rake pattern of periodically running rake tasks to perform maintenance tasks, only loading the environment ONCE."
14
- s.email = "ssoroka78@gmail.com"
15
- s.executables = ["scheduler_daemon"]
11
+ s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
12
+ s.require_paths = ["lib".freeze]
13
+ s.authors = ["Steven Soroka".freeze]
14
+ s.date = "2023-01-29"
15
+ s.description = "a Rails 2.3, Rails 3, and Ruby compatible scheduler daemon. Replaces cron/rake pattern of periodically running rake tasks to perform maintenance tasks, only loading the environment ONCE.".freeze
16
+ s.email = "ssoroka78@gmail.com".freeze
17
+ s.executables = ["scheduler_daemon".freeze]
16
18
  s.extra_rdoc_files = [
17
19
  "README.markdown"
18
20
  ]
@@ -38,54 +40,25 @@ Gem::Specification.new do |s|
38
40
  "lib/scheduler_daemon/rails/generators/scheduler_task/templates/scheduled_tasks/example_task.rb",
39
41
  "lib/scheduler_daemon/rails/railtie.rb",
40
42
  "lib/scheduler_daemon/scheduler_task.rb",
43
+ "scheduler_daemon-1.1.5.gem",
41
44
  "scheduler_daemon.gemspec",
42
45
  "spec/command_line_args_to_hash_spec.rb",
43
46
  "spec/scheduled_tasks/session_cleaner_task_spec.rb",
44
47
  "spec/scheduler_spec.rb",
45
48
  "spec/spec_helper.rb"
46
49
  ]
47
- s.homepage = "http://github.com/ssoroka/scheduler_daemon"
48
- s.require_paths = ["lib"]
49
- s.rubygems_version = "1.8.23"
50
- s.summary = "Rails 3 compatible scheduler daemon. Replaces cron/rake pattern of periodically running rake tasks to perform maintenance tasks in Rails apps. Scheduler Daemon is made specifically for your Rails app, and only loads the environment once, no matter how many tasks run. What's so great about it? Well, I'm glad you asked! - Only loads your Rails environment once on daemon start, not every time a task is run - Allows you to easily deploy the scheduled tasks with your Rails app instead of depending on an administrator to update crontab - It doesn't use rake or cron! - Gets you up and running with your own daemon in under 2 minutes"
50
+ s.homepage = "http://github.com/ssoroka/scheduler_daemon".freeze
51
+ s.rubygems_version = "3.4.5".freeze
52
+ s.summary = "Rails 3 compatible scheduler daemon. Replaces cron/rake pattern of periodically running rake tasks to perform maintenance tasks in Rails apps. Scheduler Daemon is made specifically for your Rails app, and only loads the environment once, no matter how many tasks run. What's so great about it? Well, I'm glad you asked! - Only loads your Rails environment once on daemon start, not every time a task is run - Allows you to easily deploy the scheduled tasks with your Rails app instead of depending on an administrator to update crontab - It doesn't use rake or cron! - Gets you up and running with your own daemon in under 2 minutes".freeze
51
53
 
52
- if s.respond_to? :specification_version then
53
- s.specification_version = 3
54
+ s.specification_version = 4
54
55
 
55
- if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
56
- s.add_runtime_dependency(%q<scheduler_daemon>, [">= 0"])
57
- s.add_runtime_dependency(%q<eventmachine>, [">= 0.12.8"])
58
- s.add_runtime_dependency(%q<daemons>, [">= 1.0.10"])
59
- s.add_runtime_dependency(%q<rufus-scheduler>, [">= 2.0.1"])
60
- s.add_runtime_dependency(%q<chronic>, [">= 0.2.0"])
61
- s.add_runtime_dependency(%q<activesupport>, [">= 0"])
62
- s.add_runtime_dependency(%q<eventmachine>, [">= 0.12.8"])
63
- s.add_runtime_dependency(%q<daemons>, [">= 1.0.10"])
64
- s.add_runtime_dependency(%q<rufus-scheduler>, [">= 2.0.1"])
65
- s.add_runtime_dependency(%q<chronic>, [">= 0.2.0"])
66
- else
67
- s.add_dependency(%q<scheduler_daemon>, [">= 0"])
68
- s.add_dependency(%q<eventmachine>, [">= 0.12.8"])
69
- s.add_dependency(%q<daemons>, [">= 1.0.10"])
70
- s.add_dependency(%q<rufus-scheduler>, [">= 2.0.1"])
71
- s.add_dependency(%q<chronic>, [">= 0.2.0"])
72
- s.add_dependency(%q<activesupport>, [">= 0"])
73
- s.add_dependency(%q<eventmachine>, [">= 0.12.8"])
74
- s.add_dependency(%q<daemons>, [">= 1.0.10"])
75
- s.add_dependency(%q<rufus-scheduler>, [">= 2.0.1"])
76
- s.add_dependency(%q<chronic>, [">= 0.2.0"])
77
- end
78
- else
79
- s.add_dependency(%q<scheduler_daemon>, [">= 0"])
80
- s.add_dependency(%q<eventmachine>, [">= 0.12.8"])
81
- s.add_dependency(%q<daemons>, [">= 1.0.10"])
82
- s.add_dependency(%q<rufus-scheduler>, [">= 2.0.1"])
83
- s.add_dependency(%q<chronic>, [">= 0.2.0"])
84
- s.add_dependency(%q<activesupport>, [">= 0"])
85
- s.add_dependency(%q<eventmachine>, [">= 0.12.8"])
86
- s.add_dependency(%q<daemons>, [">= 1.0.10"])
87
- s.add_dependency(%q<rufus-scheduler>, [">= 2.0.1"])
88
- s.add_dependency(%q<chronic>, [">= 0.2.0"])
89
- end
56
+ s.add_runtime_dependency(%q<scheduler_daemon>.freeze, [">= 0"])
57
+ s.add_development_dependency(%q<rspec>.freeze, ["~> 3.12.0"])
58
+ s.add_runtime_dependency(%q<activesupport>.freeze, [">= 0"])
59
+ s.add_runtime_dependency(%q<eventmachine>.freeze, [">= 0.12.8"])
60
+ s.add_runtime_dependency(%q<daemons>.freeze, [">= 1.0.10"])
61
+ s.add_runtime_dependency(%q<rufus-scheduler>.freeze, ["~> 2.0.24"])
62
+ s.add_runtime_dependency(%q<chronic>.freeze, [">= 0.2.0"])
90
63
  end
91
64
 
@@ -3,24 +3,24 @@ require 'scheduler_daemon/command_line_args_to_hash'
3
3
 
4
4
  describe CommandLineArgsToHash do
5
5
  it 'should process arguments' do
6
- h = CommandLineArgsToHash.parse('--hello')
7
- h['hello'].should == true
6
+ h = CommandLineArgsToHash.parse(['--hello'])
7
+ expect(h['hello']).to eq true
8
8
  end
9
-
9
+
10
10
  it 'should change key names with - to _' do
11
11
  h = CommandLineArgsToHash.parse(['--hi-there'])
12
- h['hi_there'].should == true
12
+ expect(h['hi_there']).to eq true
13
13
  end
14
-
14
+
15
15
  it 'should play nice with array args' do
16
16
  h = CommandLineArgsToHash.parse(['--only=one,two,three'], :array_args => 'only')
17
- h['only'].should == %w(one two three)
17
+ expect(h['only']).to eq %w(one two three)
18
18
  end
19
-
19
+
20
20
  it 'should handle multiple args ok' do
21
21
  h = CommandLineArgsToHash.parse(['--one', '--two=three'])
22
- h['one'].should == true
23
- h['two'].should == 'three'
22
+ expect(h['one']).to eq true
23
+ expect(h['two']).to eq 'three'
24
24
  end
25
-
26
- end
25
+
26
+ end
@@ -9,12 +9,12 @@ require 'scheduler_daemon/rails/generators/scheduler/templates/lib/scheduled_tas
9
9
  describe SessionCleanerTask do
10
10
  before(:each) do
11
11
  @task = SessionCleanerTask.new
12
- @task.stub!(:log)
12
+ # expect(@task).to receive(:log)
13
13
  end
14
14
 
15
15
  it "should remove old sessions" do
16
16
  # this test only matters if we're using AR's session store.
17
- if defined?(ActionController) && defined?(ActiveRecord) &&
17
+ if defined?(ActionController) && defined?(ActiveRecord) &&
18
18
  ActionController::Base.session_store == ActiveRecord::SessionStore
19
19
 
20
20
  # insert old session
@@ -25,11 +25,12 @@ describe SessionCleanerTask do
25
25
  ActiveRecord::Base.connection.select_one(%(select count(*) as count from #{@task.session_table_name}))['count'].to_i
26
26
  }
27
27
 
28
- lambda {
28
+ expect(lambda {
29
29
  @task.run
30
- }.should change(get_session_count, :call).by_at_most(-1)
30
+ }).to change(get_session_count, :call).by_at_most(-1)
31
31
  else
32
32
  pending 'skipping SessionCleanerTask test since it depends on rails and ActiveRecord::SessionStore; try copying this spec to your rails application.'
33
+ raise 'skipping'
33
34
  end
34
35
  end
35
- end
36
+ end
@@ -4,18 +4,18 @@ require 'scheduler_daemon/base'
4
4
  describe Scheduler::Base do
5
5
  before(:each) do
6
6
  @scheduler = Scheduler::Base.new(:skip_init => true, :silent => true)
7
- @scheduler.stub!(:log)
7
+ # @scheduler.stub(:log)
8
8
  end
9
9
 
10
10
  describe 'decide_what_to_run' do
11
11
  it "should support --only" do
12
12
  @scheduler = Scheduler::Base.new({:skip_init => true, :silent => true}, ['--only=alphabets'])
13
- @scheduler.options['only'].should == ['alphabets']
13
+ expect(@scheduler.options['only']).to eq ['alphabets']
14
14
  end
15
15
 
16
16
  it "should support --except" do
17
17
  @scheduler = Scheduler::Base.new({:skip_init => true, :silent => true}, ['--except=balloons,monkeys'])
18
- @scheduler.options['except'].should == ['balloons', 'monkeys']
18
+ expect(@scheduler.options['except']).to eq ['balloons', 'monkeys']
19
19
  end
20
20
  end
21
- end
21
+ end
metadata CHANGED
@@ -1,174 +1,111 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: scheduler_daemon
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.3
5
- prerelease:
4
+ version: 1.1.6
6
5
  platform: ruby
7
6
  authors:
8
7
  - Steven Soroka
9
- autorequire:
8
+ autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-03-07 00:00:00.000000000 Z
11
+ date: 2023-01-29 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: scheduler_daemon
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
- - - ! '>='
17
+ - - ">="
20
18
  - !ruby/object:Gem::Version
21
19
  version: '0'
22
20
  type: :runtime
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
- - - ! '>='
24
+ - - ">="
28
25
  - !ruby/object:Gem::Version
29
26
  version: '0'
30
27
  - !ruby/object:Gem::Dependency
31
- name: eventmachine
32
- requirement: !ruby/object:Gem::Requirement
33
- none: false
34
- requirements:
35
- - - ! '>='
36
- - !ruby/object:Gem::Version
37
- version: 0.12.8
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.12.8
46
- - !ruby/object:Gem::Dependency
47
- name: daemons
48
- requirement: !ruby/object:Gem::Requirement
49
- none: false
50
- requirements:
51
- - - ! '>='
52
- - !ruby/object:Gem::Version
53
- version: 1.0.10
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: 1.0.10
62
- - !ruby/object:Gem::Dependency
63
- name: rufus-scheduler
28
+ name: rspec
64
29
  requirement: !ruby/object:Gem::Requirement
65
- none: false
66
30
  requirements:
67
- - - ! '>='
31
+ - - "~>"
68
32
  - !ruby/object:Gem::Version
69
- version: 2.0.1
70
- type: :runtime
33
+ version: 3.12.0
34
+ type: :development
71
35
  prerelease: false
72
36
  version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
37
  requirements:
75
- - - ! '>='
38
+ - - "~>"
76
39
  - !ruby/object:Gem::Version
77
- version: 2.0.1
78
- - !ruby/object:Gem::Dependency
79
- name: chronic
80
- requirement: !ruby/object:Gem::Requirement
81
- none: false
82
- requirements:
83
- - - ! '>='
84
- - !ruby/object:Gem::Version
85
- version: 0.2.0
86
- type: :runtime
87
- prerelease: false
88
- version_requirements: !ruby/object:Gem::Requirement
89
- none: false
90
- requirements:
91
- - - ! '>='
92
- - !ruby/object:Gem::Version
93
- version: 0.2.0
40
+ version: 3.12.0
94
41
  - !ruby/object:Gem::Dependency
95
42
  name: activesupport
96
43
  requirement: !ruby/object:Gem::Requirement
97
- none: false
98
44
  requirements:
99
- - - ! '>='
45
+ - - ">="
100
46
  - !ruby/object:Gem::Version
101
47
  version: '0'
102
48
  type: :runtime
103
49
  prerelease: false
104
50
  version_requirements: !ruby/object:Gem::Requirement
105
- none: false
106
51
  requirements:
107
- - - ! '>='
52
+ - - ">="
108
53
  - !ruby/object:Gem::Version
109
54
  version: '0'
110
55
  - !ruby/object:Gem::Dependency
111
56
  name: eventmachine
112
57
  requirement: !ruby/object:Gem::Requirement
113
- none: false
114
58
  requirements:
115
- - - ! '>='
59
+ - - ">="
116
60
  - !ruby/object:Gem::Version
117
61
  version: 0.12.8
118
62
  type: :runtime
119
63
  prerelease: false
120
64
  version_requirements: !ruby/object:Gem::Requirement
121
- none: false
122
65
  requirements:
123
- - - ! '>='
66
+ - - ">="
124
67
  - !ruby/object:Gem::Version
125
68
  version: 0.12.8
126
69
  - !ruby/object:Gem::Dependency
127
70
  name: daemons
128
71
  requirement: !ruby/object:Gem::Requirement
129
- none: false
130
72
  requirements:
131
- - - ! '>='
73
+ - - ">="
132
74
  - !ruby/object:Gem::Version
133
75
  version: 1.0.10
134
76
  type: :runtime
135
77
  prerelease: false
136
78
  version_requirements: !ruby/object:Gem::Requirement
137
- none: false
138
79
  requirements:
139
- - - ! '>='
80
+ - - ">="
140
81
  - !ruby/object:Gem::Version
141
82
  version: 1.0.10
142
83
  - !ruby/object:Gem::Dependency
143
84
  name: rufus-scheduler
144
85
  requirement: !ruby/object:Gem::Requirement
145
- none: false
146
86
  requirements:
147
- - - ! '>='
87
+ - - "~>"
148
88
  - !ruby/object:Gem::Version
149
- version: 2.0.1
89
+ version: 2.0.24
150
90
  type: :runtime
151
91
  prerelease: false
152
92
  version_requirements: !ruby/object:Gem::Requirement
153
- none: false
154
93
  requirements:
155
- - - ! '>='
94
+ - - "~>"
156
95
  - !ruby/object:Gem::Version
157
- version: 2.0.1
96
+ version: 2.0.24
158
97
  - !ruby/object:Gem::Dependency
159
98
  name: chronic
160
99
  requirement: !ruby/object:Gem::Requirement
161
- none: false
162
100
  requirements:
163
- - - ! '>='
101
+ - - ">="
164
102
  - !ruby/object:Gem::Version
165
103
  version: 0.2.0
166
104
  type: :runtime
167
105
  prerelease: false
168
106
  version_requirements: !ruby/object:Gem::Requirement
169
- none: false
170
107
  requirements:
171
- - - ! '>='
108
+ - - ">="
172
109
  - !ruby/object:Gem::Version
173
110
  version: 0.2.0
174
111
  description: a Rails 2.3, Rails 3, and Ruby compatible scheduler daemon. Replaces
@@ -202,6 +139,7 @@ files:
202
139
  - lib/scheduler_daemon/rails/generators/scheduler_task/templates/scheduled_tasks/example_task.rb
203
140
  - lib/scheduler_daemon/rails/railtie.rb
204
141
  - lib/scheduler_daemon/scheduler_task.rb
142
+ - scheduler_daemon-1.1.5.gem
205
143
  - scheduler_daemon.gemspec
206
144
  - spec/command_line_args_to_hash_spec.rb
207
145
  - spec/scheduled_tasks/session_cleaner_task_spec.rb
@@ -209,30 +147,28 @@ files:
209
147
  - spec/spec_helper.rb
210
148
  homepage: http://github.com/ssoroka/scheduler_daemon
211
149
  licenses: []
212
- post_install_message:
150
+ metadata: {}
151
+ post_install_message:
213
152
  rdoc_options: []
214
153
  require_paths:
215
154
  - lib
216
155
  required_ruby_version: !ruby/object:Gem::Requirement
217
- none: false
218
156
  requirements:
219
- - - ! '>='
157
+ - - ">="
220
158
  - !ruby/object:Gem::Version
221
159
  version: '0'
222
160
  required_rubygems_version: !ruby/object:Gem::Requirement
223
- none: false
224
161
  requirements:
225
- - - ! '>='
162
+ - - ">="
226
163
  - !ruby/object:Gem::Version
227
164
  version: '0'
228
165
  requirements: []
229
- rubyforge_project:
230
- rubygems_version: 1.8.23
231
- signing_key:
232
- specification_version: 3
166
+ rubygems_version: 3.4.5
167
+ signing_key:
168
+ specification_version: 4
233
169
  summary: Rails 3 compatible scheduler daemon. Replaces cron/rake pattern of periodically
234
- running rake tasks to perform maintenance tasks in Rails apps. Scheduler Daemon
235
- is made specifically for your Rails app, and only loads the environment once, no
170
+ running rake tasks to perform maintenance tasks in Rails apps. Scheduler Daemon
171
+ is made specifically for your Rails app, and only loads the environment once, no
236
172
  matter how many tasks run. What's so great about it? Well, I'm glad you asked! -
237
173
  Only loads your Rails environment once on daemon start, not every time a task is
238
174
  run - Allows you to easily deploy the scheduled tasks with your Rails app instead