delayed_job_active_record 4.0.2 → 4.0.3

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: 0ba9b64dfebf36a3cc8248ff10fff63af3a8b611
4
- data.tar.gz: 506aba7854d7c39aa711c54e38c7a87e2fd7c00d
3
+ metadata.gz: cae84bcf8f0ca3be4cb937d76739e0688be8df1a
4
+ data.tar.gz: 72c33f816f915538d7c2139ed0634766da0a6b06
5
5
  SHA512:
6
- metadata.gz: 7f1b5ad0fa88e075b988d4234654cfdbc0e63e8a32344d8cb1824ef7562f88b1aa7ad63952e3176df823daac164fda2bf34692735062961cb59896d10f0dec72
7
- data.tar.gz: a4621ce576f0d7fb0458ccd3aa396ad79a5f5bd7ef85440c6aead1fcb8b6b11d11bc5610042b7da72f909a6fd5efeae0c1676427a80233d1d66cdc88a0f273e2
6
+ metadata.gz: 22fb9893fd6b9e10769317bc1bb65c76230153f7216d5fa3947db0b64cfa91c7069eb35f229398d75fdf4de4d63db6740d1d18fb34274d3aa35f190a370d95d7
7
+ data.tar.gz: 8b80ec66cba3eb33baf067090fd4f632eda9273e10e156bba345209c0d48edad9399cbf62cc941090f919906addb65473bf85267b072fe89c7c2a62bc9b397b5
@@ -1,19 +1,14 @@
1
- # coding: utf-8
2
-
3
1
  Gem::Specification.new do |spec|
4
- spec.add_dependency 'activerecord', ['>= 3.0', '< 4.2']
5
- spec.add_dependency 'delayed_job', ['>= 3.0', '< 4.1']
6
- spec.authors = ['Brian Ryckbost', 'Matt Griffin', 'Erik Michaels-Ober']
7
- spec.description = 'ActiveRecord backend for Delayed::Job, originally authored by Tobias Lütke'
8
- spec.email = ['bryckbost@gmail.com', 'matt@griffinonline.org', 'sferik@gmail.com']
9
- spec.files = %w[CONTRIBUTING.md LICENSE.md README.md Rakefile delayed_job_active_record.gemspec]
10
- spec.files += Dir.glob('lib/**/*.rb')
11
- spec.files += Dir.glob('spec/**/*')
12
- spec.homepage = 'http://github.com/collectiveidea/delayed_job_active_record'
13
- spec.licenses = ['MIT']
14
- spec.name = 'delayed_job_active_record'
15
- spec.require_paths = ['lib']
16
- spec.summary = 'ActiveRecord backend for DelayedJob'
17
- spec.test_files = Dir.glob('spec/**/*')
18
- spec.version = '4.0.2'
2
+ spec.add_dependency "activerecord", [">= 3.0", "< 5.0"]
3
+ spec.add_dependency "delayed_job", [">= 3.0", "< 4.1"]
4
+ spec.authors = ["Brian Ryckbost", "Matt Griffin", "Erik Michaels-Ober"]
5
+ spec.description = "ActiveRecord backend for Delayed::Job, originally authored by Tobias Lütke"
6
+ spec.email = ["bryckbost@gmail.com", "matt@griffinonline.org", "sferik@gmail.com"]
7
+ spec.files = %w(CONTRIBUTING.md LICENSE.md README.md delayed_job_active_record.gemspec) + Dir["lib/**/*.rb"]
8
+ spec.homepage = "http://github.com/collectiveidea/delayed_job_active_record"
9
+ spec.licenses = ["MIT"]
10
+ spec.name = "delayed_job_active_record"
11
+ spec.require_paths = ["lib"]
12
+ spec.summary = "ActiveRecord backend for DelayedJob"
13
+ spec.version = "4.0.3"
19
14
  end
@@ -1,4 +1,4 @@
1
- require 'active_record/version'
1
+ require "active_record/version"
2
2
  module Delayed
3
3
  module Backend
4
4
  module ActiveRecord
@@ -12,7 +12,7 @@ module Delayed
12
12
  :failed_at, :locked_at, :locked_by, :handler
13
13
  end
14
14
 
15
- scope :by_priority, lambda { order('priority ASC, run_at ASC') }
15
+ scope :by_priority, lambda { order("priority ASC, run_at ASC") }
16
16
 
17
17
  before_save :set_default_run_at
18
18
 
@@ -24,7 +24,7 @@ module Delayed
24
24
  set_delayed_job_table_name
25
25
 
26
26
  def self.ready_to_run(worker_name, max_run_time)
27
- where('(run_at <= ? AND (locked_at IS NULL OR locked_at < ?) OR locked_by = ?) AND failed_at IS NULL', db_time_now, db_time_now - max_run_time, worker_name)
27
+ where("(run_at <= ? AND (locked_at IS NULL OR locked_at < ?) OR locked_by = ?) AND failed_at IS NULL", db_time_now, db_time_now - max_run_time, worker_name)
28
28
  end
29
29
 
30
30
  def self.before_fork
@@ -37,7 +37,7 @@ module Delayed
37
37
 
38
38
  # When a worker is exiting, make sure we don't have any locked jobs.
39
39
  def self.clear_locks!(worker_name)
40
- where(:locked_by => worker_name).update_all(:locked_by => nil, :locked_at => nil)
40
+ where(locked_by: worker_name).update_all(locked_by: nil, locked_at: nil)
41
41
  end
42
42
 
43
43
  def self.reserve(worker, max_run_time = Worker.max_run_time) # rubocop:disable CyclomaticComplexity
@@ -45,9 +45,9 @@ module Delayed
45
45
  ready_scope = ready_to_run(worker.name, max_run_time)
46
46
 
47
47
  # scope to filter to the single next eligible job
48
- ready_scope = ready_scope.where('priority >= ?', Worker.min_priority) if Worker.min_priority
49
- ready_scope = ready_scope.where('priority <= ?', Worker.max_priority) if Worker.max_priority
50
- ready_scope = ready_scope.where(:queue => Worker.queues) if Worker.queues.any?
48
+ ready_scope = ready_scope.where("priority >= ?", Worker.min_priority) if Worker.min_priority
49
+ ready_scope = ready_scope.where("priority <= ?", Worker.max_priority) if Worker.max_priority
50
+ ready_scope = ready_scope.where(queue: Worker.queues) if Worker.queues.any?
51
51
  ready_scope = ready_scope.by_priority
52
52
 
53
53
  reserve_with_scope(ready_scope, worker, db_time_now)
@@ -56,22 +56,32 @@ module Delayed
56
56
  def self.reserve_with_scope(ready_scope, worker, now)
57
57
  # Optimizations for faster lookups on some common databases
58
58
  case connection.adapter_name
59
- when 'PostgreSQL'
59
+ when "PostgreSQL"
60
60
  # Custom SQL required for PostgreSQL because postgres does not support UPDATE...LIMIT
61
- # This locks the single record 'FOR UPDATE' in the subquery (http://www.postgresql.org/docs/9.0/static/sql-select.html#SQL-FOR-UPDATE-SHARE)
62
- # Note: active_record would attempt to generate UPDATE...LIMIT like sql for postgres if we use a .limit() filter, but it would not use
63
- # 'FOR UPDATE' and we would have many locking conflicts
61
+ # This locks the single record 'FOR UPDATE' in the subquery
62
+ # http://www.postgresql.org/docs/9.0/static/sql-select.html#SQL-FOR-UPDATE-SHARE
63
+ # Note: active_record would attempt to generate UPDATE...LIMIT like
64
+ # SQL for Postgres if we use a .limit() filter, but it would not
65
+ # use 'FOR UPDATE' and we would have many locking conflicts
64
66
  quoted_table_name = connection.quote_table_name(table_name)
65
- subquery_sql = ready_scope.limit(1).lock(true).select('id').to_sql
67
+ subquery_sql = ready_scope.limit(1).lock(true).select("id").to_sql
66
68
  reserved = find_by_sql(["UPDATE #{quoted_table_name} SET locked_at = ?, locked_by = ? WHERE id IN (#{subquery_sql}) RETURNING *", now, worker.name])
67
69
  reserved[0]
68
- when 'MySQL', 'Mysql2'
69
- # This works on MySQL and possibly some other DBs that support UPDATE...LIMIT. It uses separate queries to lock and return the job
70
- count = ready_scope.limit(1).update_all(:locked_at => now, :locked_by => worker.name)
70
+ when "MySQL", "Mysql2"
71
+ # Removing the millisecond precision from now(time object)
72
+ # MySQL 5.6.4 onwards millisecond precision exists, but the
73
+ # datetime object created doesn't have precision, so discarded
74
+ # while updating. But during the where clause, for mysql(>=5.6.4),
75
+ # it queries with precision as well. So removing the precision
76
+ now = now.change(usec: 0)
77
+ # This works on MySQL and possibly some other DBs that support
78
+ # UPDATE...LIMIT. It uses separate queries to lock and return the job
79
+ count = ready_scope.limit(1).update_all(locked_at: now, locked_by: worker.name)
71
80
  return nil if count == 0
72
- where(:locked_at => now, :locked_by => worker.name, :failed_at => nil).first
73
- when 'MSSQL', 'Teradata'
74
- # The MSSQL driver doesn't generate a limit clause when update_all is called directly
81
+ where(locked_at: now, locked_by: worker.name, failed_at: nil).first
82
+ when "MSSQL", "Teradata"
83
+ # The MSSQL driver doesn't generate a limit clause when update_all
84
+ # is called directly
75
85
  subsubquery_sql = ready_scope.limit(1).to_sql
76
86
  # select("id") doesn't generate a subquery, so force a subquery
77
87
  subquery_sql = "SELECT id FROM (#{subsubquery_sql}) AS x"
@@ -80,7 +90,7 @@ module Delayed
80
90
  count = connection.execute(sanitize_sql(sql))
81
91
  return nil if count == 0
82
92
  # MSSQL JDBC doesn't support OUTPUT INSERTED.* for returning a result set, so query locked row
83
- where(:locked_at => now, :locked_by => worker.name, :failed_at => nil).first
93
+ where(locked_at: now, locked_by: worker.name, failed_at: nil).first
84
94
  else
85
95
  reserve_with_scope_using_default_sql(ready_scope, worker, now)
86
96
  end
@@ -89,7 +99,7 @@ module Delayed
89
99
  def self.reserve_with_scope_using_default_sql(ready_scope, worker, now)
90
100
  # This is our old fashion, tried and true, but slower lookup
91
101
  ready_scope.limit(worker.read_ahead).detect do |job|
92
- count = ready_scope.where(:id => job.id).update_all(:locked_at => now, :locked_by => worker.name)
102
+ count = ready_scope.where(id: job.id).update_all(locked_at: now, locked_by: worker.name)
93
103
  count == 1 && job.reload
94
104
  end
95
105
  end
@@ -1,5 +1,5 @@
1
- require 'active_record'
2
- require 'delayed_job'
3
- require 'delayed/backend/active_record'
1
+ require "active_record"
2
+ require "delayed_job"
3
+ require "delayed/backend/active_record"
4
4
 
5
5
  Delayed::Worker.backend = :active_record
@@ -1,7 +1,7 @@
1
- require 'generators/delayed_job/delayed_job_generator'
2
- require 'generators/delayed_job/next_migration_version'
3
- require 'rails/generators/migration'
4
- require 'rails/generators/active_record'
1
+ require "generators/delayed_job/delayed_job_generator"
2
+ require "generators/delayed_job/next_migration_version"
3
+ require "rails/generators/migration"
4
+ require "rails/generators/active_record"
5
5
 
6
6
  # Extend the DelayedJobGenerator so that it creates an AR migration
7
7
  module DelayedJob
@@ -9,10 +9,10 @@ module DelayedJob
9
9
  include Rails::Generators::Migration
10
10
  extend NextMigrationVersion
11
11
 
12
- source_paths << File.join(File.dirname(__FILE__), 'templates')
12
+ source_paths << File.join(File.dirname(__FILE__), "templates")
13
13
 
14
14
  def create_migration_file
15
- migration_template 'migration.rb', 'db/migrate/create_delayed_jobs.rb'
15
+ migration_template "migration.rb", "db/migrate/create_delayed_jobs.rb"
16
16
  end
17
17
 
18
18
  def self.next_migration_number(dirname)
@@ -5,9 +5,9 @@ module DelayedJob
5
5
  def next_migration_number(dirname)
6
6
  next_migration_number = current_migration_number(dirname) + 1
7
7
  if ActiveRecord::Base.timestamped_migrations
8
- [Time.now.utc.strftime('%Y%m%d%H%M%S'), format('%.14d', next_migration_number)].max
8
+ [Time.now.utc.strftime("%Y%m%d%H%M%S"), format("%.14d", next_migration_number)].max
9
9
  else
10
- format('%.3d', next_migration_number)
10
+ format("%.3d", next_migration_number)
11
11
  end
12
12
  end
13
13
  end
@@ -1,19 +1,19 @@
1
1
  class CreateDelayedJobs < ActiveRecord::Migration
2
2
  def self.up
3
- create_table :delayed_jobs, :force => true do |table|
4
- table.integer :priority, :default => 0, :null => false # Allows some jobs to jump to the front of the queue
5
- table.integer :attempts, :default => 0, :null => false # Provides for retries, but still fail eventually.
6
- table.text :handler, :null => false # YAML-encoded string of the object that will do work
7
- table.text :last_error # reason for last failure (See Note below)
8
- table.datetime :run_at # When to run. Could be Time.zone.now for immediately, or sometime in the future.
9
- table.datetime :locked_at # Set when a client is working on this object
10
- table.datetime :failed_at # Set when all retries have failed (actually, by default, the record is deleted instead)
11
- table.string :locked_by # Who is working on this object (if locked)
12
- table.string :queue # The name of the queue this job is in
13
- table.timestamps
3
+ create_table :delayed_jobs, force: true do |table|
4
+ table.integer :priority, default: 0, null: false # Allows some jobs to jump to the front of the queue
5
+ table.integer :attempts, default: 0, null: false # Provides for retries, but still fail eventually.
6
+ table.text :handler, null: false # YAML-encoded string of the object that will do work
7
+ table.text :last_error # reason for last failure (See Note below)
8
+ table.datetime :run_at # When to run. Could be Time.zone.now for immediately, or sometime in the future.
9
+ table.datetime :locked_at # Set when a client is working on this object
10
+ table.datetime :failed_at # Set when all retries have failed (actually, by default, the record is deleted instead)
11
+ table.string :locked_by # Who is working on this object (if locked)
12
+ table.string :queue # The name of the queue this job is in
13
+ table.timestamps null: true
14
14
  end
15
15
 
16
- add_index :delayed_jobs, [:priority, :run_at], :name => 'delayed_jobs_priority'
16
+ add_index :delayed_jobs, [:priority, :run_at], name: "delayed_jobs_priority"
17
17
  end
18
18
 
19
19
  def self.down
@@ -1,7 +1,7 @@
1
- require 'generators/delayed_job/delayed_job_generator'
2
- require 'generators/delayed_job/next_migration_version'
3
- require 'rails/generators/migration'
4
- require 'rails/generators/active_record'
1
+ require "generators/delayed_job/delayed_job_generator"
2
+ require "generators/delayed_job/next_migration_version"
3
+ require "rails/generators/migration"
4
+ require "rails/generators/active_record"
5
5
 
6
6
  # Extend the DelayedJobGenerator so that it creates an AR migration
7
7
  module DelayedJob
@@ -9,10 +9,10 @@ module DelayedJob
9
9
  include Rails::Generators::Migration
10
10
  extend NextMigrationVersion
11
11
 
12
- source_paths << File.join(File.dirname(__FILE__), 'templates')
12
+ source_paths << File.join(File.dirname(__FILE__), "templates")
13
13
 
14
14
  def create_migration_file
15
- migration_template 'upgrade_migration.rb', 'db/migrate/add_queue_to_delayed_jobs.rb'
15
+ migration_template "upgrade_migration.rb", "db/migrate/add_queue_to_delayed_jobs.rb"
16
16
  end
17
17
 
18
18
  def self.next_migration_number(dirname)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: delayed_job_active_record
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.0.2
4
+ version: 4.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brian Ryckbost
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2014-08-19 00:00:00.000000000 Z
13
+ date: 2014-12-22 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: activerecord
@@ -21,7 +21,7 @@ dependencies:
21
21
  version: '3.0'
22
22
  - - "<"
23
23
  - !ruby/object:Gem::Version
24
- version: '4.2'
24
+ version: '5.0'
25
25
  type: :runtime
26
26
  prerelease: false
27
27
  version_requirements: !ruby/object:Gem::Requirement
@@ -31,7 +31,7 @@ dependencies:
31
31
  version: '3.0'
32
32
  - - "<"
33
33
  - !ruby/object:Gem::Version
34
- version: '4.2'
34
+ version: '5.0'
35
35
  - !ruby/object:Gem::Dependency
36
36
  name: delayed_job
37
37
  requirement: !ruby/object:Gem::Requirement
@@ -65,7 +65,6 @@ files:
65
65
  - CONTRIBUTING.md
66
66
  - LICENSE.md
67
67
  - README.md
68
- - Rakefile
69
68
  - delayed_job_active_record.gemspec
70
69
  - lib/delayed/backend/active_record.rb
71
70
  - lib/delayed_job_active_record.rb
@@ -74,10 +73,6 @@ files:
74
73
  - lib/generators/delayed_job/templates/migration.rb
75
74
  - lib/generators/delayed_job/templates/upgrade_migration.rb
76
75
  - lib/generators/delayed_job/upgrade_generator.rb
77
- - spec/database.yml
78
- - spec/delayed/backend/active_record_spec.rb
79
- - spec/delayed/serialization/active_record_spec.rb
80
- - spec/helper.rb
81
76
  homepage: http://github.com/collectiveidea/delayed_job_active_record
82
77
  licenses:
83
78
  - MIT
@@ -98,12 +93,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
98
93
  version: '0'
99
94
  requirements: []
100
95
  rubyforge_project:
101
- rubygems_version: 2.4.1
96
+ rubygems_version: 2.4.4
102
97
  signing_key:
103
98
  specification_version: 4
104
99
  summary: ActiveRecord backend for DelayedJob
105
- test_files:
106
- - spec/database.yml
107
- - spec/delayed/backend/active_record_spec.rb
108
- - spec/delayed/serialization/active_record_spec.rb
109
- - spec/helper.rb
100
+ test_files: []
data/Rakefile DELETED
@@ -1,38 +0,0 @@
1
- # -*- encoding: utf-8 -*-
2
- require 'bundler/gem_helper'
3
- Bundler::GemHelper.install_tasks
4
-
5
- require 'rspec/core/rake_task'
6
-
7
- ADAPTERS = %w[mysql postgresql sqlite3]
8
-
9
- ADAPTERS.each do |adapter|
10
- desc "Run RSpec code examples for #{adapter} adapter"
11
- RSpec::Core::RakeTask.new(adapter => "#{adapter}:adapter")
12
-
13
- namespace adapter do
14
- task :adapter do
15
- ENV['ADAPTER'] = adapter
16
- end
17
- end
18
- end
19
-
20
- task :coverage do
21
- ENV['COVERAGE'] = 'true'
22
- end
23
-
24
- task :adapter do
25
- ENV['ADAPTER'] = nil
26
- end
27
-
28
- Rake::Task[:spec].enhance do
29
- require 'simplecov'
30
- require 'coveralls'
31
-
32
- Coveralls::SimpleCov::Formatter.new.format(SimpleCov.result)
33
- end
34
-
35
- require 'rubocop/rake_task'
36
- RuboCop::RakeTask.new
37
-
38
- task :default => ([:coverage] + ADAPTERS + [:adapter] + [:rubocop])
@@ -1,14 +0,0 @@
1
- mysql:
2
- adapter: mysql
3
- database: delayed_job_test
4
- username: root
5
- encoding: utf8
6
-
7
- postgresql:
8
- adapter: postgresql
9
- database: delayed_job_test
10
- username: postgres
11
-
12
- sqlite3:
13
- adapter: sqlite3
14
- database: ":memory:"
@@ -1,101 +0,0 @@
1
- require 'helper'
2
- require 'delayed/backend/active_record'
3
-
4
- describe Delayed::Backend::ActiveRecord::Job do
5
- it_behaves_like 'a delayed_job backend'
6
-
7
- describe "reserve_with_scope" do
8
- let(:worker) { double(name: "worker01", read_ahead: 1) }
9
- let(:scope) { double(limit: limit, where: double(update_all: nil)) }
10
- let(:limit) { double(job: job) }
11
- let(:job) { double(id: 1) }
12
-
13
- before do
14
- allow(Delayed::Backend::ActiveRecord::Job.connection).to receive(:adapter_name).at_least(:once).and_return(dbms)
15
- end
16
-
17
- context "for a dbms without a specific implementation" do
18
- let(:dbms) { "OtherDB" }
19
-
20
- it "uses the plain sql version" do
21
- expect(Delayed::Backend::ActiveRecord::Job).to receive(:reserve_with_scope_using_default_sql).once
22
- Delayed::Backend::ActiveRecord::Job.reserve_with_scope(scope, worker, Time.now)
23
- end
24
- end
25
- end
26
-
27
- context 'db_time_now' do
28
- after do
29
- Time.zone = nil
30
- ActiveRecord::Base.default_timezone = :local
31
- end
32
-
33
- it 'returns time in current time zone if set' do
34
- Time.zone = 'Eastern Time (US & Canada)'
35
- expect(%(EST EDT)).to include(Delayed::Job.db_time_now.zone)
36
- end
37
-
38
- it 'returns UTC time if that is the AR default' do
39
- Time.zone = nil
40
- ActiveRecord::Base.default_timezone = :utc
41
- expect(Delayed::Backend::ActiveRecord::Job.db_time_now.zone).to eq 'UTC'
42
- end
43
-
44
- it 'returns local time if that is the AR default' do
45
- Time.zone = 'Central Time (US & Canada)'
46
- ActiveRecord::Base.default_timezone = :local
47
- expect(%w[CST CDT]).to include(Delayed::Backend::ActiveRecord::Job.db_time_now.zone)
48
- end
49
- end
50
-
51
- describe 'after_fork' do
52
- it 'calls reconnect on the connection' do
53
- allow(ActiveRecord::Base).to receive(:establish_connection)
54
- Delayed::Backend::ActiveRecord::Job.after_fork
55
- end
56
- end
57
-
58
- describe 'enqueue' do
59
- it 'allows enqueue hook to modify job at DB level' do
60
- later = described_class.db_time_now + 20.minutes
61
- job = Delayed::Backend::ActiveRecord::Job.enqueue :payload_object => EnqueueJobMod.new
62
- expect(Delayed::Backend::ActiveRecord::Job.find(job.id).run_at).to be_within(1).of(later)
63
- end
64
- end
65
-
66
- if ::ActiveRecord::VERSION::MAJOR < 4 || defined?(::ActiveRecord::MassAssignmentSecurity)
67
- context 'ActiveRecord::Base.send(:attr_accessible, nil)' do
68
- before do
69
- Delayed::Backend::ActiveRecord::Job.send(:attr_accessible, nil)
70
- end
71
-
72
- after do
73
- Delayed::Backend::ActiveRecord::Job.send(:attr_accessible, *Delayed::Backend::ActiveRecord::Job.new.attributes.keys)
74
- end
75
-
76
- it 'is still accessible' do
77
- job = Delayed::Backend::ActiveRecord::Job.enqueue :payload_object => EnqueueJobMod.new
78
- expect(Delayed::Backend::ActiveRecord::Job.find(job.id).handler).to_not be_blank
79
- end
80
- end
81
- end
82
-
83
- context 'ActiveRecord::Base.table_name_prefix' do
84
- it "when prefix is not set, use 'delayed_jobs' as table name" do
85
- ::ActiveRecord::Base.table_name_prefix = nil
86
- Delayed::Backend::ActiveRecord::Job.set_delayed_job_table_name
87
-
88
- expect(Delayed::Backend::ActiveRecord::Job.table_name).to eq 'delayed_jobs'
89
- end
90
-
91
- it 'when prefix is set, prepend it before default table name' do
92
- ::ActiveRecord::Base.table_name_prefix = 'custom_'
93
- Delayed::Backend::ActiveRecord::Job.set_delayed_job_table_name
94
-
95
- expect(Delayed::Backend::ActiveRecord::Job.table_name).to eq 'custom_delayed_jobs'
96
-
97
- ::ActiveRecord::Base.table_name_prefix = nil
98
- Delayed::Backend::ActiveRecord::Job.set_delayed_job_table_name
99
- end
100
- end
101
- end
@@ -1,15 +0,0 @@
1
- require 'helper'
2
-
3
- describe ActiveRecord do
4
- it 'loads classes with non-default primary key' do
5
- expect do
6
- YAML.load(Story.create.to_yaml)
7
- end.not_to raise_error
8
- end
9
-
10
- it 'loads classes even if not in default scope' do
11
- expect do
12
- YAML.load(Story.create(:scoped => false).to_yaml)
13
- end.not_to raise_error
14
- end
15
- end
@@ -1,78 +0,0 @@
1
- require 'simplecov'
2
- require 'coveralls'
3
-
4
- SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[
5
- SimpleCov::Formatter::HTMLFormatter,
6
- Coveralls::SimpleCov::Formatter
7
- ]
8
-
9
- SimpleCov.start do
10
- add_filter '/spec/'
11
- minimum_coverage(73.33)
12
- end
13
-
14
- require 'logger'
15
- require 'rspec'
16
-
17
- begin
18
- require 'protected_attributes'
19
- rescue LoadError # rubocop:disable HandleExceptions
20
- end
21
- require 'delayed_job_active_record'
22
- require 'delayed/backend/shared_spec'
23
-
24
- Delayed::Worker.logger = Logger.new('/tmp/dj.log')
25
- ENV['RAILS_ENV'] = 'test'
26
-
27
- db_adapter, gemfile = ENV['ADAPTER'], ENV['BUNDLE_GEMFILE']
28
- db_adapter ||= gemfile && gemfile[%r{gemfiles/(.*?)/}] && $1 # rubocop:disable PerlBackrefs
29
- db_adapter ||= 'sqlite3'
30
-
31
- config = YAML.load(File.read('spec/database.yml'))
32
- ActiveRecord::Base.establish_connection config[db_adapter]
33
- ActiveRecord::Base.logger = Delayed::Worker.logger
34
- ActiveRecord::Migration.verbose = false
35
-
36
- ActiveRecord::Schema.define do
37
- create_table :delayed_jobs, :force => true do |table|
38
- table.integer :priority, :default => 0
39
- table.integer :attempts, :default => 0
40
- table.text :handler
41
- table.text :last_error
42
- table.datetime :run_at
43
- table.datetime :locked_at
44
- table.datetime :failed_at
45
- table.string :locked_by
46
- table.string :queue
47
- table.timestamps
48
- end
49
-
50
- add_index :delayed_jobs, [:priority, :run_at], :name => 'delayed_jobs_priority'
51
-
52
- create_table :stories, :primary_key => :story_id, :force => true do |table|
53
- table.string :text
54
- table.boolean :scoped, :default => true
55
- end
56
- end
57
-
58
- # Purely useful for test cases...
59
- class Story < ActiveRecord::Base
60
- if ::ActiveRecord::VERSION::MAJOR < 4 && ActiveRecord::VERSION::MINOR < 2
61
- set_primary_key :story_id
62
- else
63
- self.primary_key = :story_id
64
- end
65
- def tell
66
- text
67
- end
68
-
69
- def whatever(n, _)
70
- tell * n
71
- end
72
- default_scope { where(:scoped => true) }
73
-
74
- handle_asynchronously :whatever
75
- end
76
-
77
- # Add this directory so the ActiveSupport autoloading works
78
- ActiveSupport::Dependencies.autoload_paths << File.dirname(__FILE__)