2013-12-17 6 views
1

내가 Resque와 레디 스 - 투 - 이동 서버에 내 레일 응용 프로그램을 연결하기 위해 노력하고있어하지만 난 오류 뻥 :레디 스/Resque [오류는 로컬 호스트에서 레디 스에 연결 : 6379 (ECONNREFUSED)]

Error connecting to Redis on localhost:6379 (ECONNREFUSED) 

가능한 많은 솔루션을 시도했지만 그 중 하나는 효과가있었습니다. 나는 모든 지시를 따르지만 HERE 아무 것도.

redis.rb

ENV["REDISTOGO_URL"] ||= "redis://redistogo:[email protected]:9408/" 
uri = URI.parse(ENV["REDISTOGO_URL"]) 
REDIS = Redis.new(:host => uri.host, :port => uri.port, :password => uri.password) 

resque.rb

Resque.redis = REDIS 
Dir["#{Rails.root}/app/workers/*.rb"].each { |file| require file } 


Resque.before_fork do 
    defined?(ActiveRecord::Base) and 
    ActiveRecord::Base.connection.disconnect! 
end 

Resque.after_fork do 
    defined?(ActiveRecord::Base) and 
    ActiveRecord::Base.establish_connection 
end 

그리고 레이크 파일 :

require 'rake/dsl_definition' 
require 'resque/tasks' 


task "resque:setup" => :environment do 
    ENV['QUEUE'] ||= '*' 
    Resque.before_fork do 
     defined?(ActiveRecord::Base) and 
     ActiveRecord::Base.connection.disconnect! 
    end 

    Resque.after_fork do 
     defined?(ActiveRecord::Base) and 
     ActiveRecord::Base.establish_connection 
    end 
end 

namespace :resque do 
    desc "let resque workers always load the rails environment" 
    task :setup => :environment do 
    ENV['QUEUE'] ||= '*' 
    Resque.before_fork = Proc.new { ActiveRecord::Base.establish_connection } 
    end 

    desc "kill all workers (using -QUIT), god will take care of them" 
    task :stop_workers => :environment do 
    pids = Array.new 

    Resque.workers.each do |worker| 
     pids << worker.to_s.split(/:/).second 
    end 

    if pids.size > 0 
     system("kill -QUIT #{pids.join(' ')}") 
    end 

    # god should handle the restart 
    end 
end 

desc "Alias for resque:work (To run workers on Heroku)" 
task "jobs:work" => "resque:work" 
,691

나는이 초기화가

많은 코드가 추가되었으므로 지금은 조금 추한 것입니다.하지만 redis-to-go를 사용하기 전에 다른 configs와 함께 로컬에서이 코드를 사용하고 있지만 지금은 heroku에 배포하고 싶습니다. 문제가 시작됩니다. c.

PS

내가하려고하면 수동으로 작동 레디 스에 도착/삽입! (레일 콘솔)

irb(main):001:0> REDIS.set("foo", "bar") 
=> "OK" 
irb(main):002:0> REDIS.get("foo") 
=> "bar" 

답변

0

Redis.new 사용하십시오 (URL을 : REDIS_URL) 구문보다는 URI.parse

if Rails.env == 'production' 
    $redis = Redis.new(url: ENV["REDISCLOUD_URL"]) 
else 
    $redis = Redis.new 
end 
+0

을 내가 URL을 생각 : 변경하지 않을 것이다? 나는 "put"# {REDIS} "를 사용하고 인스턴스에 값이 있기 때문에"$ "문자와 약간 혼동을 느낍니다? @noah – FxckDead