couchrest 1.1.3 → 1.2.0
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/.travis.yml +8 -0
- data/Gemfile +2 -4
- data/README.md +3 -2
- data/Rakefile +9 -24
- data/VERSION +1 -1
- data/couchrest.gemspec +3 -1
- data/history.txt +8 -0
- data/lib/couchrest.rb +13 -1
- data/lib/couchrest/database.rb +5 -5
- data/lib/couchrest/helper/streamer.rb +1 -1
- data/lib/couchrest/rest_api.rb +4 -3
- data/lib/couchrest/server.rb +11 -11
- data/spec/couchrest/couchrest_spec.rb +2 -7
- data/spec/couchrest/database_spec.rb +92 -112
- data/spec/couchrest/helpers/streamer_spec.rb +3 -3
- data/spec/couchrest/rest_api_spec.rb +21 -0
- metadata +43 -7
data/.travis.yml
ADDED
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# CouchRest: CouchDB, close to the metal
|
1
|
+
# CouchRest: CouchDB, close to the metal [](https://travis-ci.org/couchrest/couchrest)
|
2
2
|
|
3
3
|
CouchRest is based on [CouchDB's couch.js test
|
4
4
|
library](http://svn.apache.org/repos/asf/couchdb/trunk/share/www/script/couch.js),
|
@@ -41,12 +41,13 @@ CouchRest install, from the project root directory use bundler to install
|
|
41
41
|
the dependencies and then run the tests:
|
42
42
|
|
43
43
|
$ bundle install
|
44
|
-
$ bundle exec
|
44
|
+
$ bundle exec rake
|
45
45
|
|
46
46
|
To date, the couchrest specs have been show to run on:
|
47
47
|
|
48
48
|
* Ruby 1.8.7
|
49
49
|
* Ruby 1.9.2
|
50
|
+
* Ruby 1.9.3
|
50
51
|
* JRuby 1.5.6
|
51
52
|
|
52
53
|
## Docs
|
data/Rakefile
CHANGED
@@ -1,33 +1,18 @@
|
|
1
|
-
|
1
|
+
# encoding: utf-8
|
2
2
|
require 'bundler'
|
3
|
-
require 'rspec/core/rake_task'
|
4
|
-
require "rake/rdoctask"
|
5
|
-
|
6
3
|
Bundler::GemHelper.install_tasks
|
7
4
|
|
8
|
-
|
9
|
-
RSpec::Core::RakeTask.new(:spec) do |spec|
|
10
|
-
spec.rspec_opts = ["--color"]
|
11
|
-
spec.pattern = 'spec/**/*_spec.rb'
|
12
|
-
end
|
5
|
+
require 'rspec/core/rake_task'
|
13
6
|
|
14
|
-
desc
|
15
|
-
|
16
|
-
spec.rspec_opts = ["--format", "specdoc"]
|
17
|
-
spec.pattern = 'spec/*_spec.rb'
|
18
|
-
end
|
7
|
+
desc 'Default: run unit tests.'
|
8
|
+
task :default => :spec
|
19
9
|
|
20
|
-
desc "
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
rdoc.main = "README.rdoc"
|
25
|
-
rdoc.title = "CouchRest: Ruby CouchDB, close to the metal"
|
10
|
+
desc "Run all specs"
|
11
|
+
RSpec::Core::RakeTask.new do |t|
|
12
|
+
t.pattern = 'spec/**/*_spec.rb'
|
13
|
+
t.rspec_opts = ["-c", "-f progress"]
|
26
14
|
end
|
27
15
|
|
28
|
-
desc "Run the rspec"
|
29
|
-
task :default => :spec
|
30
|
-
|
31
16
|
module Rake
|
32
17
|
def self.remove_task(task_name)
|
33
18
|
Rake.application.instance_variable_get('@tasks').delete(task_name.to_s)
|
@@ -35,4 +20,4 @@ module Rake
|
|
35
20
|
end
|
36
21
|
|
37
22
|
Rake.remove_task("github:release")
|
38
|
-
Rake.remove_task("release")
|
23
|
+
Rake.remove_task("release")
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.
|
1
|
+
1.2.0
|
data/couchrest.gemspec
CHANGED
@@ -29,6 +29,8 @@ Gem::Specification.new do |s|
|
|
29
29
|
s.add_dependency(%q<rest-client>, ["~> 1.6.1"])
|
30
30
|
s.add_dependency(%q<mime-types>, ["~> 1.15"])
|
31
31
|
s.add_dependency(%q<multi_json>, ["~> 1.0"])
|
32
|
-
s.add_development_dependency(%q<json>, ["
|
32
|
+
s.add_development_dependency(%q<json>, [">= 1.7.0"])
|
33
33
|
s.add_development_dependency(%q<rspec>, "~> 2.6.0")
|
34
|
+
s.add_development_dependency(%q<rake>)
|
35
|
+
s.add_development_dependency(%q<multi_json>, "~> 1.7") # needed for json decode json objects
|
34
36
|
end
|
data/history.txt
CHANGED
@@ -1,3 +1,11 @@
|
|
1
|
+
== 1.2.0 - 2013-05-25
|
2
|
+
|
3
|
+
* Changes
|
4
|
+
* Added clobal configuration option to decode JSON objects (@langalex)
|
5
|
+
* Changing specs to test parameters as apposed to CouchDB for replication and restart
|
6
|
+
* Spec updates (@tapajos)
|
7
|
+
* Spec typos (@frasertweedale, @m1foley)
|
8
|
+
|
1
9
|
== 1.1.3 - 2012-07-31
|
2
10
|
|
3
11
|
* Minor changes
|
data/lib/couchrest.rb
CHANGED
@@ -43,7 +43,7 @@ module CouchRest
|
|
43
43
|
# the get, post, put, delete and copy
|
44
44
|
CouchRest.extend(::CouchRest::RestAPI)
|
45
45
|
|
46
|
-
# The CouchRest module methods handle the basic JSON serialization
|
46
|
+
# The CouchRest module methods handle the basic JSON serialization
|
47
47
|
# and deserialization, as well as query parameters. The module also includes
|
48
48
|
# some helpers for tasks like instantiating a new Database or Server instance.
|
49
49
|
class << self
|
@@ -118,6 +118,18 @@ module CouchRest
|
|
118
118
|
end
|
119
119
|
url
|
120
120
|
end
|
121
|
+
|
122
|
+
@@decode_json_objects = false
|
123
|
+
|
124
|
+
def decode_json_objects=(value)
|
125
|
+
@@decode_json_objects = value
|
126
|
+
end
|
127
|
+
|
128
|
+
# When set to true, CouchRest.get tries to decode the JSON returned
|
129
|
+
# from CouchDB into a Ruby object. Default: false.
|
130
|
+
def decode_json_objects
|
131
|
+
@@decode_json_objects
|
132
|
+
end
|
121
133
|
end # class << self
|
122
134
|
end
|
123
135
|
# For the sake of backwards compatability, generate a dummy ExtendedDocument class
|
data/lib/couchrest/database.rb
CHANGED
@@ -129,7 +129,7 @@ module CouchRest
|
|
129
129
|
uri << "?batch=ok" if batch
|
130
130
|
CouchRest.put uri, doc
|
131
131
|
rescue RestClient::ResourceNotFound
|
132
|
-
|
132
|
+
puts "resource not found when saving even though an id was passed"
|
133
133
|
slug = doc['_id'] = @server.next_uuid
|
134
134
|
CouchRest.put "#{@root}/#{slug}", doc
|
135
135
|
end
|
@@ -349,12 +349,12 @@ module CouchRest
|
|
349
349
|
doc_ids = options.delete(:doc_ids)
|
350
350
|
payload = options
|
351
351
|
if options.has_key?(:target)
|
352
|
-
payload[
|
352
|
+
payload[:source] = other_db.root
|
353
353
|
else
|
354
|
-
payload[
|
354
|
+
payload[:target] = other_db.root
|
355
355
|
end
|
356
|
-
payload[
|
357
|
-
payload[
|
356
|
+
payload[:continuous] = continuous
|
357
|
+
payload[:doc_ids] = doc_ids if doc_ids
|
358
358
|
CouchRest.post "#{@host}/_replicate", payload
|
359
359
|
end
|
360
360
|
|
data/lib/couchrest/rest_api.rb
CHANGED
@@ -30,7 +30,7 @@ module CouchRest
|
|
30
30
|
#
|
31
31
|
# Any other remaining options will be sent to the MultiJSON backend except for the :raw option.
|
32
32
|
#
|
33
|
-
# When :raw is true in PUT and POST requests, no attempt will be made to convert the document payload to JSON. This is
|
33
|
+
# When :raw is true in PUT and POST requests, no attempt will be made to convert the document payload to JSON. This is
|
34
34
|
# not normally necessary as IO and Tempfile objects will not be parsed anyway. The result of the request will
|
35
35
|
# *always* be parsed.
|
36
36
|
#
|
@@ -84,7 +84,7 @@ module CouchRest
|
|
84
84
|
|
85
85
|
private
|
86
86
|
|
87
|
-
# Perform the RestClient request by removing the parse specific options, ensuring the
|
87
|
+
# Perform the RestClient request by removing the parse specific options, ensuring the
|
88
88
|
# payload is prepared, and sending the request ready to parse the response.
|
89
89
|
def execute(url, method, options = {}, payload = nil)
|
90
90
|
request, parser = prepare_and_split_options(url, method, options)
|
@@ -131,7 +131,7 @@ module CouchRest
|
|
131
131
|
[request, parser]
|
132
132
|
end
|
133
133
|
|
134
|
-
# Check if the provided doc is nil or special IO device or temp file. If not,
|
134
|
+
# Check if the provided doc is nil or special IO device or temp file. If not,
|
135
135
|
# encode it into a string.
|
136
136
|
#
|
137
137
|
# The options supported are:
|
@@ -147,6 +147,7 @@ module CouchRest
|
|
147
147
|
|
148
148
|
# Parse the response provided.
|
149
149
|
def parse_response(result, opts = {})
|
150
|
+
opts = opts.update(:create_additions => true) if decode_json_objects
|
150
151
|
(opts.delete(:raw) || opts.delete(:head)) ? result : MultiJson.decode(result, opts.update(:max_nesting => false))
|
151
152
|
end
|
152
153
|
|
data/lib/couchrest/server.rb
CHANGED
@@ -1,11 +1,13 @@
|
|
1
1
|
module CouchRest
|
2
2
|
class Server
|
3
|
+
|
3
4
|
attr_accessor :uri, :uuid_batch_count, :available_databases
|
5
|
+
|
4
6
|
def initialize(server = 'http://127.0.0.1:5984', uuid_batch_count = 1000)
|
5
7
|
@uri = server
|
6
8
|
@uuid_batch_count = uuid_batch_count
|
7
9
|
end
|
8
|
-
|
10
|
+
|
9
11
|
# Lists all "available" databases.
|
10
12
|
# An available database, is a database that was specified
|
11
13
|
# as avaiable by your code.
|
@@ -13,7 +15,7 @@ module CouchRest
|
|
13
15
|
def available_databases
|
14
16
|
@available_databases ||= {}
|
15
17
|
end
|
16
|
-
|
18
|
+
|
17
19
|
# Adds a new available database and create it unless it already exists
|
18
20
|
#
|
19
21
|
# Example:
|
@@ -24,7 +26,7 @@ module CouchRest
|
|
24
26
|
def define_available_database(reference, db_name, create_unless_exists = true)
|
25
27
|
available_databases[reference.to_sym] = create_unless_exists ? database!(db_name) : database(db_name)
|
26
28
|
end
|
27
|
-
|
29
|
+
|
28
30
|
# Checks that a database is set as available
|
29
31
|
#
|
30
32
|
# Example:
|
@@ -34,25 +36,25 @@ module CouchRest
|
|
34
36
|
def available_database?(ref_or_name)
|
35
37
|
ref_or_name.is_a?(Symbol) ? available_databases.keys.include?(ref_or_name) : available_databases.values.map{|db| db.name}.include?(ref_or_name)
|
36
38
|
end
|
37
|
-
|
39
|
+
|
38
40
|
def default_database=(name, create_unless_exists = true)
|
39
41
|
define_available_database(:default, name, create_unless_exists = true)
|
40
42
|
end
|
41
|
-
|
43
|
+
|
42
44
|
def default_database
|
43
45
|
available_databases[:default]
|
44
46
|
end
|
45
|
-
|
47
|
+
|
46
48
|
# Lists all databases on the server
|
47
49
|
def databases
|
48
50
|
CouchRest.get "#{@uri}/_all_dbs"
|
49
51
|
end
|
50
|
-
|
52
|
+
|
51
53
|
# Returns a CouchRest::Database for the given name
|
52
54
|
def database(name)
|
53
55
|
CouchRest::Database.new(self, name)
|
54
56
|
end
|
55
|
-
|
57
|
+
|
56
58
|
# Creates the database if it doesn't exist
|
57
59
|
def database!(name)
|
58
60
|
CouchRest.head "#{@uri}/#{name}" # Check if the URL is valid
|
@@ -60,7 +62,7 @@ module CouchRest
|
|
60
62
|
rescue RestClient::ResourceNotFound # Thrown if the HTTP HEAD fails
|
61
63
|
create_db(name)
|
62
64
|
end
|
63
|
-
|
65
|
+
|
64
66
|
# GET the welcome message
|
65
67
|
def info
|
66
68
|
CouchRest.get "#{@uri}/"
|
@@ -75,8 +77,6 @@ module CouchRest
|
|
75
77
|
# Restart the CouchDB instance
|
76
78
|
def restart!
|
77
79
|
CouchRest.post "#{@uri}/_restart"
|
78
|
-
rescue RestClient::ServerBrokeConnection
|
79
|
-
# Shouldn't really happen, but does in CouchDB 1.0.0
|
80
80
|
end
|
81
81
|
|
82
82
|
# Retrive an unused UUID from CouchDB. Server instances manage caching a list of unused UUIDs.
|
@@ -27,14 +27,9 @@ describe CouchRest do
|
|
27
27
|
end
|
28
28
|
|
29
29
|
it "should restart" do
|
30
|
+
# we really do not need to perform a proper restart!
|
31
|
+
CouchRest.should_receive(:post).with("#{@cr.uri}/_restart")
|
30
32
|
@cr.restart!
|
31
|
-
begin
|
32
|
-
@cr.info
|
33
|
-
rescue
|
34
|
-
# Give the couchdb time to restart
|
35
|
-
sleep 0.2
|
36
|
-
retry
|
37
|
-
end
|
38
33
|
end
|
39
34
|
|
40
35
|
it "should provide one-time access to uuids" do
|
@@ -4,8 +4,8 @@ describe CouchRest::Database do
|
|
4
4
|
before(:each) do
|
5
5
|
@cr = CouchRest.new(COUCHHOST)
|
6
6
|
@db = @cr.database(TESTDB)
|
7
|
-
@db.delete! rescue
|
8
|
-
@db = @cr.create_db(TESTDB) rescue nil
|
7
|
+
@db.delete! rescue RestClient::ResourceNotFound
|
8
|
+
@db = @cr.create_db(TESTDB) # rescue nil
|
9
9
|
end
|
10
10
|
|
11
11
|
describe "database name including slash" do
|
@@ -735,10 +735,11 @@ describe CouchRest::Database do
|
|
735
735
|
|
736
736
|
|
737
737
|
describe "#compact" do
|
738
|
+
# Can cause failures in recent versions of CouchDB, just ensure
|
739
|
+
# we actually send the right command.
|
738
740
|
it "should compact the database" do
|
739
|
-
|
740
|
-
|
741
|
-
r['ok'].should == true
|
741
|
+
CouchRest.should_receive(:post).with("#{@cr.uri}/couchrest-test/_compact")
|
742
|
+
@cr.database('couchrest-test').compact!
|
742
743
|
end
|
743
744
|
end
|
744
745
|
|
@@ -754,128 +755,107 @@ describe CouchRest::Database do
|
|
754
755
|
end
|
755
756
|
end
|
756
757
|
|
758
|
+
#
|
759
|
+
# Replicating databases is often a time consuming process, so instead of
|
760
|
+
# trying to send commands to CouchDB, we just validate that the post
|
761
|
+
# command contains the correct parameters.
|
762
|
+
#
|
763
|
+
|
757
764
|
describe "simply replicating a database" do
|
758
765
|
before(:each) do
|
759
|
-
@db.save_doc({'_id' => 'test_doc', 'some-value' => 'foo'})
|
760
766
|
@other_db = @cr.database(REPLICATIONDB)
|
761
767
|
end
|
762
768
|
|
763
|
-
|
764
|
-
|
765
|
-
|
766
|
-
|
767
|
-
|
768
|
-
|
769
|
-
|
770
|
-
|
771
|
-
|
772
|
-
|
773
|
-
|
774
|
-
|
775
|
-
|
776
|
-
|
777
|
-
|
778
|
-
|
779
|
-
|
780
|
-
|
781
|
-
|
782
|
-
@db.
|
783
|
-
|
784
|
-
|
785
|
-
|
786
|
-
|
787
|
-
|
788
|
-
|
789
|
-
|
790
|
-
|
791
|
-
|
792
|
-
|
793
|
-
|
794
|
-
|
795
|
-
|
796
|
-
|
797
|
-
|
798
|
-
|
799
|
-
|
769
|
+
it "should replicate via pulling" do
|
770
|
+
CouchRest.should_receive(:post).with(
|
771
|
+
include("/_replicate"),
|
772
|
+
include(
|
773
|
+
:create_target => false,
|
774
|
+
:continuous => false,
|
775
|
+
:source => "#{@cr.uri}/#{@db.name}",
|
776
|
+
:target => @other_db.name
|
777
|
+
)
|
778
|
+
)
|
779
|
+
@other_db.replicate_from @db
|
780
|
+
end
|
781
|
+
|
782
|
+
it "should replicate via pushing" do
|
783
|
+
CouchRest.should_receive(:post).with(
|
784
|
+
include("/_replicate"),
|
785
|
+
include(
|
786
|
+
:create_target => false,
|
787
|
+
:continuous => false,
|
788
|
+
:source => @db.name,
|
789
|
+
:target => "#{@cr.uri}/#{@other_db.name}"
|
790
|
+
)
|
791
|
+
)
|
792
|
+
@db.replicate_to @other_db
|
793
|
+
end
|
794
|
+
|
795
|
+
it "should replacicate with a specific doc" do
|
796
|
+
CouchRest.should_receive(:post).with(
|
797
|
+
include("/_replicate"),
|
798
|
+
include(
|
799
|
+
:create_target => false,
|
800
|
+
:continuous => false,
|
801
|
+
:doc_ids => ['test_doc'],
|
802
|
+
:source => @db.name,
|
803
|
+
:target => "#{@cr.uri}/#{@other_db.name}"
|
804
|
+
)
|
805
|
+
)
|
806
|
+
@db.replicate_to @other_db, false, false, ['test_doc']
|
800
807
|
end
|
801
808
|
|
802
809
|
describe "implicitly creating target" do
|
803
|
-
|
804
|
-
|
805
|
-
|
806
|
-
|
807
|
-
|
808
|
-
|
809
|
-
|
810
|
-
|
811
|
-
|
812
|
-
|
813
|
-
|
814
|
-
|
815
|
-
|
816
|
-
|
817
|
-
|
818
|
-
|
819
|
-
|
820
|
-
|
821
|
-
|
822
|
-
|
823
|
-
|
824
|
-
|
825
|
-
|
826
|
-
|
827
|
-
|
828
|
-
|
829
|
-
|
830
|
-
|
831
|
-
|
832
|
-
|
833
|
-
|
834
|
-
|
835
|
-
@db.save_doc({'_id' => 'test_doc_after', 'some-value' => 'bar'})
|
836
|
-
sleep(1.5) # Allow some time to replicate
|
837
|
-
doc = @other_db.get('test_doc_after')
|
838
|
-
doc['some-value'].should == 'bar'
|
839
|
-
end
|
840
|
-
end
|
841
|
-
|
842
|
-
describe "via pulling" do
|
843
|
-
before(:each) do
|
844
|
-
@other_db.recreate!
|
810
|
+
it "should replicate via pulling" do
|
811
|
+
CouchRest.should_receive(:post).with(
|
812
|
+
include("/_replicate"),
|
813
|
+
include(
|
814
|
+
:create_target => true,
|
815
|
+
:continuous => false
|
816
|
+
)
|
817
|
+
)
|
818
|
+
@other_db.replicate_from(@db, false, true)
|
819
|
+
end
|
820
|
+
|
821
|
+
it "should replicate via pushing" do
|
822
|
+
CouchRest.should_receive(:post).with(
|
823
|
+
include("/_replicate"),
|
824
|
+
include(
|
825
|
+
:create_target => true,
|
826
|
+
:continuous => false
|
827
|
+
)
|
828
|
+
)
|
829
|
+
@db.replicate_to(@other_db, false, true)
|
830
|
+
end
|
831
|
+
end
|
832
|
+
|
833
|
+
describe "continuous replication" do
|
834
|
+
it "should replicate via pulling" do
|
835
|
+
CouchRest.should_receive(:post).with(
|
836
|
+
include("/_replicate"),
|
837
|
+
include(
|
838
|
+
:create_target => false,
|
839
|
+
:continuous => true
|
840
|
+
)
|
841
|
+
)
|
845
842
|
@other_db.replicate_from(@db, true)
|
846
843
|
end
|
847
844
|
|
848
|
-
|
849
|
-
|
850
|
-
|
851
|
-
|
852
|
-
|
853
|
-
|
845
|
+
it "should replicate via pushing" do
|
846
|
+
CouchRest.should_receive(:post).with(
|
847
|
+
include("/_replicate"),
|
848
|
+
include(
|
849
|
+
:create_target => false,
|
850
|
+
:continuous => true
|
851
|
+
)
|
852
|
+
)
|
854
853
|
@db.replicate_to(@other_db, true)
|
855
854
|
end
|
856
|
-
|
857
|
-
it_should_behave_like "continuously replicated"
|
858
|
-
end
|
859
|
-
|
860
|
-
describe "implicitly creating target" do
|
861
|
-
before(:each) do
|
862
|
-
@other_db.replicate_from(@db, true, true)
|
863
|
-
end
|
864
|
-
|
865
|
-
after(:each) do
|
866
|
-
@other_db.delete!
|
867
|
-
end
|
868
|
-
|
869
|
-
describe "via pulling" do
|
870
|
-
it_should_behave_like "continuously replicated"
|
871
|
-
end
|
872
|
-
|
873
|
-
describe "via pushing" do
|
874
|
-
it_should_behave_like "continuously replicated"
|
875
|
-
end
|
876
855
|
end
|
877
856
|
end
|
878
857
|
|
858
|
+
|
879
859
|
describe "#create!" do
|
880
860
|
before(:each) do
|
881
861
|
@db = @cr.database('couchrest-test-db_to_create')
|
@@ -903,7 +883,7 @@ describe CouchRest::Database do
|
|
903
883
|
@cr.databases.should include(@db.name)
|
904
884
|
end
|
905
885
|
|
906
|
-
it "should recreate a db even
|
886
|
+
it "should recreate a db even though it doesn't exist" do
|
907
887
|
@cr.databases.should_not include(@db2.name)
|
908
888
|
@db2.recreate!
|
909
889
|
@cr.databases.should include(@db2.name)
|
@@ -19,8 +19,8 @@ describe CouchRest::Streamer do
|
|
19
19
|
})
|
20
20
|
end
|
21
21
|
|
22
|
-
it "should raise error on #view as
|
23
|
-
lambda { @streamer.view }.should raise_error(/
|
22
|
+
it "should raise error on #view as deprecated" do
|
23
|
+
lambda { @streamer.view }.should raise_error(/deprecated/)
|
24
24
|
end
|
25
25
|
|
26
26
|
it "should GET each row in a view" do
|
@@ -50,7 +50,7 @@ describe CouchRest::Streamer do
|
|
50
50
|
header.should == {"total_rows" => 1001, "offset" => 0}
|
51
51
|
end
|
52
52
|
|
53
|
-
it "should raise an exception receives malformed data" do
|
53
|
+
it "should raise an exception if it receives malformed data" do
|
54
54
|
IO.stub(:popen) do |cmd, block|
|
55
55
|
class F
|
56
56
|
def initialize
|
@@ -98,6 +98,27 @@ describe CouchRest::RestAPI do
|
|
98
98
|
expect { CouchRest.get('foo') }.to raise_error(RestClient::Exception)
|
99
99
|
end
|
100
100
|
|
101
|
+
context 'when decode_json_objects is true' do
|
102
|
+
class TestObject
|
103
|
+
def self.json_create(args)
|
104
|
+
new
|
105
|
+
end
|
106
|
+
end
|
107
|
+
|
108
|
+
before(:each) do
|
109
|
+
CouchRest.decode_json_objects = true
|
110
|
+
end
|
111
|
+
|
112
|
+
after(:each) do
|
113
|
+
CouchRest.decode_json_objects = false
|
114
|
+
end
|
115
|
+
|
116
|
+
it 'should return the response as a Ruby object' do
|
117
|
+
CouchRest.put "#{COUCHHOST}/#{TESTDB}/test", JSON.create_id => TestObject.to_s
|
118
|
+
|
119
|
+
CouchRest.get("#{COUCHHOST}/#{TESTDB}/test").class.should eql(TestObject)
|
120
|
+
end
|
121
|
+
end
|
101
122
|
end
|
102
123
|
|
103
124
|
describe :post do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: couchrest
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.2.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -13,7 +13,7 @@ authors:
|
|
13
13
|
autorequire:
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
|
-
date:
|
16
|
+
date: 2013-05-25 00:00:00.000000000 Z
|
17
17
|
dependencies:
|
18
18
|
- !ruby/object:Gem::Dependency
|
19
19
|
name: rest-client
|
@@ -68,17 +68,17 @@ dependencies:
|
|
68
68
|
requirement: !ruby/object:Gem::Requirement
|
69
69
|
none: false
|
70
70
|
requirements:
|
71
|
-
- -
|
71
|
+
- - ! '>='
|
72
72
|
- !ruby/object:Gem::Version
|
73
|
-
version: 1.
|
73
|
+
version: 1.7.0
|
74
74
|
type: :development
|
75
75
|
prerelease: false
|
76
76
|
version_requirements: !ruby/object:Gem::Requirement
|
77
77
|
none: false
|
78
78
|
requirements:
|
79
|
-
- -
|
79
|
+
- - ! '>='
|
80
80
|
- !ruby/object:Gem::Version
|
81
|
-
version: 1.
|
81
|
+
version: 1.7.0
|
82
82
|
- !ruby/object:Gem::Dependency
|
83
83
|
name: rspec
|
84
84
|
requirement: !ruby/object:Gem::Requirement
|
@@ -95,6 +95,38 @@ dependencies:
|
|
95
95
|
- - ~>
|
96
96
|
- !ruby/object:Gem::Version
|
97
97
|
version: 2.6.0
|
98
|
+
- !ruby/object:Gem::Dependency
|
99
|
+
name: rake
|
100
|
+
requirement: !ruby/object:Gem::Requirement
|
101
|
+
none: false
|
102
|
+
requirements:
|
103
|
+
- - ! '>='
|
104
|
+
- !ruby/object:Gem::Version
|
105
|
+
version: '0'
|
106
|
+
type: :development
|
107
|
+
prerelease: false
|
108
|
+
version_requirements: !ruby/object:Gem::Requirement
|
109
|
+
none: false
|
110
|
+
requirements:
|
111
|
+
- - ! '>='
|
112
|
+
- !ruby/object:Gem::Version
|
113
|
+
version: '0'
|
114
|
+
- !ruby/object:Gem::Dependency
|
115
|
+
name: multi_json
|
116
|
+
requirement: !ruby/object:Gem::Requirement
|
117
|
+
none: false
|
118
|
+
requirements:
|
119
|
+
- - ~>
|
120
|
+
- !ruby/object:Gem::Version
|
121
|
+
version: '1.7'
|
122
|
+
type: :development
|
123
|
+
prerelease: false
|
124
|
+
version_requirements: !ruby/object:Gem::Requirement
|
125
|
+
none: false
|
126
|
+
requirements:
|
127
|
+
- - ~>
|
128
|
+
- !ruby/object:Gem::Version
|
129
|
+
version: '1.7'
|
98
130
|
description: CouchRest provides a simple interface on top of CouchDB's RESTful HTTP
|
99
131
|
API, as well as including some utility scripts for managing views and attachments.
|
100
132
|
email: jchris@apache.org
|
@@ -106,6 +138,7 @@ extra_rdoc_files:
|
|
106
138
|
- THANKS.md
|
107
139
|
files:
|
108
140
|
- .gitignore
|
141
|
+
- .travis.yml
|
109
142
|
- Gemfile
|
110
143
|
- LICENSE
|
111
144
|
- README.md
|
@@ -175,6 +208,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
175
208
|
- - ! '>='
|
176
209
|
- !ruby/object:Gem::Version
|
177
210
|
version: '0'
|
211
|
+
segments:
|
212
|
+
- 0
|
213
|
+
hash: 1010445868410705054
|
178
214
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
179
215
|
none: false
|
180
216
|
requirements:
|
@@ -183,7 +219,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
183
219
|
version: 1.3.1
|
184
220
|
requirements: []
|
185
221
|
rubyforge_project:
|
186
|
-
rubygems_version: 1.8.
|
222
|
+
rubygems_version: 1.8.25
|
187
223
|
signing_key:
|
188
224
|
specification_version: 3
|
189
225
|
summary: Lean and RESTful interface to CouchDB.
|