使用 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 CodeBuild 和 EB CLI 部署到 AWS Elastic Beanstalk