queue_dispatcher 1.5.1 → 2.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- Yzc0ZDM1ZDgzMzcwYjE4OTkyZDc1ZjU4N2VhNjc1NWI5ODk2MTFiZA==
4
+ MzhlMmZkNGQ0MDkxOTY5ZWViMzRlNWQ3YWVjMjY0ZWI0NGZmMDRhOQ==
5
5
  data.tar.gz: !binary |-
6
- NDZkODM3YTg3NTg1YjM4NDM2YzM2NDVjOGViZTc1MDFmYTU4NGUyNA==
6
+ MWUzNmNhMmQ4OTgzNzJkODBkNTA4MzkyZmNiZTgzYmEyMzE1YTg3Nw==
7
7
  !binary "U0hBNTEy":
8
8
  metadata.gz: !binary |-
9
- ODhlY2E5NTcyOTk3YTRmZTY2NDcwNTZjNDkxMjkyYmZiNTJkMWE3Njk4MGIw
10
- MGIwY2U3YzdiNzE3ZmIwNDMyZGRjMTBlNmJjZGM3YWIwMzQyMWUzZTVlYWJh
11
- ZmFjYjIxMTkwMjQwNzAzOTQzYzZiZDIyMjRhMjBjZjcwOTQ2YmU=
9
+ OGE1Y2QwOTBmNWNkNjYwZGU2ZTZjNWYxZTNmZDJiMmE2YjJkYmNmZmQxMDJk
10
+ ODEwM2UwNzIwYzAxMjBiM2VlZTFkOWZjYjY3N2RlZWExM2U1YmFiZjYyMGU4
11
+ YWRhZDFhNjNiZWYyMTFmZWViYTJjN2NlY2Y5ZGY4ODFhY2NkNDI=
12
12
  data.tar.gz: !binary |-
13
- MWRiMTkwODU5YTNmY2Y1ZjFmYjJiMzZiNGYyOGQxYWVmYjM5Yzg2NGNhYjA4
14
- ZGEwMTg5MTc3YmQ5MTUxMjM4NjhjNGMxOTgwMWQxMjY2YmFkNzFiNzMzZmRj
15
- Y2VkZjVlZTA1ZWUzYThkYzhhZTg1ZDZiNmI3MTQ3Y2UzMzE0YzA=
13
+ OGRlMDlhMWE1YzZjYTBkMGI2OWIyMWM3NTliMGE4MDE3NTk3ZGY4YmEzMjBi
14
+ NmUyZGI0ZjNjNGI5MmJjYzRhOGQ2NmE3ODIzODRjNjJlYzEwOTUxODAxNTc3
15
+ YmFjZmRlMDY3MDE3N2FhZTFkMTk5NDYxY2YxOTM0YWFjYzVlODE=
data/README.rdoc CHANGED
@@ -23,6 +23,13 @@ Use
23
23
 
24
24
  This will create a database migration for the models Task and TaskQueues.
25
25
 
26
+ If you update the queue_dispatcher from pre 1.5.1 you have to use the following command to update your migrations:
27
+
28
+ Use
29
+ rails g queue_dispatcher:migration --skip
30
+
31
+ This will create all new database migrations for the models Task and TaskQueues and leve the existing as they are.
32
+
26
33
  === Gem Dependencies
27
34
 
28
35
  Please check if all those requirements are satisfied on your environment.
@@ -24,7 +24,7 @@ module QueueDispatcher
24
24
 
25
25
  @acts_as_task_config = QueueDispatcher::ActsAsTask::Config.new(args[:task_queue_model] || :task_queue)
26
26
 
27
- belongs_to acts_as_task_config.task_queue_class_name
27
+ belongs_to acts_as_task_config.task_queue_class_name.to_sym
28
28
  has_many :task_dependencies, :dependent => :destroy, :foreign_key => :task_id
29
29
  has_many :dependent_tasks, :through => :task_dependencies
30
30
  has_many :inverse_task_dependencies, :class_name => 'TaskDependency', :foreign_key => 'dependent_task_id', :dependent => :destroy
@@ -1,6 +1,5 @@
1
1
  require 'sys/proctable'
2
2
  require 'queue_dispatcher/rc_and_msg'
3
- require 'spawn'
4
3
 
5
4
  module QueueDispatcher
6
5
  module ActsAsTaskQueue
@@ -33,7 +32,6 @@ module QueueDispatcher
33
32
 
34
33
  module ClassMethods
35
34
  def acts_as_task_queue(args = {})
36
- include Spawn
37
35
  include ActionView::Helpers::UrlHelper
38
36
  include QdLogger
39
37
 
@@ -42,7 +40,7 @@ module QueueDispatcher
42
40
 
43
41
  @acts_as_task_queue_config = QueueDispatcher::ActsAsTaskQueue::Config.new(args)
44
42
 
45
- has_many acts_as_task_queue_config.task_class_name.pluralize, :order => [:priority, :id]
43
+ has_many acts_as_task_queue_config.task_class_name.pluralize.to_sym, -> { order(:priority, :id) }
46
44
  serialize :interrupts, Array
47
45
  end
48
46
  end
@@ -127,7 +125,7 @@ module QueueDispatcher
127
125
  # Find next pending task, where all dependent tasks are executed
128
126
  all_tasks = acts_as_task_queue_tasks.lock(true).all
129
127
  pos = 0
130
- while task.nil? && pos < all_tasks.count do
128
+ while task.nil? && pos < all_tasks.to_a.count do
131
129
  t = all_tasks[pos]
132
130
  if t.dependent_tasks_executed?
133
131
  task = t if t.state == 'new'
@@ -485,7 +483,7 @@ module QueueDispatcher
485
483
  # Interrupt handler
486
484
  def handle_interrupts(args = {})
487
485
  interrupts.each { |int| send int.to_sym }
488
- update_attributes interrupts: []
486
+ update_attributes :interrupts => []
489
487
  rescue => exception
490
488
  backtrace = exception.backtrace.join("\n ")
491
489
  log :msg => "Fatal error in method 'handle_interrupts': #{$!}\n #{backtrace}", :sev => :error, :print_log => args[:print_log]
@@ -1,7 +1,5 @@
1
- require 'active_support/basic_object'
2
-
3
1
  module QueueDispatcher
4
- class QueueDispatcherProxy < ActiveSupport::BasicObject
2
+ class QueueDispatcherProxy < ActiveSupport::ProxyObject
5
3
  def initialize(target, options = {})
6
4
  @target = target
7
5
  @options = options
@@ -88,7 +88,7 @@ module Psych
88
88
  payload = Hash[*object.children.map { |c| accept c }]
89
89
  id = payload["attributes"][klass.primary_key]
90
90
  begin
91
- if ActiveRecord::VERSION::MAJOR == 3
91
+ if ActiveRecord::VERSION::MAJOR >= 3
92
92
  klass.unscoped.find(id)
93
93
  else # Rails 2
94
94
  klass.with_exclusive_scope { klass.find(id) }
@@ -1,3 +1,3 @@
1
1
  module QueueDispatcher
2
- VERSION = "1.5.1"
2
+ VERSION = "2.1.0"
3
3
  end
@@ -12,12 +12,12 @@ Gem::Specification.new do |s|
12
12
  s.summary = %q{This Gem installs a queue dispatcher for handling asynchronous tasks}
13
13
  s.description = %q{Queue_Dispatcher executes asynchronous tasks in the background.}
14
14
 
15
- s.add_dependency "sys-proctable", '>= 0.9.1'
16
- s.add_dependency "deadlock_retry"
17
- s.add_dependency "spawn", '>= 1.0.0'
18
- s.add_dependency "haml"
19
- s.add_dependency "will_paginate"
20
- s.add_dependency "jquery-rails"
15
+ s.add_dependency 'sys-proctable', '>= 0.9.1'
16
+ s.add_dependency 'deadlock_retry'
17
+ s.add_dependency 'spawnling'
18
+ s.add_dependency 'haml'
19
+ s.add_dependency 'will_paginate'
20
+ s.add_dependency 'jquery-rails'
21
21
 
22
22
  s.files = `git ls-files`.split("\n")
23
23
  s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
@@ -1,16 +1,15 @@
1
1
  #!/usr/bin/env ruby
2
2
  # BEGIN - rails runner… with a relative path
3
- DAEMON_ARGV = ARGV.clone
4
- ARGV.clear
5
- ARGV << 'runner'
6
- ARGV << '/dev/null'
7
- $: << File.dirname(__FILE__)
8
- load 'rails'
3
+ APP_PATH = File.expand_path('../../config/application', __FILE__)
4
+ require File.expand_path('../../config/boot', __FILE__)
5
+ require APP_PATH
6
+ # set Rails.env here if desired
7
+ Rails.application.require_environment!
9
8
  # END - rails runner… with a relative path
10
9
 
11
10
  require 'sys/proctable'
11
+ require 'spawnling'
12
12
  include Sys
13
- include Spawn
14
13
  include IwLogger
15
14
 
16
15
 
@@ -107,8 +106,10 @@ end
107
106
  # Install signal handler for worker
108
107
  def worker_install_signal_handler
109
108
  install_signal_handler(['TERM'], :trap_msg => "Caught trap signal. Shutdown...", :ignore_signals => ['HUP', 'INT']) do
110
- # Shutdown task_queue
111
- $worker[:task_queue].update_attributes :state => 'shutdown' if $worker[:task_queue]
109
+ # Shutdown task_queue. Because of Ruby 2.0, we have to do this in a Thread to prevent "can't be called from trap context"-errors!
110
+ Thread.new do
111
+ $worker[:task_queue].update_attributes state: 'shutdown' if $worker[:task_queue]
112
+ end
112
113
  $worker[:work] = false
113
114
  end
114
115
  end
@@ -145,7 +146,7 @@ def daemon_start
145
146
 
146
147
  daemon_log :msg => "Starting process..."
147
148
  if $daemon[:background]
148
- spawn_block { daemon_runner }
149
+ Spawnling.new { daemon_runner }
149
150
  else
150
151
  daemon_runner
151
152
  end
@@ -159,7 +160,7 @@ def spawn_and_monitor_workers
159
160
  while $daemon[:work]
160
161
  # (Re)start workers
161
162
  while $daemon[:worker_pids].count < $daemon[:worker_count] do
162
- sp = spawn_block(:argv => $worker[:process_prefix]) do
163
+ sp = Spawnling.new(:argv => $worker[:process_prefix]) do
163
164
  worker_runner
164
165
  end
165
166
  $daemon[:worker_pids] << sp.handle
@@ -231,8 +232,8 @@ end
231
232
  def daemon_parse_opts
232
233
  start = true
233
234
 
234
- unless DAEMON_ARGV.length == 0
235
- case DAEMON_ARGV[0]
235
+ unless ARGV.length == 0
236
+ case ARGV[0]
236
237
  when '-b', '--background'
237
238
  $daemon[:background] = true;
238
239
 
@@ -245,7 +246,7 @@ def daemon_parse_opts
245
246
  start = false
246
247
 
247
248
  else
248
- puts "Invalid argument: #{DAEMON_ARGV[0]}" if !DAEMON_ARGV[0].nil?
249
+ puts "Invalid argument: #{ARGV[0]}" if !ARGV[0].nil?
249
250
  daemon_show_usage
250
251
  start = false
251
252
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: queue_dispatcher
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.5.1
4
+ version: 2.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Philip Kurmann
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-06-30 00:00:00.000000000 Z
11
+ date: 2014-12-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: sys-proctable
@@ -39,19 +39,19 @@ dependencies:
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
- name: spawn
42
+ name: spawnling
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - ! '>='
46
46
  - !ruby/object:Gem::Version
47
- version: 1.0.0
47
+ version: '0'
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - ! '>='
53
53
  - !ruby/object:Gem::Version
54
- version: 1.0.0
54
+ version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: haml
57
57
  requirement: !ruby/object:Gem::Requirement