【发布时间】:2016-02-04 08:22:14
【问题描述】:
我正在使用Predictor gem,当我尝试启动 gem 时:
"redis not configured! - Predictor.redis = Redis.new" (RuntimeError)
那么,如何在初始化时配置Redis Connection?
谢谢
【问题讨论】:
标签: ruby-on-rails ruby ruby-on-rails-3 redis
我正在使用Predictor gem,当我尝试启动 gem 时:
"redis not configured! - Predictor.redis = Redis.new" (RuntimeError)
那么,如何在初始化时配置Redis Connection?
谢谢
【问题讨论】:
标签: ruby-on-rails ruby ruby-on-rails-3 redis
这就是Redis 的一般初始化方式。
首先,一个好的做法是将其添加到您的config/environments/[environment_name].rb。因此,您可以在更改环境时为Redis 维护不同的位置。
config.redis_host = "localhost"
然后在您的应用程序的config/initializers 路径中创建redis.rb 并放置下面的代码来初始化Redis。
require 'redis'
## Added rescue condition if Redis connection is failed
begin
$redis = Redis.new(:host => Rails.configuration.redis_host, :port => 6379)
rescue Exception => e
puts e
end
然后您就可以在您的应用程序中使用全局变量$redis 来执行与Redis 相关的命令。
$redis.hset "my_hash", item.id, business.id
Here 是一篇有用的文章,其中包含更多详细信息。
现在,正如this documentation 所建议的那样,您应该这样做:
在config/initializers/predictor.rb,
Predictor.redis = Redis.new(:url => ENV["PREDICTOR_REDIS"])
或者,为了提高性能,添加 hiredis 作为您的驱动程序(您需要先安装 hiredis gem)
Predictor.redis = Redis.new(:url => ENV["PREDICTOR_REDIS"], :driver => :hiredis)
然后,一定要在你想使用的所有模型中包含include Predictor::Base,
class CourseRecommender
include Predictor::Base
...
end
Here 是导致您收到错误的代码。
【讨论】: