ActionCable-5.2.2 не работает в nginx и ошибка разорванной трубы puma при использовании JRUBY 9.2.0 - PullRequest
0 голосов
/ 27 января 2019

Проект отлично работает на nginx и пассажире, но не работает с puma и nginx.

Вот ошибка puma (пока ошибки nginx нет):

warning: thread "Ruby-0-Thread-82: /home/deploy/app/current/vendor/bundle/jruby/2.5.0/gems/actioncable-5.2.2/lib/action_cable/connection/stream_event_loop.rb:75" terminated with exception (report_on_exception is true):


ArgumentError: mode not supported for this object: r
         register at org/nio4r/Selector.java:123
  block in attach at /home/deploy/app/current/vendor/bundle/jruby/2.5.0/gems/actioncable-5.2.2/lib/action_cable/connection/stream_event_loop.rb:31
     block in run at /home/deploy/app/current/vendor/bundle/jruby/2.5.0/gems/actioncable-5.2.2/lib/action_cable/connection/stream_event_loop.rb:93
             loop at org/jruby/RubyKernel.java:1418
              run at /home/deploy/app/current/vendor/bundle/jruby/2.5.0/gems/actioncable-5.2.2/lib/action_cable/connection/stream_event_loop.rb:86
   block in spawn at /home/deploy/app/current/vendor/bundle/jruby/2.5.0/gems/actioncable-5.2.2/lib/action_cable/connection/stream_event_loop.rb:75

Вот конфигурации на данный момент:

nginx / sites_enabled / sitetest.com

upstream puma {
  server unix:///tmp/my_app-puma.sock;
}

server {
    listen 80;
    server_name sitetest.com;


    location ^~ /assets/ {
      gzip_static on;
      expires max;
      add_header Cache-Control public;
    }

    try_files $uri/index.html $uri @puma;
    location @puma {
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header Host $http_host;
      proxy_redirect off;

      proxy_pass http://puma;
    }

    location /cable {
      proxy_pass http://puma;
      proxy_http_version 1.1;
      proxy_set_header Upgrade $http_upgrade;
      proxy_set_header Connection "Upgrade";
    }

    error_page 500 502 503 504 /500.html;
    client_max_body_size 10M;
    keepalive_timeout 10;
}

Production.rb

config.action_cable.url = 'wss://sitetest.com/cable'
config.action_cable.allowed_request_origins = [ 'https://sitetest.com' ]

Журналы консоли Rails:

 Started GET "/cable/" [WebSocket] for 103.10.28.154 at 2019-01-27 18:10:10 +0000
 Successfully upgraded to WebSocket (REQUEST_METHOD: GET, HTTP_CONNECTION: Upgrade, HTTP_UPGRADE: websocket)
 WebSocket error occurred: Broken pipe -

Это должно быть связано с Ошибка аргумента в ActionCable Ссылка предлагает обновить gem nio4r до 2.2 или выше, но в actioncable 5.2.2 используется nio4r 2.0.

...