私は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