使用 AWS Elastic Beanstalk 部署 Rails ActionCable

Posted

技术标签:

【中文标题】使用 AWS Elastic Beanstalk 部署 Rails ActionCable【英文标题】:Deploying Rails ActionCable using AWS Elastic Beanstalk 【发布时间】:2016-09-18 07:09:33 【问题描述】:

我正在尝试在 AWS Elastic Beanstalk 上部署来自 DHH 的聊天演示。我已经按照这里的教程进行操作:https://keithpblog.wordpress.com/2015/12/30/rails-5-tutorial-chat-app-can-we-deploy-it 我已经设法将解决方案部署在单个实例中,并且 Redis 也启动并运行。但是当我尝试发布某些内容时,消息会保存在数据库中,但不会由 WebSocket 返回。我检查了 production.log 并且可以看到以下错误消息:

E, [2016-05-20T20:33:52.676577 #24281] 错误 -- : 出现异常 - Gem::LoadError(为 Action Cable pubsub 适配器指定了“redis”,但未加载 gem。添加gem 'redis' 到您的 Gemfile(并确保其版本是 Action Cable 要求的最低版本)。)

E,[2016-05-20T20:33:52.676826 #24281] 错误 -- : /opt/rubies/ruby-2.3.0/lib/ruby/gems/2.3.0/gems/actioncable-5.0.0 .rc1/lib/action_cable/server/configuration.rb:37:in `rescue in pubsub_adapter'

/opt/rubies/ruby-2.3.0/lib/ruby/gems/2.3.0/gems/actioncable-5.0.0.rc1/lib/action_cable/server/configuration.rb:34:in `pubsub_adapter'

我的 Gemfile 中也有: gem 'redis', '~>3.2'

有什么想法吗?谢谢!

【问题讨论】:

【参考方案1】:

我通过添加到我的 Gemfile 修复了错误:

gem 'em-hiredis'
gem 'redis'

我必须对 /environments/production.rb 进行另一项更改

config.action_cable.url = 'ws://url.com/cable'
config.action_cable.allowed_request_origins = ['http://url.com']

这样,我就在 Elastic Beanstalk 上启动并运行了 actioncable

【讨论】:

您好,您必须在 AWS 上进行外部配置吗?

以上是关于使用 AWS Elastic Beanstalk 部署 Rails ActionCable的主要内容,如果未能解决你的问题,请参考以下文章

AWS Elastic Beanstalk 上禁止使用 Django 403

AWS Elastic Beanstalk

使用 AWS CodeBuild 和 EB CLI 部署到 AWS Elastic Beanstalk

Elastic Beanstalk (AWS) 的休眠配置

如何使用 Elastic beanstalk 和 Dockerrun.aws.json 正确部署到 AWS?

AWS 和 Elastic Beanstalk