【问题标题】:Delayed_job: Job failed to load: uninitialized constant Syck::SyckDelayed_job:作业加载失败:未初始化的常量 Syck::Syck
【发布时间】:2011-03-20 07:11:08
【问题描述】:

这是错误:

>> Delayed::Job.find(:last).last_error
=> {Job failed to load: uninitialized constant Syck::Syck. Handler: \"--- !ruby/struct:Delayed::PerformableMethod \\nobject: &id007 !ruby/object:TryController \\n  _action_name: create

但我安装了 syck ext。

用法:

def create_user(name,pass,time)
  puts "hello"
  Net::HTTP.get(URI.parse("http://www.example.net/buildtest.php?hao=#{name}&mi=#{pass}&da=#{time}"))
end

def create
   delay.create_user("nihao000oei9","1","1")
end

gem 'delayed_job', '2.1.4'

ruby 1.9.2p0(2010-08-18 修订版 29036)[x86_64-darwin10.4.0]

Rails 3.0.1

谢谢。

【问题讨论】:

  • 什么是`Syck::Syck。 Handler`是一颗宝石。确保将它包含在构建器或 config.rb 文件中。更不用说你需要安装插件/gem,除非它是不同的。
  • 我以前从未听说过 Syck。当我收到错误时,我将 require 'syck' 添加到 config.rb。但错误总是。
  • 您使用的是哪个版本的 Ruby?
  • ruby 1.9.2p0(2010-08-18 修订版 29036)[x86_64-darwin10.4.0] 和 Rails 3.0.1
  • 我正在尝试使用它来延迟使用以下代码发送电子邮件:mail.delivery_method.delay.deliver!(mail) 我得到完全相同的错误...

标签: ruby ruby-on-rails-3 delayed-job


【解决方案1】:

当我从 Rails 2 升级到 3 并部署到 Heroku Cedar 堆栈时,我发现这是一个问题。当Delayed_Job 尝试从作业队列项中反序列化处理程序时,这是一个问题。默认情况下,它使用Syck YAML 解析器。

原来Syck 在 Heroku Cedar 堆栈上不可用。

包括Psych gem 并重新部署为我修复了它,并允许我重新调用失败的作业。

gem 'psych'

【讨论】:

    【解决方案2】:

    我刚刚遇到了这个问题,结果发现是我刚刚修改的 database.yml 中的语法错误。

    它对黄瓜使用了错误的参考:

    test: &test
      database: test
    
    cucumber:
      <<: &base
    

    【讨论】:

      猜你喜欢
      • 2011-07-07
      • 2011-11-21
      • 2011-05-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-20
      相关资源
      最近更新 更多