ruby-on-rails - Rails 延迟作业和库类

标签 ruby-on-rails delayed-job

嘿,我们有一个库类(lib/Mixpanel),它调用延迟作业,如下所示:

class Mixpanel

  attr_accessor :options
  attr_accessor :event

  def track!()
   .. 
   dj = send_later :access_api # also tried with self.send_later
   ..
  end

  def access_api
   ..
  end

问题是当我们运行 rake jobs:work: 时,我们得到以下错误:
undefined method `access_api' for #<YAML::Object:0x24681b8>

知道为什么吗?

最佳答案

Delayed_job 总是自动加载 ActiveRecord 类,但它不知道它在数据库中作为 YML 编码的其他类型的类(如 lib)。因此,您需要为它们显式触发类加载器。由于 DJ 启动 Rails 环境,只需在初始化程序中提及任何非 AR 编码类:

(config/initializers/load_classes_for_dj.rb)

Mixpanel

关于ruby-on-rails - Rails 延迟作业和库类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2569396/

相关文章:

javascript - 预编译后 Jquery 不工作

ruby-on-rails - 延迟作业参数错误

ruby-on-rails - 如何使用 RSpec 测试 delay_job 回调 Hook

ruby-on-rails - 如何告诉特定的 Delayed::Job 在控制台中运行?

ruby-on-rails - 在 Docker 容器上设置 Rails 控制台,不接受任何输入

ruby-on-rails - Ruby on Rails 中的电子邮件验证?

ruby-on-rails - 当需要应用于整个应用程序时,如何在每个 Controller 中不重复 `before_filter` 代码?

ruby-on-rails - 我修复了一个失败的 rails 迁移,但为什么这个修复有效?

mysql - 当记录在 X 时间内未更新时通知用户

ruby-on-rails - delay_job进程被静默杀死