web-dev-qa-db-ja.com

接続できないherokuにredisをデプロイする

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を明示的に設定しなくても機能します

19
Sasha

私のセットアップでは、次の行を含む/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]をクリックして見つけます。

ここにいくつかの指針があります:

  1. 上で示したように、コマンドラインからheroku構成にREDIS_TO_GOURLがあることを確認します。
  2. REDIS_TO_GO URLが、[アドオン]-> [Redis ToGo]構成でそのインスタンスに割り当てられているものと同じであることを確認します。
40
Kevin Bedell

それを私が直した。信じられない!私の完全な解決策は

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

逐語的に。 herokuがすでにURLを設定しようとしているので、URLを明示的に設定しなくても機能します

15
Sasha

同じことを取得したので、基本的にSidekiqはvarsからREDISCLOUD_URLを取得していませんでしたが、REDIS_PROVIDERを取得していました。

heroku config:set REDIS_PROVIDER=REDISCLOUD_URL

それは魅力のように機能しました。

11
Franzé Jr.