Comments (8)
Please provide a full backtrace. AR handles arrays in a where clause just fine, so something else is going on.
from delayed_job_active_record.
+1 I have been observing this problem.
from delayed_job_active_record.
I encountered the same issue today. I’ve been running my app with delayed_job_active_record
v.0.4.4 without any problems for a while, and today I added the gem postgres_ext to my Gemfile and I now get this issue when running bundle exec rake jobs:work QUEUE=urgent
.
I downgraded delayed_job_active_record
to v.0.4.3 and it now plays nice with postgres_ext
.
Therefore I narrowed down the issue to something made in this commit: 3075c59
Here’s a trace:
[Worker(host:new-host-3.home pid:60665)] Starting job worker
rake aborted!
undefined method `abstract_class?' for Object:Class
/Users/edouard/.rvm/gems/ruby-2.0.0-p195/gems/activerecord-3.2.13/lib/active_record/model_schema.rb:148:in `reset_table_name'
/Users/edouard/.rvm/gems/ruby-2.0.0-p195/gems/activerecord-3.2.13/lib/active_record/model_schema.rb:104:in `table_name'
/Users/edouard/.rvm/gems/ruby-2.0.0-p195/gems/activerecord-3.2.13/lib/active_record/model_schema.rb:228:in `columns'
/Users/edouard/.rvm/gems/ruby-2.0.0-p195/gems/postgres_ext-0.3.1/lib/postgres_ext/active_record/relation/predicate_builder.rb:32:in `block in build_from_hash'
/Users/edouard/.rvm/gems/ruby-2.0.0-p195/gems/postgres_ext-0.3.1/lib/postgres_ext/active_record/relation/predicate_builder.rb:6:in `each'
/Users/edouard/.rvm/gems/ruby-2.0.0-p195/gems/postgres_ext-0.3.1/lib/postgres_ext/active_record/relation/predicate_builder.rb:6:in `map'
/Users/edouard/.rvm/gems/ruby-2.0.0-p195/gems/postgres_ext-0.3.1/lib/postgres_ext/active_record/relation/predicate_builder.rb:6:in `build_from_hash'
/Users/edouard/.rvm/gems/ruby-2.0.0-p195/gems/activerecord-3.2.13/lib/active_record/relation/query_methods.rb:327:in `build_where'
/Users/edouard/.rvm/gems/ruby-2.0.0-p195/gems/activerecord-3.2.13/lib/active_record/relation/query_methods.rb:136:in `where'
/Users/edouard/.rvm/gems/ruby-2.0.0-p195/gems/postgres_ext-0.3.1/lib/postgres_ext/active_record/relation/query_methods.rb:78:in `where_with_chaining'
/Users/edouard/.rvm/gems/ruby-2.0.0-p195/gems/delayed_job_active_record-0.4.4/lib/delayed/backend/active_record.rb:50:in `reserve'
/Users/edouard/.rvm/gems/ruby-2.0.0-p195/gems/delayed_job-3.0.5/lib/delayed/worker.rb:258:in `reserve_and_run_one_job'
/Users/edouard/.rvm/gems/ruby-2.0.0-p195/gems/delayed_job-3.0.5/lib/delayed/worker.rb:187:in `block in work_off'
/Users/edouard/.rvm/gems/ruby-2.0.0-p195/gems/delayed_job-3.0.5/lib/delayed/worker.rb:186:in `times'
/Users/edouard/.rvm/gems/ruby-2.0.0-p195/gems/delayed_job-3.0.5/lib/delayed/worker.rb:186:in `work_off'
/Users/edouard/.rvm/gems/ruby-2.0.0-p195/gems/delayed_job-3.0.5/lib/delayed/worker.rb:151:in `block (4 levels) in start'
/Users/edouard/.rvm/gems/ruby-2.0.0-p195/gems/delayed_job-3.0.5/lib/delayed/worker.rb:150:in `block (3 levels) in start'
/Users/edouard/.rvm/gems/ruby-2.0.0-p195/gems/delayed_job-3.0.5/lib/delayed/lifecycle.rb:60:in `call'
/Users/edouard/.rvm/gems/ruby-2.0.0-p195/gems/delayed_job-3.0.5/lib/delayed/lifecycle.rb:60:in `block in initialize'
/Users/edouard/.rvm/gems/ruby-2.0.0-p195/gems/delayed_job-3.0.5/lib/delayed/lifecycle.rb:65:in `call'
/Users/edouard/.rvm/gems/ruby-2.0.0-p195/gems/delayed_job-3.0.5/lib/delayed/lifecycle.rb:65:in `execute'
/Users/edouard/.rvm/gems/ruby-2.0.0-p195/gems/delayed_job-3.0.5/lib/delayed/lifecycle.rb:38:in `run_callbacks'
/Users/edouard/.rvm/gems/ruby-2.0.0-p195/gems/delayed_job-3.0.5/lib/delayed/worker.rb:149:in `block (2 levels) in start'
/Users/edouard/.rvm/gems/ruby-2.0.0-p195/gems/delayed_job-3.0.5/lib/delayed/worker.rb:148:in `loop'
/Users/edouard/.rvm/gems/ruby-2.0.0-p195/gems/delayed_job-3.0.5/lib/delayed/worker.rb:148:in `block in start'
/Users/edouard/.rvm/gems/ruby-2.0.0-p195/gems/delayed_job-3.0.5/lib/delayed/plugins/clear_locks.rb:7:in `call'
/Users/edouard/.rvm/gems/ruby-2.0.0-p195/gems/delayed_job-3.0.5/lib/delayed/plugins/clear_locks.rb:7:in `block (2 levels) in <class:ClearLocks>'
/Users/edouard/.rvm/gems/ruby-2.0.0-p195/gems/delayed_job-3.0.5/lib/delayed/lifecycle.rb:78:in `call'
/Users/edouard/.rvm/gems/ruby-2.0.0-p195/gems/delayed_job-3.0.5/lib/delayed/lifecycle.rb:78:in `block (2 levels) in add'
/Users/edouard/.rvm/gems/ruby-2.0.0-p195/gems/delayed_job-3.0.5/lib/delayed/lifecycle.rb:60:in `call'
/Users/edouard/.rvm/gems/ruby-2.0.0-p195/gems/delayed_job-3.0.5/lib/delayed/lifecycle.rb:60:in `block in initialize'
/Users/edouard/.rvm/gems/ruby-2.0.0-p195/gems/delayed_job-3.0.5/lib/delayed/lifecycle.rb:78:in `call'
/Users/edouard/.rvm/gems/ruby-2.0.0-p195/gems/delayed_job-3.0.5/lib/delayed/lifecycle.rb:78:in `block in add'
/Users/edouard/.rvm/gems/ruby-2.0.0-p195/gems/delayed_job-3.0.5/lib/delayed/lifecycle.rb:65:in `call'
/Users/edouard/.rvm/gems/ruby-2.0.0-p195/gems/delayed_job-3.0.5/lib/delayed/lifecycle.rb:65:in `execute'
/Users/edouard/.rvm/gems/ruby-2.0.0-p195/gems/delayed_job-3.0.5/lib/delayed/lifecycle.rb:38:in `run_callbacks'
/Users/edouard/.rvm/gems/ruby-2.0.0-p195/gems/delayed_job-3.0.5/lib/delayed/worker.rb:147:in `start'
/Users/edouard/.rvm/gems/ruby-2.0.0-p195/gems/delayed_job-3.0.5/lib/delayed/tasks.rb:9:in `block (2 levels) in <top (required)>'
/Users/edouard/.rvm/gems/ruby-2.0.0-p195@global/gems/rake-10.0.4/lib/rake/task.rb:246:in `call'
/Users/edouard/.rvm/gems/ruby-2.0.0-p195@global/gems/rake-10.0.4/lib/rake/task.rb:246:in `block in execute'
/Users/edouard/.rvm/gems/ruby-2.0.0-p195@global/gems/rake-10.0.4/lib/rake/task.rb:241:in `each'
/Users/edouard/.rvm/gems/ruby-2.0.0-p195@global/gems/rake-10.0.4/lib/rake/task.rb:241:in `execute'
/Users/edouard/.rvm/gems/ruby-2.0.0-p195@global/gems/rake-10.0.4/lib/rake/task.rb:184:in `block in invoke_with_call_chain'
/Users/edouard/.rvm/gems/ruby-2.0.0-p195@global/gems/rake-10.0.4/lib/rake/task.rb:177:in `invoke_with_call_chain'
/Users/edouard/.rvm/gems/ruby-2.0.0-p195@global/gems/rake-10.0.4/lib/rake/task.rb:170:in `invoke'
/Users/edouard/.rvm/gems/ruby-2.0.0-p195@global/gems/rake-10.0.4/lib/rake/application.rb:143:in `invoke_task'
/Users/edouard/.rvm/gems/ruby-2.0.0-p195@global/gems/rake-10.0.4/lib/rake/application.rb:101:in `block (2 levels) in top_level'
/Users/edouard/.rvm/gems/ruby-2.0.0-p195@global/gems/rake-10.0.4/lib/rake/application.rb:101:in `each'
/Users/edouard/.rvm/gems/ruby-2.0.0-p195@global/gems/rake-10.0.4/lib/rake/application.rb:101:in `block in top_level'
/Users/edouard/.rvm/gems/ruby-2.0.0-p195@global/gems/rake-10.0.4/lib/rake/application.rb:110:in `run_with_threads'
/Users/edouard/.rvm/gems/ruby-2.0.0-p195@global/gems/rake-10.0.4/lib/rake/application.rb:95:in `top_level'
/Users/edouard/.rvm/gems/ruby-2.0.0-p195@global/gems/rake-10.0.4/lib/rake/application.rb:73:in `block in run'
/Users/edouard/.rvm/gems/ruby-2.0.0-p195@global/gems/rake-10.0.4/lib/rake/application.rb:160:in `standard_exception_handling'
/Users/edouard/.rvm/gems/ruby-2.0.0-p195@global/gems/rake-10.0.4/lib/rake/application.rb:70:in `run'
/Users/edouard/.rvm/gems/ruby-2.0.0-p195/bin/ruby_noexec_wrapper:14:in `eval'
/Users/edouard/.rvm/gems/ruby-2.0.0-p195/bin/ruby_noexec_wrapper:14:in `<main>'
Tasks: TOP => jobs:work
(See full trace by running task with --trace)
from delayed_job_active_record.
This is a bug with postgres_ext not DJ.
postgres_ext is not properly handling where(:column_name => ["item1"])
To reproduce your bug, just run:
Delayed::Job.where(:queue => ['important']).to_sql
from delayed_job_active_record.
I'm still having problems with this. Has Dockyard been notified? Is this being corrected?
from delayed_job_active_record.
This issue is not solved in delayed_job-4.0.2. The strange thing is that..
class DJ < ActiveRecord::Base
self.table_name = 'delayed_jobs'
end
DJ.where(queue: %w|blah blah bleh|)
DJ.where(queue: %w|scores mails|).to_sql
=> "SELECT \"delayed_jobs\".* FROM \"delayed_jobs\" WHERE \"delayed_jobs\".\"queue\" IN ('scores', 'mails')"
works! So the problem must be somewhere else. The error backtrace I get from running Delayed::Job.where(queue: %w|etc|)
is:
=> ["/home/nicolas/.rvm/gems/ruby-2.1.1/gems/activerecord-4.0.5/lib/active_record/model_schema.rb:139:in `reset_table_name'",
"/home/nicolas/.rvm/gems/ruby-2.1.1/gems/activerecord-4.0.5/lib/active_record/model_schema.rb:103:in `table_name'",
"/home/nicolas/.rvm/gems/ruby-2.1.1/gems/activerecord-4.0.5/lib/active_record/model_schema.rb:208:in `columns'",
"/home/nicolas/.rvm/gems/ruby-2.1.1/gems/postgres_ext-2.2.0/lib/postgres_ext/active_record/relation/predicate_builder.rb:11:in `build'",
"/home/nicolas/.rvm/gems/ruby-2.1.1/gems/activerecord-4.0.5/lib/active_record/relation/predicate_builder.rb:51:in `expand'",
"/home/nicolas/.rvm/gems/ruby-2.1.1/gems/activerecord-4.0.5/lib/active_record/relation/predicate_builder.rb:28:in `block in build_from_hash'",
"/home/nicolas/.rvm/gems/ruby-2.1.1/gems/activerecord-4.0.5/lib/active_record/relation/predicate_builder.rb:6:in `each'",
"/home/nicolas/.rvm/gems/ruby-2.1.1/gems/activerecord-4.0.5/lib/active_record/relation/predicate_builder.rb:6:in `build_from_hash'",
"/home/nicolas/.rvm/gems/ruby-2.1.1/gems/activerecord-4.0.5/lib/active_record/relation/query_methods.rb:906:in `build_where'",
"/home/nicolas/.rvm/gems/ruby-2.1.1/gems/activerecord-4.0.5/lib/active_record/relation/query_methods.rb:545:in `where!'",
"/home/nicolas/.rvm/gems/ruby-2.1.1/gems/activerecord-4.0.5/lib/active_record/relation/query_methods.rb:535:in `where'",
"/home/nicolas/.rvm/gems/ruby-2.1.1/gems/activerecord-4.0.5/lib/active_record/querying.rb:9:in `where'",
"(pry):29:in `block in __pry__'",
"(pry):17:in `rescue_me'",
"(pry):29:in `__pry__'",
"/home/nicolas/.rvm/gems/ruby-2.1.1/gems/pry-0.9.12.6/lib/pry/pry_instance.rb:328:in `eval'",
"/home/nicolas/.rvm/gems/ruby-2.1.1/gems/pry-0.9.12.6/lib/pry/pry_instance.rb:328:in `evaluate_ruby'",
"/home/nicolas/.rvm/gems/ruby-2.1.1/gems/pry-0.9.12.6/lib/pry/pry_instance.rb:278:in `re'",
"/home/nicolas/.rvm/gems/ruby-2.1.1/gems/pry-0.9.12.6/lib/pry/pry_instance.rb:254:in `rep'",
"/home/nicolas/.rvm/gems/ruby-2.1.1/gems/pry-0.9.12.6/lib/pry/pry_instance.rb:234:in `block (3 levels) in repl'",
"/home/nicolas/.rvm/gems/ruby-2.1.1/gems/pry-0.9.12.6/lib/pry/pry_instance.rb:232:in `loop'",
"/home/nicolas/.rvm/gems/ruby-2.1.1/gems/pry-0.9.12.6/lib/pry/pry_instance.rb:232:in `block (2 levels) in repl'",
"/home/nicolas/.rvm/gems/ruby-2.1.1/gems/pry-0.9.12.6/lib/pry/pry_instance.rb:231:in `catch'",
"/home/nicolas/.rvm/gems/ruby-2.1.1/gems/pry-0.9.12.6/lib/pry/pry_instance.rb:231:in `block in repl'",
"/home/nicolas/.rvm/gems/ruby-2.1.1/gems/pry-0.9.12.6/lib/pry/pry_instance.rb:230:in `catch'",
"/home/nicolas/.rvm/gems/ruby-2.1.1/gems/pry-0.9.12.6/lib/pry/pry_instance.rb:230:in `repl'",
"/home/nicolas/.rvm/gems/ruby-2.1.1/gems/pry-0.9.12.6/lib/pry/pry_class.rb:169:in `start'",
"/home/nicolas/.rvm/gems/ruby-2.1.1/gems/zeus-0.15.1/lib/zeus/rails.rb:134:in `console'",
"/home/nicolas/.rvm/gems/ruby-2.1.1/gems/zeus-0.15.1/lib/zeus.rb:148:in `block in command'",
"/home/nicolas/.rvm/gems/ruby-2.1.1/gems/zeus-0.15.1/lib/zeus.rb:135:in `fork'",
"/home/nicolas/.rvm/gems/ruby-2.1.1/gems/zeus-0.15.1/lib/zeus.rb:135:in `command'",
"/home/nicolas/.rvm/gems/ruby-2.1.1/gems/zeus-0.15.1/lib/zeus.rb:50:in `go'",
"-e:1:in `<main>'"]
I would appreciate someone giving me at least a clue on how to solve this.
from delayed_job_active_record.
It is still an issue with postgres_ext predicate builder. Please contact them for help.
from delayed_job_active_record.
Try updating to postgres_ext 2.3.0
from delayed_job_active_record.
Related Issues (20)
- Rails 6.1.0.alpha support HOT 3
- `Delayed::Job` no longer defined in initializers HOT 16
- Delayed::DeserializationError: Job failed to load: undefined class/module Spree::AccountSalesRecordMailer.
- undefined method `table_name=` for Delayed::Backend::ActiveRecord::Job:Class HOT 1
- 4.1.5 breaking changes HOT 5
- A way to get the job ID inside a worker? HOT 2
- Error in 4.1.5 when upgrading Rails from 6.0 to 6.1 HOT 2
- Job running on 2 workers at once after timeout HOT 1
- Delayed job stops, the jobs are stuck in postgres HOT 6
- Rails 7 Support HOT 9
- Use case for locked_by in the ready_to_run query HOT 1
- Use `update` instead of `update_all` in the reserve_with_scope_using_optimized_mysql method.
- Do that destroy_failed_jobs get honored by delayed_job?
- Problem with DelayedJob Psych gem when upgrading to Ruby 2.7.5 HOT 2
- Rails 7 weird error: can't dump anonymous module HOT 3
- Can't create Delayed::Job record after `errors.add` in model HOT 1
- How does max_attempts interface with ActiveJob retry_on method?
- Deprecation warning in rails 7.1 HOT 1
- Need a new release to support rails 7.1
- Don't optimize mysql query with trilogy gem
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from delayed_job_active_record.