这是我要实施的教程:Finally Trying ActionCable
这段代码太长了,所以我没有把这个代码放在这个问题中,我只是把一些代码放在用户模型中
def online_now?
$redis.get("users:online:#{id}").present?
end
视图是:
<% User.all.each do |user| %>
<%= user.name %>
<div class="online-indicator">
<% if !user.online_now? && 'xs-none' %>
Online
<% else %>
Offline
<% end %>
</div>
<% end %>
但是总是像这样抛出错误
NoMethodError-未定义的方法
get' for nil:NilClass Did you mean? gem: app/models/user.rb:34:in
online_now?'
指示此行
$redis.get("users:online:#{id}").present?
我不为什么抛出此错误。
但是它可以在Rails控制台上正常工作
irb(main):005:0> redis.set("mykey", "hello world")
=> "OK"
irb(main):006:0> redis.get("mykey")
=> "hello world"
谢谢
答案 0 :(得分:3)
如何通过注释@Ilya Konyukhov
在模型方法中定义$redis
变量。很明显,它应该是Redis API,但是您应该在哪里连接到Redis并存储其连接?
是的,这是一个非常好的注释,有助于清除注释者的概念。
如果您的Redis服务器正在系统中运行,则需要以Rails自己的方式进行配置,我会编写一些配置文件,如果您已经创建了这些文件,则可以将它们进行比较,如果您尚未创建,则我认为这是问题,如果需要此功能,则需要尽快创建。
首先,安装gem redis-rails
gem 'redis-rails'
然后将其添加到环境文件中
config.cache_store = :redis_store, {
host: "localhost",
port: 6379,
db: 0,
password: "mysecret",
namespace: "cache"
}, {
expires_in: 90.minutes
}
在app/config/initializer/
中创建文件到redis.rb
中,然后放入其中
$redis = Redis.new(:host => 'localhost', :port => 6379)
毕竟重新启动服务器并检出它。
确保redis-server
正在运行。
希望它会起作用。