我可以在Heroku应用程序中使用两种语言吗?

时间:2012-03-13 18:43:12

标签: ruby node.js heroku

我想将Node.js用作Share.js服务器,将Ruby用作前端。据我所知,Heroku只允许一个面向Web的进程称为“web”。有没有人有尝试这样做的经验?

3 个答案:

答案 0 :(得分:9)

不,当您将代码推送到Heroku时,Heroku会检测应用程序类型并编译slug。您需要将它们作为单独的应用程序,并在两者之间定义API(并不总是坏事)

更新:这些天你可以'堆叠'构建包,例如Ruby + PHP,这样你就可以同时执行。有关如何在同一个应用程序中使用多个buildpack的信息,请参阅https://devcenter.heroku.com/articles/using-multiple-buildpacks-for-an-app

答案 1 :(得分:3)

作为一个警告,您在技术上可以在一个应用程序上安装两种语言 - 但我不确定是否同时运行它们。我创建了这个buildpack来组合NodeJS和PHP(这样我就可以在slug编译期间运行Grunt):

https://github.com/gcpantazis/heroku-buildpack-php-gruntjs

语言检测通常相当愚蠢;它将寻找一个指示lang的文件,即index.php或rakefile。您必须更改检测箱,以便您的代码通过。

<强>更新

更好的是,考虑使用https://github.com/ddollar/heroku-buildpack-multi;它会让你按顺序安装buildpacks。根据您的应用程序,您可能需要查找没有验证步骤的语言构建包,即在NodeJS应用程序中检查package.json文件。

答案 2 :(得分:1)

是的,只要你没有做一些非常棘手的事情,我相信它主要是 。我曾经部署了一个使用斯坦福的CoreNLP的Flask(Python)应用程序 - 它都是用Java编写的。您需要heroku-buildpack-multi

添加此内容后,请务必制作.buildbacks文件并添加Heroku github所需的所有构建包。

这避免了Heroku检测您的应用类型本身并使其从.buildpacks文件安装所有必需的构建包。