我用:
rails (5.0.2)
actioncable (5.0.2)
puma (3.8.2)
我有一个Rails 5动作电缆演示聊天,一年前它没有Redis也行不通 - 现在确实如此! (在bundle update
之后)。
换句话说,我成功地让我的演示聊天工作在开发模式没有Redis 。我像这样设置the config/cable.yml
:
development:
adapter: async
test:
adapter: async
production:
adapter: async
然后开始rails c
。就是这样 - 聊天工作正常,没问题。所以Redis显然不再需要了 - 不像一年前那样?
此外,我找到了一种让我的演示聊天与Redis 一起工作的方法。为此,我改变the config/cable.yml
,如下所示:
redis: &redis
adapter: redis
url: redis://localhost:6379/1
production: *redis
development: *redis
test: *redis
将gem 'redis', '~>3.2'
添加到我的Gemfile(+ bundle install
),然后启动Redis redis-server
,然后rails c
。
所以我的问题是:
gem 'redis', '~>3.2'
?它的用途是什么?一般来说,我不知道在Redis使用方面(非使用?),Action Cable 5的正确用法是什么。开发或生产模式有什么不同吗?
答案 0 :(得分:4)
Action Cable 5是否需要Redis?
没有。根据{{3}},它可以使用其他适配器。
Action Cable提供订阅适配器接口来处理它 pubsub internals。默认情况下,异步,内联,PostgreSQL, 使用了Redis,还包括了非事件Redis适配器。该 新Rails应用程序中的默认适配器是异步(异步) 适配器。
问题:
Action Cable 5是否需要Redis才能工作? (看起来不是,但我 不确定)。
没有
如果(显然)Action Cable 5可以使用或不使用Redis - 有什么区别?
如果ActionCable没有区别,它使用抽象adapter
并且不依赖于传输协议。
什么是
gem 'redis', '~>3.2'
?它的用途是什么?
它用于redis并提供与redis-server通信的接口。
答案 1 :(得分:0)
您可以在dev中使用async适配器,但文档说明
异步适配器用于开发/测试,不应该 用于生产。
http://edgeguides.rubyonrails.org/action_cable_overview.html#configuration
无论如何我试过了 - 至少我的设置(nginx,乘客) - 异步适配器只是不起作用。我猜测线程/进程问题
对于生产,您可以选择Redis或PostgreSql