delayed_job_progress 0.0.1 → 0.0.2

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e03469840f266c87523e59b5c4232263b804b3b9
4
- data.tar.gz: ba20030273160732952acb77144983b63dee21b2
3
+ metadata.gz: d1fcb2f6b8acf92411aae4dea3bba0ba00726f11
4
+ data.tar.gz: f56629937708111fd74b7056ccc6a6778091d1e4
5
5
  SHA512:
6
- metadata.gz: 7e1b6d70e4f6e11c4d05cf2883c2433b9e5254843c72ae49bd6877d3eaed719504a8956e6e9990cd0cb02957359861ec0efa2a25dc9ed79c970308d424cbd903
7
- data.tar.gz: f54c79cf7c973d2678e9c386c6696b814c6a64204e4b19eb2ec98f6031c79fe6d3f76c5fa137c6c2be2f0dccc353c8e97ab395ae91670bbf2696098a787621c8
6
+ metadata.gz: 72b68f66f84482fa967052cfa3de777db1b22d5429c9a93bf73d5a7c5302013d8ac5759b8633770b48058d848d0afb32fcc21702fa6eb2d54ca91f731446e078
7
+ data.tar.gz: 55cec2cf7c63aeee0dd2f8f78951f85b05b8def2c75be84211849a6053a9d9466c5526faf7a1ecac5b1172febd9e0ad55e766686517d031ec783cc40a47aa9f4
data/.gitignore CHANGED
@@ -6,4 +6,5 @@ test/dummy/db/*.sqlite3-journal
6
6
  test/dummy/log/*.log
7
7
  test/dummy/tmp/
8
8
  test/dummy/.sass-cache
9
- tmp/
9
+ tmp/
10
+ Gemfile.lock
data/Gemfile CHANGED
@@ -1,15 +1,3 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
- # Declare your gem's dependencies in delayed_job_progress.gemspec.
4
- # Bundler will treat runtime dependencies like base dependencies, and
5
- # development dependencies will be added by default to the :development group.
6
3
  gemspec
7
-
8
- # Declare any dependencies that are still in development here instead of in
9
- # your gemspec. These might include edge Rails or gems from your path or
10
- # Git. Remember to move these dependencies to your gemspec before releasing
11
- # your gem to rubygems.org.
12
-
13
- # To use a debugger
14
- # gem 'byebug', group: [:development, :test]
15
-
@@ -1,4 +1,4 @@
1
- Copyright 2015 Oleg
1
+ Copyright 2015 Oleg Khabarov
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining
4
4
  a copy of this software and associated documentation files (the
data/README.md CHANGED
@@ -1,7 +1,7 @@
1
1
  # DelayedJobProgress
2
2
  [![Gem Version](https://img.shields.io/gem/v/delayed_job_progress.svg?style=flat)](http://rubygems.org/gems/delayed_job_progress) [![Gem Downloads](https://img.shields.io/gem/dt/delayed_job_progress.svg?style=flat)](http://rubygems.org/gems/delayed_job_progress) [![Build Status](https://img.shields.io/travis/GBH/delayed_job_progress.svg?style=flat)](https://travis-ci.org/GBH/delayed_job_progress)
3
3
 
4
- Extension for `Delayed::Job` that allows better tracking of jobs!
4
+ Extension for [Delayed::Job](https://github.com/collectiveidea/delayed_job) that allows better tracking of jobs!
5
5
 
6
6
  ## Setup
7
7
 
@@ -17,7 +17,7 @@ Consider this:
17
17
  ```ruby
18
18
  class User < ActiveRecord::Base
19
19
  # convenient relationship to grab associated jobs
20
- has_many :jobs, :as => :record, :class_name => 'DelayedJob'
20
+ has_many :jobs, :as => :record, :class_name => 'Delayed::Job'
21
21
  end
22
22
  ```
23
23
 
@@ -43,12 +43,12 @@ class CustomUserJob < Struct.new(:user_id)
43
43
  end
44
44
 
45
45
  def perform
46
- @job.update_column(:progress_state, 'working')
46
+ @job.update_column(:message, 'working')
47
47
  (0..100).each do |i|
48
48
  @user.do_a_thing(i)
49
49
  @job.update_column(:progress_current, i)
50
50
  end
51
- @job.update_column(:progress_state, 'complete')
51
+ @job.update_column(:message, 'complete')
52
52
  end
53
53
  end
54
54
 
@@ -68,10 +68,14 @@ That job knows about object that spawned it:
68
68
  ```
69
69
 
70
70
  `Delayed::Job` records now have new attributes:
71
- * `progress_max` - default is `100`. You can change it to whatever during `enqueue`.
72
- * `progress_current` - default is `0`. You can manually increment it while job is running. Will be set to `process_max` when job completes.
73
- * `progress_state` - default is `nil`. Optional informational string.
74
- * `completed_at` - when job is done this timestamp is recorded.
71
+ ```
72
+ `progress_max` - default is `100`. You can change it to whatever during `enqueue`.
73
+ `progress_current` - default is `0`. You can manually increment it while job is running. Will be set to `process_max` when job completes.
74
+ `message` - default is `nil`. Optional informational string.
75
+ `error_message` - error message without backtrace. Also useful to set your own message.
76
+ `completed_at` - when job is done this timestamp is recorded.
77
+ `identifier` - you can assign something during `enqueue` so you can fetch that job later for display.
78
+ ```
75
79
 
76
80
  This extension also introduces worker setting that keeps completed jobs around. This way you can keep list of completed jobs for a while. If you want to remove them, you need to `.destroy(:force)` them.
77
81
  ```
@@ -80,8 +84,9 @@ Delayed::Worker.destroy_completed_jobs = false
80
84
 
81
85
  ## Jobs Controller
82
86
 
83
- - `GET /jobs` - List all jobs. Can filter based on associated record via `record_type` and `record_id` parameters. `identifier` parameter can be used as well
84
- - `GET /jobs/<id>` - Status of a job. Will see all the Delayed::Job attributes including things like progress
85
- - `DELETE /jobs/<id>` - If job is stuck/failed, we can remove it
86
- - `POST /jobs/<id>/reload` - Restart failed job
87
-
87
+ ```
88
+ GET /jobs - List all jobs. Can filter based on associated record via `record_type` and `record_id` parameters. `identifier` parameter can be used as well
89
+ GET /jobs/<id> - Status of a job. Will see all the Delayed::Job attributes including things like progress
90
+ DELETE /jobs/<id>` - If job is stuck/failed, we can remove it
91
+ POST /jobs/<id>/reload` - Restart failed job
92
+ ```
@@ -1,22 +1,22 @@
1
1
  module DelayedJobProgress
2
2
  class JobsController < ActionController::Base
3
3
 
4
- before_action :load_job, :only => [:show, :destroy, :reload]
4
+ before_action :load_job, only: [:show, :destroy, :reload]
5
5
 
6
6
  def index
7
7
  jobs = Delayed::Job
8
8
  if params[:record_type].present? && params[:record_id].present?
9
- jobs = jobs.where(:record_type => params[:record_type], :record_id => params[:record_id])
9
+ jobs = jobs.where(record_type: params[:record_type], record_id: params[:record_id])
10
10
  end
11
11
  if params[:identifier].present?
12
- jobs = jobs.where(:identifier => params[:identifier])
12
+ jobs = jobs.where(identifier: params[:identifier])
13
13
  end
14
14
 
15
- render :json => jobs.all
15
+ render json: jobs.all, methods: :status
16
16
  end
17
17
 
18
18
  def show
19
- render :json => @job
19
+ render json: @job, methods: :status
20
20
  end
21
21
 
22
22
  def destroy
@@ -26,15 +26,15 @@ module DelayedJobProgress
26
26
 
27
27
  def reload
28
28
  @job.update_columns(
29
- :run_at => Time.now,
30
- :failed_at => nil,
31
- :completed_at => nil,
32
- :locked_by => nil,
33
- :locked_at => nil,
34
- :last_error => nil,
35
- :attempts => 0
29
+ run_at: Time.now,
30
+ failed_at: nil,
31
+ completed_at: nil,
32
+ locked_by: nil,
33
+ locked_at: nil,
34
+ last_error: nil,
35
+ attempts: 0
36
36
  )
37
- render :json => @job
37
+ render json: @job
38
38
  end
39
39
 
40
40
  protected
@@ -42,7 +42,7 @@ module DelayedJobProgress
42
42
  def load_job
43
43
  @job = Delayed::Job.find(params[:id])
44
44
  rescue ActiveRecord::RecordNotFound
45
- render :json => {:error => 'Job not found'}, :status => :not_found
45
+ render json: {error: 'Job not found'}, status: :not_found
46
46
  end
47
47
 
48
48
  end
@@ -1,6 +1,5 @@
1
1
  require_relative 'delayed_job_progress/version'
2
2
  require_relative 'delayed_job_progress/engine'
3
- require_relative 'delayed_job_progress/error'
4
3
 
5
4
  module DelayedJobProgress
6
5
 
@@ -8,6 +8,10 @@ module DelayedJobProgress
8
8
  config.to_prepare do
9
9
  require_relative 'extensions/job'
10
10
  require_relative 'extensions/worker'
11
+
12
+ Dir.glob(Rails.root + "app/decorators/**/*_decorator*.rb").each do |c|
13
+ require_dependency(c)
14
+ end
11
15
  end
12
16
  end
13
17
  end
@@ -1,16 +1,31 @@
1
1
  Delayed::Backend::ActiveRecord::Job.class_eval do
2
2
 
3
- belongs_to :record, :polymorphic => true
3
+ belongs_to :record, polymorphic: true
4
+
5
+ # Overriding default scope so we don't select already completed jobs
6
+ def self.ready_to_run(worker_name, max_run_time)
7
+ where_sql = <<-SQL.strip_heredoc
8
+ (run_at <= ? AND (locked_at IS NULL OR locked_at < ?) OR locked_by = ?)
9
+ AND failed_at IS NULL
10
+ AND completed_at IS NULL
11
+ SQL
12
+ where(where_sql, db_time_now, db_time_now - max_run_time, worker_name)
13
+ end
14
+
15
+ # Helper method to easily grab state of the job
16
+ def status
17
+ failed_at.present?? :failed :
18
+ completed_at.present?? :completed :
19
+ locked_at.present?? :processing : :queued
20
+ end
4
21
 
5
22
  # When enqueue hook is executed, we need to look if there's an identifier provided
6
23
  # If there's another Delayed::Job out there with same identifier we need to bail
7
24
  def hook(name, *args)
8
25
  super
9
26
 
10
- if name == :enqueue && self.identifier.present?
11
- if Delayed::Job.where(:identifier => self.identifier, :completed_at => nil, :failed_at => nil).any?
12
- raise DelayedJobProgress::DuplicateJobError, "Delayed::Job with identifier: #{self.identifier} already present"
13
- end
27
+ if name == :enqueue
28
+ self.handler_class = payload_object.class.to_s
14
29
  end
15
30
  end
16
31
 
@@ -23,6 +38,17 @@ Delayed::Backend::ActiveRecord::Job.class_eval do
23
38
  super
24
39
  end
25
40
 
41
+ # Introducing `error_message` attribute that excludes backtrace, also able to be manually set it before
42
+ # job errors out.
43
+ def error=(error)
44
+ @error = error
45
+
46
+ if self.respond_to?(:last_error=)
47
+ self.error_message ||= error.message
48
+ self.last_error = "#{error.message}\n#{error.backtrace.join("\n")}"
49
+ end
50
+ end
51
+
26
52
  def destroy_completed_jobs?
27
53
  payload_object.respond_to?(:destroy_completed_jobs?) ?
28
54
  payload_object.destroy_completed_jobs? :
@@ -34,8 +60,10 @@ Delayed::Backend::ActiveRecord::Job.class_eval do
34
60
  super()
35
61
  else
36
62
  update_columns(
37
- :completed_at => Time.zone.now,
38
- :progress_current => self.progress_max
63
+ completed_at: Time.zone.now,
64
+ progress_current: self.progress_max,
65
+ locked_at: nil,
66
+ locked_by: nil
39
67
  )
40
68
  end
41
69
  end
@@ -1,3 +1,3 @@
1
1
  module DelayedJobProgress
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
@@ -0,0 +1,22 @@
1
+ class AddProgressToDelayedJobs < ActiveRecord::Migration
2
+
3
+ def change
4
+ change_table :delayed_jobs do |t|
5
+ t.string :identifier
6
+ t.string :record_type
7
+ t.integer :record_id
8
+ t.string :handler_class
9
+ t.integer :progress_current, null: false, default: 0
10
+ t.integer :progress_max, null: false, default: 100
11
+ t.string :message
12
+ t.string :error_message
13
+ t.datetime :completed_at
14
+ end
15
+
16
+ add_index :delayed_jobs, :identifier
17
+ add_index :delayed_jobs, [:record_type, :record_id]
18
+ add_index :delayed_jobs, :handler_class
19
+ add_index :delayed_jobs, :completed_at
20
+ end
21
+
22
+ end
@@ -7,7 +7,7 @@ class JobTest < ActiveSupport::TestCase
7
7
  end
8
8
 
9
9
  def test_job_default
10
- thing = Thing.create(:name => 'test')
10
+ thing = Thing.create(name: 'test')
11
11
  thing.delay.something
12
12
 
13
13
  job = Delayed::Job.last
@@ -19,7 +19,7 @@ class JobTest < ActiveSupport::TestCase
19
19
  end
20
20
 
21
21
  def test_job_custom
22
- thing = Thing.create(:name => 'test')
22
+ thing = Thing.create(name: 'test')
23
23
  job = Delayed::Job.enqueue(TestJob.new(thing.id))
24
24
 
25
25
  assert_equal thing, job.record
@@ -27,48 +27,77 @@ class JobTest < ActiveSupport::TestCase
27
27
  assert_equal 1000, job.progress_max
28
28
  assert_equal 'unique_identifier', job.identifier
29
29
  assert_equal 'reports', job.queue
30
+ assert_equal 'TestJob', job.handler_class
30
31
  end
31
32
 
32
- def test_job_enqueue_with_existing_identifier
33
- thing = Thing.create(:name => 'test')
34
- Delayed::Job.enqueue(TestJob.new(thing.id))
33
+ def test_job_destroy
34
+ thing = Thing.create(name: 'test')
35
+ job = Delayed::Job.enqueue(TestJob.new(thing.id))
35
36
 
36
- # should not be able to queue a job that already exists
37
- # in this case we're trying to enqueue a job with `unique_identifier` again
38
- assert_exception DelayedJobProgress::DuplicateJobError do
39
- Delayed::Job.enqueue(TestJob.new(thing.id))
37
+ assert job.completed_at.blank?
38
+ assert_no_difference 'Delayed::Job.count' do
39
+ job.destroy
40
+ assert job.completed_at.present?
41
+ end
42
+
43
+ assert_difference 'Delayed::Job.count', -1 do
44
+ job.destroy(:force)
40
45
  end
41
46
  end
42
47
 
43
- def test_job_enqueue_with_existing_identifier_and_completed
44
- thing = Thing.create(:name => 'test')
48
+ def test_job_reserve_completed
49
+ thing = Thing.create(name: 'test')
50
+ worker = Delayed::Worker.new
45
51
  job = Delayed::Job.enqueue(TestJob.new(thing.id))
46
- job.update_column(:completed_at, Time.now)
47
52
 
48
- Delayed::Job.enqueue(TestJob.new(thing.id))
53
+ # marking it as complete
54
+ job.update_column(:completed_at, Time.now)
55
+ Delayed::Job.reserve(worker)
56
+ job.reload
57
+ assert job.locked_at.nil?
58
+ assert job.locked_by.nil?
59
+
60
+ # and here's the default
61
+ job.update_column(:completed_at, nil)
62
+ Delayed::Job.reserve(worker)
63
+ job.reload
64
+ refute job.locked_at.nil?
65
+ refute job.locked_by.nil?
49
66
  end
50
67
 
51
- def test_job_enqueue_with_existing_identifier_and_failed
52
- thing = Thing.create(:name => 'test')
68
+ def test_job_status
69
+ thing = Thing.create(name: 'test')
53
70
  job = Delayed::Job.enqueue(TestJob.new(thing.id))
54
- job.update_column(:failed_at, Time.now)
55
71
 
56
- Delayed::Job.enqueue(TestJob.new(thing.id))
57
- end
72
+ assert_equal :queued, job.status
58
73
 
59
- def test_job_destroy
60
- thing = Thing.create(:name => 'test')
61
- job = Delayed::Job.enqueue(TestJob.new(thing.id))
74
+ job.update_column(:locked_at, Time.now)
75
+ assert_equal :processing, job.status
62
76
 
63
- assert job.completed_at.blank?
64
- assert_no_difference 'Delayed::Job.count' do
65
- job.destroy
66
- assert job.completed_at.present?
67
- end
77
+ job.update_column(:completed_at, Time.now)
78
+ assert_equal :completed, job.status
68
79
 
69
- assert_difference 'Delayed::Job.count', -1 do
70
- job.destroy(:force)
71
- end
80
+ job.update_column(:failed_at, Time.now)
81
+ assert_equal :failed, job.status
72
82
  end
73
83
 
84
+ def test_job_error
85
+ thing = Thing.create(name: 'test')
86
+ thing.delay.explode
87
+
88
+ job = Delayed::Job.last
89
+ worker = Delayed::Worker.new
90
+ worker.run(job)
91
+
92
+ assert_equal 'hell', job.error_message
93
+
94
+ thing.delay.explode
95
+
96
+ job = Delayed::Job.last
97
+ job.error_message = 'custom error'
98
+ worker = Delayed::Worker.new
99
+ worker.run(job)
100
+
101
+ assert_equal 'custom error', job.error_message
102
+ end
74
103
  end
@@ -20,8 +20,10 @@ class WorkerTest < ActiveSupport::TestCase
20
20
  job.reload
21
21
 
22
22
  assert job.completed_at.present?
23
- assert_equal 1000, job.progress_current
24
- assert_equal 'complete', job.progress_state
23
+ assert_equal 1000, job.progress_current
24
+ assert_equal 'complete', job.message
25
+ assert_equal nil, job.locked_by
26
+ assert_equal nil, job.locked_at
25
27
  end
26
28
 
27
29
  def test_run_job_and_destroy
@@ -1,5 +1,5 @@
1
1
  require_relative './test_helper'
2
- require_relative '../lib/delayed_job_progress/generators/delayed_job/progress_generator'
2
+ require_relative '../lib/generators/delayed_job/progress_generator'
3
3
 
4
4
  class ScaffoldGeneratorTest < Rails::Generators::TestCase
5
5
  destination File.expand_path('../tmp', File.dirname(__FILE__))
@@ -7,34 +7,36 @@ module DelayedJobProgress
7
7
  @routes = Engine.routes
8
8
  Delayed::Worker.delay_jobs = true
9
9
 
10
- @thing = Thing.create(:name => 'test')
10
+ @thing = Thing.create(name: 'test')
11
11
  @job = Delayed::Job.enqueue(TestJob.new(@thing.id))
12
12
  end
13
13
 
14
14
  def test_index
15
15
  get :index
16
16
  assert_response :success
17
- assert_equal 1, JSON.parse(response.body).count
17
+ data = JSON.parse(response.body)
18
+ assert_equal 1, data.count
19
+ assert_equal 'queued', data[0]['status']
18
20
  end
19
21
 
20
22
  def test_index_record_filtering
21
- get :index, :record_type => @thing.class, :record_id => @thing.id
23
+ get :index, record_type: @thing.class, record_id: @thing.id
22
24
  assert_response :success
23
25
  data = JSON.parse(response.body)
24
26
  assert data.is_a?(Array)
25
27
  assert_equal 1, data.count
26
28
 
27
- get :index, :record_type => 'invalid', :record_id => @thing.id
29
+ get :index, record_type: 'invalid', record_id: @thing.id
28
30
  assert_response :success
29
31
  assert_equal [], JSON.parse(response.body)
30
32
 
31
- get :index, :record_type => @thing.class, :record_id => 'invalid'
33
+ get :index, record_type: @thing.class, record_id: 'invalid'
32
34
  assert_response :success
33
35
  assert_equal [], JSON.parse(response.body)
34
36
  end
35
37
 
36
38
  def test_show
37
- get :show, :id => @job.id
39
+ get :show, id: @job.id
38
40
  assert_response :success
39
41
  data = JSON.parse(response.body)
40
42
  assert_equal 'unique_identifier', data['identifier']
@@ -42,18 +44,19 @@ module DelayedJobProgress
42
44
  assert_equal 1, data['record_id']
43
45
  assert_equal 500, data['progress_current']
44
46
  assert_equal 1000, data['progress_max']
45
- assert_equal 'initialized', data['progress_state']
47
+ assert_equal 'initialized', data['message']
48
+ assert_equal 'queued', data['status']
46
49
  end
47
50
 
48
51
  def test_show_failure
49
- get :show, :id => 'invalid'
52
+ get :show, id: 'invalid'
50
53
  assert_response :not_found
51
54
  assert_equal ({'error' => 'Job not found'}), JSON.parse(response.body)
52
55
  end
53
56
 
54
57
  def test_destroy
55
58
  assert_difference 'Delayed::Job.count', -1 do
56
- delete :destroy, :id => @job.id
59
+ delete :destroy, id: @job.id
57
60
  assert_response :no_content
58
61
  end
59
62
  end
@@ -61,7 +64,7 @@ module DelayedJobProgress
61
64
  def test_reset
62
65
  @job.update_column(:failed_at, Time.now)
63
66
 
64
- post :reload, :id => @job
67
+ post :reload, id: @job
65
68
  assert_response :success
66
69
 
67
70
  @job.reload
@@ -10,11 +10,11 @@ Minitest.backtrace_filter = Minitest::BacktraceFilter.new
10
10
 
11
11
  # loading db schema
12
12
  require 'generators/delayed_job/templates/migration'
13
- require_relative '../lib/delayed_job_progress/generators/delayed_job/templates/progress_migration'
13
+ require_relative '../lib/generators/delayed_job/templates/progress_migration'
14
14
 
15
15
  ActiveRecord::Schema.define do
16
16
  CreateDelayedJobs.up
17
- AddProgressToDelayedJobs.up
17
+ AddProgressToDelayedJobs.new.change
18
18
 
19
19
  create_table :things do |t|
20
20
  t.string :name
@@ -25,6 +25,9 @@ class Thing < ActiveRecord::Base
25
25
  def something
26
26
  update_column(:name, 'processed')
27
27
  end
28
+ def explode
29
+ raise 'hell'
30
+ end
28
31
  end
29
32
 
30
33
  class TestJob < Struct.new(:thing_id)
@@ -33,7 +36,7 @@ class TestJob < Struct.new(:thing_id)
33
36
  job.identifier = 'unique_identifier'
34
37
  job.progress_max = 1000
35
38
  job.progress_current = 500
36
- job.progress_state = 'initialized'
39
+ job.message = 'initialized'
37
40
  job.queue = 'reports'
38
41
  end
39
42
 
@@ -42,30 +45,6 @@ class TestJob < Struct.new(:thing_id)
42
45
  end
43
46
 
44
47
  def perform
45
- @job.update_column(:progress_state, 'complete')
48
+ @job.update_column(:message, 'complete')
46
49
  end
47
50
  end
48
-
49
- class ActiveSupport::TestCase
50
- # Example usage:
51
- # assert_exception_raised do ... end
52
- # assert_exception_raised ActiveRecord::RecordInvalid do ... end
53
- # assert_exception_raised Plugin::Error, 'error_message' do ... end
54
- def assert_exception(exception_class = nil, error_message = nil, &block)
55
- exception_raised = nil
56
- yield
57
- rescue => exception_raised
58
- ensure
59
- if exception_raised
60
- if exception_class
61
- assert_equal exception_class, exception_raised.class, exception_raised.to_s
62
- else
63
- assert true
64
- end
65
- assert_equal error_message, exception_raised.to_s if error_message
66
- else
67
- flunk 'Exception was not raised'
68
- end
69
- end
70
- end
71
-
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: delayed_job_progress
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Oleg Khabarov
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-09-08 00:00:00.000000000 Z
11
+ date: 2016-02-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -82,7 +82,6 @@ files:
82
82
  - ".gitignore"
83
83
  - ".travis.yml"
84
84
  - Gemfile
85
- - Gemfile.lock
86
85
  - MIT-LICENSE
87
86
  - README.md
88
87
  - Rakefile
@@ -92,13 +91,11 @@ files:
92
91
  - delayed_job_progress.gemspec
93
92
  - lib/delayed_job_progress.rb
94
93
  - lib/delayed_job_progress/engine.rb
95
- - lib/delayed_job_progress/error.rb
96
94
  - lib/delayed_job_progress/extensions/job.rb
97
95
  - lib/delayed_job_progress/extensions/worker.rb
98
- - lib/delayed_job_progress/generators/delayed_job/progress_generator.rb
99
- - lib/delayed_job_progress/generators/delayed_job/templates/progress_migration.rb
100
96
  - lib/delayed_job_progress/version.rb
101
- - lib/tasks/delayed_job_progress_tasks.rake
97
+ - lib/generators/delayed_job/progress_generator.rb
98
+ - lib/generators/delayed_job/templates/progress_migration.rb
102
99
  - test/delayed_job_progress_test.rb
103
100
  - test/dummy/README.rdoc
104
101
  - test/dummy/Rakefile
@@ -136,7 +133,6 @@ files:
136
133
  - test/dummy/config/routes.rb
137
134
  - test/dummy/config/secrets.yml
138
135
  - test/dummy/db/development.sqlite3
139
- - test/dummy/db/schema.rb
140
136
  - test/dummy/db/test.sqlite3
141
137
  - test/dummy/lib/assets/.keep
142
138
  - test/dummy/log/.keep
@@ -171,7 +167,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
171
167
  version: '0'
172
168
  requirements: []
173
169
  rubyforge_project:
174
- rubygems_version: 2.4.5
170
+ rubygems_version: 2.4.5.1
175
171
  signing_key:
176
172
  specification_version: 4
177
173
  summary: DelayedJob Progress extension
@@ -206,7 +202,6 @@ test_files:
206
202
  - test/dummy/config/secrets.yml
207
203
  - test/dummy/config.ru
208
204
  - test/dummy/db/development.sqlite3
209
- - test/dummy/db/schema.rb
210
205
  - test/dummy/db/test.sqlite3
211
206
  - test/dummy/log/development.log
212
207
  - test/dummy/log/test.log
@@ -1,113 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- delayed_job_progress (0.0.0)
5
- delayed_job (>= 4.0)
6
- delayed_job_active_record (>= 4.0)
7
- rails (>= 4.0.0, < 5)
8
-
9
- GEM
10
- remote: https://rubygems.org/
11
- specs:
12
- actionmailer (4.2.4)
13
- actionpack (= 4.2.4)
14
- actionview (= 4.2.4)
15
- activejob (= 4.2.4)
16
- mail (~> 2.5, >= 2.5.4)
17
- rails-dom-testing (~> 1.0, >= 1.0.5)
18
- actionpack (4.2.4)
19
- actionview (= 4.2.4)
20
- activesupport (= 4.2.4)
21
- rack (~> 1.6)
22
- rack-test (~> 0.6.2)
23
- rails-dom-testing (~> 1.0, >= 1.0.5)
24
- rails-html-sanitizer (~> 1.0, >= 1.0.2)
25
- actionview (4.2.4)
26
- activesupport (= 4.2.4)
27
- builder (~> 3.1)
28
- erubis (~> 2.7.0)
29
- rails-dom-testing (~> 1.0, >= 1.0.5)
30
- rails-html-sanitizer (~> 1.0, >= 1.0.2)
31
- activejob (4.2.4)
32
- activesupport (= 4.2.4)
33
- globalid (>= 0.3.0)
34
- activemodel (4.2.4)
35
- activesupport (= 4.2.4)
36
- builder (~> 3.1)
37
- activerecord (4.2.4)
38
- activemodel (= 4.2.4)
39
- activesupport (= 4.2.4)
40
- arel (~> 6.0)
41
- activesupport (4.2.4)
42
- i18n (~> 0.7)
43
- json (~> 1.7, >= 1.7.7)
44
- minitest (~> 5.1)
45
- thread_safe (~> 0.3, >= 0.3.4)
46
- tzinfo (~> 1.1)
47
- arel (6.0.3)
48
- builder (3.2.2)
49
- delayed_job (4.0.6)
50
- activesupport (>= 3.0, < 5.0)
51
- delayed_job_active_record (4.0.3)
52
- activerecord (>= 3.0, < 5.0)
53
- delayed_job (>= 3.0, < 4.1)
54
- erubis (2.7.0)
55
- globalid (0.3.6)
56
- activesupport (>= 4.1.0)
57
- i18n (0.7.0)
58
- json (1.8.3)
59
- loofah (2.0.3)
60
- nokogiri (>= 1.5.9)
61
- mail (2.6.3)
62
- mime-types (>= 1.16, < 3)
63
- mime-types (2.6.1)
64
- mini_portile (0.6.2)
65
- minitest (5.8.0)
66
- nokogiri (1.6.6.2)
67
- mini_portile (~> 0.6.0)
68
- rack (1.6.4)
69
- rack-test (0.6.3)
70
- rack (>= 1.0)
71
- rails (4.2.4)
72
- actionmailer (= 4.2.4)
73
- actionpack (= 4.2.4)
74
- actionview (= 4.2.4)
75
- activejob (= 4.2.4)
76
- activemodel (= 4.2.4)
77
- activerecord (= 4.2.4)
78
- activesupport (= 4.2.4)
79
- bundler (>= 1.3.0, < 2.0)
80
- railties (= 4.2.4)
81
- sprockets-rails
82
- rails-deprecated_sanitizer (1.0.3)
83
- activesupport (>= 4.2.0.alpha)
84
- rails-dom-testing (1.0.7)
85
- activesupport (>= 4.2.0.beta, < 5.0)
86
- nokogiri (~> 1.6.0)
87
- rails-deprecated_sanitizer (>= 1.0.1)
88
- rails-html-sanitizer (1.0.2)
89
- loofah (~> 2.0)
90
- railties (4.2.4)
91
- actionpack (= 4.2.4)
92
- activesupport (= 4.2.4)
93
- rake (>= 0.8.7)
94
- thor (>= 0.18.1, < 2.0)
95
- rake (10.4.2)
96
- sprockets (3.3.3)
97
- rack (~> 1.0)
98
- sprockets-rails (2.3.2)
99
- actionpack (>= 3.0)
100
- activesupport (>= 3.0)
101
- sprockets (>= 2.8, < 4.0)
102
- sqlite3 (1.3.10)
103
- thor (0.19.1)
104
- thread_safe (0.3.5)
105
- tzinfo (1.2.2)
106
- thread_safe (~> 0.1)
107
-
108
- PLATFORMS
109
- ruby
110
-
111
- DEPENDENCIES
112
- delayed_job_progress!
113
- sqlite3
@@ -1,4 +0,0 @@
1
- module DelayedJobProgress
2
- class DuplicateJobError < StandardError
3
- end
4
- end
@@ -1,29 +0,0 @@
1
- class AddProgressToDelayedJobs < ActiveRecord::Migration
2
-
3
- def self.up
4
- change_table :delayed_jobs do |t|
5
- t.string :identifier
6
- t.string :record_type
7
- t.integer :record_id
8
- t.integer :progress_current, :null => false, :default => 0
9
- t.integer :progress_max, :null => false, :default => 100
10
- t.string :progress_state
11
- t.datetime :completed_at
12
- end
13
-
14
- add_index :delayed_jobs, :identifier
15
- add_index :delayed_jobs, [:record_type, :record_id]
16
- add_index :delayed_jobs, :completed_at
17
- end
18
-
19
- def self.down
20
- remove_column :delayed_jobs, :identifier
21
- remove_column :delayed_jobs, :record_type
22
- remove_column :delayed_jobs, :record_id
23
- remove_column :delayed_jobs, :progress_current
24
- remove_column :delayed_jobs, :progress_max
25
- remove_column :delayed_jobs, :progress_state
26
- remove_column :delayed_jobs, :completed_at
27
- end
28
-
29
- end
@@ -1,4 +0,0 @@
1
- # desc "Explaining what the task does"
2
- # task :delayed_job_progress do
3
- # # Task goes here
4
- # end
@@ -1,16 +0,0 @@
1
- # encoding: UTF-8
2
- # This file is auto-generated from the current state of the database. Instead
3
- # of editing this file, please use the migrations feature of Active Record to
4
- # incrementally modify your database, and then regenerate this schema definition.
5
- #
6
- # Note that this schema.rb definition is the authoritative source for your
7
- # database schema. If you need to create the application database on another
8
- # system, you should be using db:schema:load, not running all the migrations
9
- # from scratch. The latter is a flawed and unsustainable approach (the more migrations
10
- # you'll amass, the slower it'll run and the greater likelihood for issues).
11
- #
12
- # It's strongly recommended that you check this file into your version control system.
13
-
14
- ActiveRecord::Schema.define(version: 0) do
15
-
16
- end