【问题标题】:Ruby on Rails - Delayed job in modelRuby on Rails - 模型中的延迟作业
【发布时间】:2012-04-22 09:02:43
【问题描述】:

我需要做一个延迟的工作来计算模型中的 fbLikes,但我有“未定义的 send_later() 方法”的错误报告。有什么方法可以对模型中的 fb_likes 函数进行延迟工作吗?

===============================最新================ ====================================

这是我项目中的最新代码。还是一样,fb_likes 不显示点赞数。

[Company.rb]-模型

require "delayed_job"
require "count_job.rb"

class Company < ActiveRecord::Base

before_save :fb_likes

    def fb_likes            
        Delayed::Job.enqueue(CountJob.new(self.fbId))
    end     
 end

[config/lib/count_job.rb]

class CountJob<Struct.new(:fbId)
def perform 
    uri = URI("http://graph.facebook.com/#{fbId}")
    data = Net::HTTP.get(uri)
    self.fbLikes = JSON.parse(data)['likes']
end
end

[控制器]

 def create 
    @company = Company.new(params[:company])

    if @company.save!
        flash[:success] = "New company successfully registered."
   ----and other more code----

【问题讨论】:

  • 您现在描述的错误与以前不同。请为未定义的 send_later 添加堆栈跟踪(不应调用此方法)
  • 你的工作也分配给self.fbLikes,它不存在。您不能在作业类上保存任何数据,应该将类似的数据存储在有用的地方。

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


【解决方案1】:

默认情况下不需要库文件。

  1. 将作业文件重命名为count_job.rb。使用 camelCase 命名文件名很疯狂,而且会以不可预知的方式烧毁你。
  2. 创建一个初始化器并添加require 'count_job.rb'

【讨论】:

  • 我已经重命名了,但问题还是一样。我在帖子中添加了最新代码。
  • 我花了好几个小时来解决这个问题。我发现延迟的工作在找不到工人阶级时默默地从数据库中删除工作。在初始化程序中添加 require 语句解决了这个问题。谢谢!
【解决方案2】:

一种方法是创建一个单独的工作人员,该工作人员将排队,运行以获取更新的模型并在其上调用其 fb_likes 方法,但该方法需要公开。或者将逻辑带入worker本身。

【讨论】:

  • 你能给我看一个更可靠的例子吗?我想我会误解一些东西...谢谢..
  • 您的代码对我来说似乎很好... lib 目录在您的自动加载路径中吗? config.autoload_paths
  • 我已经输入了 require 'countJob' 并且它不会输出错误但我的 fb_likes 没有输出 facebook 的点赞(似乎该功能无法运行)
  • 抱歉回复晚了。你需要告诉 Rails 在你的 lib 目录中包含自动加载的类,否则 Rails 不会加载这些类:stackoverflow.com/questions/3356742/…
  • 将 config.autoload_paths += Dir["#{config.root}/lib/**/"] 复制到 config/application.rb 中?它仍然无法工作...我还复制了 config.autoload_paths += %W(#{config.root}/extras) 我需要再次捆绑安装吗?
猜你喜欢
  • 1970-01-01
  • 2013-05-01
  • 2013-03-05
  • 2017-11-09
  • 1970-01-01
  • 2020-09-03
  • 1970-01-01
  • 2012-04-20
  • 2012-11-05
相关资源
最近更新 更多