Module: Familia
- Includes:
- Gibbler::Complex
- Included in:
- Bone, Customer, Session
- Defined in:
- lib/familia.rb,
lib/familia.rb,
lib/familia.rb,
lib/familia/tools.rb,
lib/familia/object.rb,
lib/familia/helpers.rb,
lib/familia/redisobject.rb
Defined Under Namespace
Modules: ClassMethods, Collector, InstanceMethods, Stamps, Status, Tools, VERSION
Classes: HashKey, List, NoIndex, NonUniqueKey, NotConnected, Problem, RedisObject, Set, SortedSet, String
Class Attribute Summary collapse
Class Method Summary
collapse
Class Attribute Details
.apiversion(r = nil, &blk) ⇒ Object
120
121
122
123
124
125
126
127
128
129
130
|
# File 'lib/familia.rb', line 120
def apiversion(r=nil, &blk)
if blk.nil?
@apiversion = r if r;
else
tmp = @apiversion
@apiversion = r
blk.call
@apiversion = tmp
end
@apiversion
end
|
.clients ⇒ Object
Returns the value of attribute clients.
35
36
37
|
# File 'lib/familia.rb', line 35
def clients
@clients
end
|
.debug ⇒ Object
Returns the value of attribute debug.
36
37
38
|
# File 'lib/familia.rb', line 36
def debug
@debug
end
|
.delim ⇒ Object
Returns the value of attribute delim.
36
37
38
|
# File 'lib/familia.rb', line 36
def delim
@delim
end
|
.dump_method ⇒ Object
Returns the value of attribute dump_method.
36
37
38
|
# File 'lib/familia.rb', line 36
def dump_method
@dump_method
end
|
.load_method ⇒ Object
Returns the value of attribute load_method.
36
37
38
|
# File 'lib/familia.rb', line 36
def load_method
@load_method
end
|
.logger ⇒ Object
Returns the value of attribute logger.
35
36
37
|
# File 'lib/familia.rb', line 35
def logger
@logger
end
|
.secret ⇒ Object
Returns the value of attribute secret.
36
37
38
|
# File 'lib/familia.rb', line 36
def secret
@secret
end
|
.uri ⇒ Object
Returns the value of attribute uri.
35
36
37
|
# File 'lib/familia.rb', line 35
def uri
@uri
end
|
Class Method Details
.classes(with_redis_objects = false) ⇒ Object
42
43
44
|
# File 'lib/familia.rb', line 42
def classes with_redis_objects=false
with_redis_objects ? [@classes, RedisObject.classes].flatten : @classes
end
|
.connect(uri = nil) ⇒ Object
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
|
# File 'lib/familia.rb', line 84
def connect(uri=nil)
uri &&= URI.parse uri if String === uri
uri ||= Familia.uri
conf = uri.conf
conf[:thread_safe] = true unless conf.has_key?(:thread_safe)
if conf.has_key?(:logging) && conf[:logging].to_s == "true"
require 'logger'
require 'log4r'
@logger ||= log :DEBUG, "./familia.log"
conf[:logger] = Familia.logger
end
redis = Redis.new conf
Familia.trace :CONNECT, redis, conf.inspect, caller[0..3] if Familia.debug
@clients[uri.serverid] = redis
end
|
.connected?(uri = nil) ⇒ Boolean
105
106
107
108
|
# File 'lib/familia.rb', line 105
def connected?(uri=nil)
uri &&= URI.parse uri if String === uri
@clients.has_key?(uri.serverid)
end
|
.debug? ⇒ Boolean
38
|
# File 'lib/familia.rb', line 38
def debug?() @debug == true end
|
.default_suffix(a = nil) ⇒ Object
109
|
# File 'lib/familia.rb', line 109
def default_suffix(a=nil) @suffix = a if a; @suffix end
|
.default_suffix=(a) ⇒ Object
110
|
# File 'lib/familia.rb', line 110
def default_suffix=(a) @suffix = a end
|
.included(obj) ⇒ Object
146
147
148
149
150
151
152
153
154
155
156
157
|
# File 'lib/familia.rb', line 146
def self.included(obj)
obj.send :include, Familia::InstanceMethods
obj.send :include, Gibbler::Complex
obj.extend Familia::ClassMethods
obj.class_zset :instances, :class => obj, :reference => true
obj.string :object, :class => obj unless obj.redis_object? :object
Familia.classes << obj
end
|
.index(r = nil) ⇒ Object
111
|
# File 'lib/familia.rb', line 111
def index(r=nil) @index = r if r; @index end
|
.index=(r) ⇒ Object
112
|
# File 'lib/familia.rb', line 112
def index=(r) @index = r; r end
|
.info(*msg) ⇒ Object
39
40
41
|
# File 'lib/familia.rb', line 39
def info *msg
STDERR.puts *msg
end
|
.join(*r) ⇒ Object
113
|
# File 'lib/familia.rb', line 113
def join(*r) r.join(Familia.delim) end
|
.ld(*msg) ⇒ Object
45
46
47
|
# File 'lib/familia.rb', line 45
def ld *msg
info *msg if debug?
end
|
.log(level, path) ⇒ Object
78
79
80
81
82
83
|
# File 'lib/familia.rb', line 78
def log(level, path)
logger = Log4r::Logger.new('familia')
logger.outputters = Log4r::FileOutputter.new 'familia', :filename => path
logger.level = Log4r.const_get(level)
logger
end
|
.reconnect_all! ⇒ Object
99
100
101
102
103
104
|
# File 'lib/familia.rb', line 99
def reconnect_all!
Familia.classes.each do |klass|
klass.redis.client.reconnect
Familia.info "#{klass} ping: #{klass.redis.ping}" if debug?
end
end
|
.redis(uri = nil) ⇒ Object
A convenience method for returning the appropriate Redis connection. If uri
is an Integer, we’ll treat it as a database number. If it’s a String, we’ll treat it as a full URI (e.g. redis://1.2.3.4/15). Otherwise we’ll return the default connection.
66
67
68
69
70
71
72
73
74
75
76
77
|
# File 'lib/familia.rb', line 66
def redis(uri=nil)
if Integer === uri
tmp = Familia.uri
tmp.db = uri
uri = tmp
elsif String === uri
uri &&= URI.parse uri
end
uri ||= Familia.uri
connect(uri) unless @clients[uri.serverid]
@clients[uri.serverid]
end
|
.rediskey(*args) ⇒ Object
115
116
117
118
119
|
# File 'lib/familia.rb', line 115
def rediskey *args
el = args.flatten.compact
el.unshift @apiversion unless @apiversion.nil?
el.join(Familia.delim)
end
|
.split(r) ⇒ Object
114
|
# File 'lib/familia.rb', line 114
def split(r) r.split(Familia.delim) end
|
.trace(label, redis_client, ident, context = nil) ⇒ Object
48
49
50
51
52
53
54
55
56
|
# File 'lib/familia.rb', line 48
def trace label, redis_client, ident, context=nil
return unless Familia.debug?
info "[%s] %s/%s" % [label, redis_client.uri, ident]
if context
context = [context].flatten
context.reject! { |line| line =~ /lib\/familia/ }
info " %s" % context[0..6].join("\n ")
end
end
|