ruby-on-rails ruby-on-rails-3 heroku redis resque

ruby on rails - Resque, servidor Resque, en RedisToGo con Heroku



ruby-on-rails ruby-on-rails-3 (1)

Creo que su Procfile tiene un error tipográfico. ¿Por qué tienes dos procesos web ? Me quedaría con uno y usar unicornio .

web: bundle exec unicorn -p $PORT -c ./config/unicorn.rb

Cuando se usa unicornio con resque , debe definir la conexión resque redis cada vez que se forme el unicornio . Aquí están los archivos relevantes.

config / initializers / redis.rb

uri = URI.parse(ENV["REDIS_WORKER"]) REDIS_WORKER = Redis.new(host: uri.host, port: uri.port, password: uri.password)

config / initializers / resque.rb

Resque.redis = REDIS_WORKER

config / unicorn.rb

before_fork do |server, worker| if defined?(Resque) Resque.redis.quit Rails.logger.info("Disconnected from Redis") end end after_fork do |server, worker| if defined?(Resque) Resque.redis = REDIS_WORKER Rails.logger.info("Connected to Redis") end end

Vea esta esencia para el unicornio completo.rb

He intentado obtener Resque (con el servidor de Resque) y RedisToGo trabajando en heroku (cedro) por un tiempo, pero sigo encontrando este error:

Redis::CannotConnectError (Error connecting to Redis on 127.0.0.1:6379 (ECONNREFUSED)):

Está funcionando localmente, y puedo acceder a redis sin problemas en la consola de Heroku para mi aplicación.

My Procfile tiene:

web: bundle exec thin start -p $PORT -e $RACK_ENV web: bundle exec unicorn -p $PORT -c ./config/unicorn.rb resque: env TERM_CHILD=1 RESQUE_TERM_TIMEOUT=10 bundle exec rake resque:work

Mi Gemfile tiene:

gem ''redis'' #Background queue gem ''resque'', ''~> 1.22.0'', :require => "resque/server"

lib / tasks / resque.rake:

require ''resque/tasks'' task "resque:setup" => :environment do ENV[''QUEUE''] = ''*'' end desc "Alias for resque:work (To run workers on Heroku)" task "jobs:work" => "resque:work"

routes.rb:

mount Resque::Server.new, :at => "/resque"

inicializadores: redis.rb:

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

resque.rb:

Dir["#{Rails.root}/app/workers/*.rb"].each { |file| require file } Resque.after_fork = Proc.new { ActiveRecord::Base.establish_connection }

luego en mi directorio de aplicaciones / trabajadores tengo algo como myjob.rb

Siento que voy en círculos aquí, ¿alguna idea?