【问题标题】:Delayed Job error when using DataMapper as backend使用 DataMapper 作为后端时出现延迟作业错误
【发布时间】: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


【解决方案1】:

Github 上的stefanobernardi 给出了这个答案:

你需要 “active_support/core_ext”

我没有机会亲自尝试一下,看看它是否有效,因为我最终选择了 Resque,但我想我会继续发布这个答案,以防其他人遇到这个问题并且实际上想要一个解决方案。

【讨论】:

    猜你喜欢
    • 2013-06-10
    • 1970-01-01
    • 2014-05-09
    • 2013-09-23
    • 1970-01-01
    • 2012-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多