delayed_job_progress 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
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