Я знаю, что есть много похожих вопросов, связанных с этой темой, но у меня есть проблема, на которую я не могу найти предыдущий ответ.
Мой код на Ruby on Rails не очень хорош, но я следовал учебному пособию для ActionCable, которое включает развертывание в Heroku. Мне легко удалось заставить его работать на моем локальном компьютере (localhost: 3000), однако при развертывании на Heroku функция ActionCable не работает.
В журналах нет сообщений об ошибках, и я открыл сетевую панель в своем браузере и сравнил результаты моего локального сайта и сайта Heroku, которые закодированы и выглядят одинаково. На панели локальной сети при перезагрузке страницы появляется запрос, называемый «кабель». Я предполагаю, что это запрос ActionCable, поскольку он не отображается на панели сети моего веб-сайта Heroku.
У меня установлен Redis-to-go на моем сайте Heroku, и вот часть кода, который, я надеюсь, поможет. (Адрес сайта был изменен на my-website для размещения на SO)
production.rb
Rails.application.configure do
ActionCable.server.config.disable_request_forgery_protection = true
config.action_cable.url = "wss://my-website.herokuapp.com/cable"
config.web_socket_server_url = "wss://my-website.herokuapp.com/cable"
config.action_cable.allowed_request_origins = ['https://my-website.herokuapp.com', 'http://my-website.herokuapp.com']
...
end
development.rb
Rails.application.configure do
config.action_cable.url = "ws://localhost:3000/cable"
...
end
cable.yml
development:
adapter: async
test:
adapter: async
production:
adapter: redis
url: redis://redistogo:3d45015b67ecc78822bc97ba8124efb7@spinyfin.redistogo.com:10128/
Если вам нужны дополнительные файлы или информация, просто спросите. Я надеюсь, что вы можете помочь.