namelessjon-couchrest 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (53) hide show
  1. data/LICENSE +176 -0
  2. data/README.md +46 -0
  3. data/Rakefile +69 -0
  4. data/THANKS.md +21 -0
  5. data/couchrest.gemspec +111 -0
  6. data/examples/word_count/markov +38 -0
  7. data/examples/word_count/views/books/chunked-map.js +3 -0
  8. data/examples/word_count/views/books/united-map.js +1 -0
  9. data/examples/word_count/views/markov/chain-map.js +6 -0
  10. data/examples/word_count/views/markov/chain-reduce.js +7 -0
  11. data/examples/word_count/views/word_count/count-map.js +6 -0
  12. data/examples/word_count/views/word_count/count-reduce.js +3 -0
  13. data/examples/word_count/word_count.rb +46 -0
  14. data/examples/word_count/word_count_query.rb +40 -0
  15. data/examples/word_count/word_count_views.rb +26 -0
  16. data/history.txt +145 -0
  17. data/lib/couchrest/commands/generate.rb +71 -0
  18. data/lib/couchrest/commands/push.rb +103 -0
  19. data/lib/couchrest/database.rb +373 -0
  20. data/lib/couchrest/design.rb +80 -0
  21. data/lib/couchrest/document.rb +89 -0
  22. data/lib/couchrest/helper/attachments.rb +29 -0
  23. data/lib/couchrest/helper/pager.rb +103 -0
  24. data/lib/couchrest/helper/streamer.rb +51 -0
  25. data/lib/couchrest/helper/upgrade.rb +52 -0
  26. data/lib/couchrest/json_response.rb +14 -0
  27. data/lib/couchrest/middlewares/logger.rb +263 -0
  28. data/lib/couchrest/monkeypatches.rb +42 -0
  29. data/lib/couchrest/response.rb +35 -0
  30. data/lib/couchrest/rest_api.rb +62 -0
  31. data/lib/couchrest/server.rb +90 -0
  32. data/lib/couchrest/support/inheritable_attributes.rb +107 -0
  33. data/lib/couchrest.rb +127 -0
  34. data/spec/couchrest/couchrest_spec.rb +202 -0
  35. data/spec/couchrest/database_spec.rb +870 -0
  36. data/spec/couchrest/design_spec.rb +158 -0
  37. data/spec/couchrest/document_spec.rb +279 -0
  38. data/spec/couchrest/helpers/pager_spec.rb +123 -0
  39. data/spec/couchrest/helpers/streamer_spec.rb +52 -0
  40. data/spec/couchrest/server_spec.rb +35 -0
  41. data/spec/fixtures/attachments/README +3 -0
  42. data/spec/fixtures/attachments/couchdb.png +0 -0
  43. data/spec/fixtures/attachments/test.html +11 -0
  44. data/spec/fixtures/views/lib.js +3 -0
  45. data/spec/fixtures/views/test_view/lib.js +3 -0
  46. data/spec/fixtures/views/test_view/only-map.js +4 -0
  47. data/spec/fixtures/views/test_view/test-map.js +3 -0
  48. data/spec/fixtures/views/test_view/test-reduce.js +3 -0
  49. data/spec/spec.opts +5 -0
  50. data/spec/spec_helper.rb +44 -0
  51. data/utils/remap.rb +27 -0
  52. data/utils/subset.rb +30 -0
  53. metadata +179 -0
@@ -0,0 +1,44 @@
1
+ require "spec" # Satisfies Autotest and anyone else not using the Rake tasks
2
+
3
+ require File.join(File.dirname(__FILE__), '..','lib','couchrest')
4
+ # check the following file to see how to use the spec'd features.
5
+
6
+ unless defined?(FIXTURE_PATH)
7
+ FIXTURE_PATH = File.join(File.dirname(__FILE__), '/fixtures')
8
+ SCRATCH_PATH = File.join(File.dirname(__FILE__), '/tmp')
9
+
10
+ COUCHHOST = ENV['COUCHHOST'] || "http://127.0.0.1:5984"
11
+ TESTDB = 'couchrest-test'
12
+ REPLICATIONDB = 'couchrest-test-replication'
13
+ TEST_SERVER = CouchRest.new COUCHHOST
14
+ TEST_SERVER.default_database = TESTDB
15
+ DB = TEST_SERVER.database(TESTDB)
16
+ end
17
+
18
+ def reset_test_db!
19
+ DB.recreate! rescue nil
20
+ DB
21
+ end
22
+
23
+ Spec::Runner.configure do |config|
24
+ config.before(:all) { reset_test_db! }
25
+
26
+ config.after(:all) do
27
+ cr = TEST_SERVER
28
+ test_dbs = cr.databases.select { |db| db =~ /^#{TESTDB}/ }
29
+ test_dbs.each do |db|
30
+ cr.database(db).delete! rescue nil
31
+ end
32
+ end
33
+ end
34
+
35
+ def couchdb_lucene_available?
36
+ lucene_path = "http://localhost:5985/"
37
+ url = URI.parse(lucene_path)
38
+ req = Net::HTTP::Get.new(url.path)
39
+ res = Net::HTTP.new(url.host, url.port).start { |http| http.request(req) }
40
+ true
41
+ rescue Exception => e
42
+ false
43
+ end
44
+
data/utils/remap.rb ADDED
@@ -0,0 +1,27 @@
1
+ require 'couchrest'
2
+ require 'couchrest/helper/pager'
3
+
4
+ # set the source db and map view
5
+ source = CouchRest.new("http://127.0.0.1:5984").database('source-db')
6
+ source_view = 'mydesign/view-map'
7
+
8
+ # set the target db
9
+ target = CouchRest.new("http://127.0.0.1:5984").database('target-db')
10
+
11
+
12
+ pager = CouchRest::Pager.new(source)
13
+
14
+ # pager will yield once per uniq key in the source view
15
+
16
+ pager.key_reduce(source_view, 10000) do |key, values|
17
+ # create a doc from the key and the values
18
+ example_doc = {
19
+ :key => key,
20
+ :values => values.uniq
21
+ }
22
+
23
+ target.save(example_doc)
24
+
25
+ # keep us up to date with progress
26
+ puts k if (rand > 0.9)
27
+ end
data/utils/subset.rb ADDED
@@ -0,0 +1,30 @@
1
+ require 'couchrest'
2
+ require 'couchrest/helper/pager'
3
+
4
+ # subset.rb replicates a percentage of a database to a fresh database.
5
+ # use it to create a smaller dataset on which to prototype views.
6
+
7
+ # specify the source database
8
+ source = CouchRest.new("http://127.0.0.1:5984").database('source-db')
9
+
10
+ # specify the target database
11
+ target = CouchRest.new("http://127.0.0.1:5984").database('target-db')
12
+
13
+ # pager efficiently yields all view rows
14
+ pager = CouchRest::Pager.new(source)
15
+
16
+ pager.all_docs(1000) do |rows|
17
+ docs = rows.collect do |r|
18
+ # the percentage of docs to clone
19
+ next if rand > 0.1
20
+ doc = source.get(r['id'])
21
+ doc.delete('_rev')
22
+ doc
23
+ end.compact
24
+ puts docs.length
25
+ next if docs.empty?
26
+
27
+ puts docs.first['_id']
28
+ target.bulk_save(docs)
29
+ end
30
+
metadata ADDED
@@ -0,0 +1,179 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: namelessjon-couchrest
3
+ version: !ruby/object:Gem::Version
4
+ hash: 23
5
+ prerelease: false
6
+ segments:
7
+ - 1
8
+ - 0
9
+ - 0
10
+ version: 1.0.0
11
+ platform: ruby
12
+ authors:
13
+ - Jonathan Stott
14
+ - J. Chris Anderson
15
+ - Matt Aimonetti
16
+ - Marcos Tapajos
17
+ - Will Leinweber
18
+ - Sam Lown
19
+ autorequire:
20
+ bindir: bin
21
+ cert_chain: []
22
+
23
+ date: 2010-08-06 00:00:00 +01:00
24
+ default_executable:
25
+ dependencies:
26
+ - !ruby/object:Gem::Dependency
27
+ name: rest-client
28
+ prerelease: false
29
+ requirement: &id001 !ruby/object:Gem::Requirement
30
+ none: false
31
+ requirements:
32
+ - - ">="
33
+ - !ruby/object:Gem::Version
34
+ hash: 1
35
+ segments:
36
+ - 1
37
+ - 5
38
+ - 1
39
+ version: 1.5.1
40
+ type: :runtime
41
+ version_requirements: *id001
42
+ - !ruby/object:Gem::Dependency
43
+ name: mime-types
44
+ prerelease: false
45
+ requirement: &id002 !ruby/object:Gem::Requirement
46
+ none: false
47
+ requirements:
48
+ - - ">="
49
+ - !ruby/object:Gem::Version
50
+ hash: 17
51
+ segments:
52
+ - 1
53
+ - 15
54
+ version: "1.15"
55
+ type: :runtime
56
+ version_requirements: *id002
57
+ - !ruby/object:Gem::Dependency
58
+ name: yajl-ruby
59
+ prerelease: false
60
+ requirement: &id003 !ruby/object:Gem::Requirement
61
+ none: false
62
+ requirements:
63
+ - - ">="
64
+ - !ruby/object:Gem::Version
65
+ hash: 3
66
+ segments:
67
+ - 0
68
+ version: "0"
69
+ type: :runtime
70
+ version_requirements: *id003
71
+ description: CouchRest provides a simple interface on top of CouchDB's RESTful HTTP API, as well as including some utility scripts for managing views and attachments. This is a fork to make it work how I want it to. Most of the work was done by the original authors
72
+ email: jonathan.stott@gmail.com
73
+ executables: []
74
+
75
+ extensions: []
76
+
77
+ extra_rdoc_files:
78
+ - LICENSE
79
+ - README.md
80
+ - THANKS.md
81
+ files:
82
+ - LICENSE
83
+ - README.md
84
+ - Rakefile
85
+ - THANKS.md
86
+ - couchrest.gemspec
87
+ - examples/word_count/markov
88
+ - examples/word_count/views/books/chunked-map.js
89
+ - examples/word_count/views/books/united-map.js
90
+ - examples/word_count/views/markov/chain-map.js
91
+ - examples/word_count/views/markov/chain-reduce.js
92
+ - examples/word_count/views/word_count/count-map.js
93
+ - examples/word_count/views/word_count/count-reduce.js
94
+ - examples/word_count/word_count.rb
95
+ - examples/word_count/word_count_query.rb
96
+ - examples/word_count/word_count_views.rb
97
+ - history.txt
98
+ - lib/couchrest.rb
99
+ - lib/couchrest/commands/generate.rb
100
+ - lib/couchrest/commands/push.rb
101
+ - lib/couchrest/database.rb
102
+ - lib/couchrest/design.rb
103
+ - lib/couchrest/document.rb
104
+ - lib/couchrest/helper/attachments.rb
105
+ - lib/couchrest/helper/pager.rb
106
+ - lib/couchrest/helper/streamer.rb
107
+ - lib/couchrest/helper/upgrade.rb
108
+ - lib/couchrest/json_response.rb
109
+ - lib/couchrest/middlewares/logger.rb
110
+ - lib/couchrest/monkeypatches.rb
111
+ - lib/couchrest/response.rb
112
+ - lib/couchrest/rest_api.rb
113
+ - lib/couchrest/server.rb
114
+ - lib/couchrest/support/inheritable_attributes.rb
115
+ - spec/couchrest/couchrest_spec.rb
116
+ - spec/couchrest/database_spec.rb
117
+ - spec/couchrest/design_spec.rb
118
+ - spec/couchrest/document_spec.rb
119
+ - spec/couchrest/helpers/pager_spec.rb
120
+ - spec/couchrest/helpers/streamer_spec.rb
121
+ - spec/couchrest/server_spec.rb
122
+ - spec/fixtures/attachments/README
123
+ - spec/fixtures/attachments/couchdb.png
124
+ - spec/fixtures/attachments/test.html
125
+ - spec/fixtures/views/lib.js
126
+ - spec/fixtures/views/test_view/lib.js
127
+ - spec/fixtures/views/test_view/only-map.js
128
+ - spec/fixtures/views/test_view/test-map.js
129
+ - spec/fixtures/views/test_view/test-reduce.js
130
+ - spec/spec.opts
131
+ - spec/spec_helper.rb
132
+ - utils/remap.rb
133
+ - utils/subset.rb
134
+ has_rdoc: true
135
+ homepage: http://github.com/namelessjon/couchrest
136
+ licenses: []
137
+
138
+ post_install_message:
139
+ rdoc_options:
140
+ - --charset=UTF-8
141
+ require_paths:
142
+ - lib
143
+ required_ruby_version: !ruby/object:Gem::Requirement
144
+ none: false
145
+ requirements:
146
+ - - ">="
147
+ - !ruby/object:Gem::Version
148
+ hash: 3
149
+ segments:
150
+ - 0
151
+ version: "0"
152
+ required_rubygems_version: !ruby/object:Gem::Requirement
153
+ none: false
154
+ requirements:
155
+ - - ">="
156
+ - !ruby/object:Gem::Version
157
+ hash: 3
158
+ segments:
159
+ - 0
160
+ version: "0"
161
+ requirements: []
162
+
163
+ rubyforge_project:
164
+ rubygems_version: 1.3.7
165
+ signing_key:
166
+ specification_version: 3
167
+ summary: Lean and RESTful interface to CouchDB.
168
+ test_files:
169
+ - spec/couchrest/server_spec.rb
170
+ - spec/couchrest/database_spec.rb
171
+ - spec/couchrest/helpers/streamer_spec.rb
172
+ - spec/couchrest/helpers/pager_spec.rb
173
+ - spec/couchrest/design_spec.rb
174
+ - spec/couchrest/couchrest_spec.rb
175
+ - spec/couchrest/document_spec.rb
176
+ - spec/spec_helper.rb
177
+ - examples/word_count/word_count_query.rb
178
+ - examples/word_count/word_count.rb
179
+ - examples/word_count/word_count_views.rb