vulcan 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (627) hide show
  1. data/lib/vulcan/version.rb +1 -1
  2. data/server/Procfile +1 -0
  3. data/server/bin/make +39 -0
  4. data/server/lib/on.js +13 -0
  5. data/server/lib/spawner.js +101 -0
  6. data/server/node_modules/connect-form/History.md +28 -0
  7. data/server/node_modules/connect-form/LICENSE +22 -0
  8. data/server/node_modules/connect-form/Makefile +11 -0
  9. data/server/node_modules/connect-form/Readme.md +35 -0
  10. data/server/node_modules/connect-form/index.html +213 -0
  11. data/server/node_modules/connect-form/index.js +100 -0
  12. data/server/node_modules/connect-form/lib/connect-form.js +100 -0
  13. data/server/node_modules/connect-form/node_modules/formidable/Makefile +14 -0
  14. data/server/node_modules/connect-form/node_modules/formidable/Readme.md +264 -0
  15. data/server/node_modules/connect-form/node_modules/formidable/TODO +3 -0
  16. data/server/node_modules/connect-form/node_modules/formidable/benchmark/bench-multipart-parser.js +70 -0
  17. data/server/node_modules/connect-form/node_modules/formidable/example/post.js +43 -0
  18. data/server/node_modules/connect-form/node_modules/formidable/example/upload.js +48 -0
  19. data/server/node_modules/connect-form/node_modules/formidable/index.js +1 -0
  20. data/server/node_modules/connect-form/node_modules/formidable/lib/file.js +61 -0
  21. data/server/node_modules/connect-form/node_modules/formidable/lib/incoming_form.js +362 -0
  22. data/server/node_modules/connect-form/node_modules/formidable/lib/index.js +3 -0
  23. data/server/node_modules/connect-form/node_modules/formidable/lib/multipart_parser.js +301 -0
  24. data/server/node_modules/connect-form/node_modules/formidable/lib/querystring_parser.js +25 -0
  25. data/server/node_modules/connect-form/node_modules/formidable/lib/util.js +6 -0
  26. data/server/node_modules/connect-form/node_modules/formidable/package.json +19 -0
  27. data/server/node_modules/connect-form/node_modules/formidable/test/common.js +20 -0
  28. data/server/node_modules/connect-form/node_modules/formidable/test/fast/test-incoming-form.js +45 -0
  29. data/server/node_modules/connect-form/node_modules/formidable/test/fixture/file/: // ? % * | /" < > . /342/230/203 ; ' @ # $ ^ & ( ) - _ = + { } [ ] ` ~.txt" +1 -0
  30. data/server/node_modules/connect-form/node_modules/formidable/test/fixture/http/special-chars-in-filename/info.md +3 -0
  31. data/server/node_modules/connect-form/node_modules/formidable/test/fixture/http/special-chars-in-filename/osx-chrome-13.http +36 -0
  32. data/server/node_modules/connect-form/node_modules/formidable/test/fixture/http/special-chars-in-filename/osx-firefox-3.6.http +24 -0
  33. data/server/node_modules/connect-form/node_modules/formidable/test/fixture/http/special-chars-in-filename/osx-safari-5.http +23 -0
  34. data/server/node_modules/connect-form/node_modules/formidable/test/fixture/http/special-chars-in-filename/xp-chrome-12.http +33 -0
  35. data/server/node_modules/connect-form/node_modules/formidable/test/fixture/http/special-chars-in-filename/xp-ie-7.http +22 -0
  36. data/server/node_modules/connect-form/node_modules/formidable/test/fixture/http/special-chars-in-filename/xp-ie-8.http +22 -0
  37. data/server/node_modules/connect-form/node_modules/formidable/test/fixture/http/special-chars-in-filename/xp-safari-5.http +22 -0
  38. data/server/node_modules/connect-form/node_modules/formidable/test/fixture/js/special-chars-in-filename.js +21 -0
  39. data/server/node_modules/connect-form/node_modules/formidable/test/fixture/multi_video.upload +0 -0
  40. data/server/node_modules/connect-form/node_modules/formidable/test/fixture/multipart.js +72 -0
  41. data/server/node_modules/connect-form/node_modules/formidable/test/legacy/common.js +24 -0
  42. data/server/node_modules/connect-form/node_modules/formidable/test/legacy/integration/test-multipart-parser.js +80 -0
  43. data/server/node_modules/connect-form/node_modules/formidable/test/legacy/simple/test-file.js +104 -0
  44. data/server/node_modules/connect-form/node_modules/formidable/test/legacy/simple/test-incoming-form.js +715 -0
  45. data/server/node_modules/connect-form/node_modules/formidable/test/legacy/simple/test-multipart-parser.js +50 -0
  46. data/server/node_modules/connect-form/node_modules/formidable/test/legacy/simple/test-querystring-parser.js +45 -0
  47. data/server/node_modules/connect-form/node_modules/formidable/test/legacy/system/test-multi-video-upload.js +72 -0
  48. data/server/node_modules/connect-form/node_modules/formidable/test/run.js +7 -0
  49. data/server/node_modules/connect-form/node_modules/formidable/test/slow/test-fixtures.js +84 -0
  50. data/server/node_modules/connect-form/node_modules/formidable/tool/record.js +47 -0
  51. data/server/node_modules/connect-form/package.json +9 -0
  52. data/server/node_modules/connect-form/support/connect/History.md +120 -0
  53. data/server/node_modules/connect-form/support/connect/Makefile +85 -0
  54. data/server/node_modules/connect-form/support/connect/README.md +121 -0
  55. data/server/node_modules/connect-form/support/connect/benchmarks/graph +79 -0
  56. data/server/node_modules/connect-form/support/connect/benchmarks/hello-world/connect.js +19 -0
  57. data/server/node_modules/connect-form/support/connect/benchmarks/hello-world/node.js +16 -0
  58. data/server/node_modules/connect-form/support/connect/benchmarks/hello-world/rack.thin.ru +9 -0
  59. data/server/node_modules/connect-form/support/connect/benchmarks/hello-world/sinatra.thin.ru +10 -0
  60. data/server/node_modules/connect-form/support/connect/benchmarks/public/jquery.js +19 -0
  61. data/server/node_modules/connect-form/support/connect/benchmarks/run +60 -0
  62. data/server/node_modules/connect-form/support/connect/benchmarks/static/connect.js +10 -0
  63. data/server/node_modules/connect-form/support/connect/benchmarks/static/node.js +17 -0
  64. data/server/node_modules/connect-form/support/connect/benchmarks/static/sinatra.thin.ru +10 -0
  65. data/server/node_modules/connect-form/support/connect/docs/api.html +1973 -0
  66. data/server/node_modules/connect-form/support/connect/docs/bodyDecoder.1 +27 -0
  67. data/server/node_modules/connect-form/support/connect/docs/bodyDecoder.html +164 -0
  68. data/server/node_modules/connect-form/support/connect/docs/bodyDecoder.md +11 -0
  69. data/server/node_modules/connect-form/support/connect/docs/compiler.1 +66 -0
  70. data/server/node_modules/connect-form/support/connect/docs/compiler.html +193 -0
  71. data/server/node_modules/connect-form/support/connect/docs/compiler.md +32 -0
  72. data/server/node_modules/connect-form/support/connect/docs/conditionalGet.1 +16 -0
  73. data/server/node_modules/connect-form/support/connect/docs/conditionalGet.html +158 -0
  74. data/server/node_modules/connect-form/support/connect/docs/conditionalGet.md +7 -0
  75. data/server/node_modules/connect-form/support/connect/docs/cookieDecoder.1 +27 -0
  76. data/server/node_modules/connect-form/support/connect/docs/cookieDecoder.html +164 -0
  77. data/server/node_modules/connect-form/support/connect/docs/cookieDecoder.md +11 -0
  78. data/server/node_modules/connect-form/support/connect/docs/errorHandler.1 +58 -0
  79. data/server/node_modules/connect-form/support/connect/docs/errorHandler.html +181 -0
  80. data/server/node_modules/connect-form/support/connect/docs/errorHandler.md +28 -0
  81. data/server/node_modules/connect-form/support/connect/docs/format.1 +7 -0
  82. data/server/node_modules/connect-form/support/connect/docs/format.html +152 -0
  83. data/server/node_modules/connect-form/support/connect/docs/format.md +3 -0
  84. data/server/node_modules/connect-form/support/connect/docs/index.1 +260 -0
  85. data/server/node_modules/connect-form/support/connect/docs/index.html +332 -0
  86. data/server/node_modules/connect-form/support/connect/docs/index.md +171 -0
  87. data/server/node_modules/connect-form/support/connect/docs/jsonrpc.1 +62 -0
  88. data/server/node_modules/connect-form/support/connect/docs/jsonrpc.html +192 -0
  89. data/server/node_modules/connect-form/support/connect/docs/jsonrpc.md +39 -0
  90. data/server/node_modules/connect-form/support/connect/docs/layout/api.foot.html +3 -0
  91. data/server/node_modules/connect-form/support/connect/docs/layout/api.head.html +142 -0
  92. data/server/node_modules/connect-form/support/connect/docs/lint.1 +102 -0
  93. data/server/node_modules/connect-form/support/connect/docs/lint.html +232 -0
  94. data/server/node_modules/connect-form/support/connect/docs/lint.md +79 -0
  95. data/server/node_modules/connect-form/support/connect/docs/logger.1 +66 -0
  96. data/server/node_modules/connect-form/support/connect/docs/logger.html +184 -0
  97. data/server/node_modules/connect-form/support/connect/docs/logger.md +31 -0
  98. data/server/node_modules/connect-form/support/connect/docs/methodOverride.1 +31 -0
  99. data/server/node_modules/connect-form/support/connect/docs/methodOverride.html +171 -0
  100. data/server/node_modules/connect-form/support/connect/docs/methodOverride.md +17 -0
  101. data/server/node_modules/connect-form/support/connect/docs/responseTime.1 +7 -0
  102. data/server/node_modules/connect-form/support/connect/docs/responseTime.html +152 -0
  103. data/server/node_modules/connect-form/support/connect/docs/responseTime.md +3 -0
  104. data/server/node_modules/connect-form/support/connect/docs/router.1 +75 -0
  105. data/server/node_modules/connect-form/support/connect/docs/router.html +211 -0
  106. data/server/node_modules/connect-form/support/connect/docs/router.md +58 -0
  107. data/server/node_modules/connect-form/support/connect/docs/session.1 +115 -0
  108. data/server/node_modules/connect-form/support/connect/docs/session.html +214 -0
  109. data/server/node_modules/connect-form/support/connect/docs/session.md +55 -0
  110. data/server/node_modules/connect-form/support/connect/docs/staticProvider.1 +28 -0
  111. data/server/node_modules/connect-form/support/connect/docs/staticProvider.html +162 -0
  112. data/server/node_modules/connect-form/support/connect/docs/staticProvider.md +11 -0
  113. data/server/node_modules/connect-form/support/connect/examples/error/app.js +13 -0
  114. data/server/node_modules/connect-form/support/connect/examples/jsonrpc/app.js +38 -0
  115. data/server/node_modules/connect-form/support/connect/examples/less/app.js +21 -0
  116. data/server/node_modules/connect-form/support/connect/examples/less/public/index.html +8 -0
  117. data/server/node_modules/connect-form/support/connect/examples/less/public/style.less +8 -0
  118. data/server/node_modules/connect-form/support/connect/examples/lint/app.js +40 -0
  119. data/server/node_modules/connect-form/support/connect/examples/multitouch/app.js +61 -0
  120. data/server/node_modules/connect-form/support/connect/examples/multitouch/public/client.js +73 -0
  121. data/server/node_modules/connect-form/support/connect/examples/multitouch/public/favicon.ico +0 -0
  122. data/server/node_modules/connect-form/support/connect/examples/multitouch/public/index.html +16 -0
  123. data/server/node_modules/connect-form/support/connect/examples/multitouch/public/raphael.js +113 -0
  124. data/server/node_modules/connect-form/support/connect/examples/multitouch/public/style.css +23 -0
  125. data/server/node_modules/connect-form/support/connect/examples/router/app.js +63 -0
  126. data/server/node_modules/connect-form/support/connect/examples/sass/app.js +21 -0
  127. data/server/node_modules/connect-form/support/connect/examples/sass/public/index.html +8 -0
  128. data/server/node_modules/connect-form/support/connect/examples/sass/public/style.sass +4 -0
  129. data/server/node_modules/connect-form/support/connect/examples/session/app.js +60 -0
  130. data/server/node_modules/connect-form/support/connect/examples/stack-middleware/app.js +15 -0
  131. data/server/node_modules/connect-form/support/connect/examples/stack-middleware/hello.js +13 -0
  132. data/server/node_modules/connect-form/support/connect/examples/stack-middleware/world.js +13 -0
  133. data/server/node_modules/connect-form/support/connect/examples/static/app.js +10 -0
  134. data/server/node_modules/connect-form/support/connect/examples/static/public/style.css +3 -0
  135. data/server/node_modules/connect-form/support/connect/examples/url-rewrite/app.js +44 -0
  136. data/server/node_modules/connect-form/support/connect/examples/vhost/app.js +25 -0
  137. data/server/node_modules/connect-form/support/connect/install.sh +6 -0
  138. data/server/node_modules/connect-form/support/connect/lib/connect/index.js +309 -0
  139. data/server/node_modules/connect-form/support/connect/lib/connect/middleware/bodyDecoder.js +69 -0
  140. data/server/node_modules/connect-form/support/connect/lib/connect/middleware/cache.js +142 -0
  141. data/server/node_modules/connect-form/support/connect/lib/connect/middleware/cacheManifest.js +71 -0
  142. data/server/node_modules/connect-form/support/connect/lib/connect/middleware/compiler.js +150 -0
  143. data/server/node_modules/connect-form/support/connect/lib/connect/middleware/conditionalGet.js +71 -0
  144. data/server/node_modules/connect-form/support/connect/lib/connect/middleware/cookieDecoder.js +37 -0
  145. data/server/node_modules/connect-form/support/connect/lib/connect/middleware/errorHandler.js +91 -0
  146. data/server/node_modules/connect-form/support/connect/lib/connect/middleware/format.js +46 -0
  147. data/server/node_modules/connect-form/support/connect/lib/connect/middleware/gzip-compress.js +79 -0
  148. data/server/node_modules/connect-form/support/connect/lib/connect/middleware/gzip-proc.js +73 -0
  149. data/server/node_modules/connect-form/support/connect/lib/connect/middleware/gzip.js +8 -0
  150. data/server/node_modules/connect-form/support/connect/lib/connect/middleware/jsonrpc.js +235 -0
  151. data/server/node_modules/connect-form/support/connect/lib/connect/middleware/lint.js +136 -0
  152. data/server/node_modules/connect-form/support/connect/lib/connect/middleware/logger.js +107 -0
  153. data/server/node_modules/connect-form/support/connect/lib/connect/middleware/methodOverride.js +54 -0
  154. data/server/node_modules/connect-form/support/connect/lib/connect/middleware/pubsub.js +107 -0
  155. data/server/node_modules/connect-form/support/connect/lib/connect/middleware/repl.js +43 -0
  156. data/server/node_modules/connect-form/support/connect/lib/connect/middleware/responseTime.js +28 -0
  157. data/server/node_modules/connect-form/support/connect/lib/connect/middleware/router.js +158 -0
  158. data/server/node_modules/connect-form/support/connect/lib/connect/middleware/session.js +129 -0
  159. data/server/node_modules/connect-form/support/connect/lib/connect/middleware/session/memory.js +141 -0
  160. data/server/node_modules/connect-form/support/connect/lib/connect/middleware/session/session.js +71 -0
  161. data/server/node_modules/connect-form/support/connect/lib/connect/middleware/session/store.js +59 -0
  162. data/server/node_modules/connect-form/support/connect/lib/connect/middleware/staticProvider.js +144 -0
  163. data/server/node_modules/connect-form/support/connect/lib/connect/middleware/vhost.js +43 -0
  164. data/server/node_modules/connect-form/support/connect/lib/connect/public/error.html +13 -0
  165. data/server/node_modules/connect-form/support/connect/lib/connect/public/style.css +98 -0
  166. data/server/node_modules/connect-form/support/connect/lib/connect/response.js +56 -0
  167. data/server/node_modules/connect-form/support/connect/lib/connect/utils.js +428 -0
  168. data/server/node_modules/connect-form/support/connect/package.json +21 -0
  169. data/server/node_modules/connect-form/support/connect/support/highlight.js +26 -0
  170. data/server/node_modules/connect-form/support/connect/test/bodyDecoder.test.js +69 -0
  171. data/server/node_modules/connect-form/support/connect/test/compiler.test.js +23 -0
  172. data/server/node_modules/connect-form/support/connect/test/connect.test.js +187 -0
  173. data/server/node_modules/connect-form/support/connect/test/cookieDecoder.test.js +31 -0
  174. data/server/node_modules/connect-form/support/connect/test/errorHandler.test.js +60 -0
  175. data/server/node_modules/connect-form/support/connect/test/filters/uppercase.js +14 -0
  176. data/server/node_modules/connect-form/support/connect/test/fixtures/foo.bar.baz.sass +2 -0
  177. data/server/node_modules/connect-form/support/connect/test/fixtures/index.html +1 -0
  178. data/server/node_modules/connect-form/support/connect/test/fixtures/some text.txt +1 -0
  179. data/server/node_modules/connect-form/support/connect/test/fixtures/style.less +2 -0
  180. data/server/node_modules/connect-form/support/connect/test/fixtures/style.sass +3 -0
  181. data/server/node_modules/connect-form/support/connect/test/fixtures/user.json +4 -0
  182. data/server/node_modules/connect-form/support/connect/test/format.test.js +37 -0
  183. data/server/node_modules/connect-form/support/connect/test/gzip.test.js +55 -0
  184. data/server/node_modules/connect-form/support/connect/test/helpers/http.js +87 -0
  185. data/server/node_modules/connect-form/support/connect/test/helpers/index.js +12 -0
  186. data/server/node_modules/connect-form/support/connect/test/jsonrpc.test.js +225 -0
  187. data/server/node_modules/connect-form/support/connect/test/logger.test.js +52 -0
  188. data/server/node_modules/connect-form/support/connect/test/methodOverride.test.js +69 -0
  189. data/server/node_modules/connect-form/support/connect/test/providers/echo.js +10 -0
  190. data/server/node_modules/connect-form/support/connect/test/responseTime.test.js +29 -0
  191. data/server/node_modules/connect-form/support/connect/test/router.test.js +154 -0
  192. data/server/node_modules/connect-form/support/connect/test/session.test.js +127 -0
  193. data/server/node_modules/connect-form/support/connect/test/static.test.js +66 -0
  194. data/server/node_modules/connect-form/support/connect/test/utils.test.js +65 -0
  195. data/server/node_modules/connect-form/support/connect/test/vhost.test.js +46 -0
  196. data/server/node_modules/connect-form/support/expresso/History.md +54 -0
  197. data/server/node_modules/connect-form/support/expresso/Makefile +30 -0
  198. data/server/node_modules/connect-form/support/expresso/Readme.md +208 -0
  199. data/server/node_modules/connect-form/support/expresso/bin/expresso +647 -0
  200. data/server/node_modules/connect-form/support/expresso/lib/bar.js +4 -0
  201. data/server/node_modules/connect-form/support/expresso/lib/foo.js +16 -0
  202. data/server/node_modules/connect-form/support/expresso/package.json +9 -0
  203. data/server/node_modules/connect-form/support/expresso/seed.yml +6 -0
  204. data/server/node_modules/connect-form/support/expresso/test/assert.test.js +64 -0
  205. data/server/node_modules/connect-form/support/expresso/test/bar.test.js +12 -0
  206. data/server/node_modules/connect-form/support/expresso/test/foo.test.js +13 -0
  207. data/server/node_modules/connect-form/support/expresso/test/http.test.js +61 -0
  208. data/server/node_modules/connect-form/test/form.test.js +148 -0
  209. data/server/node_modules/cradle/LICENSE +20 -0
  210. data/server/node_modules/cradle/Makefile +10 -0
  211. data/server/node_modules/cradle/README.md +377 -0
  212. data/server/node_modules/cradle/lib/cradle.js +688 -0
  213. data/server/node_modules/cradle/lib/cradle/cache.js +102 -0
  214. data/server/node_modules/cradle/lib/cradle/response.js +127 -0
  215. data/server/node_modules/cradle/node_modules/vargs/LICENSE +20 -0
  216. data/server/node_modules/cradle/node_modules/vargs/README.md +34 -0
  217. data/server/node_modules/cradle/node_modules/vargs/lib/vargs.js +70 -0
  218. data/server/node_modules/cradle/node_modules/vargs/package.json +12 -0
  219. data/server/node_modules/cradle/node_modules/vows/LICENSE +20 -0
  220. data/server/node_modules/cradle/node_modules/vows/Makefile +7 -0
  221. data/server/node_modules/cradle/node_modules/vows/README.md +39 -0
  222. data/server/node_modules/cradle/node_modules/vows/bin/vows +515 -0
  223. data/server/node_modules/cradle/node_modules/vows/lib/assert/error.js +27 -0
  224. data/server/node_modules/cradle/node_modules/vows/lib/assert/macros.js +215 -0
  225. data/server/node_modules/cradle/node_modules/vows/lib/assert/utils.js +77 -0
  226. data/server/node_modules/cradle/node_modules/vows/lib/vows.js +193 -0
  227. data/server/node_modules/cradle/node_modules/vows/lib/vows/console.js +131 -0
  228. data/server/node_modules/cradle/node_modules/vows/lib/vows/context.js +55 -0
  229. data/server/node_modules/cradle/node_modules/vows/lib/vows/coverage/file.js +29 -0
  230. data/server/node_modules/cradle/node_modules/vows/lib/vows/coverage/fragments/coverage-foot.html +2 -0
  231. data/server/node_modules/cradle/node_modules/vows/lib/vows/coverage/fragments/coverage-head.html +61 -0
  232. data/server/node_modules/cradle/node_modules/vows/lib/vows/coverage/report-html.js +54 -0
  233. data/server/node_modules/cradle/node_modules/vows/lib/vows/coverage/report-json.js +54 -0
  234. data/server/node_modules/cradle/node_modules/vows/lib/vows/coverage/report-plain.js +38 -0
  235. data/server/node_modules/cradle/node_modules/vows/lib/vows/extras.js +28 -0
  236. data/server/node_modules/cradle/node_modules/vows/lib/vows/reporters/dot-matrix.js +67 -0
  237. data/server/node_modules/cradle/node_modules/vows/lib/vows/reporters/json.js +16 -0
  238. data/server/node_modules/cradle/node_modules/vows/lib/vows/reporters/silent.js +8 -0
  239. data/server/node_modules/cradle/node_modules/vows/lib/vows/reporters/spec.js +44 -0
  240. data/server/node_modules/cradle/node_modules/vows/lib/vows/reporters/watch.js +39 -0
  241. data/server/node_modules/cradle/node_modules/vows/lib/vows/reporters/xunit.js +90 -0
  242. data/server/node_modules/cradle/node_modules/vows/lib/vows/suite.js +319 -0
  243. data/server/node_modules/cradle/node_modules/vows/node_modules/eyes/LICENSE +20 -0
  244. data/server/node_modules/cradle/node_modules/vows/node_modules/eyes/Makefile +4 -0
  245. data/server/node_modules/cradle/node_modules/vows/node_modules/eyes/README.md +72 -0
  246. data/server/node_modules/cradle/node_modules/vows/node_modules/eyes/lib/eyes.js +233 -0
  247. data/server/node_modules/cradle/node_modules/vows/node_modules/eyes/package.json +14 -0
  248. data/server/node_modules/cradle/node_modules/vows/node_modules/eyes/test/eyes-test.js +55 -0
  249. data/server/node_modules/cradle/node_modules/vows/package.json +14 -0
  250. data/server/node_modules/cradle/node_modules/vows/test/assert-test.js +135 -0
  251. data/server/node_modules/cradle/node_modules/vows/test/fixtures/isolate/failing.js +18 -0
  252. data/server/node_modules/cradle/node_modules/vows/test/fixtures/isolate/log.js +18 -0
  253. data/server/node_modules/cradle/node_modules/vows/test/fixtures/isolate/passing.js +17 -0
  254. data/server/node_modules/cradle/node_modules/vows/test/fixtures/isolate/stderr.js +18 -0
  255. data/server/node_modules/cradle/node_modules/vows/test/isolate-test.js +140 -0
  256. data/server/node_modules/cradle/node_modules/vows/test/testInherit.js +133 -0
  257. data/server/node_modules/cradle/node_modules/vows/test/vows-error-test.js +51 -0
  258. data/server/node_modules/cradle/node_modules/vows/test/vows-test.js +374 -0
  259. data/server/node_modules/cradle/package.json +14 -0
  260. data/server/node_modules/cradle/test/cache-test.js +102 -0
  261. data/server/node_modules/cradle/test/cradle-test.js +651 -0
  262. data/server/node_modules/cradle/test/fixtures/databases.json +25 -0
  263. data/server/node_modules/cradle/test/helpers/seed.js +56 -0
  264. data/server/node_modules/cradle/test/response-test.js +73 -0
  265. data/server/node_modules/express/History.md +743 -0
  266. data/server/node_modules/express/LICENSE +22 -0
  267. data/server/node_modules/express/Makefile +35 -0
  268. data/server/node_modules/express/Readme.md +143 -0
  269. data/server/node_modules/express/bin/express +417 -0
  270. data/server/node_modules/express/index.js +2 -0
  271. data/server/node_modules/express/lib/express.js +79 -0
  272. data/server/node_modules/express/lib/http.js +583 -0
  273. data/server/node_modules/express/lib/https.js +52 -0
  274. data/server/node_modules/express/lib/request.js +309 -0
  275. data/server/node_modules/express/lib/response.js +459 -0
  276. data/server/node_modules/express/lib/router/collection.js +53 -0
  277. data/server/node_modules/express/lib/router/index.js +398 -0
  278. data/server/node_modules/express/lib/router/methods.js +70 -0
  279. data/server/node_modules/express/lib/router/route.js +88 -0
  280. data/server/node_modules/express/lib/utils.js +139 -0
  281. data/server/node_modules/express/lib/view.js +457 -0
  282. data/server/node_modules/express/lib/view/partial.js +40 -0
  283. data/server/node_modules/express/lib/view/view.js +209 -0
  284. data/server/node_modules/express/node_modules/connect/LICENSE +24 -0
  285. data/server/node_modules/express/node_modules/connect/index.js +2 -0
  286. data/server/node_modules/express/node_modules/connect/lib/cache.js +81 -0
  287. data/server/node_modules/express/node_modules/connect/lib/connect.js +106 -0
  288. data/server/node_modules/express/node_modules/connect/lib/http.js +215 -0
  289. data/server/node_modules/express/node_modules/connect/lib/https.js +47 -0
  290. data/server/node_modules/express/node_modules/connect/lib/index.js +46 -0
  291. data/server/node_modules/express/node_modules/connect/lib/middleware/basicAuth.js +93 -0
  292. data/server/node_modules/express/node_modules/connect/lib/middleware/bodyParser.js +92 -0
  293. data/server/node_modules/express/node_modules/connect/lib/middleware/compiler.js +163 -0
  294. data/server/node_modules/express/node_modules/connect/lib/middleware/cookieParser.js +46 -0
  295. data/server/node_modules/express/node_modules/connect/lib/middleware/csrf.js +105 -0
  296. data/server/node_modules/express/node_modules/connect/lib/middleware/directory.js +222 -0
  297. data/server/node_modules/express/node_modules/connect/lib/middleware/errorHandler.js +100 -0
  298. data/server/node_modules/express/node_modules/connect/lib/middleware/favicon.js +76 -0
  299. data/server/node_modules/express/node_modules/connect/lib/middleware/limit.js +78 -0
  300. data/server/node_modules/express/node_modules/connect/lib/middleware/logger.js +299 -0
  301. data/server/node_modules/express/node_modules/connect/lib/middleware/methodOverride.js +38 -0
  302. data/server/node_modules/express/node_modules/connect/lib/middleware/profiler.js +100 -0
  303. data/server/node_modules/express/node_modules/connect/lib/middleware/query.js +40 -0
  304. data/server/node_modules/express/node_modules/connect/lib/middleware/responseTime.js +34 -0
  305. data/server/node_modules/express/node_modules/connect/lib/middleware/router.js +379 -0
  306. data/server/node_modules/express/node_modules/connect/lib/middleware/session.js +346 -0
  307. data/server/node_modules/express/node_modules/connect/lib/middleware/session/cookie.js +126 -0
  308. data/server/node_modules/express/node_modules/connect/lib/middleware/session/memory.js +131 -0
  309. data/server/node_modules/express/node_modules/connect/lib/middleware/session/session.js +137 -0
  310. data/server/node_modules/express/node_modules/connect/lib/middleware/session/store.js +87 -0
  311. data/server/node_modules/express/node_modules/connect/lib/middleware/static.js +220 -0
  312. data/server/node_modules/express/node_modules/connect/lib/middleware/staticCache.js +122 -0
  313. data/server/node_modules/express/node_modules/connect/lib/middleware/vhost.js +44 -0
  314. data/server/node_modules/express/node_modules/connect/lib/patch.js +79 -0
  315. data/server/node_modules/express/node_modules/connect/lib/public/directory.html +75 -0
  316. data/server/node_modules/express/node_modules/connect/lib/public/error.html +13 -0
  317. data/server/node_modules/express/node_modules/connect/lib/public/favicon.ico +0 -0
  318. data/server/node_modules/express/node_modules/connect/lib/public/icons/page.png +0 -0
  319. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_add.png +0 -0
  320. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_attach.png +0 -0
  321. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_code.png +0 -0
  322. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_copy.png +0 -0
  323. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_delete.png +0 -0
  324. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_edit.png +0 -0
  325. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_error.png +0 -0
  326. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_excel.png +0 -0
  327. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_find.png +0 -0
  328. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_gear.png +0 -0
  329. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_go.png +0 -0
  330. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_green.png +0 -0
  331. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_key.png +0 -0
  332. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_lightning.png +0 -0
  333. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_link.png +0 -0
  334. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_paintbrush.png +0 -0
  335. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_paste.png +0 -0
  336. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_red.png +0 -0
  337. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_refresh.png +0 -0
  338. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_save.png +0 -0
  339. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white.png +0 -0
  340. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_acrobat.png +0 -0
  341. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_actionscript.png +0 -0
  342. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_add.png +0 -0
  343. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_c.png +0 -0
  344. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_camera.png +0 -0
  345. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_cd.png +0 -0
  346. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_code.png +0 -0
  347. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_code_red.png +0 -0
  348. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_coldfusion.png +0 -0
  349. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_compressed.png +0 -0
  350. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_copy.png +0 -0
  351. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_cplusplus.png +0 -0
  352. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_csharp.png +0 -0
  353. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_cup.png +0 -0
  354. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_database.png +0 -0
  355. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_delete.png +0 -0
  356. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_dvd.png +0 -0
  357. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_edit.png +0 -0
  358. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_error.png +0 -0
  359. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_excel.png +0 -0
  360. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_find.png +0 -0
  361. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_flash.png +0 -0
  362. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_freehand.png +0 -0
  363. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_gear.png +0 -0
  364. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_get.png +0 -0
  365. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_go.png +0 -0
  366. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_h.png +0 -0
  367. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_horizontal.png +0 -0
  368. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_key.png +0 -0
  369. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_lightning.png +0 -0
  370. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_link.png +0 -0
  371. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_magnify.png +0 -0
  372. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_medal.png +0 -0
  373. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_office.png +0 -0
  374. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_paint.png +0 -0
  375. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_paintbrush.png +0 -0
  376. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_paste.png +0 -0
  377. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_php.png +0 -0
  378. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_picture.png +0 -0
  379. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_powerpoint.png +0 -0
  380. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_put.png +0 -0
  381. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_ruby.png +0 -0
  382. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_stack.png +0 -0
  383. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_star.png +0 -0
  384. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_swoosh.png +0 -0
  385. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_text.png +0 -0
  386. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_text_width.png +0 -0
  387. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_tux.png +0 -0
  388. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_vector.png +0 -0
  389. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_visualstudio.png +0 -0
  390. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_width.png +0 -0
  391. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_word.png +0 -0
  392. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_world.png +0 -0
  393. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_wrench.png +0 -0
  394. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_zip.png +0 -0
  395. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_word.png +0 -0
  396. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_world.png +0 -0
  397. data/server/node_modules/express/node_modules/connect/lib/public/style.css +141 -0
  398. data/server/node_modules/express/node_modules/connect/lib/utils.js +444 -0
  399. data/server/node_modules/express/node_modules/connect/package.json +24 -0
  400. data/server/node_modules/express/node_modules/connect/test.js +39 -0
  401. data/server/node_modules/express/node_modules/mime/LICENSE +19 -0
  402. data/server/node_modules/express/node_modules/mime/README.md +50 -0
  403. data/server/node_modules/express/node_modules/mime/index.js +1 -0
  404. data/server/node_modules/express/node_modules/mime/mime.js +92 -0
  405. data/server/node_modules/express/node_modules/mime/mime.types +1479 -0
  406. data/server/node_modules/express/node_modules/mime/node.types +26 -0
  407. data/server/node_modules/express/node_modules/mime/package.json +11 -0
  408. data/server/node_modules/express/node_modules/mime/test.js +80 -0
  409. data/server/node_modules/express/node_modules/qs/History.md +52 -0
  410. data/server/node_modules/express/node_modules/qs/Makefile +7 -0
  411. data/server/node_modules/express/node_modules/qs/Readme.md +49 -0
  412. data/server/node_modules/express/node_modules/qs/benchmark.js +17 -0
  413. data/server/node_modules/express/node_modules/qs/examples.js +48 -0
  414. data/server/node_modules/express/node_modules/qs/index.js +2 -0
  415. data/server/node_modules/express/node_modules/qs/lib/querystring.js +236 -0
  416. data/server/node_modules/express/node_modules/qs/package.json +9 -0
  417. data/server/node_modules/express/node_modules/qs/support/expresso/History.md +128 -0
  418. data/server/node_modules/express/node_modules/qs/support/expresso/Makefile +53 -0
  419. data/server/node_modules/express/node_modules/qs/support/expresso/Readme.md +61 -0
  420. data/server/node_modules/express/node_modules/qs/support/expresso/bin/expresso +856 -0
  421. data/server/node_modules/express/node_modules/qs/support/expresso/docs/api.html +1080 -0
  422. data/server/node_modules/express/node_modules/qs/support/expresso/docs/index.html +377 -0
  423. data/server/node_modules/express/node_modules/qs/support/expresso/docs/index.md +290 -0
  424. data/server/node_modules/express/node_modules/qs/support/expresso/docs/layout/foot.html +3 -0
  425. data/server/node_modules/express/node_modules/qs/support/expresso/docs/layout/head.html +42 -0
  426. data/server/node_modules/express/node_modules/qs/support/expresso/lib/bar.js +4 -0
  427. data/server/node_modules/express/node_modules/qs/support/expresso/lib/foo.js +16 -0
  428. data/server/node_modules/express/node_modules/qs/support/expresso/package.json +12 -0
  429. data/server/node_modules/express/node_modules/qs/support/expresso/test/assert.test.js +91 -0
  430. data/server/node_modules/express/node_modules/qs/support/expresso/test/async.test.js +12 -0
  431. data/server/node_modules/express/node_modules/qs/support/expresso/test/bar.test.js +13 -0
  432. data/server/node_modules/express/node_modules/qs/support/expresso/test/foo.test.js +14 -0
  433. data/server/node_modules/express/node_modules/qs/support/expresso/test/http.test.js +146 -0
  434. data/server/node_modules/express/node_modules/qs/support/expresso/test/serial/async.test.js +39 -0
  435. data/server/node_modules/express/node_modules/qs/support/expresso/test/serial/http.test.js +48 -0
  436. data/server/node_modules/express/node_modules/qs/support/should/History.md +22 -0
  437. data/server/node_modules/express/node_modules/qs/support/should/Makefile +6 -0
  438. data/server/node_modules/express/node_modules/qs/support/should/Readme.md +248 -0
  439. data/server/node_modules/express/node_modules/qs/support/should/examples/runner.js +53 -0
  440. data/server/node_modules/express/node_modules/qs/support/should/index.js +2 -0
  441. data/server/node_modules/express/node_modules/qs/support/should/lib/eql.js +91 -0
  442. data/server/node_modules/express/node_modules/qs/support/should/lib/should.js +548 -0
  443. data/server/node_modules/express/node_modules/qs/support/should/package.json +8 -0
  444. data/server/node_modules/express/node_modules/qs/support/should/test/should.test.js +358 -0
  445. data/server/node_modules/express/node_modules/qs/test/parse.test.js +156 -0
  446. data/server/node_modules/express/node_modules/qs/test/stringify.test.js +95 -0
  447. data/server/node_modules/express/package.json +38 -0
  448. data/server/node_modules/knox/History.md +41 -0
  449. data/server/node_modules/knox/Makefile +21 -0
  450. data/server/node_modules/knox/Readme.md +144 -0
  451. data/server/node_modules/knox/index.html +483 -0
  452. data/server/node_modules/knox/index.js +2 -0
  453. data/server/node_modules/knox/lib/knox/auth.js +190 -0
  454. data/server/node_modules/knox/lib/knox/client.js +355 -0
  455. data/server/node_modules/knox/lib/knox/index.js +36 -0
  456. data/server/node_modules/knox/lib/knox/mime/README.md +19 -0
  457. data/server/node_modules/knox/lib/knox/mime/index.js +308 -0
  458. data/server/node_modules/knox/lib/knox/mime/mime.js +308 -0
  459. data/server/node_modules/knox/lib/knox/mime/package.json +12 -0
  460. data/server/node_modules/knox/lib/knox/mime/test.js +59 -0
  461. data/server/node_modules/knox/lib/knox/utils.js +55 -0
  462. data/server/node_modules/knox/package.json +13 -0
  463. data/server/node_modules/knox/support/expresso/History.md +87 -0
  464. data/server/node_modules/knox/support/expresso/Makefile +53 -0
  465. data/server/node_modules/knox/support/expresso/Readme.md +39 -0
  466. data/server/node_modules/knox/support/expresso/bin/expresso +835 -0
  467. data/server/node_modules/knox/support/expresso/docs/api.html +1048 -0
  468. data/server/node_modules/knox/support/expresso/docs/index.html +373 -0
  469. data/server/node_modules/knox/support/expresso/docs/index.md +290 -0
  470. data/server/node_modules/knox/support/expresso/docs/layout/foot.html +3 -0
  471. data/server/node_modules/knox/support/expresso/docs/layout/head.html +42 -0
  472. data/server/node_modules/knox/support/expresso/lib/bar.js +4 -0
  473. data/server/node_modules/knox/support/expresso/lib/foo.js +16 -0
  474. data/server/node_modules/knox/support/expresso/package.json +9 -0
  475. data/server/node_modules/knox/support/expresso/test/assert.test.js +84 -0
  476. data/server/node_modules/knox/support/expresso/test/async.test.js +6 -0
  477. data/server/node_modules/knox/support/expresso/test/bar.test.js +12 -0
  478. data/server/node_modules/knox/support/expresso/test/foo.test.js +13 -0
  479. data/server/node_modules/knox/support/expresso/test/http.test.js +76 -0
  480. data/server/node_modules/knox/support/expresso/test/serial/async.test.js +38 -0
  481. data/server/node_modules/knox/support/expresso/test/serial/http.test.js +47 -0
  482. data/server/node_modules/knox/test/auth.test.js +59 -0
  483. data/server/node_modules/knox/test/fixtures/user.json +1 -0
  484. data/server/node_modules/knox/test/knox.test.js +188 -0
  485. data/server/node_modules/knox/test/utils.test.js +17 -0
  486. data/server/node_modules/node-uuid/LICENSE.md +3 -0
  487. data/server/node_modules/node-uuid/README.md +100 -0
  488. data/server/node_modules/node-uuid/package.json +12 -0
  489. data/server/node_modules/node-uuid/test/benchmark-native.c +34 -0
  490. data/server/node_modules/node-uuid/test/benchmark.js +27 -0
  491. data/server/node_modules/node-uuid/test/test.html +14 -0
  492. data/server/node_modules/node-uuid/test/test.js +83 -0
  493. data/server/node_modules/node-uuid/uuid.js +80 -0
  494. data/server/node_modules/restler/MIT-LICENSE +20 -0
  495. data/server/node_modules/restler/README.md +147 -0
  496. data/server/node_modules/restler/bin/restler +23 -0
  497. data/server/node_modules/restler/index.js +1 -0
  498. data/server/node_modules/restler/lib/multipartform.js +202 -0
  499. data/server/node_modules/restler/lib/restler.js +300 -0
  500. data/server/node_modules/restler/package.json +10 -0
  501. data/server/node_modules/restler/test/all.js +1 -0
  502. data/server/node_modules/restler/test/restler.js +148 -0
  503. data/server/node_modules/restler/test/test_helper.js +144 -0
  504. data/server/package.json +12 -0
  505. data/server/vendor/gems/bin/restclient +19 -0
  506. data/server/vendor/gems/cache/couchrest-1.1.2.gem +0 -0
  507. data/server/vendor/gems/cache/mime-types-1.16.gem +0 -0
  508. data/server/vendor/gems/cache/multi_json-1.0.3.gem +0 -0
  509. data/server/vendor/gems/cache/rest-client-1.6.7.gem +0 -0
  510. data/server/vendor/gems/gems/couchrest-1.1.2/Gemfile +4 -0
  511. data/server/vendor/gems/gems/couchrest-1.1.2/LICENSE +176 -0
  512. data/server/vendor/gems/gems/couchrest-1.1.2/README.md +65 -0
  513. data/server/vendor/gems/gems/couchrest-1.1.2/Rakefile +38 -0
  514. data/server/vendor/gems/gems/couchrest-1.1.2/THANKS.md +21 -0
  515. data/server/vendor/gems/gems/couchrest-1.1.2/VERSION +1 -0
  516. data/server/vendor/gems/gems/couchrest-1.1.2/couchrest.gemspec +34 -0
  517. data/server/vendor/gems/gems/couchrest-1.1.2/examples/word_count/markov +38 -0
  518. data/server/vendor/gems/gems/couchrest-1.1.2/examples/word_count/views/books/chunked-map.js +3 -0
  519. data/server/vendor/gems/gems/couchrest-1.1.2/examples/word_count/views/books/united-map.js +1 -0
  520. data/server/vendor/gems/gems/couchrest-1.1.2/examples/word_count/views/markov/chain-map.js +6 -0
  521. data/server/vendor/gems/gems/couchrest-1.1.2/examples/word_count/views/markov/chain-reduce.js +7 -0
  522. data/server/vendor/gems/gems/couchrest-1.1.2/examples/word_count/views/word_count/count-map.js +6 -0
  523. data/server/vendor/gems/gems/couchrest-1.1.2/examples/word_count/views/word_count/count-reduce.js +3 -0
  524. data/server/vendor/gems/gems/couchrest-1.1.2/examples/word_count/word_count.rb +46 -0
  525. data/server/vendor/gems/gems/couchrest-1.1.2/examples/word_count/word_count_query.rb +40 -0
  526. data/server/vendor/gems/gems/couchrest-1.1.2/examples/word_count/word_count_views.rb +26 -0
  527. data/server/vendor/gems/gems/couchrest-1.1.2/history.txt +194 -0
  528. data/server/vendor/gems/gems/couchrest-1.1.2/init.rb +1 -0
  529. data/server/vendor/gems/gems/couchrest-1.1.2/lib/couchrest.rb +134 -0
  530. data/server/vendor/gems/gems/couchrest-1.1.2/lib/couchrest/attributes.rb +89 -0
  531. data/server/vendor/gems/gems/couchrest-1.1.2/lib/couchrest/commands/generate.rb +71 -0
  532. data/server/vendor/gems/gems/couchrest-1.1.2/lib/couchrest/commands/push.rb +103 -0
  533. data/server/vendor/gems/gems/couchrest-1.1.2/lib/couchrest/database.rb +396 -0
  534. data/server/vendor/gems/gems/couchrest-1.1.2/lib/couchrest/design.rb +91 -0
  535. data/server/vendor/gems/gems/couchrest-1.1.2/lib/couchrest/document.rb +105 -0
  536. data/server/vendor/gems/gems/couchrest-1.1.2/lib/couchrest/helper/attachments.rb +29 -0
  537. data/server/vendor/gems/gems/couchrest-1.1.2/lib/couchrest/helper/pager.rb +103 -0
  538. data/server/vendor/gems/gems/couchrest-1.1.2/lib/couchrest/helper/streamer.rb +58 -0
  539. data/server/vendor/gems/gems/couchrest-1.1.2/lib/couchrest/helper/upgrade.rb +51 -0
  540. data/server/vendor/gems/gems/couchrest-1.1.2/lib/couchrest/middlewares/logger.rb +263 -0
  541. data/server/vendor/gems/gems/couchrest-1.1.2/lib/couchrest/monkeypatches.rb +25 -0
  542. data/server/vendor/gems/gems/couchrest-1.1.2/lib/couchrest/rest_api.rb +159 -0
  543. data/server/vendor/gems/gems/couchrest-1.1.2/lib/couchrest/server.rb +90 -0
  544. data/server/vendor/gems/gems/couchrest-1.1.2/lib/couchrest/support/inheritable_attributes.rb +107 -0
  545. data/server/vendor/gems/gems/couchrest-1.1.2/spec/couchrest/couchrest_spec.rb +202 -0
  546. data/server/vendor/gems/gems/couchrest-1.1.2/spec/couchrest/database_spec.rb +921 -0
  547. data/server/vendor/gems/gems/couchrest-1.1.2/spec/couchrest/design_spec.rb +206 -0
  548. data/server/vendor/gems/gems/couchrest-1.1.2/spec/couchrest/document_spec.rb +400 -0
  549. data/server/vendor/gems/gems/couchrest-1.1.2/spec/couchrest/helpers/pager_spec.rb +115 -0
  550. data/server/vendor/gems/gems/couchrest-1.1.2/spec/couchrest/helpers/streamer_spec.rb +59 -0
  551. data/server/vendor/gems/gems/couchrest-1.1.2/spec/couchrest/rest_api_spec.rb +212 -0
  552. data/server/vendor/gems/gems/couchrest-1.1.2/spec/couchrest/server_spec.rb +35 -0
  553. data/server/vendor/gems/gems/couchrest-1.1.2/spec/fixtures/attachments/README +3 -0
  554. data/server/vendor/gems/gems/couchrest-1.1.2/spec/fixtures/attachments/couchdb.png +0 -0
  555. data/server/vendor/gems/gems/couchrest-1.1.2/spec/fixtures/attachments/test.html +11 -0
  556. data/server/vendor/gems/gems/couchrest-1.1.2/spec/fixtures/views/lib.js +3 -0
  557. data/server/vendor/gems/gems/couchrest-1.1.2/spec/fixtures/views/test_view/lib.js +3 -0
  558. data/server/vendor/gems/gems/couchrest-1.1.2/spec/fixtures/views/test_view/only-map.js +4 -0
  559. data/server/vendor/gems/gems/couchrest-1.1.2/spec/fixtures/views/test_view/test-map.js +3 -0
  560. data/server/vendor/gems/gems/couchrest-1.1.2/spec/fixtures/views/test_view/test-reduce.js +3 -0
  561. data/server/vendor/gems/gems/couchrest-1.1.2/spec/spec.opts +5 -0
  562. data/server/vendor/gems/gems/couchrest-1.1.2/spec/spec_helper.rb +46 -0
  563. data/server/vendor/gems/gems/couchrest-1.1.2/utils/remap.rb +27 -0
  564. data/server/vendor/gems/gems/couchrest-1.1.2/utils/subset.rb +30 -0
  565. data/server/vendor/gems/gems/mime-types-1.16/History.txt +107 -0
  566. data/server/vendor/gems/gems/mime-types-1.16/Install.txt +17 -0
  567. data/server/vendor/gems/gems/mime-types-1.16/Licence.txt +15 -0
  568. data/server/vendor/gems/gems/mime-types-1.16/Manifest.txt +12 -0
  569. data/server/vendor/gems/gems/mime-types-1.16/README.txt +28 -0
  570. data/server/vendor/gems/gems/mime-types-1.16/Rakefile +316 -0
  571. data/server/vendor/gems/gems/mime-types-1.16/lib/mime/types.rb +751 -0
  572. data/server/vendor/gems/gems/mime-types-1.16/lib/mime/types.rb.data +1324 -0
  573. data/server/vendor/gems/gems/mime-types-1.16/mime-types.gemspec +43 -0
  574. data/server/vendor/gems/gems/mime-types-1.16/setup.rb +1585 -0
  575. data/server/vendor/gems/gems/mime-types-1.16/test/test_mime_type.rb +356 -0
  576. data/server/vendor/gems/gems/mime-types-1.16/test/test_mime_types.rb +122 -0
  577. data/server/vendor/gems/gems/multi_json-1.0.3/Gemfile +7 -0
  578. data/server/vendor/gems/gems/multi_json-1.0.3/LICENSE.md +20 -0
  579. data/server/vendor/gems/gems/multi_json-1.0.3/README.md +70 -0
  580. data/server/vendor/gems/gems/multi_json-1.0.3/Rakefile +23 -0
  581. data/server/vendor/gems/gems/multi_json-1.0.3/lib/multi_json.rb +74 -0
  582. data/server/vendor/gems/gems/multi_json-1.0.3/lib/multi_json/engines/json_gem.rb +21 -0
  583. data/server/vendor/gems/gems/multi_json-1.0.3/lib/multi_json/engines/json_pure.rb +21 -0
  584. data/server/vendor/gems/gems/multi_json-1.0.3/lib/multi_json/engines/ok_json.rb +48 -0
  585. data/server/vendor/gems/gems/multi_json-1.0.3/lib/multi_json/engines/yajl.rb +18 -0
  586. data/server/vendor/gems/gems/multi_json-1.0.3/lib/multi_json/vendor/ok_json.rb +581 -0
  587. data/server/vendor/gems/gems/multi_json-1.0.3/lib/multi_json/version.rb +3 -0
  588. data/server/vendor/gems/gems/multi_json-1.0.3/multi_json.gemspec +23 -0
  589. data/server/vendor/gems/gems/multi_json-1.0.3/spec/helper.rb +11 -0
  590. data/server/vendor/gems/gems/multi_json-1.0.3/spec/multi_json_spec.rb +134 -0
  591. data/server/vendor/gems/gems/rest-client-1.6.7/README.rdoc +285 -0
  592. data/server/vendor/gems/gems/rest-client-1.6.7/Rakefile +66 -0
  593. data/server/vendor/gems/gems/rest-client-1.6.7/VERSION +1 -0
  594. data/server/vendor/gems/gems/rest-client-1.6.7/bin/restclient +93 -0
  595. data/server/vendor/gems/gems/rest-client-1.6.7/history.md +134 -0
  596. data/server/vendor/gems/gems/rest-client-1.6.7/lib/rest-client.rb +2 -0
  597. data/server/vendor/gems/gems/rest-client-1.6.7/lib/rest_client.rb +2 -0
  598. data/server/vendor/gems/gems/rest-client-1.6.7/lib/restclient.rb +174 -0
  599. data/server/vendor/gems/gems/rest-client-1.6.7/lib/restclient/abstract_response.rb +106 -0
  600. data/server/vendor/gems/gems/rest-client-1.6.7/lib/restclient/exceptions.rb +193 -0
  601. data/server/vendor/gems/gems/rest-client-1.6.7/lib/restclient/net_http_ext.rb +55 -0
  602. data/server/vendor/gems/gems/rest-client-1.6.7/lib/restclient/payload.rb +235 -0
  603. data/server/vendor/gems/gems/rest-client-1.6.7/lib/restclient/raw_response.rb +34 -0
  604. data/server/vendor/gems/gems/rest-client-1.6.7/lib/restclient/request.rb +316 -0
  605. data/server/vendor/gems/gems/rest-client-1.6.7/lib/restclient/resource.rb +169 -0
  606. data/server/vendor/gems/gems/rest-client-1.6.7/lib/restclient/response.rb +24 -0
  607. data/server/vendor/gems/gems/rest-client-1.6.7/spec/abstract_response_spec.rb +85 -0
  608. data/server/vendor/gems/gems/rest-client-1.6.7/spec/base.rb +16 -0
  609. data/server/vendor/gems/gems/rest-client-1.6.7/spec/exceptions_spec.rb +98 -0
  610. data/server/vendor/gems/gems/rest-client-1.6.7/spec/integration/certs/equifax.crt +19 -0
  611. data/server/vendor/gems/gems/rest-client-1.6.7/spec/integration/certs/verisign.crt +14 -0
  612. data/server/vendor/gems/gems/rest-client-1.6.7/spec/integration/request_spec.rb +25 -0
  613. data/server/vendor/gems/gems/rest-client-1.6.7/spec/integration_spec.rb +38 -0
  614. data/server/vendor/gems/gems/rest-client-1.6.7/spec/master_shake.jpg +0 -0
  615. data/server/vendor/gems/gems/rest-client-1.6.7/spec/payload_spec.rb +234 -0
  616. data/server/vendor/gems/gems/rest-client-1.6.7/spec/raw_response_spec.rb +17 -0
  617. data/server/vendor/gems/gems/rest-client-1.6.7/spec/request2_spec.rb +40 -0
  618. data/server/vendor/gems/gems/rest-client-1.6.7/spec/request_spec.rb +529 -0
  619. data/server/vendor/gems/gems/rest-client-1.6.7/spec/resource_spec.rb +134 -0
  620. data/server/vendor/gems/gems/rest-client-1.6.7/spec/response_spec.rb +169 -0
  621. data/server/vendor/gems/gems/rest-client-1.6.7/spec/restclient_spec.rb +73 -0
  622. data/server/vendor/gems/specifications/couchrest-1.1.2.gemspec +43 -0
  623. data/server/vendor/gems/specifications/mime-types-1.16.gemspec +42 -0
  624. data/server/vendor/gems/specifications/multi_json-1.0.3.gemspec +40 -0
  625. data/server/vendor/gems/specifications/rest-client-1.6.7.gemspec +37 -0
  626. data/server/web.js +93 -0
  627. metadata +633 -7
@@ -0,0 +1,25 @@
1
+ # Monkey patch for faster net/http io
2
+ if RUBY_VERSION.to_f < 1.9
3
+ require 'timeout'
4
+
5
+ class Net::BufferedIO #:nodoc:
6
+ alias :old_rbuf_fill :rbuf_fill
7
+ def rbuf_fill
8
+ if @io.respond_to?(:read_nonblock)
9
+ begin
10
+ @rbuf << @io.read_nonblock(65536)
11
+ rescue Errno::EWOULDBLOCK
12
+ if IO.select([@io], nil, nil, @read_timeout)
13
+ retry
14
+ else
15
+ raise Timeout::Error, "IO timeout"
16
+ end
17
+ end
18
+ else
19
+ timeout(@read_timeout) do
20
+ @rbuf << @io.sysread(65536)
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,159 @@
1
+ module CouchRest
2
+
3
+ # CouchRest RestAPI
4
+ #
5
+ # The basic low-level interface for all REST requests to the database. Everything must pass
6
+ # through here before it is sent to the server.
7
+ #
8
+ # Five types of REST requests are supported: get, put, post, delete, and copy.
9
+ #
10
+ # Requests that do not have a payload, get, delete and copy, accept the URI and options parameters,
11
+ # where as put and post both expect a document as the second parameter.
12
+ #
13
+ # The API will try to intelegently split the options between the JSON parser and RestClient API.
14
+ #
15
+ # The following options will be recognised as header options and automatically added
16
+ # to the header hash:
17
+ #
18
+ # * :content_type, type of content to be sent, especially useful when sending files as this will set the file type. The default is :json.
19
+ # * :accept, the content type to accept in the response. This should pretty much always be :json.
20
+ #
21
+ # The following request options are supported:
22
+ #
23
+ # * :method override the requested method (should not be used!).
24
+ # * :url override the URL used in the request.
25
+ # * :payload override the document or data sent in the message body (only PUT or POST).
26
+ # * :headers any additional headers (overrides :content_type and :accept)
27
+ # * :timeout and :open_timeout the time in miliseconds to wait for the request, see RestClient API for more details.
28
+ # * :verify_ssl, :ssl_client_cert, :ssl_client_key, and :ssl_ca_file, SSL handling methods.
29
+ #
30
+ #
31
+ # Any other remaining options will be sent to the MultiJSON backend except for the :raw option.
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
34
+ # not normally necessary as IO and Tempfile objects will not be parsed anyway. The result of the request will
35
+ # *always* be parsed.
36
+ #
37
+ # For all other requests, mainly GET, the :raw option will make no attempt to parse the result. This
38
+ # is useful for receiving files from the database.
39
+ #
40
+
41
+ module RestAPI
42
+
43
+ # Send a GET request.
44
+ def get(uri, options = {})
45
+ execute(uri, :get, options)
46
+ end
47
+
48
+ # Send a PUT request.
49
+ def put(uri, doc = nil, options = {})
50
+ execute(uri, :put, options, doc)
51
+ end
52
+
53
+ # Send a POST request.
54
+ def post(uri, doc = nil, options = {})
55
+ execute(uri, :post, options, doc)
56
+ end
57
+
58
+ # Send a DELETE request.
59
+ def delete(uri, options = {})
60
+ execute(uri, :delete, options)
61
+ end
62
+
63
+ # Send a COPY request to the URI provided.
64
+ def copy(uri, destination, options = {})
65
+ opts = options.nil? ? {} : options.dup
66
+ # also copy headers!
67
+ opts[:headers] = options[:headers].nil? ? {} : options[:headers].dup
68
+ opts[:headers]['Destination'] = destination
69
+ execute(uri, :copy, opts)
70
+ end
71
+
72
+ # The default RestClient headers used in each request.
73
+ def default_headers
74
+ {
75
+ :content_type => :json,
76
+ :accept => :json
77
+ }
78
+ end
79
+
80
+ private
81
+
82
+ # Perform the RestClient request by removing the parse specific options, ensuring the
83
+ # payload is prepared, and sending the request ready to parse the response.
84
+ def execute(url, method, options = {}, payload = nil)
85
+ request, parser = prepare_and_split_options(url, method, options)
86
+ # Prepare the payload if it is provided
87
+ request[:payload] = payload_from_doc(payload, parser) if payload
88
+ begin
89
+ parse_response(RestClient::Request.execute(request), parser)
90
+ rescue Exception => e
91
+ if $DEBUG
92
+ raise "Error while sending a #{method.to_s.upcase} request #{uri}\noptions: #{opts.inspect}\n#{e}"
93
+ else
94
+ raise e
95
+ end
96
+ end
97
+ end
98
+
99
+ # Prepare two hashes, one for the request to the REST backend and a second
100
+ # for the JSON parser.
101
+ #
102
+ # Returns an array of request and parser options.
103
+ #
104
+ def prepare_and_split_options(url, method, options)
105
+ request = {
106
+ :url => url,
107
+ :method => method,
108
+ :headers => default_headers.merge(options[:headers] || {})
109
+ }
110
+ parser = {
111
+ :raw => false
112
+ }
113
+ # Split the options
114
+ (options || {}).each do |k,v|
115
+ k = k.to_sym
116
+ next if k == :headers # already dealt with
117
+ if restclient_option_keys.include?(k)
118
+ request[k] = v
119
+ elsif header_option_keys.include?(k)
120
+ request[:headers][k] = v
121
+ else
122
+ parser[k] = v
123
+ end
124
+ end
125
+ [request, parser]
126
+ end
127
+
128
+ # Check if the provided doc is nil or special IO device or temp file. If not,
129
+ # encode it into a string.
130
+ #
131
+ # The options supported are:
132
+ # * :raw TrueClass, if true the payload will not be altered.
133
+ #
134
+ def payload_from_doc(doc, opts = {})
135
+ if (opts.delete(:raw) || doc.nil? || doc.is_a?(IO) || doc.is_a?(Tempfile))
136
+ doc
137
+ else
138
+ MultiJson.encode(doc.respond_to?(:as_couch_json) ? doc.as_couch_json : doc)
139
+ end
140
+ end
141
+
142
+ # Parse the response provided.
143
+ def parse_response(result, opts = {})
144
+ opts.delete(:raw) ? result : MultiJson.decode(result, opts.update(:max_nesting => false))
145
+ end
146
+
147
+ # An array of all the options that should be passed through to restclient.
148
+ # Anything not in this list will be passed to the JSON parser.
149
+ def restclient_option_keys
150
+ [:method, :url, :payload, :headers, :timeout, :open_timeout,
151
+ :verify_ssl, :ssl_client_cert, :ssl_client_key, :ssl_ca_file]
152
+ end
153
+
154
+ def header_option_keys
155
+ [ :content_type, :accept ]
156
+ end
157
+
158
+ end
159
+ end
@@ -0,0 +1,90 @@
1
+ module CouchRest
2
+ class Server
3
+ attr_accessor :uri, :uuid_batch_count, :available_databases
4
+ def initialize(server = 'http://127.0.0.1:5984', uuid_batch_count = 1000)
5
+ @uri = server
6
+ @uuid_batch_count = uuid_batch_count
7
+ end
8
+
9
+ # Lists all "available" databases.
10
+ # An available database, is a database that was specified
11
+ # as avaiable by your code.
12
+ # It allows to define common databases to use and reuse in your code
13
+ def available_databases
14
+ @available_databases ||= {}
15
+ end
16
+
17
+ # Adds a new available database and create it unless it already exists
18
+ #
19
+ # Example:
20
+ #
21
+ # @couch = CouchRest::Server.new
22
+ # @couch.define_available_database(:default, "tech-blog")
23
+ #
24
+ def define_available_database(reference, db_name, create_unless_exists = true)
25
+ available_databases[reference.to_sym] = create_unless_exists ? database!(db_name) : database(db_name)
26
+ end
27
+
28
+ # Checks that a database is set as available
29
+ #
30
+ # Example:
31
+ #
32
+ # @couch.available_database?(:default)
33
+ #
34
+ def available_database?(ref_or_name)
35
+ 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
+ end
37
+
38
+ def default_database=(name, create_unless_exists = true)
39
+ define_available_database(:default, name, create_unless_exists = true)
40
+ end
41
+
42
+ def default_database
43
+ available_databases[:default]
44
+ end
45
+
46
+ # Lists all databases on the server
47
+ def databases
48
+ CouchRest.get "#{@uri}/_all_dbs"
49
+ end
50
+
51
+ # Returns a CouchRest::Database for the given name
52
+ def database(name)
53
+ CouchRest::Database.new(self, name)
54
+ end
55
+
56
+ # Creates the database if it doesn't exist
57
+ def database!(name)
58
+ create_db(name) rescue nil
59
+ database(name)
60
+ end
61
+
62
+ # GET the welcome message
63
+ def info
64
+ CouchRest.get "#{@uri}/"
65
+ end
66
+
67
+ # Create a database
68
+ def create_db(name)
69
+ CouchRest.put "#{@uri}/#{name}"
70
+ database(name)
71
+ end
72
+
73
+ # Restart the CouchDB instance
74
+ def restart!
75
+ CouchRest.post "#{@uri}/_restart"
76
+ rescue RestClient::ServerBrokeConnection
77
+ # Shouldn't really happen, but does in CouchDB 1.0.0
78
+ end
79
+
80
+ # Retrive an unused UUID from CouchDB. Server instances manage caching a list of unused UUIDs.
81
+ def next_uuid(count = @uuid_batch_count)
82
+ @uuids ||= []
83
+ if @uuids.empty?
84
+ @uuids = CouchRest.get("#{@uri}/_uuids?count=#{count}")["uuids"]
85
+ end
86
+ @uuids.pop
87
+ end
88
+
89
+ end
90
+ end
@@ -0,0 +1,107 @@
1
+ # Copyright (c) 2006-2009 David Heinemeier Hansson
2
+ #
3
+ # Permission is hereby granted, free of charge, to any person obtaining
4
+ # a copy of this software and associated documentation files (the
5
+ # "Software"), to deal in the Software without restriction, including
6
+ # without limitation the rights to use, copy, modify, merge, publish,
7
+ # distribute, sublicense, and/or sell copies of the Software, and to
8
+ # permit persons to whom the Software is furnished to do so, subject to
9
+ # the following conditions:
10
+ #
11
+ # The above copyright notice and this permission notice shall be
12
+ # included in all copies or substantial portions of the Software.
13
+ #
14
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21
+ #
22
+ # Extracted From
23
+ # http://github.com/rails/rails/commit/971e2438d98326c994ec6d3ef8e37b7e868ed6e2
24
+
25
+ module CouchRest
26
+ module InheritableAttributes
27
+
28
+ # Defines class-level inheritable attribute reader. Attributes are available to subclasses,
29
+ # each subclass has a copy of parent's attribute.
30
+ #
31
+ # @param *syms<Array[#to_s]> Array of attributes to define inheritable reader for.
32
+ # @return <Array[#to_s]> Array of attributes converted into inheritable_readers.
33
+ #
34
+ # @api public
35
+ #
36
+ # @todo Do we want to block instance_reader via :instance_reader => false
37
+ # @todo It would be preferable that we do something with a Hash passed in
38
+ # (error out or do the same as other methods above) instead of silently
39
+ # moving on). In particular, this makes the return value of this function
40
+ # less useful.
41
+ def couchrest_inheritable_reader(*ivars)
42
+ instance_reader = ivars.pop[:reader] if ivars.last.is_a?(Hash)
43
+
44
+ ivars.each do |ivar|
45
+ self.class_eval <<-RUBY, __FILE__, __LINE__ + 1
46
+ def self.#{ivar}
47
+ return @#{ivar} if self.object_id == #{self.object_id} || defined?(@#{ivar})
48
+ ivar = superclass.#{ivar}
49
+ return nil if ivar.nil? && !#{self}.instance_variable_defined?("@#{ivar}")
50
+ @#{ivar} = ivar && !ivar.is_a?(Module) && !ivar.is_a?(Numeric) && !ivar.is_a?(TrueClass) && !ivar.is_a?(FalseClass) ? ivar.dup : ivar
51
+ end
52
+ RUBY
53
+ unless instance_reader == false
54
+ self.class_eval <<-RUBY, __FILE__, __LINE__ + 1
55
+ def #{ivar}
56
+ self.class.#{ivar}
57
+ end
58
+ RUBY
59
+ end
60
+ end
61
+ end
62
+
63
+ # Defines class-level inheritable attribute writer. Attributes are available to subclasses,
64
+ # each subclass has a copy of parent's attribute.
65
+ #
66
+ # @param *syms<Array[*#to_s, Hash{:instance_writer => Boolean}]> Array of attributes to
67
+ # define inheritable writer for.
68
+ # @option syms :instance_writer<Boolean> if true, instance-level inheritable attribute writer is defined.
69
+ # @return <Array[#to_s]> An Array of the attributes that were made into inheritable writers.
70
+ #
71
+ # @api public
72
+ #
73
+ # @todo We need a style for class_eval <<-HEREDOC. I'd like to make it
74
+ # class_eval(<<-RUBY, __FILE__, __LINE__), but we should codify it somewhere.
75
+ def couchrest_inheritable_writer(*ivars)
76
+ instance_writer = ivars.pop[:writer] if ivars.last.is_a?(Hash)
77
+ ivars.each do |ivar|
78
+ self.class_eval <<-RUBY, __FILE__, __LINE__ + 1
79
+ def self.#{ivar}=(obj)
80
+ @#{ivar} = obj
81
+ end
82
+ RUBY
83
+ unless instance_writer == false
84
+ self.class_eval <<-RUBY, __FILE__, __LINE__ + 1
85
+ def #{ivar}=(obj) self.class.#{ivar} = obj end
86
+ RUBY
87
+ end
88
+
89
+ self.send("#{ivar}=", yield) if block_given?
90
+ end
91
+ end
92
+
93
+ # Defines class-level inheritable attribute accessor. Attributes are available to subclasses,
94
+ # each subclass has a copy of parent's attribute.
95
+ #
96
+ # @param *syms<Array[*#to_s, Hash{:instance_writer => Boolean}]> Array of attributes to
97
+ # define inheritable accessor for.
98
+ # @option syms :instance_writer<Boolean> if true, instance-level inheritable attribute writer is defined.
99
+ # @return <Array[#to_s]> An Array of attributes turned into inheritable accessors.
100
+ #
101
+ # @api public
102
+ def couchrest_inheritable_accessor(*syms, &block)
103
+ couchrest_inheritable_reader(*syms)
104
+ couchrest_inheritable_writer(*syms, &block)
105
+ end
106
+ end
107
+ end
@@ -0,0 +1,202 @@
1
+ require File.expand_path("../../spec_helper", __FILE__)
2
+
3
+ describe CouchRest do
4
+
5
+ before(:each) do
6
+ @cr = CouchRest.new(COUCHHOST)
7
+ begin
8
+ @db = @cr.database(TESTDB)
9
+ @db.delete! rescue nil
10
+ end
11
+ end
12
+
13
+ after(:each) do
14
+ begin
15
+ @db.delete! rescue nil
16
+ end
17
+ end
18
+
19
+ describe "getting info" do
20
+ it "should list databases" do
21
+ @cr.databases.should be_an_instance_of(Array)
22
+ end
23
+ it "should get info" do
24
+ @cr.info["couchdb"].should == "Welcome"
25
+ @cr.info.class.should == Hash
26
+ end
27
+ end
28
+
29
+ it "should restart" do
30
+ @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
+ end
39
+
40
+ it "should provide one-time access to uuids" do
41
+ @cr.next_uuid.should_not be_nil
42
+ end
43
+
44
+ describe "initializing a database" do
45
+ it "should return a db" do
46
+ db = @cr.database(TESTDB)
47
+ db.should be_an_instance_of(CouchRest::Database)
48
+ db.host.should == @cr.uri
49
+ end
50
+ end
51
+
52
+ describe "parsing urls" do
53
+ it "should parse just a dbname" do
54
+ db = CouchRest.parse "my-db"
55
+ db[:database].should == "my-db"
56
+ db[:host].should == "http://127.0.0.1:5984"
57
+ end
58
+ it "should parse a host and db" do
59
+ db = CouchRest.parse "127.0.0.1/my-db"
60
+ db[:database].should == "my-db"
61
+ db[:host].should == "http://127.0.0.1"
62
+ end
63
+ it "should parse a host and db with http" do
64
+ db = CouchRest.parse "http://127.0.0.1/my-db"
65
+ db[:database].should == "my-db"
66
+ db[:host].should == "http://127.0.0.1"
67
+ end
68
+ it "should parse a host and db with https" do
69
+ db = CouchRest.parse "https://127.0.0.1/my-db"
70
+ db[:database].should == "my-db"
71
+ db[:host].should == "https://127.0.0.1"
72
+ end
73
+ it "should parse a host with a port and db" do
74
+ db = CouchRest.parse "127.0.0.1:5555/my-db"
75
+ db[:database].should == "my-db"
76
+ db[:host].should == "http://127.0.0.1:5555"
77
+ end
78
+ it "should parse a host with a port and db with http" do
79
+ db = CouchRest.parse "http://127.0.0.1:5555/my-db"
80
+ db[:database].should == "my-db"
81
+ db[:host].should == "http://127.0.0.1:5555"
82
+ end
83
+ it "should parse a host with a port and db with https" do
84
+ db = CouchRest.parse "https://127.0.0.1:5555/my-db"
85
+ db[:database].should == "my-db"
86
+ db[:host].should == "https://127.0.0.1:5555"
87
+ end
88
+ it "should parse just a host" do
89
+ db = CouchRest.parse "http://127.0.0.1:5555/"
90
+ db[:database].should be_nil
91
+ db[:host].should == "http://127.0.0.1:5555"
92
+ end
93
+ it "should parse just a host with https" do
94
+ db = CouchRest.parse "https://127.0.0.1:5555/"
95
+ db[:database].should be_nil
96
+ db[:host].should == "https://127.0.0.1:5555"
97
+ end
98
+ it "should parse just a host no slash" do
99
+ db = CouchRest.parse "http://127.0.0.1:5555"
100
+ db[:host].should == "http://127.0.0.1:5555"
101
+ db[:database].should be_nil
102
+ end
103
+ it "should parse just a host no slash and https" do
104
+ db = CouchRest.parse "https://127.0.0.1:5555"
105
+ db[:host].should == "https://127.0.0.1:5555"
106
+ db[:database].should be_nil
107
+ end
108
+ it "should get docid" do
109
+ db = CouchRest.parse "127.0.0.1:5555/my-db/my-doc"
110
+ db[:database].should == "my-db"
111
+ db[:host].should == "http://127.0.0.1:5555"
112
+ db[:doc].should == "my-doc"
113
+ end
114
+ it "should get docid with http" do
115
+ db = CouchRest.parse "http://127.0.0.1:5555/my-db/my-doc"
116
+ db[:database].should == "my-db"
117
+ db[:host].should == "http://127.0.0.1:5555"
118
+ db[:doc].should == "my-doc"
119
+ end
120
+ it "should get docid with https" do
121
+ db = CouchRest.parse "https://127.0.0.1:5555/my-db/my-doc"
122
+ db[:database].should == "my-db"
123
+ db[:host].should == "https://127.0.0.1:5555"
124
+ db[:doc].should == "my-doc"
125
+ end
126
+ end
127
+
128
+ describe "easy initializing a database adapter" do
129
+ it "should be possible without an explicit CouchRest instantiation" do
130
+ db = CouchRest.database "http://127.0.0.1:5984/couchrest-test"
131
+ db.should be_an_instance_of(CouchRest::Database)
132
+ db.host.should == "http://127.0.0.1:5984"
133
+ end
134
+ # TODO add https support (need test environment...)
135
+ # it "should work with https" # do
136
+ # db = CouchRest.database "https://127.0.0.1:5984/couchrest-test"
137
+ # db.host.should == "https://127.0.0.1:5984"
138
+ # end
139
+ it "should not create the database automatically" do
140
+ db = CouchRest.database "http://127.0.0.1:5984/couchrest-test"
141
+ lambda{db.info}.should raise_error(RestClient::ResourceNotFound)
142
+ end
143
+ end
144
+
145
+ describe "ensuring the db exists" do
146
+ it "should be super easy" do
147
+ db = CouchRest.database! "#{COUCHHOST}/couchrest-test-2"
148
+ db.name.should == 'couchrest-test-2'
149
+ db.info["db_name"].should == 'couchrest-test-2'
150
+ end
151
+ end
152
+
153
+ describe "successfully creating a database" do
154
+ it "should start without a database" do
155
+ @cr.databases.should_not include(TESTDB)
156
+ end
157
+ it "should return the created database" do
158
+ db = @cr.create_db(TESTDB)
159
+ db.should be_an_instance_of(CouchRest::Database)
160
+ end
161
+ it "should create the database" do
162
+ db = @cr.create_db(TESTDB)
163
+ @cr.databases.should include(TESTDB)
164
+ end
165
+ end
166
+
167
+ describe "failing to create a database because the name is taken" do
168
+ before(:each) do
169
+ db = @cr.create_db(TESTDB)
170
+ end
171
+ it "should start with the test database" do
172
+ @cr.databases.should include(TESTDB)
173
+ end
174
+ it "should PUT the database and raise an error" do
175
+ lambda{
176
+ @cr.create_db(TESTDB)
177
+ }.should raise_error(RestClient::Request::RequestFailed)
178
+ end
179
+ end
180
+
181
+ describe "using a proxy for RestClient connections" do
182
+ it "should set proxy url for RestClient" do
183
+ CouchRest.proxy 'http://localhost:8888/'
184
+ proxy_uri = URI.parse(RestClient.proxy)
185
+ proxy_uri.host.should eql( 'localhost' )
186
+ proxy_uri.port.should eql( 8888 )
187
+ CouchRest.proxy nil
188
+ end
189
+ end
190
+
191
+ describe "Including old ExtendedDocument library" do
192
+
193
+ it "should raise an exception" do
194
+ lambda do
195
+ class TestDoc < CouchRest::ExtendedDocument
196
+ attr_reader :fail
197
+ end
198
+ end.should raise_error(RuntimeError)
199
+ end
200
+
201
+ end
202
+ end