Ruby on rails 如何将rails服务器和机器人与procfile和foreman一起使用?

Ruby on rails 如何将rails服务器和机器人与procfile和foreman一起使用?,ruby-on-rails,ruby,heroku,foreman,procfile,Ruby On Rails,Ruby,Heroku,Foreman,Procfile,我试图使用Procfile和gem'foreman'在两个进程中运行我的rails服务器和slackbot 但是当我使用foreman start时,bot只是在运行,服务器没有启动。我尝试删除line bot并尝试仅运行web,但在这种情况下,我的服务器也没有启动,它只是显示了以pid 1502启动的。但是,当我从另一个带有rails s的终端启动它时,它不会出现任何问题。我在谷歌上搜索了很多,似乎找不到解决这个问题的方法。非常感谢你的帮助。谢谢 这是我的文件: web: bundle exe

我试图使用
Procfile
gem'foreman'
在两个进程中运行我的
rails服务器
slackbot

但是当我使用
foreman start
时,bot只是在运行,服务器没有启动。我尝试删除line bot并尝试仅运行web,但在这种情况下,我的服务器也没有启动,它只是显示了以pid 1502启动的
。但是,当我从另一个带有
rails s
的终端启动它时,它不会出现任何问题。我在谷歌上搜索了很多,似乎找不到解决这个问题的方法。非常感谢你的帮助。谢谢

这是我的文件:

web: bundle exec rails server -p $PORT
bot: rails runner -e development slackbot/slack.rb

请尝试以下配置:

web: bundle exec rails server -p 3000
bot: rails runner -e development slackbot/slack.rb
然后运行
foreman start-f Procfile
(或您添加的文件名)

访问:


通常,我喜欢使用screen命令在后台打开foreman流程,但这里不需要这样做。。。它看起来像:
screen foreman start-f Procfile
然后我可以单击ctrl+A+D分离,进程在后台运行。这对于SSH连接(例如EC2实例)非常有用。

听起来您可能需要指定端口,或者设置环境变量
端口

export PORT=3000
foreman start
或在
Procfile
中对端口进行硬编码:

web: bundle exec rails server -p 3000
或者删除
-p
选项,在这种情况下,将使用默认端口:

web: bundle exec rails server

您正在运行的foreman命令是什么?@Kris
foreman start
当您将浏览器指向
localhost:3000
(或任何端口)时会发生什么情况?当我尝试从postman启动api时,它返回一个错误
无法从服务器获得任何响应。您确定您的端口正确吗?尝试在Procfile中对其进行硬编码。当我对端口3000进行硬编码时,它在开发中就像一个符咒,但当我将它推到heroku时,它不会启动。heroku是否使用其他端口来运行应用程序?对不起,不知道。这是一个不同的问题。我刚刚使用了
-p$PORT
,heroku选择了他们想要的端口。谢谢。我猜heroku设置了端口环境变量。是的,我只是想在问题发生之前解决一个问题。当我硬编码3000时,我的服务器正在运行,但应用程序在heroku中不工作。我猜heroku使用不同的端口来承载应用程序。你知道它是哪个端口吗?