【发布时间】:2011-02-20 17:09:45
【问题描述】:
我在使用 DataMapper 作为延迟作业的后端时收到一个奇怪的错误。我目前正在使用以下宝石:
delayed_job, 2.1.0.pre2
delayed_job_data_mapper, 1.0.0.rc
根据此处的说明:
https://github.com/collectiveidea/delayed_job_data_mapper
我可以成功运行
Delayed::Worker.backend = :data_mapper
Delayed::Worker.backend.auto_upgrade!
以及将对象排入数据库。但是,当我尝试运行 rake 任务来运行工作人员时,工作人员成功启动,但是在尝试决定要拉取哪些工作时,出现以下错误:
rake aborted!
expected a time or date, got Sun Feb 20 11:06:58 -0600 2011
这似乎是其他人之前在 Github 上报告的问题,但没有解决方案,而且票是几个月前的:
https://github.com/collectiveidea/delayed_job_data_mapper/issues#issue/1
[更新] 有人发布了 Github 问题的答案,我在此问题下方的答案中重复了该问题。
那么,我的问题是:有人解决了这个错误吗?还是有其他我不知道的 DataMapper + Delayed Job 的方法?
全耙迹:
expected a time or date, got Sun Feb 20 11:08:56 -0600 2011
/Library/Ruby/Gems/1.8/gems/activesupport-3.0.3/lib/active_support/duration.rb:94:in `sum'
/Library/Ruby/Gems/1.8/gems/delayed_job-2.1.0.pre2/lib/delayed/worker.rb:33:in `inject'
/Library/Ruby/Gems/1.8/gems/activesupport-3.0.3/lib/active_support/duration.rb:86:in `each'
/Library/Ruby/Gems/1.8/gems/activesupport-3.0.3/lib/active_support/duration.rb:86:in `inject'
/Library/Ruby/Gems/1.8/gems/activesupport-3.0.3/lib/active_support/duration.rb:86:in `sum'
/Library/Ruby/Gems/1.8/gems/activesupport-3.0.3/lib/active_support/duration.rb:69:in `until'
/Library/Ruby/Gems/1.8/gems/activesupport-3.0.3/lib/active_support/core_ext/time/calculations.rb:255:in `minus_without_coercion'
/Library/Ruby/Gems/1.8/gems/activesupport-3.0.3/lib/active_support/core_ext/time/calculations.rb:268:in `-'
/Library/Ruby/Gems/1.8/gems/delayed_job_data_mapper-1.0.0.rc/lib/delayed/backend/data_mapper.rb:35:in `find_available'
/Library/Ruby/Gems/1.8/gems/delayed_job-2.1.0.pre2/lib/delayed/worker.rb:172:in `reserve_and_run_one_job'
/Library/Ruby/Gems/1.8/gems/delayed_job-2.1.0.pre2/lib/delayed/worker.rb:101:in `work_off'
/Library/Ruby/Gems/1.8/gems/delayed_job-2.1.0.pre2/lib/delayed/worker.rb:100:in `times'
/Library/Ruby/Gems/1.8/gems/delayed_job-2.1.0.pre2/lib/delayed/worker.rb:100:in `work_off'
/Library/Ruby/Gems/1.8/gems/delayed_job-2.1.0.pre2/lib/delayed/worker.rb:75:in `start'
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/benchmark.rb:308:in `realtime'
/Library/Ruby/Gems/1.8/gems/delayed_job-2.1.0.pre2/lib/delayed/worker.rb:74:in `start'
/Library/Ruby/Gems/1.8/gems/delayed_job-2.1.0.pre2/lib/delayed/worker.rb:71:in `loop'
/Library/Ruby/Gems/1.8/gems/delayed_job-2.1.0.pre2/lib/delayed/worker.rb:71:in `start'
谢谢!
【问题讨论】:
-
我很想看看是否有人为此提出了解决方案,但与此同时,我决定使用 Resque 而不是 Delayed Job。设置和迁移我现有的延迟作业代码花了整整一个小时,而且由于它是 Redis,我不必担心它会堵塞我的主应用程序数据库。
标签: ruby datamapper delayed-job