2017-05-14 10 views
0

Redisに接続しているときにHerokuがエラーを返します。私はメッセージングサイトにアクションケーブルを使用していますが、ローカル開発ではFINEが動作します。Rails 5のエラーがHerokuのRedisに接続中

私は私production.rbにこれを追加RedisToGo

を使用しています:

config.middleware.use ChatActionCable 
config.web_socket_server_url = "wss://my-app-name-here.herokuapp.com/cable" 
config.action_cable.allowed_request_origins = ['https://my-app-name-here.herokuapp.com', 'http://my-app-name-here.herokuapp.com'] 

ChatActionCablethisガイドに従いながら、私が追加私のミドルウェアchat_action_cable.rbを指します。ここでそのコードは次のとおりです。

class ChatActionCable < ActionCable::Connection::WebSocket 
    def initialize(app, options={}) 
    @app = app 
end 

    def call(env) 
    if ::WebSocket::Driver.websocket?(env) 
     ActionCable.server.call(env) 
    else 
     @app.call(env) 
    end 
    end 
end 

は私initializers/redis.rb

uri = URI.parse(ENV["REDISTOGO_URL"] || "redis://localhost:6379/") 
REDIS = Redis.new(:url => uri) 

私cable.yml:ここ

development: 
    adapter: async 

test: 
    adapter: async 

production: &production 
    :adapter: redis 
    :url: redis://redistogo:<my-password-is-here>@barreleye.redistogo.com:11263/ 
    :host: barreleye.redistogo.com 
    :port: 11263 
    :password: <my-password> 
    :inline: true 
    :timeout: 1 

は、Herokuのからの完全なログです:

2017-05-14T04:26:46.393702+00:00 heroku[web.1]: State changed from starting to up 
2017-05-14T04:26:46.608962+00:00 app[web.1]: I, [2017-05-14T04:26:46.608852 #4] INFO -- : [4d655163-18cd-49dd-8847-2bd483872664] Started GET "/cable" for 73.96.114.190 at 2017-05-14 04:26:46 +0000 
2017-05-14T04:26:46.647328+00:00 app[web.1]: I, [2017-05-14T04:26:46.647233 #4] INFO -- : [4d655163-18cd-49dd-8847-2bd483872664] Started GET "/cable/" [WebSocket] for 73.96.114.190 at 2017-05-14 04:26:46 +0000 
2017-05-14T04:26:46.647431+00:00 app[web.1]: I, [2017-05-14T04:26:46.647368 #4] INFO -- : [4d655163-18cd-49dd-8847-2bd483872664] Successfully upgraded to WebSocket (REQUEST_METHOD: GET, HTTP_CONNECTION: Upgrade, HTTP_UPGRADE: websocket) 
2017-05-14T04:26:47.151764+00:00 heroku[router]: at=info method=GET path="/cable" host=teamgo.herokuapp.com request_id=4d655163-18cd-49dd-8847-2bd483872664 fwd="73.96.114.190" dyno=web.1 connect=0ms service=541ms status=101 bytes=194 protocol=https 
2017-05-14T04:26:47.147989+00:00 app[web.1]: I, [2017-05-14T04:26:47.147897 #4] INFO -- : Finished "/cable/" [WebSocket] for 73.96.114.190 at 2017-05-14 04:26:47 +0000 
2017-05-14T04:26:48.744259+00:00 app[web.1]: I, [2017-05-14T04:26:48.744149 #4] INFO -- : [cbddfc23-c1ec-4f35-ad62-6afbb846a1d3] Started GET "/cable" for 73.96.114.190 at 2017-05-14 04:26:48 +0000 
2017-05-14T04:26:48.745125+00:00 app[web.1]: I, [2017-05-14T04:26:48.745015 #4] INFO -- : [cbddfc23-c1ec-4f35-ad62-6afbb846a1d3] Started GET "/cable/" [WebSocket] for 73.96.114.190 at 2017-05-14 04:26:48 +0000 
2017-05-14T04:26:48.745237+00:00 app[web.1]: I, [2017-05-14T04:26:48.745168 #4] INFO -- : [cbddfc23-c1ec-4f35-ad62-6afbb846a1d3] Successfully upgraded to WebSocket (REQUEST_METHOD: GET, HTTP_CONNECTION: Upgrade, HTTP_UPGRADE: websocket) 
2017-05-14T04:26:48.851585+00:00 app[web.1]: Exiting 
2017-05-14T04:26:48.852553+00:00 app[web.1]: /app/vendor/bundle/ruby/2.3.0/gems/redis-3.3.3/lib/redis/client.rb:345:in `rescue in establish_connection': Error connecting to Redis on localhost:6379 (Errno::ECONNREFUSED) (Redis::CannotConnectError) 
2017-05-14T04:26:48.852558+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.3.0/gems/redis-3.3.3/lib/redis/client.rb:331:in `establish_connection' 
2017-05-14T04:26:48.852561+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.3.0/gems/redis-3.3.3/lib/redis/client.rb:101:in `block in connect' 
2017-05-14T04:26:48.852562+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.3.0/gems/redis-3.3.3/lib/redis/client.rb:293:in `with_reconnect' 
2017-05-14T04:26:48.852584+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.3.0/gems/redis-3.3.3/lib/redis/client.rb:100:in `connect' 
2017-05-14T04:26:48.852585+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.3.0/gems/redis-3.3.3/lib/redis/client.rb:276:in `with_socket_timeout' 
2017-05-14T04:26:48.852586+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.3.0/gems/redis-3.3.3/lib/redis/client.rb:133:in `call_loop' 
2017-05-14T04:26:48.852588+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.3.0/gems/redis-3.3.3/lib/redis/subscribe.rb:43:in `subscription' 
2017-05-14T04:26:48.852589+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.3.0/gems/redis-3.3.3/lib/redis/subscribe.rb:12:in `subscribe' 
2017-05-14T04:26:48.852591+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.3.0/gems/redis-3.3.3/lib/redis.rb:2765:in `_subscription' 
2017-05-14T04:26:48.852593+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.3.0/gems/redis-3.3.3/lib/redis.rb:2143:in `block in subscribe' 
2017-05-14T04:26:48.852595+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.3.0/gems/redis-3.3.3/lib/redis.rb:58:in `block in synchronize' 
2017-05-14T04:26:48.852608+00:00 app[web.1]: from /app/vendor/ruby-2.3.4/lib/ruby/2.3.0/monitor.rb:214:in `mon_synchronize' 
2017-05-14T04:26:48.852609+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.3.0/gems/redis-3.3.3/lib/redis.rb:58:in `synchronize' 
2017-05-14T04:26:48.852611+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.3.0/gems/redis-3.3.3/lib/redis.rb:2142:in `subscribe' 
2017-05-14T04:26:48.852618+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.3.0/gems/actioncable-5.0.1/lib/action_cable/subscription_adapter/redis.rb:75:in `block in listen' 
2017-05-14T04:26:48.852620+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.3.0/gems/redis-3.3.3/lib/redis/client.rb:293:in `with_reconnect' 
2017-05-14T04:26:48.852626+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.3.0/gems/redis-3.3.3/lib/redis.rb:64:in `block in with_reconnect' 
2017-05-14T04:26:48.852628+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.3.0/gems/redis-3.3.3/lib/redis.rb:58:in `block in synchronize' 
2017-05-14T04:26:48.852634+00:00 app[web.1]: from /app/vendor/ruby-2.3.4/lib/ruby/2.3.0/monitor.rb:214:in `mon_synchronize' 
2017-05-14T04:26:48.852650+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.3.0/gems/redis-3.3.3/lib/redis.rb:58:in `synchronize' 
2017-05-14T04:26:48.852652+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.3.0/gems/redis-3.3.3/lib/redis.rb:63:in `with_reconnect' 
2017-05-14T04:26:48.852654+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.3.0/gems/redis-3.3.3/lib/redis.rb:70:in `without_reconnect' 
2017-05-14T04:26:48.852665+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.3.0/gems/actioncable-5.0.1/lib/action_cable/subscription_adapter/redis.rb:72:in `listen' 
2017-05-14T04:26:48.852695+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.3.0/gems/actioncable-5.0.1/lib/action_cable/subscription_adapter/redis.rb:146:in `block in ensure_listener_running' 
2017-05-14T04:26:48.928202+00:00 heroku[web.1]: Process exited with status 1 
2017-05-14T04:26:48.859559+00:00 heroku[router]: at=info method=GET path="/cable" host=teamgo.herokuapp.com request_id=cbddfc23-c1ec-4f35-ad62-6afbb846a1d3 fwd="73.96.114.190" dyno=web.1 connect=1ms service=113ms status=101 bytes=174 protocol=https 
2017-05-14T04:26:48.940649+00:00 heroku[web.1]: State changed from up to crashed 
2017-05-14T04:26:56.135087+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/cable" host=teamgo.herokuapp.com request_id=e7bbe5e8-ed74-47ba-9da0-d58d08bd0a7e fwd="73.96.114.190" dyno= connect= service= status=503 bytes= protocol=https 

bundle exec rake middleware tを返す彼の:

use Rack::Sendfile 
use ActionDispatch::Static 
use ActionDispatch::Executor 
use ActiveSupport::Cache::Strategy::LocalCache::Middleware 
use Rack::Runtime 
use Rack::MethodOverride 
use ActionDispatch::RequestId 
use Sprockets::Rails::QuietAssets 
use Rails::Rack::Logger 
use ActionDispatch::ShowExceptions 
use WebConsole::Middleware 
use ActionDispatch::DebugExceptions 
use ActionDispatch::RemoteIp 
use ActionDispatch::Reloader 
use ActionDispatch::Callbacks 
use ActiveRecord::Migration::CheckPending 
use ActionDispatch::Cookies 
use ActionDispatch::Session::CookieStore 
use ActionDispatch::Flash 
use Rack::Head 
use Rack::ConditionalGet 
use Rack::ETag 
use Warden::Manager 
run BudgetTracker::Application.routes 

答えて

0

SOLUTIONrails issue #28362

にここに示したように、この問題は、この問題のピューマ側での作業の人々(puma issue #1189が)で修正を合併しているように見える5.0.1+ Railsの中で確認したバグです更新されたマスターとRails 5.0.3のリリース

UPDATE:私は、バグが実際には5.0.3で修正されたことを、Railsのv5.0.3を実行している新しいプロジェクトに私のプロジェクトを再作成した後に、確認することができます。このアプリケーションは、HerokuでAction CableとWeb Socket機能を正常に実装しています。私は人々がこの記事を見つけて、似たような問題があればこの答えを見てほしい。

0

あなたのRedisインスタンスで認証に失敗しているか、何らかの理由で届かないようです。 Railsコンソールにログインして手動でデバッグしようとしましたか?

config.middleware.useではなくconfig.middleware.insert_beforeを実行する必要がありますので、bundle exec rake middleware経由でミドルウェアスタックを見ていきます。

+0

私はRailsコンソールでデバッグを試みていません。私はまだレディスとアクションケーブルの新機能ですが、コンソールでこれをデバッグする方法についていくつかの提案をすることができますか?ミドルウェアについては、上記の記事を 'bundle exec rake middleware'と呼んだ結果で更新しました –

関連する問題