0

私はfbLikesを実行するDelayed::Jobを実行したいと思っていました(StackOverFlowにたくさん投稿していますが、まだ問題を解決していません)私のテーブルnデータベースには、名前、id、fbLikes、fbId、urlがあります。これが私のプログラムのステップです。[ホームページ]会社リスト->会社の作成[会社情報の挿入]->fbId、名前、ID、URLを保存しますが、FBLIKESではありません->ホームページにリダイレクトします[after_save前に追加した会社のfbLikesを更新します]

モデルのfbLikesがまだ空白で、最新のfbLikesで更新されていないため、遅延したジョブが機能しているかどうかはわかりません。これを行うためのより良い方法があるかどうかはわかりません。「rakejobs:work」の場合、コンソールにバックグラウンドワークの表示はありません。

[モデルcompany.rb]

require "delayed_job"
require "count_job.rb"
after_save :fb_likes
def fb_likes    
    Delayed::Job.enqueue(CountJob.new(self.id))
end

[lib / count_job.rb]

require 'net/http'
require 'company.rb'

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

1 に答える 1

0

[モデルcompany.rb]

require "delayed_job"
require "count_job.rb"
after_save :fb_likes
def fb_likes    
    Delayed::Job.enqueue(CountJob.new(self.id))
end

[lib / count_job.rb]

require 'net/http'
require 'company.rb'

class CountJob < Struct.new(:id)        
  def perform
    @company = Company.find(id)
    uri = URI("http://graph.facebook.com/#{@company.fbId}")
    data = Net::HTTP.get(uri)
    @company.fbLikes= JSON.parse(data)['likes']
     @company.save!
   end
 end
于 2012-05-24T05:56:18.207 に答える