better-riak-client 1.0.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (72) hide show
  1. data/LICENSE +16 -0
  2. data/README.markdown +198 -0
  3. data/RELEASE_NOTES.md +211 -0
  4. data/better-riak-client.gemspec +61 -0
  5. data/erl_src/riak_kv_test014_backend.beam +0 -0
  6. data/erl_src/riak_kv_test014_backend.erl +189 -0
  7. data/erl_src/riak_kv_test_backend.beam +0 -0
  8. data/erl_src/riak_kv_test_backend.erl +697 -0
  9. data/erl_src/riak_search_test_backend.beam +0 -0
  10. data/erl_src/riak_search_test_backend.erl +175 -0
  11. data/lib/riak/bucket.rb +221 -0
  12. data/lib/riak/client/beefcake/messages.rb +213 -0
  13. data/lib/riak/client/beefcake/object_methods.rb +111 -0
  14. data/lib/riak/client/beefcake_protobuffs_backend.rb +226 -0
  15. data/lib/riak/client/decaying.rb +36 -0
  16. data/lib/riak/client/excon_backend.rb +162 -0
  17. data/lib/riak/client/feature_detection.rb +88 -0
  18. data/lib/riak/client/http_backend/configuration.rb +211 -0
  19. data/lib/riak/client/http_backend/key_streamer.rb +43 -0
  20. data/lib/riak/client/http_backend/object_methods.rb +106 -0
  21. data/lib/riak/client/http_backend/request_headers.rb +34 -0
  22. data/lib/riak/client/http_backend/transport_methods.rb +201 -0
  23. data/lib/riak/client/http_backend.rb +340 -0
  24. data/lib/riak/client/net_http_backend.rb +82 -0
  25. data/lib/riak/client/node.rb +115 -0
  26. data/lib/riak/client/protobuffs_backend.rb +173 -0
  27. data/lib/riak/client/search.rb +91 -0
  28. data/lib/riak/client.rb +540 -0
  29. data/lib/riak/cluster.rb +151 -0
  30. data/lib/riak/core_ext/blank.rb +53 -0
  31. data/lib/riak/core_ext/deep_dup.rb +13 -0
  32. data/lib/riak/core_ext/extract_options.rb +7 -0
  33. data/lib/riak/core_ext/json.rb +15 -0
  34. data/lib/riak/core_ext/slice.rb +18 -0
  35. data/lib/riak/core_ext/stringify_keys.rb +10 -0
  36. data/lib/riak/core_ext/symbolize_keys.rb +10 -0
  37. data/lib/riak/core_ext/to_param.rb +31 -0
  38. data/lib/riak/core_ext.rb +7 -0
  39. data/lib/riak/encoding.rb +6 -0
  40. data/lib/riak/failed_request.rb +81 -0
  41. data/lib/riak/i18n.rb +5 -0
  42. data/lib/riak/json.rb +52 -0
  43. data/lib/riak/link.rb +94 -0
  44. data/lib/riak/locale/en.yml +53 -0
  45. data/lib/riak/locale/fr.yml +52 -0
  46. data/lib/riak/map_reduce/filter_builder.rb +103 -0
  47. data/lib/riak/map_reduce/phase.rb +98 -0
  48. data/lib/riak/map_reduce.rb +225 -0
  49. data/lib/riak/map_reduce_error.rb +7 -0
  50. data/lib/riak/node/configuration.rb +293 -0
  51. data/lib/riak/node/console.rb +133 -0
  52. data/lib/riak/node/control.rb +207 -0
  53. data/lib/riak/node/defaults.rb +83 -0
  54. data/lib/riak/node/generation.rb +106 -0
  55. data/lib/riak/node/log.rb +34 -0
  56. data/lib/riak/node/version.rb +43 -0
  57. data/lib/riak/node.rb +38 -0
  58. data/lib/riak/robject.rb +318 -0
  59. data/lib/riak/search.rb +3 -0
  60. data/lib/riak/serializers.rb +74 -0
  61. data/lib/riak/stamp.rb +77 -0
  62. data/lib/riak/test_server.rb +89 -0
  63. data/lib/riak/util/escape.rb +76 -0
  64. data/lib/riak/util/headers.rb +53 -0
  65. data/lib/riak/util/multipart/stream_parser.rb +62 -0
  66. data/lib/riak/util/multipart.rb +52 -0
  67. data/lib/riak/util/tcp_socket_extensions.rb +58 -0
  68. data/lib/riak/util/translation.rb +19 -0
  69. data/lib/riak/version.rb +3 -0
  70. data/lib/riak/walk_spec.rb +105 -0
  71. data/lib/riak.rb +21 -0
  72. metadata +348 -0
data/LICENSE ADDED
@@ -0,0 +1,16 @@
1
+ Copyright 2010-2011 Sean Cribbs and Basho Technologies, Inc.
2
+
3
+ Licensed under the Apache License, Version 2.0 (the "License");
4
+ you may not use this file except in compliance with the License.
5
+ You may obtain a copy of the License at
6
+
7
+ http://www.apache.org/licenses/LICENSE-2.0
8
+
9
+ Unless required by applicable law or agreed to in writing, software
10
+ distributed under the License is distributed on an "AS IS" BASIS,
11
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ See the License for the specific language governing permissions and
13
+ limitations under the License.
14
+
15
+ All of the files in this project are under the project-wide license
16
+ unless they are otherwise marked.
data/README.markdown ADDED
@@ -0,0 +1,198 @@
1
+ # Better Riak Client (better-riak-client)
2
+
3
+ `better-riak-client` is an improved version of `riak-ruby-client`, the official
4
+ Ruby client/toolkit for Riak, Basho's distributed database that contains a
5
+ basic wrapper around typical operations, including bucket manipulation, object
6
+ CRUD, link-walking, and map-reduce.
7
+
8
+
9
+ ## Improvements vs. riak-ruby-client
10
+
11
+ To date, the improvements include:
12
+
13
+ * Produce a much smaller .gem file. (84KiB instead of 17MiB!)
14
+ * Allow you to verify that the SSL certificate received from Riak is not simply
15
+ valid but is in fact the expected certificate. (This functionality exists in
16
+ riak-ruby-client but is broken.)
17
+
18
+ We will be tracking upstream changes, and including them as appropriate.
19
+
20
+ Release 1.0.5 corresponds to `riak-ruby-client` v.1.0.4, plus changes on
21
+ `master` as of 2012-10-09. See `RELEASE_NOTES.md` for details.
22
+
23
+
24
+ ## Dependencies
25
+
26
+ `better-riak-client` requires `i18n`, `builder`, `beefcake`, and `multi_json`.
27
+ For higher performance on HTTP requests, install the `excon` gem. The
28
+ cache store implementation requires ActiveSupport 3 or later.
29
+
30
+ Development dependencies are handled with bundler. Install bundler
31
+ (`gem install bundler`) and run this command in each sub-project to
32
+ get started:
33
+
34
+ ``` bash
35
+ $ bundle install
36
+ ```
37
+
38
+ Run the RSpec suite using `bundle exec`:
39
+
40
+ ``` bash
41
+ $ bundle exec rake
42
+ ```
43
+
44
+
45
+ ## Basic Example
46
+
47
+ ``` ruby
48
+ require 'riak'
49
+
50
+ # Create a client interface
51
+ client = Riak::Client.new
52
+
53
+ # Create a client interface that uses Excon
54
+ client = Riak::Client.new(:http_backend => :Excon)
55
+
56
+ # Create a client that uses Protocol Buffers
57
+ client = Riak::Client.new(:protocol => "pbc")
58
+
59
+ # Automatically balance between multiple nodes
60
+ client = Riak::Client.new(:nodes => [
61
+ {:host => '10.0.0.1'},
62
+ {:host => '10.0.0.2', :pb_port => 1234},
63
+ {:host => '10.0.0.3', :http_port => 5678}
64
+ ])
65
+
66
+ # Retrieve a bucket
67
+ bucket = client.bucket("doc") # a Riak::Bucket
68
+
69
+ # Get an object from the bucket
70
+ object = bucket.get_or_new("index.html") # a Riak::RObject
71
+
72
+ # Change the object's data and save
73
+ object.raw_data = "<html><body>Hello, world!</body></html>"
74
+ object.content_type = "text/html"
75
+ object.store
76
+
77
+ # Reload an object you already have
78
+ object.reload # Works if you have the key and vclock, using conditional GET
79
+ object.reload :force => true # Reloads whether you have the vclock or not
80
+
81
+ # Access more like a hash, client[bucket][key]
82
+ client['doc']['index.html'] # the Riak::RObject
83
+
84
+ # Create a new object
85
+ new_one = Riak::RObject.new(bucket, "application.js")
86
+ new_one.content_type = "application/javascript" # You must set the content type.
87
+ new_one.raw_data = "alert('Hello, World!')"
88
+ new_one.store
89
+ ```
90
+
91
+
92
+ ## Map-Reduce Example
93
+
94
+ ``` ruby
95
+ # Assuming you've already instantiated a client, get the album titles for The Beatles
96
+ results = Riak::MapReduce.new(client).
97
+ add("artists","Beatles").
98
+ link(:bucket => "albums").
99
+ map("function(v){ return [JSON.parse(v.values[0].data).title]; }", :keep => true).run
100
+
101
+ p results # => ["Please Please Me", "With The Beatles", "A Hard Day's Night",
102
+ # "Beatles For Sale", "Help!", "Rubber Soul",
103
+ # "Revolver", "Sgt. Pepper's Lonely Hearts Club Band", "Magical Mystery Tour",
104
+ # "The Beatles", "Yellow Submarine", "Abbey Road", "Let It Be"]
105
+ ```
106
+
107
+
108
+ ## Riak Search Examples
109
+
110
+ For more information about Riak Search, see [the Basho wiki](http://wiki.basho.com/Riak-Search.html).
111
+
112
+ ``` ruby
113
+ # Create a client, specifying the Solr-compatible endpoint
114
+ # When connecting to Riak 0.14 and later, the Solr endpoint configuration option is not necessary.
115
+ client = Riak::Client.new :solr => "/solr"
116
+
117
+ # Search the default index for documents
118
+ result = client.search("title:Yesterday") # Returns a vivified JSON object
119
+ # containing 'responseHeaders' and 'response' keys
120
+ result['response']['numFound'] # total number of results
121
+ result['response']['start'] # offset into the total result set
122
+ result['response']['docs'] # the list of indexed documents
123
+
124
+ # Search the 'users' index for documents
125
+ client.search("users", "name:Sean")
126
+
127
+ # Add a document to an index
128
+ client.index("users", {:id => "sean@basho.com", :name => "Sean Cribbs"}) # adds to the 'users' index
129
+
130
+ client.index({:id => "index.html", :content => "Hello, world!"}) # adds to the default index
131
+
132
+ client.index({:id => 1, :name => "one"}, {:id => 2, :name => "two"}) # adds multiple docs
133
+
134
+ # Remove document(s) from an index
135
+ client.remove({:id => 1}) # removes the document with ID 1
136
+ client.remove({:query => "archived"}) # removes all documents matching query
137
+ client.remove({:id => 1}, {:id => 5}) # removes multiple docs
138
+
139
+ client.remove("users", {:id => "sean@basho.com"}) # removes from the 'users' index
140
+
141
+ # Seed MapReduce with search results
142
+ Riak::MapReduce.new(client).
143
+ search("users","email:basho").
144
+ map("Riak.mapValuesJson", :keep => true).
145
+ run
146
+
147
+ # Detect whether a bucket has auto-indexing
148
+ client['users'].is_indexed?
149
+
150
+ # Enable auto-indexing on a bucket
151
+ client['users'].enable_index!
152
+
153
+ # Disable auto-indexing on a bucket
154
+ client['users'].disable_index!
155
+ ```
156
+
157
+
158
+ ## How to Contribute
159
+
160
+ * Fork the project on [Github](http://github.com/cloudability/better-riak-client). If you have already forked, use `git pull --rebase` to reapply your changes on top of the mainline. Example:
161
+
162
+ ``` bash
163
+ $ git checkout master
164
+ $ git pull --rebase cloudability master
165
+ ```
166
+ * Create a topic branch. If you've already created a topic branch, rebase it on top of changes from the mainline "master" branch. Examples:
167
+ * New branch:
168
+
169
+ ``` bash
170
+ $ git checkout -b topic
171
+ ```
172
+ * Existing branch:
173
+
174
+ ``` bash
175
+ $ git rebase master
176
+ ```
177
+ * Write an RSpec example or set of examples that demonstrate the necessity and validity of your changes. **Patches without specs will most often be ignored. Just do it, you'll thank me later.** Documentation patches need no specs, of course.
178
+ * Make your feature addition or bug fix. Make your specs and stories pass (green).
179
+ * Run the suite using multiruby or rvm to ensure cross-version compatibility.
180
+ * Cleanup any trailing whitespace in your code (try @whitespace-mode@ in Emacs, or "Remove Trailing Spaces in Document" in the "Text" bundle in Textmate). You can use the `clean_whitespace` Rake task if you like.
181
+ * Commit, do not mess with Rakefile. If related to an existing issue in the [tracker](http://github.com/cloudability/better-riak-client/issues), include "Closes #X" in the commit message (where X is the issue number).
182
+ * Send a pull request to the Basho repository.
183
+
184
+ ## License & Copyright
185
+
186
+ Copyright &copy;2010-2012 Sean Cribbs and Basho Technologies, Inc.
187
+ Improvements Copyright &copy;2012 Cloudability Inc.
188
+
189
+ Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
190
+
191
+ [http://www.apache.org/licenses/LICENSE-2.0](http://www.apache.org/licenses/LICENSE-2.0)
192
+
193
+ Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
194
+
195
+ ## Auxillary Licenses
196
+
197
+ The included photo (spec/fixtures/cat.jpg) is Copyright &copy;2009 [Sean Cribbs](http://seancribbs.com/), and is licensed under the [Creative Commons Attribution Non-Commercial 3.0](http://creativecommons.org/licenses/by-nc/3.0) license.
198
+ !["Creative Commons"](http://i.creativecommons.org/l/by-nc/3.0/88x31.png)
data/RELEASE_NOTES.md ADDED
@@ -0,0 +1,211 @@
1
+ # Riak Ruby Client Release Notes
2
+
3
+ ## 1.0.5 Patch/Bugfix Release - 2012-10-09
4
+
5
+ Release 1.0.5 fixes the bloated-gem issue (where the gem is 17MiB but should be
6
+ much smaller), and allows for proper SSL validation. Additionally, you can now
7
+ use this gem with stock Redstorm.
8
+
9
+ This release corresponds to `riak-ruby-client` v.1.0.4, plus changes on
10
+ `master` as of 2012-10-09 (commit 1ab24be05765e4e19ec204f76b7206ee58d50e69).
11
+
12
+ Improvements:
13
+
14
+ * Switch to using a generated gemspec, and using `git ls-files` to generate the
15
+ list of included files. (Fixes bloated gem issue, and Redstorm compatibility
16
+ issue.)
17
+ * Don't blow away SSL options. (Fixes SSL validation issue.)
18
+
19
+ Upstream Changes:
20
+
21
+ * Add feature detection (via Riak version detection) for client backends. This
22
+ will be necessary to switch on/off various client features.
23
+ * Push down MapReduceError raising into the backend and use the new feature
24
+ detection. (Riak 1.1+ allows phase-less MapReduce)
25
+ * Add native 2I and search queries to PB.
26
+ * Fix minor inspect formatting error.
27
+ * Add failing specs for search integration.
28
+ * Tweak HTTP backend to fit the newer, simplified search response format.
29
+ * Upgrade to RSpec 2.10.x.
30
+ * Fix the version filter to use proper gem-style constraints.
31
+ * Don't try to drop data if the test server is not started.
32
+ * Use the 1.0+ method for conditional stores on PBC. Fixes #5.
33
+ * Replace Riak::Client::Pool with innertube gem.
34
+ * Fix JRuby FIFO blocking-open issue.
35
+ * Remove rspec deprecation warnings.
36
+
37
+
38
+ ## 1.0.4 Patch/Bugfix Release - 2012-07-06
39
+
40
+ Release 1.0.4 fixes some bugs and adds configurable timeouts to the
41
+ Excon HTTP backend.
42
+
43
+ **NOTE** This will likely be the last release in the 1.0.x series. The
44
+ planned changes for 1.1.x are:
45
+
46
+ * `Riak::Client::Pool` will be replaced by the `innertube` gem, which
47
+ is its extraction.
48
+ * Riak 1.2 will be fully supported, including the new native 2I and
49
+ Search features over PBC.
50
+ * A richer exception hierarchy so that applications can deal more
51
+ intelligently with request failures.
52
+
53
+ Changes in 1.0.4:
54
+
55
+ * A function in the `app_helper` module that does not exist on Riak
56
+ 1.1 and earlier was copied into the KV test backend.
57
+ * Excon's configuration logic was made more idempotent.
58
+ * Added timeout support to the Excon HTTP backend. [Mat Brown]
59
+ * Corrected an misnamed constant in Excon which would cause timeouts
60
+ not to be recognized as network errors.
61
+ * The `Riak::TestServer` is now compatible with Riak 1.2.
62
+ * A documentation error around `RObject#data` in the README was
63
+ fixed. [dn@wortbit.de]
64
+ * Fixed an ETS table leak in the testing backend.
65
+ * Deprecation warnings for later versions of MultiJson are now
66
+ resolved.
67
+
68
+ ## 1.0.3 Patch/Bugfix Release - 2012-04-17
69
+
70
+ Release 1.0.3 fixes some bugs and adds support for secondary indexes
71
+ when using `Riak::TestServer`.
72
+
73
+ * Added tests for secondary index features to the unified backend
74
+ examples.
75
+ * Added secondary index support to `riak_kv_test_backend`. Full
76
+ support for this feature will be available via
77
+ `riak_kv_memory_backend` in the next major Riak release. See
78
+ [riak_kv #314](https://github.com/basho/riak_kv/pull/314).
79
+ * The console log (`lager_console_backend`) is now enabled on
80
+ generated nodes.
81
+ * `Riak::Node::Console` no longer overrides the `SIGWINCH` signal
82
+ handler.
83
+ * [Excon](http://rubygems.org/gems/excon) versions >= 0.7.0 are now
84
+ supported.
85
+ * IO-style objects will now be emitted properly when using the
86
+ `NetHTTPBackend`. [#1](https://github.com/basho/riak-ruby-client/issues/1)
87
+ * The Riak version filter for integration specs is now more correct.
88
+ * `Riak::RObject#url` has been removed because its accuracy cannot be
89
+ maintained when connected to multiple Riak nodes or to Riak via
90
+ PBC. [#3](https://github.com/basho/riak-ruby-client/issues/3)
91
+ * Index entries on `Riak::RObject` can be mass-overwritten using
92
+ `Riak::RObject#indexes=` while maintaining the proper internal
93
+ semantics. [#17](https://github.com/basho/riak-ruby-client/issues/17)
94
+ * Nodes should now generate properly when the `riak` script is a
95
+ symlink (e.g. Homebrew). [#26](https://github.com/basho/riak-ruby-client/issues/26)
96
+
97
+ ## 1.0.2 Repackaging - 2012-04-02
98
+
99
+ Release 1.0.2 relaxes the multi_json dependency so that the client
100
+ will function with Rails 3.2. Version 1.0.1 was yanked.
101
+
102
+ ## 1.0.1 Patch/Bugfix Release - 2012-04-02
103
+
104
+ Release 1.0.1 is a minor bugfix/patch release. Included in this
105
+ release are:
106
+
107
+ * I18n messages now include the French locale. [Eric Cestari]
108
+ * SSL configuration should work again. [Adam Hunter]
109
+ * The version comparison when checking Excon compatibility should now
110
+ handle large version numbers correctly. [Srdjan Pejic]
111
+ * There is now a spec to verify that the `riak_kv` `add_paths` setting
112
+ is not clobbered by the `Riak::TestServer` when adding the location
113
+ of the test backend code.
114
+
115
+ ## 1.0.0 Feature Release - 2012-02-03
116
+
117
+ Release 1.0.0 is a major feature release and is the first where
118
+ `riak-client`, `ripple`, and `riak-sessions` will be released
119
+ independently (see below). Because there too many individual changes
120
+ to recount, this entry will cover the major features and bugfixes
121
+ present in the release.
122
+
123
+ ### Riak 1.0/1.1 Compatibility
124
+
125
+ `riak-client` is fully compatible with Riak 1.0.x and
126
+ (yet-to-be-released) 1.1.x, including supporting secondary indexes,
127
+ integrated search, and cluster membership commands.
128
+
129
+ ### Multi-node Connections and Retries
130
+
131
+ `Riak::Client` can now connect to multiple Riak nodes at once. This
132
+ greatly improves throughput and allows the client to recover from
133
+ intermittent connection errors while continuing normal operation. To
134
+ enable this, all uses of the Pump/Fiber logic were removed in favor of
135
+ connection pools from which any new request can draw an existing or
136
+ create a new connection. Which node is selected for any new connection
137
+ is based on a quickly-decaying EWMA of its success rate on recent
138
+ requests. A huge thanks to [Kyle Kingsbury](https://github.com/aphyr)
139
+ who did most of the work on this!
140
+
141
+ ### Improved TestServer and Node Generation
142
+
143
+ The `Riak::TestServer` class has been generalized such that you can
144
+ generate regular nodes and even clusters that store data on disk. This
145
+ is especially useful if you want separate nodes or clusters for each
146
+ project that uses Riak, and to keep them separate from your base
147
+ install. `TestServer` also now launches the node in a separate process
148
+ (not a child process) so you can keep it running between test
149
+ suites. Clearing the in-memory data is performed by connecting to the
150
+ console via the exposed Unix pipes, rather than over stdio.
151
+
152
+ ### Conflict Resolution
153
+
154
+ An important part of dealing with eventual consistency is the ability
155
+ to handle when conflicts (also called siblings) are created. Now you
156
+ can resolve them automatically by registering blocks (callbacks) using
157
+ `Riak::RObject.on_conflict`. The block will be called when fetching a
158
+ key in conflict and receives a `RObject` that has siblings. To resolve
159
+ the conflict, it simply returns the resolved object, or nil if it
160
+ didn't handle the conflict. A huge thanks to
161
+ [Myron Marston](https://github.com/myronmarston) who implemented this!
162
+
163
+ ### Serializers
164
+
165
+ Before, serialization of Ruby objects into Riak was constrained to
166
+ three formats: JSON, YAML and Marshal. Now you can define your own
167
+ serializers so that you can store data in BSON, MsgPack, NetStrings,
168
+ or whatever format you like. Use `Riak::Serializers[content_type] =
169
+ serializer` to assign a serializer for the selected media type. The
170
+ serializer must respond to `#dump` and `#load`. (More handiwork of Myron
171
+ Marston, thanks!)
172
+
173
+ ### Stamps
174
+
175
+ If you don't like the keys that Riak hands out when you store an
176
+ `RObject` without a key, and you want something naturally ordered, you
177
+ can now generate them client-side using `Riak::Stamp`, which will
178
+ generate 64-bit integers in a fashion similar to Twitter's Snowflake,
179
+ but uses `Riak::Client#client_id` as the machine identifier.
180
+
181
+ ### Repository/Feature split
182
+
183
+ In an effort to decouple development of the individual projects and
184
+ reduce top-level dependencies, the `ripple` repository was split into
185
+ new repositories containing its corresponding sub-projects.
186
+ Additionally, the `Riak::CacheStore` has become its own project/gem.
187
+ The new gem and repository locations are below:
188
+
189
+ * [`riak-client`](http://rubygems.org/gems/riak-client) &mdash;
190
+ [basho/riak-ruby-client](https://github.com/basho/riak-ruby-client)
191
+ * [`ripple`](http://rubygems.org/gems/ripple) &mdash;
192
+ [seancribbs/ripple](https://github.com/seancribbs/ripple)
193
+ * [`riak-sessions`](http://rubygems.org/gems/riak-sessions) &mdash;
194
+ [seancribbs/riak-sessions](https://github.com/seancribbs/riak-sessions)
195
+ * [`riak-cache`](http://rubygems.org/gems/riak-cache) &mdash;
196
+ [seancribbs/riak-cache](https://github.com/seancribbs/riak-cache)
197
+
198
+ ### Significant Known Issues
199
+
200
+ Attempting to use the Protocol Buffers transport with a 0.14.x cluster
201
+ may cause the connection to dump because of incompatibilities in
202
+ certain protocol messages. This will be addressed in a future
203
+ patch/bugfix release.
204
+
205
+ The new node generation and test server intermittently fails on JRuby,
206
+ specifically from deadlocks related to blocking opens for the console
207
+ FIFOs. The JRuby team has helped on this issue, but there may not be a
208
+ clear resolution path until JRuby 1.7 or later.
209
+
210
+ Other known issues may be found on the
211
+ [Github issue tracker](https://github.com/basho/riak-ruby-client/issues?milestone=1).
@@ -0,0 +1,61 @@
1
+ # This file is auto-generated!
2
+ # DO NOT EDIT THIS FILE DIRECTLY!
3
+ # Instead, edit the Rakefile and run 'rake gemspec:generate'.# -*- encoding: utf-8 -*-
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "better-riak-client"
7
+ s.version = "1.0.5"
8
+
9
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
10
+ s.authors = ["Jon Frisby", "Sean Cribbs"]
11
+ s.date = "2012-10-10"
12
+ s.description = "better-riak-client is an improved version of Basho's official Ruby client for Riak. It's a drop-in replacement that supports everything the official client does, in a gem that isn't bloated to multiple megabytes in size, and that fixes various outstanding issues like broken SSL validation."
13
+ s.email = ["jon@cloudability.com", "sean@basho.com"]
14
+ s.files = ["LICENSE", "README.markdown", "RELEASE_NOTES.md", "better-riak-client.gemspec", "erl_src/riak_kv_test014_backend.beam", "erl_src/riak_kv_test014_backend.erl", "erl_src/riak_kv_test_backend.beam", "erl_src/riak_kv_test_backend.erl", "erl_src/riak_search_test_backend.beam", "erl_src/riak_search_test_backend.erl", "lib/riak.rb", "lib/riak/bucket.rb", "lib/riak/client.rb", "lib/riak/client/beefcake/messages.rb", "lib/riak/client/beefcake/object_methods.rb", "lib/riak/client/beefcake_protobuffs_backend.rb", "lib/riak/client/decaying.rb", "lib/riak/client/excon_backend.rb", "lib/riak/client/feature_detection.rb", "lib/riak/client/http_backend.rb", "lib/riak/client/http_backend/configuration.rb", "lib/riak/client/http_backend/key_streamer.rb", "lib/riak/client/http_backend/object_methods.rb", "lib/riak/client/http_backend/request_headers.rb", "lib/riak/client/http_backend/transport_methods.rb", "lib/riak/client/net_http_backend.rb", "lib/riak/client/node.rb", "lib/riak/client/protobuffs_backend.rb", "lib/riak/client/search.rb", "lib/riak/cluster.rb", "lib/riak/core_ext.rb", "lib/riak/core_ext/blank.rb", "lib/riak/core_ext/deep_dup.rb", "lib/riak/core_ext/extract_options.rb", "lib/riak/core_ext/json.rb", "lib/riak/core_ext/slice.rb", "lib/riak/core_ext/stringify_keys.rb", "lib/riak/core_ext/symbolize_keys.rb", "lib/riak/core_ext/to_param.rb", "lib/riak/encoding.rb", "lib/riak/failed_request.rb", "lib/riak/i18n.rb", "lib/riak/json.rb", "lib/riak/link.rb", "lib/riak/locale/en.yml", "lib/riak/locale/fr.yml", "lib/riak/map_reduce.rb", "lib/riak/map_reduce/filter_builder.rb", "lib/riak/map_reduce/phase.rb", "lib/riak/map_reduce_error.rb", "lib/riak/node.rb", "lib/riak/node/configuration.rb", "lib/riak/node/console.rb", "lib/riak/node/control.rb", "lib/riak/node/defaults.rb", "lib/riak/node/generation.rb", "lib/riak/node/log.rb", "lib/riak/node/version.rb", "lib/riak/robject.rb", "lib/riak/search.rb", "lib/riak/serializers.rb", "lib/riak/stamp.rb", "lib/riak/test_server.rb", "lib/riak/util/escape.rb", "lib/riak/util/headers.rb", "lib/riak/util/multipart.rb", "lib/riak/util/multipart/stream_parser.rb", "lib/riak/util/tcp_socket_extensions.rb", "lib/riak/util/translation.rb", "lib/riak/version.rb", "lib/riak/walk_spec.rb"]
15
+ s.homepage = "http://github.com/cloudability/better-riak-client"
16
+ s.require_paths = ["lib"]
17
+ s.rubygems_version = "1.8.24"
18
+ s.summary = "better-riak-client is an improved version of Basho's official Ruby client for Riak."
19
+
20
+ if s.respond_to? :specification_version then
21
+ s.specification_version = 3
22
+
23
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
24
+ s.add_runtime_dependency(%q<i18n>, [">= 0.4.0"])
25
+ s.add_runtime_dependency(%q<builder>, [">= 2.1.2"])
26
+ s.add_runtime_dependency(%q<beefcake>, ["~> 0.3.7"])
27
+ s.add_runtime_dependency(%q<multi_json>, ["~> 1.0"])
28
+ s.add_runtime_dependency(%q<innertube>, ["~> 1.0.2"])
29
+ s.add_development_dependency(%q<rspec>, ["~> 2.10.0"])
30
+ s.add_development_dependency(%q<fakeweb>, [">= 1.2"])
31
+ s.add_development_dependency(%q<rack>, [">= 1.0"])
32
+ s.add_development_dependency(%q<excon>, [">= 0.6.1"])
33
+ s.add_development_dependency(%q<rake>, [">= 0"])
34
+ s.add_development_dependency(%q<yajl-ruby>, [">= 0"])
35
+ else
36
+ s.add_dependency(%q<i18n>, [">= 0.4.0"])
37
+ s.add_dependency(%q<builder>, [">= 2.1.2"])
38
+ s.add_dependency(%q<beefcake>, ["~> 0.3.7"])
39
+ s.add_dependency(%q<multi_json>, ["~> 1.0"])
40
+ s.add_dependency(%q<innertube>, ["~> 1.0.2"])
41
+ s.add_dependency(%q<rspec>, ["~> 2.10.0"])
42
+ s.add_dependency(%q<fakeweb>, [">= 1.2"])
43
+ s.add_dependency(%q<rack>, [">= 1.0"])
44
+ s.add_dependency(%q<excon>, [">= 0.6.1"])
45
+ s.add_dependency(%q<rake>, [">= 0"])
46
+ s.add_dependency(%q<yajl-ruby>, [">= 0"])
47
+ end
48
+ else
49
+ s.add_dependency(%q<i18n>, [">= 0.4.0"])
50
+ s.add_dependency(%q<builder>, [">= 2.1.2"])
51
+ s.add_dependency(%q<beefcake>, ["~> 0.3.7"])
52
+ s.add_dependency(%q<multi_json>, ["~> 1.0"])
53
+ s.add_dependency(%q<innertube>, ["~> 1.0.2"])
54
+ s.add_dependency(%q<rspec>, ["~> 2.10.0"])
55
+ s.add_dependency(%q<fakeweb>, [">= 1.2"])
56
+ s.add_dependency(%q<rack>, [">= 1.0"])
57
+ s.add_dependency(%q<excon>, [">= 0.6.1"])
58
+ s.add_dependency(%q<rake>, [">= 0"])
59
+ s.add_dependency(%q<yajl-ruby>, [">= 0"])
60
+ end
61
+ end