redis-spawn 0.0.3 → 0.0.4
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +38 -2
- data/lib/redis/spawn/version.rb +1 -1
- data/lib/redis/spawn.rb +36 -0
- metadata +3 -3
data/README.md
CHANGED
@@ -161,13 +161,49 @@ At present, there is no built in mechanism for cleaning up the data directory
|
|
161
161
|
This allows you to prevent the server from automatically being started, e.g.
|
162
162
|
|
163
163
|
```ruby
|
164
|
-
# Don't want to start
|
165
|
-
my_server = Redis::SpawnServer(:start => false)
|
164
|
+
# Don't want to start straight away
|
165
|
+
my_server = Redis::SpawnServer.new(:start => false)
|
166
166
|
# ...
|
167
167
|
# Now we're ready to start
|
168
168
|
my_server.start
|
169
169
|
```
|
170
170
|
|
171
|
+
### Extensions to redis-rb
|
172
|
+
|
173
|
+
Three new methods are defined in the Redis class: Redis.spawn,
|
174
|
+
Redis.spawn_and_connect, and Redis#spawned_server_instance. Redis.spawn is
|
175
|
+
simply a convenience wrapper for Redis::SpawnServer.new:
|
176
|
+
|
177
|
+
```ruby
|
178
|
+
my_server = Redis.spawn(opts)
|
179
|
+
```
|
180
|
+
|
181
|
+
is the same as the slightly more verbose:
|
182
|
+
|
183
|
+
```ruby
|
184
|
+
my_server = Redis::SpawnServer.new(opts)
|
185
|
+
```
|
186
|
+
|
187
|
+
Redis.spawn_and_connect spawns a new server and returns a connection to it:
|
188
|
+
|
189
|
+
```ruby
|
190
|
+
spawned_connection = Redis.spawn_and_connect
|
191
|
+
=> #<Redis:0x00000002d5e470>
|
192
|
+
```
|
193
|
+
|
194
|
+
The method takes the same option parameters as Redis::SpawnServer.new. One
|
195
|
+
question you might ask is since you're returned a Redis instance, what
|
196
|
+
happens to the Redis:SpawnServer instance? The answer is that it is stored
|
197
|
+
in the Redis instance, and you can get it through the
|
198
|
+
Redis#spawned_server_instance accessor:
|
199
|
+
|
200
|
+
```ruby
|
201
|
+
spawned_connection.spawned_server_instance
|
202
|
+
=> #<Redis::SpawnServer:0x00000002683290>
|
203
|
+
spawned_connection.spawned_server_instance.pid
|
204
|
+
=> 10633
|
205
|
+
````
|
206
|
+
|
171
207
|
Contact and Contributing
|
172
208
|
------------------------
|
173
209
|
|
data/lib/redis/spawn/version.rb
CHANGED
data/lib/redis/spawn.rb
CHANGED
@@ -125,10 +125,12 @@ class Redis
|
|
125
125
|
self.pid
|
126
126
|
end
|
127
127
|
|
128
|
+
# Check whether the server is stated by checking if a value is assigned to @pid
|
128
129
|
def started?
|
129
130
|
self.pid ? true : false
|
130
131
|
end
|
131
132
|
|
133
|
+
# Shutdown the spawned redis-server if it is running
|
132
134
|
def shutdown
|
133
135
|
if self.started?
|
134
136
|
self.shutdown!
|
@@ -137,6 +139,7 @@ class Redis
|
|
137
139
|
end
|
138
140
|
end
|
139
141
|
|
142
|
+
# Forcibly shutdown the spawned redis-server. Used internally by #shutdown.
|
140
143
|
def shutdown!
|
141
144
|
Process.kill("TERM", self.pid)
|
142
145
|
rescue Errno::ESRCH
|
@@ -205,9 +208,42 @@ class Redis
|
|
205
208
|
end
|
206
209
|
end
|
207
210
|
|
211
|
+
# Shortcut for getting name of the configured unix socket file
|
208
212
|
def socket
|
209
213
|
self.server_opts[:unixsocket]
|
210
214
|
end
|
211
215
|
|
212
216
|
end
|
217
|
+
|
218
|
+
# Convenience wrapper for Redis::SpawnServer.new
|
219
|
+
#
|
220
|
+
# @param supplied_opts: options for this server including any configuration overrides
|
221
|
+
#
|
222
|
+
# @return [Redis::SpawnServer] instance corresponding to the spawned server
|
223
|
+
def self.spawn(supplied_opts = {})
|
224
|
+
SpawnServer.new(supplied_opts)
|
225
|
+
end
|
226
|
+
|
227
|
+
# Spawn a new redis-server with supplied options and connect to it. Has the
|
228
|
+
# side-effect of setting instance variable @_redis_spawnserver_instance with
|
229
|
+
# the spawned server instance
|
230
|
+
#
|
231
|
+
# @param supplied_opts: options for this server including any configuration overrides
|
232
|
+
#
|
233
|
+
# @return [Redis] a redis-rb connection to the newly spawned redis-server
|
234
|
+
def self.spawn_and_connect(supplied_opts = {})
|
235
|
+
redis_spawnserver_instance = SpawnServer.new(supplied_opts)
|
236
|
+
redis_instance = self.connect(:path => redis_spawnserver_instance.socket)
|
237
|
+
redis_instance.instance_variable_set(:@_redis_spawnserver_instance, redis_spawnserver_instance)
|
238
|
+
redis_instance
|
239
|
+
end
|
240
|
+
|
241
|
+
# Accessor for the spawned server instance created by Redis.spawn_and_connect
|
242
|
+
def spawned_server_instance
|
243
|
+
if self.instance_variables.include?(:@_redis_spawnserver_instance)
|
244
|
+
@_redis_spawnserver_instance
|
245
|
+
else
|
246
|
+
nil
|
247
|
+
end
|
248
|
+
end
|
213
249
|
end
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 0
|
8
|
-
-
|
9
|
-
version: 0.0.
|
8
|
+
- 4
|
9
|
+
version: 0.0.4
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Phil Stewart
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2011-
|
17
|
+
date: 2011-11-08 00:00:00 +00:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|