Развертывание приложения Ruby on Rails в Heroku с использованием Action Cable (прослушивание порта Puma)
У меня есть Action Cable, работающий в локальной среде хоста, и в этой ситуации я запускаю сервер Puma, используя простой файл, содержащий
# /bin/bash
bundle exec puma -p 28080 cable/config.ru
Как только это происходит, сервер puma запускается и прослушивает этот порт 28080 и порт, на котором работает локальный сервер. Во время охоты в Интернете я не смог найти место, которое бы подсказывало мне способ подражать этому на heroku или способ, чтобы мой сервер всегда запускался на одном и том же порту (хотя я не знаю, даст ли это мне желаемый результат либо )
У меня есть файл JavaScript, настроенный для создания потребителя, связанного с этим портом.
//= require cable
//= require_self
//= require_tree .
this.App = {};
App.cable = Cable.createConsumer('ws://127.0.0.1:28080');
Я предполагаю, что мне нужно будет также изменить часть 127.0.0.1, чтобы развертывание на heroku работало, но я не уверен. Я попытался отрезать деталь 28080 и заменить ее на ENV ['PORT'], но там говорилось, что это неизвестная переменная, хотя у меня настроен файл puma.rb, порт которого настроен как
... (only part of the file)
rackup DefaultRackup
port ENV['PORT'] || 3000
environment ENV['RACK_ENV'] || 'development'
...
Поэтому мне показалось, что ENV ['PORT'] определяется так, как когда я проверяю логи heroku, сервер puma будет
2015-07-26T06:50:25.278030+00:00 heroku[web.1]: Starting process with command `bin/rails server -p 48875 -e production`
2015-07-26T06:50:30.760680+00:00 app[web.1]: => Booting Puma
2015-07-26T06:50:30.760714+00:00 app[web.1]: => Rails 4.2.1 application starting in production on http://0.0.0.0:48875
2015-07-26T06:50:30.760716+00:00 app[web.1]: => Run `rails server -h` for more startup options
2015-07-26T06:50:30.760718+00:00 app[web.1]: => Ctrl-C to shutdown server
2015-07-26T06:50:31.578843+00:00 app[web.1]: Puma 2.12.2 starting...
2015-07-26T06:50:31.578851+00:00 app[web.1]: * Min threads: 0, max threads: 16
2015-07-26T06:50:31.578859+00:00 app[web.1]: * Environment: production
2015-07-26T06:50:31.578861+00:00 app[web.1]: * Listening on tcp://0.0.0.0:48875
Я прошу прощения, если что-то неясно, и был бы рад предоставить дополнительную информацию, если я что-то пропустил.
РЕДАКТИРОВАТЬ
Вот обновленный код в /app/assets/javascripts/channels/index.js.erb
//= require cable
//= require_self
//= require_tree .
this.App = {};
App.cable = Cable.createConsumer('<%= ENV["CABLE_SERVER"] %>');
где ENV ["CABLE_SERVER"] указывает наws://the-action-cable-server.herokuapp.com
, Эта переменная хранится в переменных env сервера rails.