hatyuki/redispot-rb

View on GitHub
README.md

Summary

Maintainability
Test Coverage
# Redispot
[![Gem Version](https://badge.fury.io/rb/redispot.svg)](http://badge.fury.io/rb/redispot)
[![Build Status](https://travis-ci.org/hatyuki/redispot-rb.svg?branch=master)](https://travis-ci.org/hatyuki/redispot-rb)
[![Code Climate](https://codeclimate.com/github/hatyuki/redispot-rb/badges/gpa.svg)](https://codeclimate.com/github/hatyuki/redispot-rb)
[![Test Coverage](https://codeclimate.com/github/hatyuki/redispot-rb/badges/coverage.svg)](https://codeclimate.com/github/hatyuki/redispot-rb/coverage)

Launching the redis-server instance which is available only within a scope.
It is useful when you want to test your code.

It is a Ruby clone of [Test::RedisServer](https://github.com/typester/Test-RedisServer).


## Synopsis
```ruby
require 'redis'
require 'redispot'

# Using redis-server instance within a block
redis = nil
Redispot::Server.new do |connect_info|
  redis = Redis.new(connect_info)
  redis.ping  # => "PONG"
end

redis.ping  # => Error!

# or start it manually

redispot     = Redispot::Server.new
connect_info = redispot.start
begin
  redis = Redis.new(connect_info)
  redis.ping  # => "PONG"
ensure
  redispot.stop
end
redis.ping  # => Error!
```


## Methods
### Redispot::Server.new(options)
Create a new instance, and start redis-server if block given.

```ruby
redispot = Redispot::Server.new(options)

# or

Redispot::Server.new(options) do |connect_info|
  redis = Redis.new(connect_info)
  # ...
end
```

Available options are:

- [Hash] config

    This is a `redis.conf` key value pair. You can use any key-value pair(s) that redis-server supports.

    If you want to use this redis.conf:

    ```
    port 9999
    databases 16
    save 900 1
    ```

    Your conf parameter will be:

    ```ruby
    Redispot::Server.new(config: {
        port:      9999,
        databases: 16,
        save:      '900 1',
    })
    ```

- [Fixnum] timeout (Default: 3)

    Timeout seconds for detecting if redis-server is awake or not.

- [String] tmpdir

    Temporal directory, where redis config will be stored.


### Redispot::Server#start
Start redis-server instance manually.

```ruby
redispot = Redispot::Server.new

redispot.start do |connect_info|
  redis = Redis.new(connect_info)
  redis.ping  # => "PONG"
end

# or

connect_info = redispot.start
begin
  redis = Redis.new(connect_info)
  # ... do anything
ensure
  redispot.stop
end
```


### Redispot::Server#stop
Stop redis-server instance.

This method is automatically called from object destructor.


### Redispot::Server#connect_info
Return connection info for client library to connect this redis-server instance.

This parameter is designed to pass directly to Redis module.

```ruby
redispot = Redispot::Server.new
redis    = Redis.new(redispot.connect_info)
```


## Installation
Add this line to your application's Gemfile:

```ruby
gem 'redispot'
```

And then execute:

    $ bundle

Or install it yourself as:

    $ gem install redispot


## Contributing
Bug reports and pull requests are welcome on GitHub at https://github.com/hatyuki/redispot-rb.


## License
The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).