【问题标题】:How to use rails server and bot with procfile and foreman?如何使用带有 procfile 和工头的 Rails 服务器和机器人?
【发布时间】:2020-01-18 03:25:56
【问题描述】:

我正在尝试使用Procfilegem 'foreman' 在两个进程中运行我的rails serverslackbot

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

这是我的 Procfile :

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

【问题讨论】:

  • 你运行的工头命令是什么?
  • @Kris foreman start
  • 当您将浏览器指向localhost:3000(或任何端口)时会发生什么?
  • 当我尝试从邮递员那里触发 api 时,它返回一个错误 Could not get any response from server
  • 你确定你有正确的端口吗?尝试在 Procfile 中对其进行硬编码。

标签: ruby-on-rails ruby heroku foreman procfile


【解决方案1】:

听起来你可能需要指定端口,要么设置环境变量PORT

export PORT=3000
foreman start

或将端口硬编码到Procfile:

web: bundle exec rails server -p 3000

或删除-p 选项,在这种情况下将使用默认端口:

web: bundle exec rails server

【讨论】:

  • 当我对端口 3000 进行硬编码时,它在开发中就像一个魅力,但是当我将它推送到 heroku 时它不会启动。 heroku 是否使用不同的端口来运行应用程序?
  • 抱歉,不知道。那是一个不同的问题。
  • 我刚刚使用了-p $PORT,heroku 现在可以选择他们想要的端口了,谢谢。
  • 我猜 Heroku 设置了 PORT 环境变量。
  • 是的,我只是想在问题发生之前解决它。
【解决方案2】:

尝试以下配置:

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

然后运行foreman start -f Procfile(或者你添加的文件名)

访问:http://localhost:3000

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

【讨论】:

  • 当我硬编码 3000 时,我的服务器正在运行,但应用程序在 heroku 中无法运行。我猜 heroku 使用不同的端口来托管应用程序你知道它是哪个端口吗?
猜你喜欢
  • 2017-05-24
  • 1970-01-01
  • 2021-03-15
  • 2015-02-24
  • 1970-01-01
  • 1970-01-01
  • 2016-06-05
  • 1970-01-01
  • 2019-08-16
相关资源
最近更新 更多