riak-shim 1.0.2 → 1.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/FUTURE_WORK.md CHANGED
@@ -22,7 +22,6 @@ unhappy with the current interface.
22
22
  - Keep expanding tests
23
23
  - find less horrible way to deal with index names
24
24
  - find less horrible way to deal with key accessor
25
- - nice error message when can't connect to db
26
- - nice error ,essage when back end doesn't support 2i
25
+ - nice error message when back end doesn't support 2i
27
26
  - nice error message when secondary index is missing?
28
27
 
data/Gemfile CHANGED
@@ -3,7 +3,6 @@ gemspec
3
3
 
4
4
  platforms :jruby do
5
5
  gem 'jruby-openssl'
6
- gem 'json-jruby'
7
6
  end
8
7
 
9
8
  def darwin_only(require_as)
data/Guardfile CHANGED
@@ -1,5 +1,5 @@
1
1
 
2
- guard 'rspec', :version => 2, :cli => "--color --format nested" do
2
+ guard 'rspec', :cli => "--color --format nested" do
3
3
  watch(%r{^spec/(.+)_spec\.rb$}) { |m| "spec/#{m[1]}_spec.rb" }
4
4
  watch(%r{^spec/support/*}) { 'spec' }
5
5
  watch(%r{^lib/(.+)\.rb$}) { 'spec' }
@@ -14,13 +14,16 @@ module Riak
14
14
 
15
15
  DEFAULT_CONFIG_LOCATION = 'config/database.yml'
16
16
 
17
- # Thrown when we can't find a configuration which matches the
17
+ # Raised when we can't find a configuration which matches the
18
18
  # current RACK_ENV
19
19
  class NoSettingsForCurrentEnvError < StandardError; end
20
20
 
21
- # Thrown when the RACK_ENV environment variable is not set
21
+ # Raised when the RACK_ENV environment variable is not set
22
22
  class RackEnvNotSetError < StandardError; end
23
23
 
24
+ # Raised when we can't connect to Riak
25
+ class ConnectionError < StandardError; end
26
+
24
27
  # @return [Hash] the configuration for our current environment
25
28
  def config
26
29
  env = ENV['RACK_ENV'] or raise RackEnvNotSetError.new
@@ -44,8 +47,16 @@ module Riak
44
47
  end
45
48
 
46
49
  def riak
47
- @riak ||= Riak::Client.new(:http_backend => :Excon,
50
+ return @riak if @riak
51
+
52
+ @riak = Riak::Client.new(:http_backend => :Excon,
48
53
  :nodes => [{:host => config['host'], :http_port => config['http_port']}])
54
+ unless @riak.ping
55
+ @riak = nil
56
+ raise ConnectionError.new("Could not connect to Riak at #{config['host']}:#{config['http_port']}")
57
+ end
58
+
59
+ @riak
49
60
  end
50
61
 
51
62
  # @return [Riak::Bucket] the bucket coresponding to name
@@ -1,5 +1,5 @@
1
1
  module Riak
2
2
  module Shim
3
- VERSION = "1.0.2"
3
+ VERSION = "1.0.3"
4
4
  end
5
5
  end
data/riak-shim.gemspec CHANGED
@@ -15,10 +15,10 @@ Gem::Specification.new do |gem|
15
15
  gem.require_paths = ["lib"]
16
16
  gem.version = Riak::Shim::VERSION
17
17
 
18
- gem.add_dependency 'riak-client', '~>1.1.1'
19
- gem.add_dependency 'excon', '~>0.16.10'
20
- gem.add_dependency 'uuidtools', '~>2.1.3'
21
-
18
+ gem.add_dependency 'riak-client', '~>1.2.0'
19
+ gem.add_dependency 'excon', '~>0.22.1'
20
+ gem.add_dependency 'uuidtools', '~>2.1.4'
21
+ gem.add_dependency 'json'
22
22
  gem.add_development_dependency 'rake'
23
23
  gem.add_development_dependency 'rspec'
24
24
  gem.add_development_dependency 'gem-release'
@@ -33,15 +33,15 @@ class PersistableExampleWithIndex < PersistableExample
33
33
  end
34
34
  end
35
35
 
36
- def create_test_data(copies)
37
- copies.times do |i|
36
+ def create_test_data(quantity)
37
+ quantity.times do |i|
38
38
  p = PersistableExample.new
39
39
  p.foo, p.bar, p.baz = i, i, i
40
40
  p.save
41
41
  end
42
42
  end
43
43
 
44
- describe 'persistable' do
44
+ describe Riak::Shim::Persistable do
45
45
  let(:persistable) do
46
46
  p = PersistableExample.new ; p.foo = 'boo' ; p.bar = 'who' ; p
47
47
  end
data/spec/store_spec.rb CHANGED
@@ -4,6 +4,18 @@ require 'riak-shim/store'
4
4
  describe Riak::Shim::Store do
5
5
  let(:store) { Riak::Shim::Store.new }
6
6
 
7
+ # Port finding code stolen without remorse from realweb
8
+ PORT_RANGE = 8000..10000
9
+ def find_port
10
+ begin
11
+ port = random_port
12
+ end while system("lsof -i tcp:#{port} > /dev/null")
13
+ port
14
+ end
15
+
16
+ def random_port
17
+ PORT_RANGE.to_a[rand(PORT_RANGE.to_a.size)]
18
+ end
7
19
 
8
20
  describe '#config_location' do
9
21
  it 'keeps a path of the database config file' do
@@ -53,6 +65,21 @@ describe Riak::Shim::Store do
53
65
  expect { store.config }.to raise_error(Riak::Shim::Store::RackEnvNotSetError)
54
66
  end
55
67
  end
68
+
69
+ context 'with no riak at specified coordinates' do
70
+ before do
71
+ store.config['host'] = 'localhost'
72
+ store.config['http_port'] = find_port
73
+ end
74
+
75
+ it 'raises an informative exception' do
76
+ expect { store.riak }.to raise_error(Riak::Shim::Store::ConnectionError)
77
+ end
78
+
79
+ it 'includes an informative message' do
80
+ expect { store.riak }.to raise_error(/Could not connect to Riak at/)
81
+ end
82
+ end
56
83
  end
57
84
 
58
85
  describe '#config' do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: riak-shim
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.2
4
+ version: 1.0.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-02-02 00:00:00.000000000 Z
12
+ date: 2013-05-24 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: riak-client
@@ -18,7 +18,7 @@ dependencies:
18
18
  requirements:
19
19
  - - ~>
20
20
  - !ruby/object:Gem::Version
21
- version: 1.1.1
21
+ version: 1.2.0
22
22
  type: :runtime
23
23
  prerelease: false
24
24
  version_requirements: !ruby/object:Gem::Requirement
@@ -26,7 +26,7 @@ dependencies:
26
26
  requirements:
27
27
  - - ~>
28
28
  - !ruby/object:Gem::Version
29
- version: 1.1.1
29
+ version: 1.2.0
30
30
  - !ruby/object:Gem::Dependency
31
31
  name: excon
32
32
  requirement: !ruby/object:Gem::Requirement
@@ -34,7 +34,7 @@ dependencies:
34
34
  requirements:
35
35
  - - ~>
36
36
  - !ruby/object:Gem::Version
37
- version: 0.16.10
37
+ version: 0.22.1
38
38
  type: :runtime
39
39
  prerelease: false
40
40
  version_requirements: !ruby/object:Gem::Requirement
@@ -42,7 +42,7 @@ dependencies:
42
42
  requirements:
43
43
  - - ~>
44
44
  - !ruby/object:Gem::Version
45
- version: 0.16.10
45
+ version: 0.22.1
46
46
  - !ruby/object:Gem::Dependency
47
47
  name: uuidtools
48
48
  requirement: !ruby/object:Gem::Requirement
@@ -50,7 +50,7 @@ dependencies:
50
50
  requirements:
51
51
  - - ~>
52
52
  - !ruby/object:Gem::Version
53
- version: 2.1.3
53
+ version: 2.1.4
54
54
  type: :runtime
55
55
  prerelease: false
56
56
  version_requirements: !ruby/object:Gem::Requirement
@@ -58,7 +58,23 @@ dependencies:
58
58
  requirements:
59
59
  - - ~>
60
60
  - !ruby/object:Gem::Version
61
- version: 2.1.3
61
+ version: 2.1.4
62
+ - !ruby/object:Gem::Dependency
63
+ name: json
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ type: :runtime
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
62
78
  - !ruby/object:Gem::Dependency
63
79
  name: rake
64
80
  requirement: !ruby/object:Gem::Requirement
@@ -209,21 +225,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
209
225
  - - ! '>='
210
226
  - !ruby/object:Gem::Version
211
227
  version: '0'
212
- segments:
213
- - 0
214
- hash: -1927379052997659791
215
228
  required_rubygems_version: !ruby/object:Gem::Requirement
216
229
  none: false
217
230
  requirements:
218
231
  - - ! '>='
219
232
  - !ruby/object:Gem::Version
220
233
  version: '0'
221
- segments:
222
- - 0
223
- hash: -1927379052997659791
224
234
  requirements: []
225
235
  rubyforge_project:
226
- rubygems_version: 1.8.24
236
+ rubygems_version: 1.8.25
227
237
  signing_key:
228
238
  specification_version: 3
229
239
  summary: A tiny shim between you and riak-client. Reads config/database.yml and generates
@@ -234,4 +244,3 @@ test_files:
234
244
  - spec/store_spec.rb
235
245
  - spec/support/camelcase.rb
236
246
  - spec/support/database.yml
237
- has_rdoc: