gpt4 book ai didi

ruby-on-rails - Heroku Cedar 上的 Resque 无法正常工作

转载 作者:可可西里 更新时间:2023-11-01 11:13:58 28 4
gpt4 key购买 nike

几天来我一直在试图找出问题所在,但没有成功,我在 Heroku Cedar 上运行 Rails 3.1.3 with Unicorn 并使用 Resque 1.20 进行后台作业。

添加了 Redis 附加组件并设置了 REDISTOGO_URL,我将 resque.rb 初始化程序设置为

require 'resque'
Resque.after_fork = Proc.new { ActiveRecord::Base.establish_connection }

uri = URI.parse(ENV["REDISTOGO_URL"])
REDIS = Redis.new(:host => uri.host, :port => uri.port, :password => uri.password)
Resque.redis = REDIS

我也试过

Resque.redis = Redis.connect(:url => ENV['REDISTOGO_URL'])

还有这个,来自RedisToGo官方网站

ENV["REDISTOGO_URL"] ||= "redis://username:password@host:1234/"

uri = URI.parse(ENV["REDISTOGO_URL"])
Resque.redis = Redis.new(:host => uri.host, :port => uri.port, :password => uri.password, :thread_safe => true)

Heroku worker 作为:

bundle exec rake resque:work QUEUE='*'

在本地和 Heroku 控制台中一切正常;但是当我尝试从 Rails 排队时

Resque.enqueue(EmailQueue, id)

我明白了

NoMethodError (undefined method `sadd' for nil:NilClass):

如有任何帮助,我们将不胜感激,谢谢。

最佳答案

想通了,因为我在 unicorn 上;我必须如下设置 config/unicorn.rb 以连接或 Redis。

after_fork do |server, worker|
# Replace with MongoDB or whatever
if defined?(ActiveRecord::Base)
ActiveRecord::Base.establish_connection
Rails.logger.info('Connected to ActiveRecord')
end

# If you are using Redis but not Resque, change this
if defined?(Resque)
Resque.redis = ENV['REDISTOGO_URL']
Rails.logger.info('Connected to Redis')
end
end

希望这对其他人有帮助。

关于ruby-on-rails - Heroku Cedar 上的 Resque 无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10968098/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com