iveは、resqueをherokuで動作させるようにしようとしています。開発モードで正常に動作させることができますが、herokuにプッシュしようとすると
Errno::ECONNREFUSED (Connection refused - Unable to connect to Redis on 127.0.0.1:6379):
次に読んでフォローしました http://blog.redistogo.com/2010/07/26/resque-with-redis-to-go/
サイトにリストされている構成を配置しましたが、次のエラーが発生しました
SocketError (getaddrinfo: nodename nor servname provided, or not known):
イニシャライザー/resque.rbを入れました
Resque.after_fork = Proc.new { ActiveRecord::Base.establish_connection }
ENV["redis://redistogo:[email protected]:9254/"] ||= "redis://heroku_username:heroku_password@Host:9254/"
uri = URI.parse(ENV["redis://redistogo:[email protected]:9254/"])
Resque.redis = Redis.new(:Host => uri.Host, :port => uri.port, :password => uri.password)
ただし、上記のエラーがスローされます。現在の開発モードでは、エラーも発生します。
herokuユーザー名(herokuのアドオンを使用)を使用し、パスワードをherokuに入力し、ポートを9254に変更しようとしましたが、ソケットエラーが発生し続けます。私は何が間違っているのですか?
助けていただければ幸いです。ありがとうございました
更新。
@kevin
私は試した
uri = URI.parse(ENV["my_url_string"] || "redis://localhost:9254/" )
REDIS = Redis.new(:Host => uri.Host, :port => uri.port, :password => uri.password)
initializer/redis.rbでも同様ですが、次のエラーが発生します
Errno::ECONNREFUSED (Connection refused - Unable to connect to Redis on 127.0.0.1:6379):
エラーの数値、つまり127.0.0.1:6379は重要ですか? iveは私のredisguiアプリをチェックし、herokuconfigから私のポート番号が9254であることを確認しました
REDISTOGO_URL => redis://redistogo:[email protected]:9254/
他の構成設定はありましたか?助けてくれてありがとう!
最終更新。
それを私が直した。信じられない!私の完全な解決策は
uri = URI.parse(ENV["REDISTOGO_URL"])
REDIS = Redis.new(:Host => uri.Host, :port => uri.port, :password => uri.password)
Resque.redis = REDIS
逐語的に。 herokuがすでにURLを設定しようとしているので、URLを明示的に設定しなくても機能します
私のセットアップでは、次の行を含む/config/initializers/redis.rb
があります。
uri = URI.parse(ENV["REDISTOGO_URL"] || "redis://localhost:6379/" )
REDIS = Redis.new(:Host => uri.Host, :port => uri.port, :password => uri.password)
私のREDISTOGO_URL
は私のheroku構成で定義されています。次のように入力することで、それを検証できるはずです。
heroku config --app my_app
出力にREDISTOGO_URL
の値が表示されます
REDISTOGO_URL
をRedisToGoから直接コピーする必要があります。 herokuのインスタンスに移動し、[アドオン]-> [Redis ToGo]をクリックして見つけます。
ここにいくつかの指針があります:
それを私が直した。信じられない!私の完全な解決策は
uri = URI.parse(ENV["REDISTOGO_URL"])
REDIS = Redis.new(:Host => uri.Host, :port => uri.port, :password => uri.password)
Resque.redis = REDIS
逐語的に。 herokuがすでにURLを設定しようとしているので、URLを明示的に設定しなくても機能します
同じことを取得したので、基本的にSidekiqはvarsからREDISCLOUD_URLを取得していませんでしたが、REDIS_PROVIDERを取得していました。
heroku config:set REDIS_PROVIDER=REDISCLOUD_URL
それは魅力のように機能しました。