couchrest 1.1.3 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
data/.travis.yml ADDED
@@ -0,0 +1,8 @@
1
+ rvm:
2
+ - 2.0.0
3
+ - 1.9.3
4
+ - 1.9.2
5
+ - 1.8.7
6
+ - ree-1.8.7
7
+ - jruby
8
+ services: couchdb
data/Gemfile CHANGED
@@ -1,4 +1,2 @@
1
-
2
- source :rubygems
3
- gemspec
4
-
1
+ source "http://rubygems.org"
2
+ gemspec
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # CouchRest: CouchDB, close to the metal
1
+ # CouchRest: CouchDB, close to the metal [![Build Status](https://travis-ci.org/couchrest/couchrest.png)](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 spec spec
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
- require 'rubygems'
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
- desc "Run all specs"
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 "Print specdocs"
15
- RSpec::Core::RakeTask.new(:doc) do |spec|
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 "Generate the rdoc"
21
- Rake::RDocTask.new do |rdoc|
22
- files = ["README.rdoc", "LICENSE", "lib/**/*.rb"]
23
- rdoc.rdoc_files.add(files)
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.3
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>, ["~> 1.5.1"])
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
@@ -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
- p "resource not found when saving even tho an id was passed"
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['source'] = other_db.root
352
+ payload[:source] = other_db.root
353
353
  else
354
- payload['target'] = other_db.root
354
+ payload[:target] = other_db.root
355
355
  end
356
- payload['continuous'] = continuous
357
- payload['doc_ids'] = doc_ids if doc_ids
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
 
@@ -8,7 +8,7 @@ module CouchRest
8
8
  end
9
9
 
10
10
  def view(*args)
11
- raise "CouchRest::Streamer#view is depricated. Please use Database#view with block."
11
+ raise "CouchRest::Streamer#view is deprecated. Please use Database#view with block."
12
12
  end
13
13
 
14
14
  def get(url, &block)
@@ -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
 
@@ -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 nil
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
- db = @cr.database('couchrest-test')
740
- r = db.compact!
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
- shared_examples_for "simply replicated" do
764
- it "contains the document from the original database" do
765
- doc = @other_db.get('test_doc')
766
- doc['some-value'].should == 'foo'
767
- end
768
- end
769
-
770
- describe "via pulling" do
771
- before(:each) do
772
- @other_db.recreate!
773
- @other_db.replicate_from @db
774
- end
775
-
776
- it_should_behave_like "simply replicated"
777
- end
778
-
779
- describe "via pushing" do
780
- before(:each) do
781
- @other_db.recreate!
782
- @db.replicate_to @other_db
783
- end
784
-
785
- it_should_behave_like "simply replicated"
786
- end
787
-
788
- describe "with a specific doc" do
789
- before(:each) do
790
- @other_db.recreate!
791
- @db.save_doc({'_id' => 'unreplicated_doc', 'some-value' => 'foo'})
792
- @db.replicate_to @other_db, false, false, ['test_doc']
793
- end
794
-
795
- # should contain only replicated doc and not unreplicated doc
796
- it_should_behave_like "simply replicated"
797
- it "does not contain unreplicated doc" do
798
- lambda { @other_db.get('unreplicated_doc') }.should raise_error(RestClient::ResourceNotFound)
799
- end
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
- describe "via pulling" do
804
- before(:each) do
805
- @other_db.replicate_from(@db, false, true)
806
- end
807
-
808
- it_should_behave_like "simply replicated"
809
- end
810
-
811
- describe "via pushing" do
812
- before(:each) do
813
- @db.replicate_to(@other_db, false, true)
814
- end
815
-
816
- it_should_behave_like "simply replicated"
817
- end
818
- end
819
- end
820
-
821
- describe "continuously replicating a database" do
822
- before(:each) do
823
- @db.save_doc({'_id' => 'test_doc', 'some-value' => 'foo'})
824
- @other_db = @cr.database(REPLICATIONDB)
825
- end
826
-
827
- shared_examples_for "continuously replicated" do
828
- it "contains the document from the original database" do
829
- sleep(1.5) # Allow some time to replicate
830
- doc = @other_db.get('test_doc')
831
- doc['some-value'].should == 'foo'
832
- end
833
-
834
- it "contains documents saved after replication initiated" do
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
- it_should_behave_like "continuously replicated"
849
- end
850
-
851
- describe "via pushing" do
852
- before(:each) do
853
- @other_db.recreate!
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 tho it doesn't exist" do
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 depricated" do
23
- lambda { @streamer.view }.should raise_error(/depricated/)
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.1.3
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: 2012-07-31 00:00:00.000000000 Z
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.5.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.5.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.24
222
+ rubygems_version: 1.8.25
187
223
  signing_key:
188
224
  specification_version: 3
189
225
  summary: Lean and RESTful interface to CouchDB.