2015年10月29日木曜日

Heroku + Resque + Redis Cloud とても苦労した

何日か唸ってようやく動きました。

なんかresqueのバージョンだとによっても設定が違うみたいなので、1例としてみてください。
Herokuに、Redis Cloudを使っています。
最終的には、Procfileの赤字部分の書き方で詰まっていたようでした。

Gemfile
gem 'rails', '4.2.3'
gem "resque"
gem 'redis'

config/environments/production.rb
config.x.resque.redis = ENV["REDISCLOUD_URL"]

Procfile
resque: env TERM_CHILD=1 QUEUE=* bundle exec rake environment resque:work

config/initializers/redis.rb
if ENV["REDISCLOUD_URL"]
  $redis = Resque.redis = Redis.new(:url => ENV["REDISCLOUD_URL"])
end

config/initializers/load_resque.rb
require 'resque'
Resque.redis = Rails.configuration.x.resque.redis

キューに放り込むところ
Resque.enqueue(Test:: Updatetables, article.id)

実行ファイル
module Test
  class Updatetables
    @queue = :default
    def self.perform(id)
      article = Article.find_by(id: id)
      article.save
    end
  end
end