首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails总是指向本地redis服务器

Rails总是指向本地redis服务器
EN

Stack Overflow用户
提问于 2014-01-08 12:21:33
回答 2查看 2.1K关注 0票数 3

我使用Redis和我的rails应用程序,用红-物体dm-核心dm-redis-适配器映射Ruby对象。下面是代码片段

Gemfile

代码语言:javascript
复制
gem 'redis-objects'
gem "dm-core", "~> 1.2.1"
gem "dm-redis-adapter"

/config/initializers/redis.rb

代码语言:javascript
复制
// LOCAL REDIS SERVER
Redis.current = Redis.new(:host => '127.0.0.1', :port => 6379)
// REMOTE REDIS SERVER
#Redis.current = Redis.new(:host => '<VM IP>', :port => <VM PORT>, :password => '<PASSWORD>')

Model.rb

代码语言:javascript
复制
DataMapper.setup(:default, {:adapter  => "redis"})

class User
  include Redis::Objects
  include DataMapper::Resource

  include ActiveModel::Validations  
  include ActiveModel::Conversion  

  # datamapper fields, just used for .create
  property :id, Serial
  property :name, String
  property :email, String
  property :des, Text

  def id
    1
  end

end

User.finalize

对本地的redis服务器来说很好。为什么应用程序总是指向本地redis,即使提供远程主机和端口?

解决了:查看我的答案。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-01-09 10:39:37

如问题所示:

代码语言:javascript
复制
// LOCAL REDIS SERVER
Redis.current = Redis.new(:host => '127.0.0.1', :port => 6379)
// REMOTE REDIS SERVER
#Redis.current = Redis.new(:host => '<VM IP>', :port => <VM PORT>, :password => '<PASSWORD>')

Model.rb

代码语言:javascript
复制
 DataMapper.setup(:default, {:adapter  => "redis"})

在上面的代码中,我在用户模型中重载Redis配置。在这种情况下,我还需要在模型中编写远程配置。

代码语言:javascript
复制
DataMapper.setup(:default, {:adapter  => "redis", :host => '<VM IP>', :port => <VM PORT>, :password => '<PASSWORD>'})
票数 5
EN

Stack Overflow用户

发布于 2014-01-08 13:21:29

Redis.current是一种方法,如果实例变量@current为空,它总是提供新的连接。请参阅https://github.com/redis/redis-rb/blob/master/lib/redis.rb#L19

代码语言:javascript
复制
  def self.current
    @current ||= Redis.new
  end

尝试将Redis.new分配给其他全局对象,如$redis。这应该主要是解决你的问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20995531

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档