Могу ли я использовать два языка в приложении Heroku?
Я хочу использовать Node.js в качестве сервера Share.js и Ruby для интерфейса. Насколько я знаю, Heroku разрешает только один веб-процесс, называемый "web". У кого-нибудь есть опыт, пытающийся сделать что-то вроде этого?
Нет, Heroku обнаруживает тип приложения, когда вы нажимаете свой код на Heroku, и он компилирует слизню. Вам нужно будет иметь их как отдельные приложения с определенным API между ними (не всегда плохо)
UPDATE: вы можете "складывать" buildpacks в наши дни, например Ruby + PHP, чтобы вы могли выполнить оба. См. https://devcenter.heroku.com/articles/using-multiple-buildpacks-for-an-app для использования нескольких сборных пакетов в одном приложении.
Как предостережение, вы технически можете установить два языка в одном приложении, но я не уверен, что они будут запускать их одновременно. Я сделал этот buildpack для объединения NodeJS и PHP (чтобы я мог запускать Grunt во время компиляции):
https://github.com/gcpantazis/heroku-buildpack-php-gruntjs
Обнаружение языка обычно довольно глупые; он будет искать файл, указывающий на язык, т.е. index.php или rakefile. Вам нужно будет изменить детектирующий ящик, чтобы ваш код прошел.
Update:
Еще лучше подумайте, используя https://github.com/ddollar/heroku-buildpack-multi; это позволит вам последовательно устанавливать buildpacks. В зависимости от вашего приложения вам может потребоваться найти языковые пакеты, которые не имеют этапов проверки, т.е. Проверка файла package.json
в приложении NodeJS.
Да, в основном я могу полагать, если вы не делаете что-то очень сложное. Я однажды развернул приложение Flask (Python), которое использовало Stanford CoreNLP - все это написано на Java. Вам понадобится heroku-buildpack-multi.
После добавления этого файла обязательно создайте файл .buildbacks
и добавьте все сборки, которые вам понадобятся из Heroku github.
Это обходит Heroku, обнаруживая ваш тип приложения и устанавливает все необходимые сборки из файла .buildpacks
.