Update README: install section

Change-Id: I2120237ed1e8ded4c6d37a87afb810b00ba31d53
Reviewed-on: http://review.couchbase.org/14350
Tested-by: Sergey Avseyev <sergey.avseyev@gmail.com>
Reviewed-by: Chris Anderson <jchris@couchbase.com>
Add @since tags to classes and methods

Change-Id: Iee20f09cde452f6f8c1a852f955e6a1011349ddf
Reviewed-on: http://review.couchbase.org/14351
Tested-by: Sergey Avseyev <sergey.avseyev@gmail.com>
Reviewed-by: Chris Anderson <jchris@couchbase.com>
Update @see link

Change-Id: Ib927de91070fe3b7d495ad760a8bdd4c758d9f9a
Reviewed-on: http://review.couchbase.org/14354
Tested-by: Sergey Avseyev <sergey.avseyev@gmail.com>
Reviewed-by: Chris Anderson <jchris@couchbase.com>
There no such class Boolean in ruby

Change-Id: I2ae54e3748bb53ed9c96046dbfbe6811047d123d
Reviewed-on: http://review.couchbase.org/14355
Tested-by: Sergey Avseyev <sergey.avseyev@gmail.com>
Reviewed-by: Chris Anderson <jchris@couchbase.com>
Convert connection_options into Array if needed

This patch fixes the case when splat operator applied to Hash, e.g.

  Couchbase.connection_options = {:port => 9000, :bucket => 'myapp'}

Change-Id: I332881bbd0386b1fc859f906cf591bf9add67406
Reviewed-on: http://review.couchbase.org/14370
Tested-by: Sergey Avseyev <sergey.avseyev@gmail.com>
Reviewed-by: Chris Anderson <jchris@couchbase.com>
Do not create zipball

Change-Id: If2410876dc6374e7480eb5ed96062198e18abff6
Reviewed-on: http://review.couchbase.org/14629
Tested-by: Sergey Avseyev <sergey.avseyev@gmail.com>
Reviewed-by: Chris Anderson <jchris@couchbase.com>
Use preview version of the libcouchbase

Change-Id: Ib9f0230796e707067f8750608df9fc6187b1bcb0
Reviewed-on: http://review.couchbase.org/14585
Tested-by: Sergey Avseyev <sergey.avseyev@gmail.com>
Reviewed-by: Chris Anderson <jchris@couchbase.com>
Implement views

Change-Id: I0abc65fddbb86a944b19aa3d62eff083fadf091a
Reviewed-on: http://review.couchbase.org/13937
Reviewed-by: Chris Anderson <jchris@couchbase.com>
Tested-by: Sergey Avseyev <sergey.avseyev@gmail.com>
Verbose by default. Throw exceptions on NOT_FOUND errors

Change-Id: Ic2a10a7d879333894f9916d298ce211314d78d9e
Reviewed-on: http://review.couchbase.org/14659
Tested-by: Sergey Avseyev <sergey.avseyev@gmail.com>
Reviewed-by: Chris Anderson <jchris@couchbase.com>
Bump version to 1.2.0.dp

DP = Development Preview

Change-Id: Id5ae14974f53859c9fd1fb553314a8dcca4fa06a
Reviewed-on: http://review.couchbase.org/14358
Reviewed-by: Sergey Avseyev <sergey.avseyev@gmail.com>
Tested-by: Sergey Avseyev <sergey.avseyev@gmail.com>
Update package versions

Change-Id: Ib481bc4b56e27a423d5b34581209f865e80d5802
Reviewed-on: http://review.couchbase.org/14725
Reviewed-by: Sergey Avseyev <sergey.avseyev@gmail.com>
Tested-by: Sergey Avseyev <sergey.avseyev@gmail.com>
Fix typos in README

Change-Id: I63e894d8026ef4c006adce11fd2dab7a276d475d
Reviewed-on: http://review.couchbase.org/14836
Tested-by: Sergey Avseyev <sergey.avseyev@gmail.com>
Reviewed-by: Chris Anderson <jchris@couchbase.com>
RCBC-31 Make Bucket#get more consistent

Now it take into account the type of argument(s) it received:

  get(["foo"])  #=> ["bar"]
  get("foo")    #=> "bar"
  get(["x"], :extended => true) #=> {"x"=>["xval", 0, 18336939621176836096]}

Change-Id: Ic16463793dfa805e0af278be6e6eab95e6465834
Reviewed-on: http://review.couchbase.org/14759
Tested-by: Sergey Avseyev <sergey.avseyev@gmail.com>
Reviewed-by: Chris Anderson <jchris@couchbase.com>
Use monotonic high resolution clock

Stolen from libcouchbase

Change-Id: Ib9fb6e0fe5267cd185930f398174dab5b8ee1ac0
Reviewed-on: http://review.couchbase.org/14980
Tested-by: Sergey Avseyev <sergey.avseyev@gmail.com>
Reviewed-by: Aliaksey Kandratsenka <alkondratenko@gmail.com>
Implement threshold for outgoing commands

Now the user could specify the value in bytes and the library will send the
commands to the cluster if the total length of the commands scheduled
exceeds that number

  c = Couchbase.connect
  sent = 0
  c.run(:send_threshold => 8192) do  # 8Kb
    c.set("foo1", "x" * 100) {|r| sent += 1}
    # 128 bytes buffered, sent is 0 now
    c.set("foo2", "x" * 10000) {|r| sent += 1}
    # 10028 bytes added, sent is 2 now
    c.set("foo3", "x" * 100) {|r| sent += 1}
  end
  # all commands were executed and sent is 3 now

Change-Id: Ia59f75ac57e636dd7e0bffe25390de0b5da5607e
Reviewed-on: http://review.couchbase.org/14962
Tested-by: Sergey Avseyev <sergey.avseyev@gmail.com>
Reviewed-by: Aliaksey Kandratsenka <alkondratenko@gmail.com>
Allow to stop event loop from ruby

Change-Id: I172c2b7401957bf0cd6d3d16e42ed6ed39136840
Reviewed-on: http://review.couchbase.org/14992
Tested-by: Sergey Avseyev <sergey.avseyev@gmail.com>
Reviewed-by: Chris Anderson <jchris@couchbase.com>
RCBC-35 Fix the params escaping

Change-Id: I0a0b58b56ca035e9bfe835c23e7e68213d9bbb2c
Reviewed-on: http://review.couchbase.org/16339
Tested-by: Sergey Avseyev <sergey.avseyev@gmail.com>
Reviewed-by: Jan Lehnardt <jan@couchbase.com>
RCBC-34 Use multi_json gem

multi_json is more portable way to use JSON parser/generator

Change-Id: Ia23b0952cb72364dc9d84bba215c39ba96a79c65
Reviewed-on: http://review.couchbase.org/16153
Reviewed-by: Sergey Avseyev <sergey.avseyev@gmail.com>
Tested-by: Sergey Avseyev <sergey.avseyev@gmail.com>
Allow to block and wait for part of the requests

Change-Id: I609b3066ac670f0614d6864dd7c1f4a9c25ea230
Reviewed-on: http://review.couchbase.org/14963
Reviewed-by: Sergey Avseyev <sergey.avseyev@gmail.com>
Tested-by: Sergey Avseyev <sergey.avseyev@gmail.com>
Fix view iterator. It doesn't lock event loop anymore

Change-Id: Iad4eacf012ed2381b29ff811c06c8a9e99f0f800
Reviewed-on: http://review.couchbase.org/14993
Tested-by: Sergey Avseyev <sergey.avseyev@gmail.com>
Reviewed-by: Jasdeep Jaitla <jasdeep@scalabl3.com>
Reviewed-by: Chris Anderson <jchris@couchbase.com>