asana2flowdock 1.0.0 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (1595) hide show
  1. checksums.yaml +8 -8
  2. data/asana2flowdock.gemspec +3 -1819
  3. data/lib/asana2flowdock.rb +1 -1
  4. metadata +1 -1599
  5. data/a.rb +0 -336
  6. data/a.yml +0 -6
  7. data/bin/amalgalite-pack +0 -16
  8. data/bin/asana2flowdock-daemon +0 -16
  9. data/bin/coderay +0 -16
  10. data/bin/httparty +0 -16
  11. data/bin/pry +0 -16
  12. data/bin/sekrets +0 -16
  13. data/bin/sequel +0 -16
  14. data/config/asana2flowdock.yml.enc +0 -2
  15. data/vendor/bundle/ruby/1.9.1/bin/amalgalite-pack +0 -23
  16. data/vendor/bundle/ruby/1.9.1/bin/asana2flowdock +0 -23
  17. data/vendor/bundle/ruby/1.9.1/bin/asana2flowdock-daemon +0 -23
  18. data/vendor/bundle/ruby/1.9.1/bin/coderay +0 -23
  19. data/vendor/bundle/ruby/1.9.1/bin/httparty +0 -23
  20. data/vendor/bundle/ruby/1.9.1/bin/pry +0 -23
  21. data/vendor/bundle/ruby/1.9.1/bin/sekrets +0 -23
  22. data/vendor/bundle/ruby/1.9.1/bin/sequel +0 -23
  23. data/vendor/bundle/ruby/1.9.1/build_info/amalgalite-1.3.0.info +0 -1
  24. data/vendor/bundle/ruby/1.9.1/build_info/arrayfields-4.7.4.info +0 -1
  25. data/vendor/bundle/ruby/1.9.1/build_info/chronic-0.10.2.info +0 -1
  26. data/vendor/bundle/ruby/1.9.1/build_info/coderay-1.1.0.info +0 -1
  27. data/vendor/bundle/ruby/1.9.1/build_info/coerce-0.0.6.info +0 -1
  28. data/vendor/bundle/ruby/1.9.1/build_info/daemons-1.1.9.info +0 -1
  29. data/vendor/bundle/ruby/1.9.1/build_info/fastercsv-1.5.5.info +0 -1
  30. data/vendor/bundle/ruby/1.9.1/build_info/fattr-2.2.2.info +0 -1
  31. data/vendor/bundle/ruby/1.9.1/build_info/flowdock-0.5.0.info +0 -1
  32. data/vendor/bundle/ruby/1.9.1/build_info/highline-1.6.21.info +0 -1
  33. data/vendor/bundle/ruby/1.9.1/build_info/httparty-0.13.1.info +0 -1
  34. data/vendor/bundle/ruby/1.9.1/build_info/json-1.8.1.info +0 -1
  35. data/vendor/bundle/ruby/1.9.1/build_info/main-6.0.0.info +0 -1
  36. data/vendor/bundle/ruby/1.9.1/build_info/main-6.1.0.info +0 -1
  37. data/vendor/bundle/ruby/1.9.1/build_info/map-6.5.5.info +0 -1
  38. data/vendor/bundle/ruby/1.9.1/build_info/method_source-0.8.2.info +0 -1
  39. data/vendor/bundle/ruby/1.9.1/build_info/multi_json-1.10.1.info +0 -1
  40. data/vendor/bundle/ruby/1.9.1/build_info/multi_xml-0.5.5.info +0 -1
  41. data/vendor/bundle/ruby/1.9.1/build_info/pry-0.9.12.6.info +0 -1
  42. data/vendor/bundle/ruby/1.9.1/build_info/sekrets-1.7.0.info +0 -1
  43. data/vendor/bundle/ruby/1.9.1/build_info/sequel-4.15.0.info +0 -1
  44. data/vendor/bundle/ruby/1.9.1/build_info/slop-3.5.0.info +0 -1
  45. data/vendor/bundle/ruby/1.9.1/build_info/threadify-1.3.0.info +0 -1
  46. data/vendor/bundle/ruby/1.9.1/gems/amalgalite-1.3.0/CONTRIBUTING.md +0 -49
  47. data/vendor/bundle/ruby/1.9.1/gems/amalgalite-1.3.0/HISTORY.md +0 -315
  48. data/vendor/bundle/ruby/1.9.1/gems/amalgalite-1.3.0/LICENSE +0 -29
  49. data/vendor/bundle/ruby/1.9.1/gems/amalgalite-1.3.0/Manifest.txt +0 -104
  50. data/vendor/bundle/ruby/1.9.1/gems/amalgalite-1.3.0/README.md +0 -73
  51. data/vendor/bundle/ruby/1.9.1/gems/amalgalite-1.3.0/Rakefile +0 -25
  52. data/vendor/bundle/ruby/1.9.1/gems/amalgalite-1.3.0/TODO.md +0 -50
  53. data/vendor/bundle/ruby/1.9.1/gems/amalgalite-1.3.0/bin/amalgalite-pack +0 -147
  54. data/vendor/bundle/ruby/1.9.1/gems/amalgalite-1.3.0/examples/a.rb +0 -9
  55. data/vendor/bundle/ruby/1.9.1/gems/amalgalite-1.3.0/examples/blob.rb +0 -88
  56. data/vendor/bundle/ruby/1.9.1/gems/amalgalite-1.3.0/examples/bootstrap.rb +0 -36
  57. data/vendor/bundle/ruby/1.9.1/gems/amalgalite-1.3.0/examples/define_aggregate.rb +0 -75
  58. data/vendor/bundle/ruby/1.9.1/gems/amalgalite-1.3.0/examples/define_function.rb +0 -104
  59. data/vendor/bundle/ruby/1.9.1/gems/amalgalite-1.3.0/examples/fts3.rb +0 -144
  60. data/vendor/bundle/ruby/1.9.1/gems/amalgalite-1.3.0/examples/gem-db.rb +0 -94
  61. data/vendor/bundle/ruby/1.9.1/gems/amalgalite-1.3.0/examples/require_me.rb +0 -11
  62. data/vendor/bundle/ruby/1.9.1/gems/amalgalite-1.3.0/examples/requires.rb +0 -42
  63. data/vendor/bundle/ruby/1.9.1/gems/amalgalite-1.3.0/examples/schema-info.rb +0 -34
  64. data/vendor/bundle/ruby/1.9.1/gems/amalgalite-1.3.0/ext/amalgalite/c/Makefile +0 -220
  65. data/vendor/bundle/ruby/1.9.1/gems/amalgalite-1.3.0/ext/amalgalite/c/amalgalite.bundle +0 -0
  66. data/vendor/bundle/ruby/1.9.1/gems/amalgalite-1.3.0/ext/amalgalite/c/amalgalite.c +0 -329
  67. data/vendor/bundle/ruby/1.9.1/gems/amalgalite-1.3.0/ext/amalgalite/c/amalgalite.h +0 -151
  68. data/vendor/bundle/ruby/1.9.1/gems/amalgalite-1.3.0/ext/amalgalite/c/amalgalite.o +0 -0
  69. data/vendor/bundle/ruby/1.9.1/gems/amalgalite-1.3.0/ext/amalgalite/c/amalgalite_blob.c +0 -240
  70. data/vendor/bundle/ruby/1.9.1/gems/amalgalite-1.3.0/ext/amalgalite/c/amalgalite_blob.o +0 -0
  71. data/vendor/bundle/ruby/1.9.1/gems/amalgalite-1.3.0/ext/amalgalite/c/amalgalite_constants.c +0 -378
  72. data/vendor/bundle/ruby/1.9.1/gems/amalgalite-1.3.0/ext/amalgalite/c/amalgalite_constants.o +0 -0
  73. data/vendor/bundle/ruby/1.9.1/gems/amalgalite-1.3.0/ext/amalgalite/c/amalgalite_database.c +0 -1177
  74. data/vendor/bundle/ruby/1.9.1/gems/amalgalite-1.3.0/ext/amalgalite/c/amalgalite_database.o +0 -0
  75. data/vendor/bundle/ruby/1.9.1/gems/amalgalite-1.3.0/ext/amalgalite/c/amalgalite_requires_bootstrap.c +0 -282
  76. data/vendor/bundle/ruby/1.9.1/gems/amalgalite-1.3.0/ext/amalgalite/c/amalgalite_requires_bootstrap.o +0 -0
  77. data/vendor/bundle/ruby/1.9.1/gems/amalgalite-1.3.0/ext/amalgalite/c/amalgalite_statement.c +0 -649
  78. data/vendor/bundle/ruby/1.9.1/gems/amalgalite-1.3.0/ext/amalgalite/c/amalgalite_statement.o +0 -0
  79. data/vendor/bundle/ruby/1.9.1/gems/amalgalite-1.3.0/ext/amalgalite/c/extconf.rb +0 -36
  80. data/vendor/bundle/ruby/1.9.1/gems/amalgalite-1.3.0/ext/amalgalite/c/gen_constants.rb +0 -193
  81. data/vendor/bundle/ruby/1.9.1/gems/amalgalite-1.3.0/ext/amalgalite/c/notes.txt +0 -134
  82. data/vendor/bundle/ruby/1.9.1/gems/amalgalite-1.3.0/ext/amalgalite/c/sqlite3.c +0 -137414
  83. data/vendor/bundle/ruby/1.9.1/gems/amalgalite-1.3.0/ext/amalgalite/c/sqlite3.h +0 -7160
  84. data/vendor/bundle/ruby/1.9.1/gems/amalgalite-1.3.0/ext/amalgalite/c/sqlite3.o +0 -0
  85. data/vendor/bundle/ruby/1.9.1/gems/amalgalite-1.3.0/ext/amalgalite/c/sqlite3_options.h +0 -4
  86. data/vendor/bundle/ruby/1.9.1/gems/amalgalite-1.3.0/ext/amalgalite/c/sqlite3ext.h +0 -447
  87. data/vendor/bundle/ruby/1.9.1/gems/amalgalite-1.3.0/lib/amalgalite.rb +0 -51
  88. data/vendor/bundle/ruby/1.9.1/gems/amalgalite-1.3.0/lib/amalgalite/1.9/amalgalite.bundle +0 -0
  89. data/vendor/bundle/ruby/1.9.1/gems/amalgalite-1.3.0/lib/amalgalite/aggregate.rb +0 -67
  90. data/vendor/bundle/ruby/1.9.1/gems/amalgalite-1.3.0/lib/amalgalite/blob.rb +0 -186
  91. data/vendor/bundle/ruby/1.9.1/gems/amalgalite-1.3.0/lib/amalgalite/boolean.rb +0 -42
  92. data/vendor/bundle/ruby/1.9.1/gems/amalgalite-1.3.0/lib/amalgalite/busy_timeout.rb +0 -47
  93. data/vendor/bundle/ruby/1.9.1/gems/amalgalite-1.3.0/lib/amalgalite/column.rb +0 -99
  94. data/vendor/bundle/ruby/1.9.1/gems/amalgalite-1.3.0/lib/amalgalite/core_ext/kernel/require.rb +0 -21
  95. data/vendor/bundle/ruby/1.9.1/gems/amalgalite-1.3.0/lib/amalgalite/csv_table_importer.rb +0 -74
  96. data/vendor/bundle/ruby/1.9.1/gems/amalgalite-1.3.0/lib/amalgalite/database.rb +0 -984
  97. data/vendor/bundle/ruby/1.9.1/gems/amalgalite-1.3.0/lib/amalgalite/function.rb +0 -61
  98. data/vendor/bundle/ruby/1.9.1/gems/amalgalite-1.3.0/lib/amalgalite/index.rb +0 -43
  99. data/vendor/bundle/ruby/1.9.1/gems/amalgalite-1.3.0/lib/amalgalite/memory_database.rb +0 -15
  100. data/vendor/bundle/ruby/1.9.1/gems/amalgalite-1.3.0/lib/amalgalite/packer.rb +0 -231
  101. data/vendor/bundle/ruby/1.9.1/gems/amalgalite-1.3.0/lib/amalgalite/paths.rb +0 -80
  102. data/vendor/bundle/ruby/1.9.1/gems/amalgalite-1.3.0/lib/amalgalite/profile_tap.rb +0 -131
  103. data/vendor/bundle/ruby/1.9.1/gems/amalgalite-1.3.0/lib/amalgalite/progress_handler.rb +0 -21
  104. data/vendor/bundle/ruby/1.9.1/gems/amalgalite-1.3.0/lib/amalgalite/requires.rb +0 -151
  105. data/vendor/bundle/ruby/1.9.1/gems/amalgalite-1.3.0/lib/amalgalite/schema.rb +0 -225
  106. data/vendor/bundle/ruby/1.9.1/gems/amalgalite-1.3.0/lib/amalgalite/sqlite3.rb +0 -6
  107. data/vendor/bundle/ruby/1.9.1/gems/amalgalite-1.3.0/lib/amalgalite/sqlite3/constants.rb +0 -95
  108. data/vendor/bundle/ruby/1.9.1/gems/amalgalite-1.3.0/lib/amalgalite/sqlite3/database/function.rb +0 -48
  109. data/vendor/bundle/ruby/1.9.1/gems/amalgalite-1.3.0/lib/amalgalite/sqlite3/database/status.rb +0 -68
  110. data/vendor/bundle/ruby/1.9.1/gems/amalgalite-1.3.0/lib/amalgalite/sqlite3/status.rb +0 -60
  111. data/vendor/bundle/ruby/1.9.1/gems/amalgalite-1.3.0/lib/amalgalite/sqlite3/version.rb +0 -55
  112. data/vendor/bundle/ruby/1.9.1/gems/amalgalite-1.3.0/lib/amalgalite/statement.rb +0 -418
  113. data/vendor/bundle/ruby/1.9.1/gems/amalgalite-1.3.0/lib/amalgalite/table.rb +0 -91
  114. data/vendor/bundle/ruby/1.9.1/gems/amalgalite-1.3.0/lib/amalgalite/taps.rb +0 -2
  115. data/vendor/bundle/ruby/1.9.1/gems/amalgalite-1.3.0/lib/amalgalite/taps/console.rb +0 -27
  116. data/vendor/bundle/ruby/1.9.1/gems/amalgalite-1.3.0/lib/amalgalite/taps/io.rb +0 -71
  117. data/vendor/bundle/ruby/1.9.1/gems/amalgalite-1.3.0/lib/amalgalite/trace_tap.rb +0 -35
  118. data/vendor/bundle/ruby/1.9.1/gems/amalgalite-1.3.0/lib/amalgalite/type_map.rb +0 -63
  119. data/vendor/bundle/ruby/1.9.1/gems/amalgalite-1.3.0/lib/amalgalite/type_maps/default_map.rb +0 -166
  120. data/vendor/bundle/ruby/1.9.1/gems/amalgalite-1.3.0/lib/amalgalite/type_maps/storage_map.rb +0 -38
  121. data/vendor/bundle/ruby/1.9.1/gems/amalgalite-1.3.0/lib/amalgalite/type_maps/text_map.rb +0 -21
  122. data/vendor/bundle/ruby/1.9.1/gems/amalgalite-1.3.0/lib/amalgalite/version.rb +0 -8
  123. data/vendor/bundle/ruby/1.9.1/gems/amalgalite-1.3.0/lib/amalgalite/view.rb +0 -26
  124. data/vendor/bundle/ruby/1.9.1/gems/amalgalite-1.3.0/spec/aggregate_spec.rb +0 -150
  125. data/vendor/bundle/ruby/1.9.1/gems/amalgalite-1.3.0/spec/amalgalite_spec.rb +0 -4
  126. data/vendor/bundle/ruby/1.9.1/gems/amalgalite-1.3.0/spec/blob_spec.rb +0 -78
  127. data/vendor/bundle/ruby/1.9.1/gems/amalgalite-1.3.0/spec/boolean_spec.rb +0 -24
  128. data/vendor/bundle/ruby/1.9.1/gems/amalgalite-1.3.0/spec/busy_handler.rb +0 -157
  129. data/vendor/bundle/ruby/1.9.1/gems/amalgalite-1.3.0/spec/data/iso-3166-country.txt +0 -242
  130. data/vendor/bundle/ruby/1.9.1/gems/amalgalite-1.3.0/spec/data/iso-3166-schema.sql +0 -22
  131. data/vendor/bundle/ruby/1.9.1/gems/amalgalite-1.3.0/spec/data/iso-3166-subcountry.txt +0 -3995
  132. data/vendor/bundle/ruby/1.9.1/gems/amalgalite-1.3.0/spec/data/make-iso-db.sh +0 -12
  133. data/vendor/bundle/ruby/1.9.1/gems/amalgalite-1.3.0/spec/database_spec.rb +0 -510
  134. data/vendor/bundle/ruby/1.9.1/gems/amalgalite-1.3.0/spec/default_map_spec.rb +0 -92
  135. data/vendor/bundle/ruby/1.9.1/gems/amalgalite-1.3.0/spec/function_spec.rb +0 -78
  136. data/vendor/bundle/ruby/1.9.1/gems/amalgalite-1.3.0/spec/integeration_spec.rb +0 -97
  137. data/vendor/bundle/ruby/1.9.1/gems/amalgalite-1.3.0/spec/iso_3166_database.rb +0 -58
  138. data/vendor/bundle/ruby/1.9.1/gems/amalgalite-1.3.0/spec/packer_spec.rb +0 -60
  139. data/vendor/bundle/ruby/1.9.1/gems/amalgalite-1.3.0/spec/paths_spec.rb +0 -28
  140. data/vendor/bundle/ruby/1.9.1/gems/amalgalite-1.3.0/spec/progress_handler_spec.rb +0 -91
  141. data/vendor/bundle/ruby/1.9.1/gems/amalgalite-1.3.0/spec/requires_spec.rb +0 -54
  142. data/vendor/bundle/ruby/1.9.1/gems/amalgalite-1.3.0/spec/rtree_spec.rb +0 -66
  143. data/vendor/bundle/ruby/1.9.1/gems/amalgalite-1.3.0/spec/schema_spec.rb +0 -131
  144. data/vendor/bundle/ruby/1.9.1/gems/amalgalite-1.3.0/spec/spec_helper.rb +0 -43
  145. data/vendor/bundle/ruby/1.9.1/gems/amalgalite-1.3.0/spec/sqlite3/constants_spec.rb +0 -108
  146. data/vendor/bundle/ruby/1.9.1/gems/amalgalite-1.3.0/spec/sqlite3/database_status_spec.rb +0 -36
  147. data/vendor/bundle/ruby/1.9.1/gems/amalgalite-1.3.0/spec/sqlite3/status_spec.rb +0 -22
  148. data/vendor/bundle/ruby/1.9.1/gems/amalgalite-1.3.0/spec/sqlite3/version_spec.rb +0 -22
  149. data/vendor/bundle/ruby/1.9.1/gems/amalgalite-1.3.0/spec/sqlite3_spec.rb +0 -53
  150. data/vendor/bundle/ruby/1.9.1/gems/amalgalite-1.3.0/spec/statement_spec.rb +0 -168
  151. data/vendor/bundle/ruby/1.9.1/gems/amalgalite-1.3.0/spec/storage_map_spec.rb +0 -38
  152. data/vendor/bundle/ruby/1.9.1/gems/amalgalite-1.3.0/spec/tap_spec.rb +0 -57
  153. data/vendor/bundle/ruby/1.9.1/gems/amalgalite-1.3.0/spec/text_map_spec.rb +0 -20
  154. data/vendor/bundle/ruby/1.9.1/gems/amalgalite-1.3.0/spec/type_map_spec.rb +0 -14
  155. data/vendor/bundle/ruby/1.9.1/gems/amalgalite-1.3.0/spec/version_spec.rb +0 -8
  156. data/vendor/bundle/ruby/1.9.1/gems/amalgalite-1.3.0/tasks/custom.rake +0 -99
  157. data/vendor/bundle/ruby/1.9.1/gems/amalgalite-1.3.0/tasks/default.rake +0 -277
  158. data/vendor/bundle/ruby/1.9.1/gems/amalgalite-1.3.0/tasks/extension.rake +0 -38
  159. data/vendor/bundle/ruby/1.9.1/gems/amalgalite-1.3.0/tasks/this.rb +0 -209
  160. data/vendor/bundle/ruby/1.9.1/gems/arrayfields-4.7.4/README +0 -378
  161. data/vendor/bundle/ruby/1.9.1/gems/arrayfields-4.7.4/arrayfields.gemspec +0 -26
  162. data/vendor/bundle/ruby/1.9.1/gems/arrayfields-4.7.4/gemspec.rb +0 -62
  163. data/vendor/bundle/ruby/1.9.1/gems/arrayfields-4.7.4/install.rb +0 -206
  164. data/vendor/bundle/ruby/1.9.1/gems/arrayfields-4.7.4/lib/arrayfields.rb +0 -443
  165. data/vendor/bundle/ruby/1.9.1/gems/arrayfields-4.7.4/readme.rb +0 -248
  166. data/vendor/bundle/ruby/1.9.1/gems/arrayfields-4.7.4/sample/a.rb +0 -40
  167. data/vendor/bundle/ruby/1.9.1/gems/arrayfields-4.7.4/sample/b.rb +0 -16
  168. data/vendor/bundle/ruby/1.9.1/gems/arrayfields-4.7.4/sample/c.rb +0 -9
  169. data/vendor/bundle/ruby/1.9.1/gems/arrayfields-4.7.4/sample/d.rb +0 -25
  170. data/vendor/bundle/ruby/1.9.1/gems/arrayfields-4.7.4/sample/e.rb +0 -15
  171. data/vendor/bundle/ruby/1.9.1/gems/arrayfields-4.7.4/test/arrayfields.rb +0 -324
  172. data/vendor/bundle/ruby/1.9.1/gems/arrayfields-4.7.4/test/memtest.rb +0 -41
  173. data/vendor/bundle/ruby/1.9.1/gems/chronic-0.10.2/HISTORY.md +0 -243
  174. data/vendor/bundle/ruby/1.9.1/gems/chronic-0.10.2/LICENSE +0 -21
  175. data/vendor/bundle/ruby/1.9.1/gems/chronic-0.10.2/README.md +0 -182
  176. data/vendor/bundle/ruby/1.9.1/gems/chronic-0.10.2/Rakefile +0 -66
  177. data/vendor/bundle/ruby/1.9.1/gems/chronic-0.10.2/chronic.gemspec +0 -23
  178. data/vendor/bundle/ruby/1.9.1/gems/chronic-0.10.2/lib/chronic.rb +0 -150
  179. data/vendor/bundle/ruby/1.9.1/gems/chronic-0.10.2/lib/chronic/date.rb +0 -82
  180. data/vendor/bundle/ruby/1.9.1/gems/chronic-0.10.2/lib/chronic/grabber.rb +0 -33
  181. data/vendor/bundle/ruby/1.9.1/gems/chronic-0.10.2/lib/chronic/handler.rb +0 -97
  182. data/vendor/bundle/ruby/1.9.1/gems/chronic-0.10.2/lib/chronic/handlers.rb +0 -647
  183. data/vendor/bundle/ruby/1.9.1/gems/chronic-0.10.2/lib/chronic/mini_date.rb +0 -38
  184. data/vendor/bundle/ruby/1.9.1/gems/chronic-0.10.2/lib/chronic/numerizer.rb +0 -130
  185. data/vendor/bundle/ruby/1.9.1/gems/chronic-0.10.2/lib/chronic/ordinal.rb +0 -49
  186. data/vendor/bundle/ruby/1.9.1/gems/chronic-0.10.2/lib/chronic/parser.rb +0 -268
  187. data/vendor/bundle/ruby/1.9.1/gems/chronic-0.10.2/lib/chronic/pointer.rb +0 -32
  188. data/vendor/bundle/ruby/1.9.1/gems/chronic-0.10.2/lib/chronic/repeater.rb +0 -145
  189. data/vendor/bundle/ruby/1.9.1/gems/chronic-0.10.2/lib/chronic/repeaters/repeater_day.rb +0 -54
  190. data/vendor/bundle/ruby/1.9.1/gems/chronic-0.10.2/lib/chronic/repeaters/repeater_day_name.rb +0 -53
  191. data/vendor/bundle/ruby/1.9.1/gems/chronic-0.10.2/lib/chronic/repeaters/repeater_day_portion.rb +0 -109
  192. data/vendor/bundle/ruby/1.9.1/gems/chronic-0.10.2/lib/chronic/repeaters/repeater_fortnight.rb +0 -72
  193. data/vendor/bundle/ruby/1.9.1/gems/chronic-0.10.2/lib/chronic/repeaters/repeater_hour.rb +0 -59
  194. data/vendor/bundle/ruby/1.9.1/gems/chronic-0.10.2/lib/chronic/repeaters/repeater_minute.rb +0 -59
  195. data/vendor/bundle/ruby/1.9.1/gems/chronic-0.10.2/lib/chronic/repeaters/repeater_month.rb +0 -80
  196. data/vendor/bundle/ruby/1.9.1/gems/chronic-0.10.2/lib/chronic/repeaters/repeater_month_name.rb +0 -95
  197. data/vendor/bundle/ruby/1.9.1/gems/chronic-0.10.2/lib/chronic/repeaters/repeater_season.rb +0 -111
  198. data/vendor/bundle/ruby/1.9.1/gems/chronic-0.10.2/lib/chronic/repeaters/repeater_season_name.rb +0 -43
  199. data/vendor/bundle/ruby/1.9.1/gems/chronic-0.10.2/lib/chronic/repeaters/repeater_second.rb +0 -43
  200. data/vendor/bundle/ruby/1.9.1/gems/chronic-0.10.2/lib/chronic/repeaters/repeater_time.rb +0 -138
  201. data/vendor/bundle/ruby/1.9.1/gems/chronic-0.10.2/lib/chronic/repeaters/repeater_week.rb +0 -75
  202. data/vendor/bundle/ruby/1.9.1/gems/chronic-0.10.2/lib/chronic/repeaters/repeater_weekday.rb +0 -86
  203. data/vendor/bundle/ruby/1.9.1/gems/chronic-0.10.2/lib/chronic/repeaters/repeater_weekend.rb +0 -67
  204. data/vendor/bundle/ruby/1.9.1/gems/chronic-0.10.2/lib/chronic/repeaters/repeater_year.rb +0 -78
  205. data/vendor/bundle/ruby/1.9.1/gems/chronic-0.10.2/lib/chronic/scalar.rb +0 -81
  206. data/vendor/bundle/ruby/1.9.1/gems/chronic-0.10.2/lib/chronic/season.rb +0 -26
  207. data/vendor/bundle/ruby/1.9.1/gems/chronic-0.10.2/lib/chronic/separator.rb +0 -207
  208. data/vendor/bundle/ruby/1.9.1/gems/chronic-0.10.2/lib/chronic/sign.rb +0 -49
  209. data/vendor/bundle/ruby/1.9.1/gems/chronic-0.10.2/lib/chronic/span.rb +0 -31
  210. data/vendor/bundle/ruby/1.9.1/gems/chronic-0.10.2/lib/chronic/tag.rb +0 -37
  211. data/vendor/bundle/ruby/1.9.1/gems/chronic-0.10.2/lib/chronic/time.rb +0 -40
  212. data/vendor/bundle/ruby/1.9.1/gems/chronic-0.10.2/lib/chronic/time_zone.rb +0 -32
  213. data/vendor/bundle/ruby/1.9.1/gems/chronic-0.10.2/lib/chronic/token.rb +0 -51
  214. data/vendor/bundle/ruby/1.9.1/gems/chronic-0.10.2/test/helper.rb +0 -12
  215. data/vendor/bundle/ruby/1.9.1/gems/chronic-0.10.2/test/test_chronic.rb +0 -183
  216. data/vendor/bundle/ruby/1.9.1/gems/chronic-0.10.2/test/test_daylight_savings.rb +0 -118
  217. data/vendor/bundle/ruby/1.9.1/gems/chronic-0.10.2/test/test_handler.rb +0 -128
  218. data/vendor/bundle/ruby/1.9.1/gems/chronic-0.10.2/test/test_mini_date.rb +0 -32
  219. data/vendor/bundle/ruby/1.9.1/gems/chronic-0.10.2/test/test_numerizer.rb +0 -86
  220. data/vendor/bundle/ruby/1.9.1/gems/chronic-0.10.2/test/test_parsing.rb +0 -1235
  221. data/vendor/bundle/ruby/1.9.1/gems/chronic-0.10.2/test/test_repeater_day_name.rb +0 -51
  222. data/vendor/bundle/ruby/1.9.1/gems/chronic-0.10.2/test/test_repeater_day_portion.rb +0 -254
  223. data/vendor/bundle/ruby/1.9.1/gems/chronic-0.10.2/test/test_repeater_fortnight.rb +0 -62
  224. data/vendor/bundle/ruby/1.9.1/gems/chronic-0.10.2/test/test_repeater_hour.rb +0 -68
  225. data/vendor/bundle/ruby/1.9.1/gems/chronic-0.10.2/test/test_repeater_minute.rb +0 -34
  226. data/vendor/bundle/ruby/1.9.1/gems/chronic-0.10.2/test/test_repeater_month.rb +0 -50
  227. data/vendor/bundle/ruby/1.9.1/gems/chronic-0.10.2/test/test_repeater_month_name.rb +0 -56
  228. data/vendor/bundle/ruby/1.9.1/gems/chronic-0.10.2/test/test_repeater_season.rb +0 -40
  229. data/vendor/bundle/ruby/1.9.1/gems/chronic-0.10.2/test/test_repeater_time.rb +0 -88
  230. data/vendor/bundle/ruby/1.9.1/gems/chronic-0.10.2/test/test_repeater_week.rb +0 -62
  231. data/vendor/bundle/ruby/1.9.1/gems/chronic-0.10.2/test/test_repeater_weekday.rb +0 -55
  232. data/vendor/bundle/ruby/1.9.1/gems/chronic-0.10.2/test/test_repeater_weekend.rb +0 -74
  233. data/vendor/bundle/ruby/1.9.1/gems/chronic-0.10.2/test/test_repeater_year.rb +0 -69
  234. data/vendor/bundle/ruby/1.9.1/gems/chronic-0.10.2/test/test_span.rb +0 -23
  235. data/vendor/bundle/ruby/1.9.1/gems/chronic-0.10.2/test/test_token.rb +0 -25
  236. data/vendor/bundle/ruby/1.9.1/gems/coderay-1.1.0/README_INDEX.rdoc +0 -123
  237. data/vendor/bundle/ruby/1.9.1/gems/coderay-1.1.0/Rakefile +0 -37
  238. data/vendor/bundle/ruby/1.9.1/gems/coderay-1.1.0/bin/coderay +0 -215
  239. data/vendor/bundle/ruby/1.9.1/gems/coderay-1.1.0/lib/coderay.rb +0 -284
  240. data/vendor/bundle/ruby/1.9.1/gems/coderay-1.1.0/lib/coderay/duo.rb +0 -81
  241. data/vendor/bundle/ruby/1.9.1/gems/coderay-1.1.0/lib/coderay/encoder.rb +0 -201
  242. data/vendor/bundle/ruby/1.9.1/gems/coderay-1.1.0/lib/coderay/encoders/_map.rb +0 -17
  243. data/vendor/bundle/ruby/1.9.1/gems/coderay-1.1.0/lib/coderay/encoders/comment_filter.rb +0 -25
  244. data/vendor/bundle/ruby/1.9.1/gems/coderay-1.1.0/lib/coderay/encoders/count.rb +0 -39
  245. data/vendor/bundle/ruby/1.9.1/gems/coderay-1.1.0/lib/coderay/encoders/debug.rb +0 -49
  246. data/vendor/bundle/ruby/1.9.1/gems/coderay-1.1.0/lib/coderay/encoders/debug_lint.rb +0 -63
  247. data/vendor/bundle/ruby/1.9.1/gems/coderay-1.1.0/lib/coderay/encoders/div.rb +0 -23
  248. data/vendor/bundle/ruby/1.9.1/gems/coderay-1.1.0/lib/coderay/encoders/filter.rb +0 -58
  249. data/vendor/bundle/ruby/1.9.1/gems/coderay-1.1.0/lib/coderay/encoders/html.rb +0 -332
  250. data/vendor/bundle/ruby/1.9.1/gems/coderay-1.1.0/lib/coderay/encoders/html/css.rb +0 -65
  251. data/vendor/bundle/ruby/1.9.1/gems/coderay-1.1.0/lib/coderay/encoders/html/numbering.rb +0 -108
  252. data/vendor/bundle/ruby/1.9.1/gems/coderay-1.1.0/lib/coderay/encoders/html/output.rb +0 -166
  253. data/vendor/bundle/ruby/1.9.1/gems/coderay-1.1.0/lib/coderay/encoders/json.rb +0 -83
  254. data/vendor/bundle/ruby/1.9.1/gems/coderay-1.1.0/lib/coderay/encoders/lines_of_code.rb +0 -45
  255. data/vendor/bundle/ruby/1.9.1/gems/coderay-1.1.0/lib/coderay/encoders/lint.rb +0 -59
  256. data/vendor/bundle/ruby/1.9.1/gems/coderay-1.1.0/lib/coderay/encoders/null.rb +0 -18
  257. data/vendor/bundle/ruby/1.9.1/gems/coderay-1.1.0/lib/coderay/encoders/page.rb +0 -24
  258. data/vendor/bundle/ruby/1.9.1/gems/coderay-1.1.0/lib/coderay/encoders/span.rb +0 -23
  259. data/vendor/bundle/ruby/1.9.1/gems/coderay-1.1.0/lib/coderay/encoders/statistic.rb +0 -95
  260. data/vendor/bundle/ruby/1.9.1/gems/coderay-1.1.0/lib/coderay/encoders/terminal.rb +0 -195
  261. data/vendor/bundle/ruby/1.9.1/gems/coderay-1.1.0/lib/coderay/encoders/text.rb +0 -46
  262. data/vendor/bundle/ruby/1.9.1/gems/coderay-1.1.0/lib/coderay/encoders/token_kind_filter.rb +0 -111
  263. data/vendor/bundle/ruby/1.9.1/gems/coderay-1.1.0/lib/coderay/encoders/xml.rb +0 -72
  264. data/vendor/bundle/ruby/1.9.1/gems/coderay-1.1.0/lib/coderay/encoders/yaml.rb +0 -50
  265. data/vendor/bundle/ruby/1.9.1/gems/coderay-1.1.0/lib/coderay/for_redcloth.rb +0 -95
  266. data/vendor/bundle/ruby/1.9.1/gems/coderay-1.1.0/lib/coderay/helpers/file_type.rb +0 -151
  267. data/vendor/bundle/ruby/1.9.1/gems/coderay-1.1.0/lib/coderay/helpers/plugin.rb +0 -274
  268. data/vendor/bundle/ruby/1.9.1/gems/coderay-1.1.0/lib/coderay/helpers/word_list.rb +0 -72
  269. data/vendor/bundle/ruby/1.9.1/gems/coderay-1.1.0/lib/coderay/scanner.rb +0 -355
  270. data/vendor/bundle/ruby/1.9.1/gems/coderay-1.1.0/lib/coderay/scanners/_map.rb +0 -24
  271. data/vendor/bundle/ruby/1.9.1/gems/coderay-1.1.0/lib/coderay/scanners/c.rb +0 -189
  272. data/vendor/bundle/ruby/1.9.1/gems/coderay-1.1.0/lib/coderay/scanners/clojure.rb +0 -217
  273. data/vendor/bundle/ruby/1.9.1/gems/coderay-1.1.0/lib/coderay/scanners/cpp.rb +0 -215
  274. data/vendor/bundle/ruby/1.9.1/gems/coderay-1.1.0/lib/coderay/scanners/css.rb +0 -196
  275. data/vendor/bundle/ruby/1.9.1/gems/coderay-1.1.0/lib/coderay/scanners/debug.rb +0 -75
  276. data/vendor/bundle/ruby/1.9.1/gems/coderay-1.1.0/lib/coderay/scanners/delphi.rb +0 -144
  277. data/vendor/bundle/ruby/1.9.1/gems/coderay-1.1.0/lib/coderay/scanners/diff.rb +0 -221
  278. data/vendor/bundle/ruby/1.9.1/gems/coderay-1.1.0/lib/coderay/scanners/erb.rb +0 -81
  279. data/vendor/bundle/ruby/1.9.1/gems/coderay-1.1.0/lib/coderay/scanners/go.rb +0 -208
  280. data/vendor/bundle/ruby/1.9.1/gems/coderay-1.1.0/lib/coderay/scanners/groovy.rb +0 -268
  281. data/vendor/bundle/ruby/1.9.1/gems/coderay-1.1.0/lib/coderay/scanners/haml.rb +0 -168
  282. data/vendor/bundle/ruby/1.9.1/gems/coderay-1.1.0/lib/coderay/scanners/html.rb +0 -275
  283. data/vendor/bundle/ruby/1.9.1/gems/coderay-1.1.0/lib/coderay/scanners/java.rb +0 -174
  284. data/vendor/bundle/ruby/1.9.1/gems/coderay-1.1.0/lib/coderay/scanners/java/builtin_types.rb +0 -421
  285. data/vendor/bundle/ruby/1.9.1/gems/coderay-1.1.0/lib/coderay/scanners/java_script.rb +0 -237
  286. data/vendor/bundle/ruby/1.9.1/gems/coderay-1.1.0/lib/coderay/scanners/json.rb +0 -98
  287. data/vendor/bundle/ruby/1.9.1/gems/coderay-1.1.0/lib/coderay/scanners/lua.rb +0 -280
  288. data/vendor/bundle/ruby/1.9.1/gems/coderay-1.1.0/lib/coderay/scanners/php.rb +0 -527
  289. data/vendor/bundle/ruby/1.9.1/gems/coderay-1.1.0/lib/coderay/scanners/python.rb +0 -287
  290. data/vendor/bundle/ruby/1.9.1/gems/coderay-1.1.0/lib/coderay/scanners/raydebug.rb +0 -75
  291. data/vendor/bundle/ruby/1.9.1/gems/coderay-1.1.0/lib/coderay/scanners/ruby.rb +0 -470
  292. data/vendor/bundle/ruby/1.9.1/gems/coderay-1.1.0/lib/coderay/scanners/ruby/patterns.rb +0 -178
  293. data/vendor/bundle/ruby/1.9.1/gems/coderay-1.1.0/lib/coderay/scanners/ruby/string_state.rb +0 -71
  294. data/vendor/bundle/ruby/1.9.1/gems/coderay-1.1.0/lib/coderay/scanners/sass.rb +0 -232
  295. data/vendor/bundle/ruby/1.9.1/gems/coderay-1.1.0/lib/coderay/scanners/sql.rb +0 -177
  296. data/vendor/bundle/ruby/1.9.1/gems/coderay-1.1.0/lib/coderay/scanners/taskpaper.rb +0 -36
  297. data/vendor/bundle/ruby/1.9.1/gems/coderay-1.1.0/lib/coderay/scanners/text.rb +0 -26
  298. data/vendor/bundle/ruby/1.9.1/gems/coderay-1.1.0/lib/coderay/scanners/xml.rb +0 -17
  299. data/vendor/bundle/ruby/1.9.1/gems/coderay-1.1.0/lib/coderay/scanners/yaml.rb +0 -140
  300. data/vendor/bundle/ruby/1.9.1/gems/coderay-1.1.0/lib/coderay/style.rb +0 -23
  301. data/vendor/bundle/ruby/1.9.1/gems/coderay-1.1.0/lib/coderay/styles/_map.rb +0 -7
  302. data/vendor/bundle/ruby/1.9.1/gems/coderay-1.1.0/lib/coderay/styles/alpha.rb +0 -152
  303. data/vendor/bundle/ruby/1.9.1/gems/coderay-1.1.0/lib/coderay/token_kinds.rb +0 -85
  304. data/vendor/bundle/ruby/1.9.1/gems/coderay-1.1.0/lib/coderay/tokens.rb +0 -161
  305. data/vendor/bundle/ruby/1.9.1/gems/coderay-1.1.0/lib/coderay/tokens_proxy.rb +0 -55
  306. data/vendor/bundle/ruby/1.9.1/gems/coderay-1.1.0/lib/coderay/version.rb +0 -3
  307. data/vendor/bundle/ruby/1.9.1/gems/coderay-1.1.0/test/functional/basic.rb +0 -318
  308. data/vendor/bundle/ruby/1.9.1/gems/coderay-1.1.0/test/functional/examples.rb +0 -129
  309. data/vendor/bundle/ruby/1.9.1/gems/coderay-1.1.0/test/functional/for_redcloth.rb +0 -78
  310. data/vendor/bundle/ruby/1.9.1/gems/coderay-1.1.0/test/functional/suite.rb +0 -15
  311. data/vendor/bundle/ruby/1.9.1/gems/coerce-0.0.6/README +0 -28
  312. data/vendor/bundle/ruby/1.9.1/gems/coerce-0.0.6/Rakefile +0 -392
  313. data/vendor/bundle/ruby/1.9.1/gems/coerce-0.0.6/coerce.gemspec +0 -31
  314. data/vendor/bundle/ruby/1.9.1/gems/coerce-0.0.6/lib/coerce.rb +0 -210
  315. data/vendor/bundle/ruby/1.9.1/gems/daemons-1.1.9/LICENSE +0 -22
  316. data/vendor/bundle/ruby/1.9.1/gems/daemons-1.1.9/README +0 -214
  317. data/vendor/bundle/ruby/1.9.1/gems/daemons-1.1.9/Rakefile +0 -90
  318. data/vendor/bundle/ruby/1.9.1/gems/daemons-1.1.9/Releases +0 -195
  319. data/vendor/bundle/ruby/1.9.1/gems/daemons-1.1.9/TODO +0 -2
  320. data/vendor/bundle/ruby/1.9.1/gems/daemons-1.1.9/examples/call/call.rb +0 -57
  321. data/vendor/bundle/ruby/1.9.1/gems/daemons-1.1.9/examples/call/call_monitor.rb +0 -55
  322. data/vendor/bundle/ruby/1.9.1/gems/daemons-1.1.9/examples/daemonize/daemonize.rb +0 -27
  323. data/vendor/bundle/ruby/1.9.1/gems/daemons-1.1.9/examples/run/ctrl_crash.rb +0 -17
  324. data/vendor/bundle/ruby/1.9.1/gems/daemons-1.1.9/examples/run/ctrl_exec.rb +0 -16
  325. data/vendor/bundle/ruby/1.9.1/gems/daemons-1.1.9/examples/run/ctrl_exit.rb +0 -15
  326. data/vendor/bundle/ruby/1.9.1/gems/daemons-1.1.9/examples/run/ctrl_hanging.rb +0 -19
  327. data/vendor/bundle/ruby/1.9.1/gems/daemons-1.1.9/examples/run/ctrl_keep_pid_files.rb +0 -17
  328. data/vendor/bundle/ruby/1.9.1/gems/daemons-1.1.9/examples/run/ctrl_monitor.rb +0 -16
  329. data/vendor/bundle/ruby/1.9.1/gems/daemons-1.1.9/examples/run/ctrl_multiple.rb +0 -16
  330. data/vendor/bundle/ruby/1.9.1/gems/daemons-1.1.9/examples/run/ctrl_normal.rb +0 -11
  331. data/vendor/bundle/ruby/1.9.1/gems/daemons-1.1.9/examples/run/ctrl_ontop.rb +0 -16
  332. data/vendor/bundle/ruby/1.9.1/gems/daemons-1.1.9/examples/run/ctrl_optionparser.rb +0 -43
  333. data/vendor/bundle/ruby/1.9.1/gems/daemons-1.1.9/examples/run/ctrl_proc.rb +0 -25
  334. data/vendor/bundle/ruby/1.9.1/gems/daemons-1.1.9/examples/run/ctrl_proc_multiple.rb +0 -22
  335. data/vendor/bundle/ruby/1.9.1/gems/daemons-1.1.9/examples/run/ctrl_proc_rand.rb +0 -23
  336. data/vendor/bundle/ruby/1.9.1/gems/daemons-1.1.9/examples/run/ctrl_proc_simple.rb +0 -17
  337. data/vendor/bundle/ruby/1.9.1/gems/daemons-1.1.9/examples/run/ctrl_slowstop.rb +0 -16
  338. data/vendor/bundle/ruby/1.9.1/gems/daemons-1.1.9/examples/run/myserver.rb +0 -12
  339. data/vendor/bundle/ruby/1.9.1/gems/daemons-1.1.9/examples/run/myserver_crashing.rb +0 -14
  340. data/vendor/bundle/ruby/1.9.1/gems/daemons-1.1.9/examples/run/myserver_exiting.rb +0 -8
  341. data/vendor/bundle/ruby/1.9.1/gems/daemons-1.1.9/examples/run/myserver_hanging.rb +0 -21
  342. data/vendor/bundle/ruby/1.9.1/gems/daemons-1.1.9/examples/run/myserver_slowstop.rb +0 -21
  343. data/vendor/bundle/ruby/1.9.1/gems/daemons-1.1.9/lib/daemons.rb +0 -315
  344. data/vendor/bundle/ruby/1.9.1/gems/daemons-1.1.9/lib/daemons/application.rb +0 -477
  345. data/vendor/bundle/ruby/1.9.1/gems/daemons-1.1.9/lib/daemons/application_group.rb +0 -194
  346. data/vendor/bundle/ruby/1.9.1/gems/daemons-1.1.9/lib/daemons/change_privilege.rb +0 -19
  347. data/vendor/bundle/ruby/1.9.1/gems/daemons-1.1.9/lib/daemons/cmdline.rb +0 -121
  348. data/vendor/bundle/ruby/1.9.1/gems/daemons-1.1.9/lib/daemons/controller.rb +0 -140
  349. data/vendor/bundle/ruby/1.9.1/gems/daemons-1.1.9/lib/daemons/daemonize.rb +0 -169
  350. data/vendor/bundle/ruby/1.9.1/gems/daemons-1.1.9/lib/daemons/etc_extension.rb +0 -12
  351. data/vendor/bundle/ruby/1.9.1/gems/daemons-1.1.9/lib/daemons/exceptions.rb +0 -28
  352. data/vendor/bundle/ruby/1.9.1/gems/daemons-1.1.9/lib/daemons/monitor.rb +0 -138
  353. data/vendor/bundle/ruby/1.9.1/gems/daemons-1.1.9/lib/daemons/pid.rb +0 -108
  354. data/vendor/bundle/ruby/1.9.1/gems/daemons-1.1.9/lib/daemons/pidfile.rb +0 -116
  355. data/vendor/bundle/ruby/1.9.1/gems/daemons-1.1.9/lib/daemons/pidmem.rb +0 -19
  356. data/vendor/bundle/ruby/1.9.1/gems/daemons-1.1.9/setup.rb +0 -1360
  357. data/vendor/bundle/ruby/1.9.1/gems/fastercsv-1.5.5/AUTHORS +0 -1
  358. data/vendor/bundle/ruby/1.9.1/gems/fastercsv-1.5.5/CHANGELOG +0 -182
  359. data/vendor/bundle/ruby/1.9.1/gems/fastercsv-1.5.5/COPYING +0 -340
  360. data/vendor/bundle/ruby/1.9.1/gems/fastercsv-1.5.5/INSTALL +0 -33
  361. data/vendor/bundle/ruby/1.9.1/gems/fastercsv-1.5.5/LICENSE +0 -9
  362. data/vendor/bundle/ruby/1.9.1/gems/fastercsv-1.5.5/README +0 -71
  363. data/vendor/bundle/ruby/1.9.1/gems/fastercsv-1.5.5/Rakefile +0 -94
  364. data/vendor/bundle/ruby/1.9.1/gems/fastercsv-1.5.5/TODO +0 -6
  365. data/vendor/bundle/ruby/1.9.1/gems/fastercsv-1.5.5/examples/csv_converters.rb +0 -28
  366. data/vendor/bundle/ruby/1.9.1/gems/fastercsv-1.5.5/examples/csv_filter.rb +0 -23
  367. data/vendor/bundle/ruby/1.9.1/gems/fastercsv-1.5.5/examples/csv_reading.rb +0 -57
  368. data/vendor/bundle/ruby/1.9.1/gems/fastercsv-1.5.5/examples/csv_table.rb +0 -56
  369. data/vendor/bundle/ruby/1.9.1/gems/fastercsv-1.5.5/examples/csv_writing.rb +0 -67
  370. data/vendor/bundle/ruby/1.9.1/gems/fastercsv-1.5.5/examples/purchase.csv +0 -3
  371. data/vendor/bundle/ruby/1.9.1/gems/fastercsv-1.5.5/examples/shortcut_interface.rb +0 -36
  372. data/vendor/bundle/ruby/1.9.1/gems/fastercsv-1.5.5/lib/faster_csv.rb +0 -2025
  373. data/vendor/bundle/ruby/1.9.1/gems/fastercsv-1.5.5/lib/fastercsv.rb +0 -10
  374. data/vendor/bundle/ruby/1.9.1/gems/fastercsv-1.5.5/test/line_endings.gz +0 -0
  375. data/vendor/bundle/ruby/1.9.1/gems/fastercsv-1.5.5/test/tc_csv_parsing.rb +0 -191
  376. data/vendor/bundle/ruby/1.9.1/gems/fastercsv-1.5.5/test/tc_csv_writing.rb +0 -96
  377. data/vendor/bundle/ruby/1.9.1/gems/fastercsv-1.5.5/test/tc_data_converters.rb +0 -260
  378. data/vendor/bundle/ruby/1.9.1/gems/fastercsv-1.5.5/test/tc_encodings.rb +0 -23
  379. data/vendor/bundle/ruby/1.9.1/gems/fastercsv-1.5.5/test/tc_features.rb +0 -212
  380. data/vendor/bundle/ruby/1.9.1/gems/fastercsv-1.5.5/test/tc_headers.rb +0 -277
  381. data/vendor/bundle/ruby/1.9.1/gems/fastercsv-1.5.5/test/tc_interface.rb +0 -376
  382. data/vendor/bundle/ruby/1.9.1/gems/fastercsv-1.5.5/test/tc_row.rb +0 -305
  383. data/vendor/bundle/ruby/1.9.1/gems/fastercsv-1.5.5/test/tc_serialization.rb +0 -154
  384. data/vendor/bundle/ruby/1.9.1/gems/fastercsv-1.5.5/test/tc_speed.rb +0 -65
  385. data/vendor/bundle/ruby/1.9.1/gems/fastercsv-1.5.5/test/tc_table.rb +0 -408
  386. data/vendor/bundle/ruby/1.9.1/gems/fastercsv-1.5.5/test/test_data.csv +0 -1000
  387. data/vendor/bundle/ruby/1.9.1/gems/fastercsv-1.5.5/test/ts_all.rb +0 -20
  388. data/vendor/bundle/ruby/1.9.1/gems/fattr-2.2.2/LICENSE +0 -1
  389. data/vendor/bundle/ruby/1.9.1/gems/fattr-2.2.2/README +0 -347
  390. data/vendor/bundle/ruby/1.9.1/gems/fattr-2.2.2/README.erb +0 -82
  391. data/vendor/bundle/ruby/1.9.1/gems/fattr-2.2.2/Rakefile +0 -376
  392. data/vendor/bundle/ruby/1.9.1/gems/fattr-2.2.2/lib/fattr.rb +0 -206
  393. data/vendor/bundle/ruby/1.9.1/gems/fattr-2.2.2/samples/a.rb +0 -21
  394. data/vendor/bundle/ruby/1.9.1/gems/fattr-2.2.2/samples/b.rb +0 -22
  395. data/vendor/bundle/ruby/1.9.1/gems/fattr-2.2.2/samples/c.rb +0 -12
  396. data/vendor/bundle/ruby/1.9.1/gems/fattr-2.2.2/samples/d.rb +0 -34
  397. data/vendor/bundle/ruby/1.9.1/gems/fattr-2.2.2/samples/e.rb +0 -17
  398. data/vendor/bundle/ruby/1.9.1/gems/fattr-2.2.2/samples/f.rb +0 -21
  399. data/vendor/bundle/ruby/1.9.1/gems/fattr-2.2.2/samples/g.rb +0 -15
  400. data/vendor/bundle/ruby/1.9.1/gems/fattr-2.2.2/samples/h.rb +0 -29
  401. data/vendor/bundle/ruby/1.9.1/gems/fattr-2.2.2/test/fattr_test.rb +0 -173
  402. data/vendor/bundle/ruby/1.9.1/gems/flowdock-0.5.0/Gemfile +0 -16
  403. data/vendor/bundle/ruby/1.9.1/gems/flowdock-0.5.0/LICENSE +0 -20
  404. data/vendor/bundle/ruby/1.9.1/gems/flowdock-0.5.0/README.md +0 -145
  405. data/vendor/bundle/ruby/1.9.1/gems/flowdock-0.5.0/Rakefile +0 -43
  406. data/vendor/bundle/ruby/1.9.1/gems/flowdock-0.5.0/VERSION +0 -1
  407. data/vendor/bundle/ruby/1.9.1/gems/flowdock-0.5.0/flowdock.gemspec +0 -73
  408. data/vendor/bundle/ruby/1.9.1/gems/flowdock-0.5.0/lib/flowdock.rb +0 -181
  409. data/vendor/bundle/ruby/1.9.1/gems/flowdock-0.5.0/lib/flowdock/capistrano.rb +0 -1
  410. data/vendor/bundle/ruby/1.9.1/gems/flowdock-0.5.0/spec/flowdock_spec.rb +0 -435
  411. data/vendor/bundle/ruby/1.9.1/gems/flowdock-0.5.0/spec/spec_helper.rb +0 -14
  412. data/vendor/bundle/ruby/1.9.1/gems/highline-1.6.21/AUTHORS +0 -3
  413. data/vendor/bundle/ruby/1.9.1/gems/highline-1.6.21/CHANGELOG +0 -357
  414. data/vendor/bundle/ruby/1.9.1/gems/highline-1.6.21/COPYING +0 -340
  415. data/vendor/bundle/ruby/1.9.1/gems/highline-1.6.21/INSTALL +0 -55
  416. data/vendor/bundle/ruby/1.9.1/gems/highline-1.6.21/LICENSE +0 -7
  417. data/vendor/bundle/ruby/1.9.1/gems/highline-1.6.21/README.rdoc +0 -67
  418. data/vendor/bundle/ruby/1.9.1/gems/highline-1.6.21/Rakefile +0 -50
  419. data/vendor/bundle/ruby/1.9.1/gems/highline-1.6.21/TODO +0 -6
  420. data/vendor/bundle/ruby/1.9.1/gems/highline-1.6.21/examples/ansi_colors.rb +0 -38
  421. data/vendor/bundle/ruby/1.9.1/gems/highline-1.6.21/examples/asking_for_arrays.rb +0 -18
  422. data/vendor/bundle/ruby/1.9.1/gems/highline-1.6.21/examples/basic_usage.rb +0 -75
  423. data/vendor/bundle/ruby/1.9.1/gems/highline-1.6.21/examples/color_scheme.rb +0 -32
  424. data/vendor/bundle/ruby/1.9.1/gems/highline-1.6.21/examples/get_character.rb +0 -12
  425. data/vendor/bundle/ruby/1.9.1/gems/highline-1.6.21/examples/limit.rb +0 -12
  426. data/vendor/bundle/ruby/1.9.1/gems/highline-1.6.21/examples/menus.rb +0 -65
  427. data/vendor/bundle/ruby/1.9.1/gems/highline-1.6.21/examples/overwrite.rb +0 -19
  428. data/vendor/bundle/ruby/1.9.1/gems/highline-1.6.21/examples/page_and_wrap.rb +0 -322
  429. data/vendor/bundle/ruby/1.9.1/gems/highline-1.6.21/examples/password.rb +0 -7
  430. data/vendor/bundle/ruby/1.9.1/gems/highline-1.6.21/examples/repeat_entry.rb +0 -21
  431. data/vendor/bundle/ruby/1.9.1/gems/highline-1.6.21/examples/trapping_eof.rb +0 -22
  432. data/vendor/bundle/ruby/1.9.1/gems/highline-1.6.21/examples/using_readline.rb +0 -17
  433. data/vendor/bundle/ruby/1.9.1/gems/highline-1.6.21/highline.gemspec +0 -37
  434. data/vendor/bundle/ruby/1.9.1/gems/highline-1.6.21/lib/highline.rb +0 -1034
  435. data/vendor/bundle/ruby/1.9.1/gems/highline-1.6.21/lib/highline/color_scheme.rb +0 -134
  436. data/vendor/bundle/ruby/1.9.1/gems/highline-1.6.21/lib/highline/compatibility.rb +0 -16
  437. data/vendor/bundle/ruby/1.9.1/gems/highline-1.6.21/lib/highline/import.rb +0 -41
  438. data/vendor/bundle/ruby/1.9.1/gems/highline-1.6.21/lib/highline/menu.rb +0 -381
  439. data/vendor/bundle/ruby/1.9.1/gems/highline-1.6.21/lib/highline/question.rb +0 -481
  440. data/vendor/bundle/ruby/1.9.1/gems/highline-1.6.21/lib/highline/simulate.rb +0 -48
  441. data/vendor/bundle/ruby/1.9.1/gems/highline-1.6.21/lib/highline/string_extensions.rb +0 -111
  442. data/vendor/bundle/ruby/1.9.1/gems/highline-1.6.21/lib/highline/style.rb +0 -181
  443. data/vendor/bundle/ruby/1.9.1/gems/highline-1.6.21/lib/highline/system_extensions.rb +0 -242
  444. data/vendor/bundle/ruby/1.9.1/gems/highline-1.6.21/setup.rb +0 -1360
  445. data/vendor/bundle/ruby/1.9.1/gems/highline-1.6.21/site/highline.css +0 -65
  446. data/vendor/bundle/ruby/1.9.1/gems/highline-1.6.21/site/images/logo.png +0 -0
  447. data/vendor/bundle/ruby/1.9.1/gems/highline-1.6.21/site/index.html +0 -58
  448. data/vendor/bundle/ruby/1.9.1/gems/highline-1.6.21/test/string_methods.rb +0 -32
  449. data/vendor/bundle/ruby/1.9.1/gems/highline-1.6.21/test/tc_color_scheme.rb +0 -96
  450. data/vendor/bundle/ruby/1.9.1/gems/highline-1.6.21/test/tc_highline.rb +0 -1134
  451. data/vendor/bundle/ruby/1.9.1/gems/highline-1.6.21/test/tc_import.rb +0 -52
  452. data/vendor/bundle/ruby/1.9.1/gems/highline-1.6.21/test/tc_menu.rb +0 -439
  453. data/vendor/bundle/ruby/1.9.1/gems/highline-1.6.21/test/tc_string_extension.rb +0 -20
  454. data/vendor/bundle/ruby/1.9.1/gems/highline-1.6.21/test/tc_string_highline.rb +0 -38
  455. data/vendor/bundle/ruby/1.9.1/gems/highline-1.6.21/test/tc_style.rb +0 -567
  456. data/vendor/bundle/ruby/1.9.1/gems/highline-1.6.21/test/ts_all.rb +0 -16
  457. data/vendor/bundle/ruby/1.9.1/gems/httparty-0.13.1/Gemfile +0 -14
  458. data/vendor/bundle/ruby/1.9.1/gems/httparty-0.13.1/Guardfile +0 -16
  459. data/vendor/bundle/ruby/1.9.1/gems/httparty-0.13.1/History +0 -303
  460. data/vendor/bundle/ruby/1.9.1/gems/httparty-0.13.1/MIT-LICENSE +0 -20
  461. data/vendor/bundle/ruby/1.9.1/gems/httparty-0.13.1/README.md +0 -74
  462. data/vendor/bundle/ruby/1.9.1/gems/httparty-0.13.1/Rakefile +0 -12
  463. data/vendor/bundle/ruby/1.9.1/gems/httparty-0.13.1/bin/httparty +0 -117
  464. data/vendor/bundle/ruby/1.9.1/gems/httparty-0.13.1/cucumber.yml +0 -1
  465. data/vendor/bundle/ruby/1.9.1/gems/httparty-0.13.1/examples/aaws.rb +0 -32
  466. data/vendor/bundle/ruby/1.9.1/gems/httparty-0.13.1/examples/basic.rb +0 -28
  467. data/vendor/bundle/ruby/1.9.1/gems/httparty-0.13.1/examples/crack.rb +0 -19
  468. data/vendor/bundle/ruby/1.9.1/gems/httparty-0.13.1/examples/custom_parsers.rb +0 -67
  469. data/vendor/bundle/ruby/1.9.1/gems/httparty-0.13.1/examples/delicious.rb +0 -37
  470. data/vendor/bundle/ruby/1.9.1/gems/httparty-0.13.1/examples/google.rb +0 -16
  471. data/vendor/bundle/ruby/1.9.1/gems/httparty-0.13.1/examples/headers_and_user_agents.rb +0 -6
  472. data/vendor/bundle/ruby/1.9.1/gems/httparty-0.13.1/examples/nokogiri_html_parser.rb +0 -22
  473. data/vendor/bundle/ruby/1.9.1/gems/httparty-0.13.1/examples/rubyurl.rb +0 -14
  474. data/vendor/bundle/ruby/1.9.1/gems/httparty-0.13.1/examples/stackexchange.rb +0 -24
  475. data/vendor/bundle/ruby/1.9.1/gems/httparty-0.13.1/examples/tripit_sign_in.rb +0 -33
  476. data/vendor/bundle/ruby/1.9.1/gems/httparty-0.13.1/examples/twitter.rb +0 -31
  477. data/vendor/bundle/ruby/1.9.1/gems/httparty-0.13.1/examples/whoismyrep.rb +0 -10
  478. data/vendor/bundle/ruby/1.9.1/gems/httparty-0.13.1/features/basic_authentication.feature +0 -20
  479. data/vendor/bundle/ruby/1.9.1/gems/httparty-0.13.1/features/command_line.feature +0 -7
  480. data/vendor/bundle/ruby/1.9.1/gems/httparty-0.13.1/features/deals_with_http_error_codes.feature +0 -26
  481. data/vendor/bundle/ruby/1.9.1/gems/httparty-0.13.1/features/digest_authentication.feature +0 -20
  482. data/vendor/bundle/ruby/1.9.1/gems/httparty-0.13.1/features/handles_compressed_responses.feature +0 -27
  483. data/vendor/bundle/ruby/1.9.1/gems/httparty-0.13.1/features/handles_multiple_formats.feature +0 -57
  484. data/vendor/bundle/ruby/1.9.1/gems/httparty-0.13.1/features/steps/env.rb +0 -22
  485. data/vendor/bundle/ruby/1.9.1/gems/httparty-0.13.1/features/steps/httparty_response_steps.rb +0 -52
  486. data/vendor/bundle/ruby/1.9.1/gems/httparty-0.13.1/features/steps/httparty_steps.rb +0 -43
  487. data/vendor/bundle/ruby/1.9.1/gems/httparty-0.13.1/features/steps/mongrel_helper.rb +0 -94
  488. data/vendor/bundle/ruby/1.9.1/gems/httparty-0.13.1/features/steps/remote_service_steps.rb +0 -74
  489. data/vendor/bundle/ruby/1.9.1/gems/httparty-0.13.1/features/supports_read_timeout_option.feature +0 -13
  490. data/vendor/bundle/ruby/1.9.1/gems/httparty-0.13.1/features/supports_redirection.feature +0 -22
  491. data/vendor/bundle/ruby/1.9.1/gems/httparty-0.13.1/features/supports_timeout_option.feature +0 -13
  492. data/vendor/bundle/ruby/1.9.1/gems/httparty-0.13.1/httparty.gemspec +0 -26
  493. data/vendor/bundle/ruby/1.9.1/gems/httparty-0.13.1/lib/httparty.rb +0 -600
  494. data/vendor/bundle/ruby/1.9.1/gems/httparty-0.13.1/lib/httparty/connection_adapter.rb +0 -187
  495. data/vendor/bundle/ruby/1.9.1/gems/httparty-0.13.1/lib/httparty/cookie_hash.rb +0 -22
  496. data/vendor/bundle/ruby/1.9.1/gems/httparty-0.13.1/lib/httparty/core_extensions.rb +0 -32
  497. data/vendor/bundle/ruby/1.9.1/gems/httparty-0.13.1/lib/httparty/exceptions.rb +0 -29
  498. data/vendor/bundle/ruby/1.9.1/gems/httparty-0.13.1/lib/httparty/hash_conversions.rb +0 -51
  499. data/vendor/bundle/ruby/1.9.1/gems/httparty-0.13.1/lib/httparty/logger/apache_logger.rb +0 -22
  500. data/vendor/bundle/ruby/1.9.1/gems/httparty-0.13.1/lib/httparty/logger/curl_logger.rb +0 -48
  501. data/vendor/bundle/ruby/1.9.1/gems/httparty-0.13.1/lib/httparty/logger/logger.rb +0 -18
  502. data/vendor/bundle/ruby/1.9.1/gems/httparty-0.13.1/lib/httparty/module_inheritable_attributes.rb +0 -56
  503. data/vendor/bundle/ruby/1.9.1/gems/httparty-0.13.1/lib/httparty/net_digest_auth.rb +0 -84
  504. data/vendor/bundle/ruby/1.9.1/gems/httparty-0.13.1/lib/httparty/parser.rb +0 -141
  505. data/vendor/bundle/ruby/1.9.1/gems/httparty-0.13.1/lib/httparty/request.rb +0 -331
  506. data/vendor/bundle/ruby/1.9.1/gems/httparty-0.13.1/lib/httparty/response.rb +0 -72
  507. data/vendor/bundle/ruby/1.9.1/gems/httparty-0.13.1/lib/httparty/response/headers.rb +0 -31
  508. data/vendor/bundle/ruby/1.9.1/gems/httparty-0.13.1/lib/httparty/version.rb +0 -3
  509. data/vendor/bundle/ruby/1.9.1/gems/httparty-0.13.1/script/release +0 -42
  510. data/vendor/bundle/ruby/1.9.1/gems/httparty-0.13.1/spec/fixtures/delicious.xml +0 -23
  511. data/vendor/bundle/ruby/1.9.1/gems/httparty-0.13.1/spec/fixtures/empty.xml +0 -0
  512. data/vendor/bundle/ruby/1.9.1/gems/httparty-0.13.1/spec/fixtures/google.html +0 -3
  513. data/vendor/bundle/ruby/1.9.1/gems/httparty-0.13.1/spec/fixtures/ssl/generate.sh +0 -29
  514. data/vendor/bundle/ruby/1.9.1/gems/httparty-0.13.1/spec/fixtures/ssl/generated/1fe462c2.0 +0 -16
  515. data/vendor/bundle/ruby/1.9.1/gems/httparty-0.13.1/spec/fixtures/ssl/generated/bogushost.crt +0 -13
  516. data/vendor/bundle/ruby/1.9.1/gems/httparty-0.13.1/spec/fixtures/ssl/generated/ca.crt +0 -16
  517. data/vendor/bundle/ruby/1.9.1/gems/httparty-0.13.1/spec/fixtures/ssl/generated/ca.key +0 -15
  518. data/vendor/bundle/ruby/1.9.1/gems/httparty-0.13.1/spec/fixtures/ssl/generated/selfsigned.crt +0 -14
  519. data/vendor/bundle/ruby/1.9.1/gems/httparty-0.13.1/spec/fixtures/ssl/generated/server.crt +0 -13
  520. data/vendor/bundle/ruby/1.9.1/gems/httparty-0.13.1/spec/fixtures/ssl/generated/server.key +0 -15
  521. data/vendor/bundle/ruby/1.9.1/gems/httparty-0.13.1/spec/fixtures/ssl/openssl-exts.cnf +0 -9
  522. data/vendor/bundle/ruby/1.9.1/gems/httparty-0.13.1/spec/fixtures/twitter.csv +0 -2
  523. data/vendor/bundle/ruby/1.9.1/gems/httparty-0.13.1/spec/fixtures/twitter.json +0 -1
  524. data/vendor/bundle/ruby/1.9.1/gems/httparty-0.13.1/spec/fixtures/twitter.xml +0 -403
  525. data/vendor/bundle/ruby/1.9.1/gems/httparty-0.13.1/spec/fixtures/undefined_method_add_node_for_nil.xml +0 -2
  526. data/vendor/bundle/ruby/1.9.1/gems/httparty-0.13.1/spec/httparty/connection_adapter_spec.rb +0 -354
  527. data/vendor/bundle/ruby/1.9.1/gems/httparty-0.13.1/spec/httparty/cookie_hash_spec.rb +0 -83
  528. data/vendor/bundle/ruby/1.9.1/gems/httparty-0.13.1/spec/httparty/exception_spec.rb +0 -23
  529. data/vendor/bundle/ruby/1.9.1/gems/httparty-0.13.1/spec/httparty/logger/apache_logger_spec.rb +0 -26
  530. data/vendor/bundle/ruby/1.9.1/gems/httparty-0.13.1/spec/httparty/logger/curl_logger_spec.rb +0 -18
  531. data/vendor/bundle/ruby/1.9.1/gems/httparty-0.13.1/spec/httparty/logger/logger_spec.rb +0 -22
  532. data/vendor/bundle/ruby/1.9.1/gems/httparty-0.13.1/spec/httparty/net_digest_auth_spec.rb +0 -152
  533. data/vendor/bundle/ruby/1.9.1/gems/httparty-0.13.1/spec/httparty/parser_spec.rb +0 -165
  534. data/vendor/bundle/ruby/1.9.1/gems/httparty-0.13.1/spec/httparty/request_spec.rb +0 -638
  535. data/vendor/bundle/ruby/1.9.1/gems/httparty-0.13.1/spec/httparty/response_spec.rb +0 -221
  536. data/vendor/bundle/ruby/1.9.1/gems/httparty-0.13.1/spec/httparty/ssl_spec.rb +0 -74
  537. data/vendor/bundle/ruby/1.9.1/gems/httparty-0.13.1/spec/httparty_spec.rb +0 -764
  538. data/vendor/bundle/ruby/1.9.1/gems/httparty-0.13.1/spec/spec.opts +0 -2
  539. data/vendor/bundle/ruby/1.9.1/gems/httparty-0.13.1/spec/spec_helper.rb +0 -37
  540. data/vendor/bundle/ruby/1.9.1/gems/httparty-0.13.1/spec/support/ssl_test_helper.rb +0 -47
  541. data/vendor/bundle/ruby/1.9.1/gems/httparty-0.13.1/spec/support/ssl_test_server.rb +0 -80
  542. data/vendor/bundle/ruby/1.9.1/gems/httparty-0.13.1/spec/support/stub_response.rb +0 -43
  543. data/vendor/bundle/ruby/1.9.1/gems/httparty-0.13.1/website/css/common.css +0 -47
  544. data/vendor/bundle/ruby/1.9.1/gems/httparty-0.13.1/website/index.html +0 -73
  545. data/vendor/bundle/ruby/1.9.1/gems/json-1.8.1/CHANGES +0 -284
  546. data/vendor/bundle/ruby/1.9.1/gems/json-1.8.1/COPYING +0 -58
  547. data/vendor/bundle/ruby/1.9.1/gems/json-1.8.1/COPYING-json-jruby +0 -57
  548. data/vendor/bundle/ruby/1.9.1/gems/json-1.8.1/GPL +0 -340
  549. data/vendor/bundle/ruby/1.9.1/gems/json-1.8.1/Gemfile +0 -11
  550. data/vendor/bundle/ruby/1.9.1/gems/json-1.8.1/README-json-jruby.markdown +0 -33
  551. data/vendor/bundle/ruby/1.9.1/gems/json-1.8.1/README.rdoc +0 -358
  552. data/vendor/bundle/ruby/1.9.1/gems/json-1.8.1/Rakefile +0 -412
  553. data/vendor/bundle/ruby/1.9.1/gems/json-1.8.1/TODO +0 -1
  554. data/vendor/bundle/ruby/1.9.1/gems/json-1.8.1/VERSION +0 -1
  555. data/vendor/bundle/ruby/1.9.1/gems/json-1.8.1/data/example.json +0 -1
  556. data/vendor/bundle/ruby/1.9.1/gems/json-1.8.1/data/index.html +0 -38
  557. data/vendor/bundle/ruby/1.9.1/gems/json-1.8.1/data/prototype.js +0 -4184
  558. data/vendor/bundle/ruby/1.9.1/gems/json-1.8.1/ext/json/ext/fbuffer/fbuffer.h +0 -181
  559. data/vendor/bundle/ruby/1.9.1/gems/json-1.8.1/ext/json/ext/generator/Makefile +0 -221
  560. data/vendor/bundle/ruby/1.9.1/gems/json-1.8.1/ext/json/ext/generator/depend +0 -1
  561. data/vendor/bundle/ruby/1.9.1/gems/json-1.8.1/ext/json/ext/generator/extconf.rb +0 -14
  562. data/vendor/bundle/ruby/1.9.1/gems/json-1.8.1/ext/json/ext/generator/generator.bundle +0 -0
  563. data/vendor/bundle/ruby/1.9.1/gems/json-1.8.1/ext/json/ext/generator/generator.c +0 -1435
  564. data/vendor/bundle/ruby/1.9.1/gems/json-1.8.1/ext/json/ext/generator/generator.h +0 -148
  565. data/vendor/bundle/ruby/1.9.1/gems/json-1.8.1/ext/json/ext/generator/generator.o +0 -0
  566. data/vendor/bundle/ruby/1.9.1/gems/json-1.8.1/ext/json/ext/parser/Makefile +0 -221
  567. data/vendor/bundle/ruby/1.9.1/gems/json-1.8.1/ext/json/ext/parser/depend +0 -1
  568. data/vendor/bundle/ruby/1.9.1/gems/json-1.8.1/ext/json/ext/parser/extconf.rb +0 -13
  569. data/vendor/bundle/ruby/1.9.1/gems/json-1.8.1/ext/json/ext/parser/parser.bundle +0 -0
  570. data/vendor/bundle/ruby/1.9.1/gems/json-1.8.1/ext/json/ext/parser/parser.c +0 -2204
  571. data/vendor/bundle/ruby/1.9.1/gems/json-1.8.1/ext/json/ext/parser/parser.h +0 -77
  572. data/vendor/bundle/ruby/1.9.1/gems/json-1.8.1/ext/json/ext/parser/parser.o +0 -0
  573. data/vendor/bundle/ruby/1.9.1/gems/json-1.8.1/ext/json/ext/parser/parser.rl +0 -927
  574. data/vendor/bundle/ruby/1.9.1/gems/json-1.8.1/install.rb +0 -23
  575. data/vendor/bundle/ruby/1.9.1/gems/json-1.8.1/java/src/json/ext/ByteListTranscoder.java +0 -167
  576. data/vendor/bundle/ruby/1.9.1/gems/json-1.8.1/java/src/json/ext/Generator.java +0 -444
  577. data/vendor/bundle/ruby/1.9.1/gems/json-1.8.1/java/src/json/ext/GeneratorMethods.java +0 -232
  578. data/vendor/bundle/ruby/1.9.1/gems/json-1.8.1/java/src/json/ext/GeneratorService.java +0 -43
  579. data/vendor/bundle/ruby/1.9.1/gems/json-1.8.1/java/src/json/ext/GeneratorState.java +0 -543
  580. data/vendor/bundle/ruby/1.9.1/gems/json-1.8.1/java/src/json/ext/OptionsReader.java +0 -114
  581. data/vendor/bundle/ruby/1.9.1/gems/json-1.8.1/java/src/json/ext/Parser.java +0 -2644
  582. data/vendor/bundle/ruby/1.9.1/gems/json-1.8.1/java/src/json/ext/Parser.rl +0 -968
  583. data/vendor/bundle/ruby/1.9.1/gems/json-1.8.1/java/src/json/ext/ParserService.java +0 -35
  584. data/vendor/bundle/ruby/1.9.1/gems/json-1.8.1/java/src/json/ext/RuntimeInfo.java +0 -121
  585. data/vendor/bundle/ruby/1.9.1/gems/json-1.8.1/java/src/json/ext/StringDecoder.java +0 -167
  586. data/vendor/bundle/ruby/1.9.1/gems/json-1.8.1/java/src/json/ext/StringEncoder.java +0 -106
  587. data/vendor/bundle/ruby/1.9.1/gems/json-1.8.1/java/src/json/ext/Utils.java +0 -89
  588. data/vendor/bundle/ruby/1.9.1/gems/json-1.8.1/json-java.gemspec +0 -23
  589. data/vendor/bundle/ruby/1.9.1/gems/json-1.8.1/json.gemspec +0 -38
  590. data/vendor/bundle/ruby/1.9.1/gems/json-1.8.1/json_pure.gemspec +0 -40
  591. data/vendor/bundle/ruby/1.9.1/gems/json-1.8.1/lib/json.rb +0 -62
  592. data/vendor/bundle/ruby/1.9.1/gems/json-1.8.1/lib/json/add/bigdecimal.rb +0 -28
  593. data/vendor/bundle/ruby/1.9.1/gems/json-1.8.1/lib/json/add/complex.rb +0 -22
  594. data/vendor/bundle/ruby/1.9.1/gems/json-1.8.1/lib/json/add/core.rb +0 -11
  595. data/vendor/bundle/ruby/1.9.1/gems/json-1.8.1/lib/json/add/date.rb +0 -34
  596. data/vendor/bundle/ruby/1.9.1/gems/json-1.8.1/lib/json/add/date_time.rb +0 -50
  597. data/vendor/bundle/ruby/1.9.1/gems/json-1.8.1/lib/json/add/exception.rb +0 -31
  598. data/vendor/bundle/ruby/1.9.1/gems/json-1.8.1/lib/json/add/ostruct.rb +0 -31
  599. data/vendor/bundle/ruby/1.9.1/gems/json-1.8.1/lib/json/add/range.rb +0 -29
  600. data/vendor/bundle/ruby/1.9.1/gems/json-1.8.1/lib/json/add/rational.rb +0 -22
  601. data/vendor/bundle/ruby/1.9.1/gems/json-1.8.1/lib/json/add/regexp.rb +0 -30
  602. data/vendor/bundle/ruby/1.9.1/gems/json-1.8.1/lib/json/add/struct.rb +0 -30
  603. data/vendor/bundle/ruby/1.9.1/gems/json-1.8.1/lib/json/add/symbol.rb +0 -25
  604. data/vendor/bundle/ruby/1.9.1/gems/json-1.8.1/lib/json/add/time.rb +0 -38
  605. data/vendor/bundle/ruby/1.9.1/gems/json-1.8.1/lib/json/common.rb +0 -484
  606. data/vendor/bundle/ruby/1.9.1/gems/json-1.8.1/lib/json/ext.rb +0 -21
  607. data/vendor/bundle/ruby/1.9.1/gems/json-1.8.1/lib/json/ext/generator.bundle +0 -0
  608. data/vendor/bundle/ruby/1.9.1/gems/json-1.8.1/lib/json/ext/parser.bundle +0 -0
  609. data/vendor/bundle/ruby/1.9.1/gems/json-1.8.1/lib/json/generic_object.rb +0 -70
  610. data/vendor/bundle/ruby/1.9.1/gems/json-1.8.1/lib/json/pure.rb +0 -21
  611. data/vendor/bundle/ruby/1.9.1/gems/json-1.8.1/lib/json/pure/generator.rb +0 -522
  612. data/vendor/bundle/ruby/1.9.1/gems/json-1.8.1/lib/json/pure/parser.rb +0 -359
  613. data/vendor/bundle/ruby/1.9.1/gems/json-1.8.1/lib/json/version.rb +0 -8
  614. data/vendor/bundle/ruby/1.9.1/gems/json-1.8.1/tests/fixtures/fail1.json +0 -1
  615. data/vendor/bundle/ruby/1.9.1/gems/json-1.8.1/tests/fixtures/fail10.json +0 -1
  616. data/vendor/bundle/ruby/1.9.1/gems/json-1.8.1/tests/fixtures/fail11.json +0 -1
  617. data/vendor/bundle/ruby/1.9.1/gems/json-1.8.1/tests/fixtures/fail12.json +0 -1
  618. data/vendor/bundle/ruby/1.9.1/gems/json-1.8.1/tests/fixtures/fail13.json +0 -1
  619. data/vendor/bundle/ruby/1.9.1/gems/json-1.8.1/tests/fixtures/fail14.json +0 -1
  620. data/vendor/bundle/ruby/1.9.1/gems/json-1.8.1/tests/fixtures/fail18.json +0 -1
  621. data/vendor/bundle/ruby/1.9.1/gems/json-1.8.1/tests/fixtures/fail19.json +0 -1
  622. data/vendor/bundle/ruby/1.9.1/gems/json-1.8.1/tests/fixtures/fail2.json +0 -1
  623. data/vendor/bundle/ruby/1.9.1/gems/json-1.8.1/tests/fixtures/fail20.json +0 -1
  624. data/vendor/bundle/ruby/1.9.1/gems/json-1.8.1/tests/fixtures/fail21.json +0 -1
  625. data/vendor/bundle/ruby/1.9.1/gems/json-1.8.1/tests/fixtures/fail22.json +0 -1
  626. data/vendor/bundle/ruby/1.9.1/gems/json-1.8.1/tests/fixtures/fail23.json +0 -1
  627. data/vendor/bundle/ruby/1.9.1/gems/json-1.8.1/tests/fixtures/fail24.json +0 -1
  628. data/vendor/bundle/ruby/1.9.1/gems/json-1.8.1/tests/fixtures/fail25.json +0 -1
  629. data/vendor/bundle/ruby/1.9.1/gems/json-1.8.1/tests/fixtures/fail27.json +0 -2
  630. data/vendor/bundle/ruby/1.9.1/gems/json-1.8.1/tests/fixtures/fail28.json +0 -2
  631. data/vendor/bundle/ruby/1.9.1/gems/json-1.8.1/tests/fixtures/fail3.json +0 -1
  632. data/vendor/bundle/ruby/1.9.1/gems/json-1.8.1/tests/fixtures/fail4.json +0 -1
  633. data/vendor/bundle/ruby/1.9.1/gems/json-1.8.1/tests/fixtures/fail5.json +0 -1
  634. data/vendor/bundle/ruby/1.9.1/gems/json-1.8.1/tests/fixtures/fail6.json +0 -1
  635. data/vendor/bundle/ruby/1.9.1/gems/json-1.8.1/tests/fixtures/fail7.json +0 -1
  636. data/vendor/bundle/ruby/1.9.1/gems/json-1.8.1/tests/fixtures/fail8.json +0 -1
  637. data/vendor/bundle/ruby/1.9.1/gems/json-1.8.1/tests/fixtures/fail9.json +0 -1
  638. data/vendor/bundle/ruby/1.9.1/gems/json-1.8.1/tests/fixtures/pass1.json +0 -56
  639. data/vendor/bundle/ruby/1.9.1/gems/json-1.8.1/tests/fixtures/pass15.json +0 -1
  640. data/vendor/bundle/ruby/1.9.1/gems/json-1.8.1/tests/fixtures/pass16.json +0 -1
  641. data/vendor/bundle/ruby/1.9.1/gems/json-1.8.1/tests/fixtures/pass17.json +0 -1
  642. data/vendor/bundle/ruby/1.9.1/gems/json-1.8.1/tests/fixtures/pass2.json +0 -1
  643. data/vendor/bundle/ruby/1.9.1/gems/json-1.8.1/tests/fixtures/pass26.json +0 -1
  644. data/vendor/bundle/ruby/1.9.1/gems/json-1.8.1/tests/fixtures/pass3.json +0 -6
  645. data/vendor/bundle/ruby/1.9.1/gems/json-1.8.1/tests/setup_variant.rb +0 -11
  646. data/vendor/bundle/ruby/1.9.1/gems/json-1.8.1/tests/test_json.rb +0 -545
  647. data/vendor/bundle/ruby/1.9.1/gems/json-1.8.1/tests/test_json_addition.rb +0 -196
  648. data/vendor/bundle/ruby/1.9.1/gems/json-1.8.1/tests/test_json_encoding.rb +0 -65
  649. data/vendor/bundle/ruby/1.9.1/gems/json-1.8.1/tests/test_json_fixtures.rb +0 -35
  650. data/vendor/bundle/ruby/1.9.1/gems/json-1.8.1/tests/test_json_generate.rb +0 -322
  651. data/vendor/bundle/ruby/1.9.1/gems/json-1.8.1/tests/test_json_generic_object.rb +0 -75
  652. data/vendor/bundle/ruby/1.9.1/gems/json-1.8.1/tests/test_json_string_matching.rb +0 -39
  653. data/vendor/bundle/ruby/1.9.1/gems/json-1.8.1/tests/test_json_unicode.rb +0 -72
  654. data/vendor/bundle/ruby/1.9.1/gems/json-1.8.1/tools/fuzz.rb +0 -139
  655. data/vendor/bundle/ruby/1.9.1/gems/json-1.8.1/tools/server.rb +0 -62
  656. data/vendor/bundle/ruby/1.9.1/gems/main-6.0.0/LICENSE +0 -1
  657. data/vendor/bundle/ruby/1.9.1/gems/main-6.0.0/README +0 -1177
  658. data/vendor/bundle/ruby/1.9.1/gems/main-6.0.0/README.erb +0 -881
  659. data/vendor/bundle/ruby/1.9.1/gems/main-6.0.0/Rakefile +0 -394
  660. data/vendor/bundle/ruby/1.9.1/gems/main-6.0.0/TODO +0 -23
  661. data/vendor/bundle/ruby/1.9.1/gems/main-6.0.0/a.rb +0 -3
  662. data/vendor/bundle/ruby/1.9.1/gems/main-6.0.0/lib/main.rb +0 -93
  663. data/vendor/bundle/ruby/1.9.1/gems/main-6.0.0/lib/main/cast.rb +0 -163
  664. data/vendor/bundle/ruby/1.9.1/gems/main-6.0.0/lib/main/dsl.rb +0 -77
  665. data/vendor/bundle/ruby/1.9.1/gems/main-6.0.0/lib/main/factories.rb +0 -28
  666. data/vendor/bundle/ruby/1.9.1/gems/main-6.0.0/lib/main/getoptlong.rb +0 -470
  667. data/vendor/bundle/ruby/1.9.1/gems/main-6.0.0/lib/main/logger.rb +0 -51
  668. data/vendor/bundle/ruby/1.9.1/gems/main-6.0.0/lib/main/mode.rb +0 -46
  669. data/vendor/bundle/ruby/1.9.1/gems/main-6.0.0/lib/main/parameter.rb +0 -735
  670. data/vendor/bundle/ruby/1.9.1/gems/main-6.0.0/lib/main/program.rb +0 -6
  671. data/vendor/bundle/ruby/1.9.1/gems/main-6.0.0/lib/main/program/class_methods.rb +0 -381
  672. data/vendor/bundle/ruby/1.9.1/gems/main-6.0.0/lib/main/program/instance_methods.rb +0 -303
  673. data/vendor/bundle/ruby/1.9.1/gems/main-6.0.0/lib/main/softspoken.rb +0 -12
  674. data/vendor/bundle/ruby/1.9.1/gems/main-6.0.0/lib/main/stdext.rb +0 -36
  675. data/vendor/bundle/ruby/1.9.1/gems/main-6.0.0/lib/main/test.rb +0 -89
  676. data/vendor/bundle/ruby/1.9.1/gems/main-6.0.0/lib/main/usage.rb +0 -212
  677. data/vendor/bundle/ruby/1.9.1/gems/main-6.0.0/lib/main/util.rb +0 -109
  678. data/vendor/bundle/ruby/1.9.1/gems/main-6.0.0/main.gemspec +0 -74
  679. data/vendor/bundle/ruby/1.9.1/gems/main-6.0.0/samples/a.rb +0 -17
  680. data/vendor/bundle/ruby/1.9.1/gems/main-6.0.0/samples/b.rb +0 -17
  681. data/vendor/bundle/ruby/1.9.1/gems/main-6.0.0/samples/c.rb +0 -21
  682. data/vendor/bundle/ruby/1.9.1/gems/main-6.0.0/samples/d.rb +0 -26
  683. data/vendor/bundle/ruby/1.9.1/gems/main-6.0.0/samples/e.rb +0 -27
  684. data/vendor/bundle/ruby/1.9.1/gems/main-6.0.0/samples/f.rb +0 -29
  685. data/vendor/bundle/ruby/1.9.1/gems/main-6.0.0/samples/g.rb +0 -10
  686. data/vendor/bundle/ruby/1.9.1/gems/main-6.0.0/samples/h.rb +0 -36
  687. data/vendor/bundle/ruby/1.9.1/gems/main-6.0.0/samples/j.rb +0 -31
  688. data/vendor/bundle/ruby/1.9.1/gems/main-6.0.0/test/main_test.rb +0 -954
  689. data/vendor/bundle/ruby/1.9.1/gems/main-6.1.0/LICENSE +0 -1
  690. data/vendor/bundle/ruby/1.9.1/gems/main-6.1.0/README +0 -1177
  691. data/vendor/bundle/ruby/1.9.1/gems/main-6.1.0/README.erb +0 -881
  692. data/vendor/bundle/ruby/1.9.1/gems/main-6.1.0/Rakefile +0 -394
  693. data/vendor/bundle/ruby/1.9.1/gems/main-6.1.0/TODO +0 -23
  694. data/vendor/bundle/ruby/1.9.1/gems/main-6.1.0/a.rb +0 -28
  695. data/vendor/bundle/ruby/1.9.1/gems/main-6.1.0/lib/main.rb +0 -94
  696. data/vendor/bundle/ruby/1.9.1/gems/main-6.1.0/lib/main/cast.rb +0 -163
  697. data/vendor/bundle/ruby/1.9.1/gems/main-6.1.0/lib/main/daemon.rb +0 -525
  698. data/vendor/bundle/ruby/1.9.1/gems/main-6.1.0/lib/main/dsl.rb +0 -77
  699. data/vendor/bundle/ruby/1.9.1/gems/main-6.1.0/lib/main/factories.rb +0 -28
  700. data/vendor/bundle/ruby/1.9.1/gems/main-6.1.0/lib/main/getoptlong.rb +0 -470
  701. data/vendor/bundle/ruby/1.9.1/gems/main-6.1.0/lib/main/logger.rb +0 -51
  702. data/vendor/bundle/ruby/1.9.1/gems/main-6.1.0/lib/main/mode.rb +0 -46
  703. data/vendor/bundle/ruby/1.9.1/gems/main-6.1.0/lib/main/parameter.rb +0 -735
  704. data/vendor/bundle/ruby/1.9.1/gems/main-6.1.0/lib/main/program.rb +0 -6
  705. data/vendor/bundle/ruby/1.9.1/gems/main-6.1.0/lib/main/program/class_methods.rb +0 -392
  706. data/vendor/bundle/ruby/1.9.1/gems/main-6.1.0/lib/main/program/instance_methods.rb +0 -308
  707. data/vendor/bundle/ruby/1.9.1/gems/main-6.1.0/lib/main/softspoken.rb +0 -12
  708. data/vendor/bundle/ruby/1.9.1/gems/main-6.1.0/lib/main/stdext.rb +0 -36
  709. data/vendor/bundle/ruby/1.9.1/gems/main-6.1.0/lib/main/test.rb +0 -89
  710. data/vendor/bundle/ruby/1.9.1/gems/main-6.1.0/lib/main/usage.rb +0 -212
  711. data/vendor/bundle/ruby/1.9.1/gems/main-6.1.0/lib/main/util.rb +0 -109
  712. data/vendor/bundle/ruby/1.9.1/gems/main-6.1.0/main.gemspec +0 -75
  713. data/vendor/bundle/ruby/1.9.1/gems/main-6.1.0/samples/a.rb +0 -17
  714. data/vendor/bundle/ruby/1.9.1/gems/main-6.1.0/samples/b.rb +0 -17
  715. data/vendor/bundle/ruby/1.9.1/gems/main-6.1.0/samples/c.rb +0 -21
  716. data/vendor/bundle/ruby/1.9.1/gems/main-6.1.0/samples/d.rb +0 -26
  717. data/vendor/bundle/ruby/1.9.1/gems/main-6.1.0/samples/e.rb +0 -27
  718. data/vendor/bundle/ruby/1.9.1/gems/main-6.1.0/samples/f.rb +0 -29
  719. data/vendor/bundle/ruby/1.9.1/gems/main-6.1.0/samples/g.rb +0 -10
  720. data/vendor/bundle/ruby/1.9.1/gems/main-6.1.0/samples/h.rb +0 -36
  721. data/vendor/bundle/ruby/1.9.1/gems/main-6.1.0/samples/j.rb +0 -31
  722. data/vendor/bundle/ruby/1.9.1/gems/main-6.1.0/test/main_test.rb +0 -954
  723. data/vendor/bundle/ruby/1.9.1/gems/map-6.5.5/LICENSE +0 -1
  724. data/vendor/bundle/ruby/1.9.1/gems/map-6.5.5/README +0 -145
  725. data/vendor/bundle/ruby/1.9.1/gems/map-6.5.5/Rakefile +0 -394
  726. data/vendor/bundle/ruby/1.9.1/gems/map-6.5.5/a.rb +0 -22
  727. data/vendor/bundle/ruby/1.9.1/gems/map-6.5.5/lib/map.rb +0 -1190
  728. data/vendor/bundle/ruby/1.9.1/gems/map-6.5.5/lib/map/integrations/active_record.rb +0 -140
  729. data/vendor/bundle/ruby/1.9.1/gems/map-6.5.5/lib/map/options.rb +0 -188
  730. data/vendor/bundle/ruby/1.9.1/gems/map-6.5.5/lib/map/params.rb +0 -79
  731. data/vendor/bundle/ruby/1.9.1/gems/map-6.5.5/lib/map/struct.rb +0 -52
  732. data/vendor/bundle/ruby/1.9.1/gems/map-6.5.5/map.gemspec +0 -46
  733. data/vendor/bundle/ruby/1.9.1/gems/map-6.5.5/test/leak.rb +0 -61
  734. data/vendor/bundle/ruby/1.9.1/gems/map-6.5.5/test/lib/testing.rb +0 -74
  735. data/vendor/bundle/ruby/1.9.1/gems/map-6.5.5/test/map_test.rb +0 -802
  736. data/vendor/bundle/ruby/1.9.1/gems/method_source-0.8.2/Gemfile +0 -2
  737. data/vendor/bundle/ruby/1.9.1/gems/method_source-0.8.2/LICENSE +0 -25
  738. data/vendor/bundle/ruby/1.9.1/gems/method_source-0.8.2/README.markdown +0 -91
  739. data/vendor/bundle/ruby/1.9.1/gems/method_source-0.8.2/Rakefile +0 -79
  740. data/vendor/bundle/ruby/1.9.1/gems/method_source-0.8.2/lib/method_source.rb +0 -141
  741. data/vendor/bundle/ruby/1.9.1/gems/method_source-0.8.2/lib/method_source/code_helpers.rb +0 -154
  742. data/vendor/bundle/ruby/1.9.1/gems/method_source-0.8.2/lib/method_source/source_location.rb +0 -138
  743. data/vendor/bundle/ruby/1.9.1/gems/method_source-0.8.2/lib/method_source/version.rb +0 -3
  744. data/vendor/bundle/ruby/1.9.1/gems/method_source-0.8.2/method_source.gemspec +0 -33
  745. data/vendor/bundle/ruby/1.9.1/gems/method_source-0.8.2/test/test.rb +0 -138
  746. data/vendor/bundle/ruby/1.9.1/gems/method_source-0.8.2/test/test_code_helpers.rb +0 -41
  747. data/vendor/bundle/ruby/1.9.1/gems/method_source-0.8.2/test/test_helper.rb +0 -98
  748. data/vendor/bundle/ruby/1.9.1/gems/multi_json-1.10.1/CHANGELOG.md +0 -220
  749. data/vendor/bundle/ruby/1.9.1/gems/multi_json-1.10.1/CONTRIBUTING.md +0 -46
  750. data/vendor/bundle/ruby/1.9.1/gems/multi_json-1.10.1/Gemfile +0 -29
  751. data/vendor/bundle/ruby/1.9.1/gems/multi_json-1.10.1/LICENSE.md +0 -20
  752. data/vendor/bundle/ruby/1.9.1/gems/multi_json-1.10.1/README.md +0 -119
  753. data/vendor/bundle/ruby/1.9.1/gems/multi_json-1.10.1/Rakefile +0 -25
  754. data/vendor/bundle/ruby/1.9.1/gems/multi_json-1.10.1/lib/multi_json.rb +0 -158
  755. data/vendor/bundle/ruby/1.9.1/gems/multi_json-1.10.1/lib/multi_json/adapter.rb +0 -37
  756. data/vendor/bundle/ruby/1.9.1/gems/multi_json-1.10.1/lib/multi_json/adapter_error.rb +0 -15
  757. data/vendor/bundle/ruby/1.9.1/gems/multi_json-1.10.1/lib/multi_json/adapters/gson.rb +0 -21
  758. data/vendor/bundle/ruby/1.9.1/gems/multi_json-1.10.1/lib/multi_json/adapters/jr_jackson.rb +0 -19
  759. data/vendor/bundle/ruby/1.9.1/gems/multi_json-1.10.1/lib/multi_json/adapters/json_common.rb +0 -25
  760. data/vendor/bundle/ruby/1.9.1/gems/multi_json-1.10.1/lib/multi_json/adapters/json_gem.rb +0 -11
  761. data/vendor/bundle/ruby/1.9.1/gems/multi_json-1.10.1/lib/multi_json/adapters/json_pure.rb +0 -11
  762. data/vendor/bundle/ruby/1.9.1/gems/multi_json-1.10.1/lib/multi_json/adapters/nsjsonserialization.rb +0 -34
  763. data/vendor/bundle/ruby/1.9.1/gems/multi_json-1.10.1/lib/multi_json/adapters/oj.rb +0 -25
  764. data/vendor/bundle/ruby/1.9.1/gems/multi_json-1.10.1/lib/multi_json/adapters/ok_json.rb +0 -24
  765. data/vendor/bundle/ruby/1.9.1/gems/multi_json-1.10.1/lib/multi_json/adapters/yajl.rb +0 -19
  766. data/vendor/bundle/ruby/1.9.1/gems/multi_json-1.10.1/lib/multi_json/convertible_hash_keys.rb +0 -43
  767. data/vendor/bundle/ruby/1.9.1/gems/multi_json-1.10.1/lib/multi_json/options.rb +0 -38
  768. data/vendor/bundle/ruby/1.9.1/gems/multi_json-1.10.1/lib/multi_json/parse_error.rb +0 -17
  769. data/vendor/bundle/ruby/1.9.1/gems/multi_json-1.10.1/lib/multi_json/vendor/okjson.rb +0 -606
  770. data/vendor/bundle/ruby/1.9.1/gems/multi_json-1.10.1/lib/multi_json/version.rb +0 -20
  771. data/vendor/bundle/ruby/1.9.1/gems/multi_json-1.10.1/multi_json.gemspec +0 -22
  772. data/vendor/bundle/ruby/1.9.1/gems/multi_json-1.10.1/spec/gson_adapter_spec.rb +0 -10
  773. data/vendor/bundle/ruby/1.9.1/gems/multi_json-1.10.1/spec/jr_jackson_adapter_spec.rb +0 -10
  774. data/vendor/bundle/ruby/1.9.1/gems/multi_json-1.10.1/spec/json_gem_adapter_spec.rb +0 -9
  775. data/vendor/bundle/ruby/1.9.1/gems/multi_json-1.10.1/spec/json_pure_adapter_spec.rb +0 -9
  776. data/vendor/bundle/ruby/1.9.1/gems/multi_json-1.10.1/spec/multi_json_spec.rb +0 -200
  777. data/vendor/bundle/ruby/1.9.1/gems/multi_json-1.10.1/spec/nsjsonserialization_adapter_spec.rb +0 -10
  778. data/vendor/bundle/ruby/1.9.1/gems/multi_json-1.10.1/spec/oj_adapter_spec.rb +0 -20
  779. data/vendor/bundle/ruby/1.9.1/gems/multi_json-1.10.1/spec/ok_json_adapter_spec.rb +0 -7
  780. data/vendor/bundle/ruby/1.9.1/gems/multi_json-1.10.1/spec/shared/adapter.rb +0 -236
  781. data/vendor/bundle/ruby/1.9.1/gems/multi_json-1.10.1/spec/shared/json_common_adapter.rb +0 -30
  782. data/vendor/bundle/ruby/1.9.1/gems/multi_json-1.10.1/spec/shared/options.rb +0 -119
  783. data/vendor/bundle/ruby/1.9.1/gems/multi_json-1.10.1/spec/spec_helper.rb +0 -77
  784. data/vendor/bundle/ruby/1.9.1/gems/multi_json-1.10.1/spec/yajl_adapter_spec.rb +0 -10
  785. data/vendor/bundle/ruby/1.9.1/gems/multi_xml-0.5.5/CHANGELOG.md +0 -93
  786. data/vendor/bundle/ruby/1.9.1/gems/multi_xml-0.5.5/CONTRIBUTING.md +0 -49
  787. data/vendor/bundle/ruby/1.9.1/gems/multi_xml-0.5.5/LICENSE.md +0 -20
  788. data/vendor/bundle/ruby/1.9.1/gems/multi_xml-0.5.5/README.md +0 -97
  789. data/vendor/bundle/ruby/1.9.1/gems/multi_xml-0.5.5/Rakefile +0 -21
  790. data/vendor/bundle/ruby/1.9.1/gems/multi_xml-0.5.5/lib/multi_xml.rb +0 -296
  791. data/vendor/bundle/ruby/1.9.1/gems/multi_xml-0.5.5/lib/multi_xml/parsers/libxml.rb +0 -30
  792. data/vendor/bundle/ruby/1.9.1/gems/multi_xml-0.5.5/lib/multi_xml/parsers/libxml2_parser.rb +0 -74
  793. data/vendor/bundle/ruby/1.9.1/gems/multi_xml-0.5.5/lib/multi_xml/parsers/nokogiri.rb +0 -32
  794. data/vendor/bundle/ruby/1.9.1/gems/multi_xml-0.5.5/lib/multi_xml/parsers/ox.rb +0 -97
  795. data/vendor/bundle/ruby/1.9.1/gems/multi_xml-0.5.5/lib/multi_xml/parsers/rexml.rb +0 -113
  796. data/vendor/bundle/ruby/1.9.1/gems/multi_xml-0.5.5/lib/multi_xml/version.rb +0 -3
  797. data/vendor/bundle/ruby/1.9.1/gems/multi_xml-0.5.5/multi_xml.gemspec +0 -24
  798. data/vendor/bundle/ruby/1.9.1/gems/multi_xml-0.5.5/spec/helper.rb +0 -17
  799. data/vendor/bundle/ruby/1.9.1/gems/multi_xml-0.5.5/spec/multi_xml_spec.rb +0 -43
  800. data/vendor/bundle/ruby/1.9.1/gems/multi_xml-0.5.5/spec/parser_shared_example.rb +0 -694
  801. data/vendor/bundle/ruby/1.9.1/gems/multi_xml-0.5.5/spec/speed.rb +0 -63
  802. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/CHANGELOG +0 -534
  803. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/CONTRIBUTORS +0 -55
  804. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/Gemfile +0 -12
  805. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/LICENSE +0 -25
  806. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/README.markdown +0 -400
  807. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/Rakefile +0 -140
  808. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/TODO +0 -117
  809. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/bin/pry +0 -16
  810. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/lib/pry.rb +0 -274
  811. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/lib/pry/cli.rb +0 -202
  812. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/lib/pry/code.rb +0 -385
  813. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/lib/pry/code/code_range.rb +0 -70
  814. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/lib/pry/code/loc.rb +0 -92
  815. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/lib/pry/code_object.rb +0 -153
  816. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/lib/pry/command.rb +0 -689
  817. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/lib/pry/command_set.rb +0 -400
  818. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/lib/pry/commands.rb +0 -6
  819. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/lib/pry/commands/amend_line.rb +0 -99
  820. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/lib/pry/commands/bang.rb +0 -20
  821. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/lib/pry/commands/bang_pry.rb +0 -17
  822. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/lib/pry/commands/cat.rb +0 -53
  823. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/lib/pry/commands/cat/abstract_formatter.rb +0 -27
  824. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/lib/pry/commands/cat/exception_formatter.rb +0 -78
  825. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/lib/pry/commands/cat/file_formatter.rb +0 -84
  826. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/lib/pry/commands/cat/input_expression_formatter.rb +0 -43
  827. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/lib/pry/commands/cd.rb +0 -30
  828. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/lib/pry/commands/code_collector.rb +0 -165
  829. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/lib/pry/commands/disable_pry.rb +0 -27
  830. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/lib/pry/commands/disabled_commands.rb +0 -2
  831. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/lib/pry/commands/easter_eggs.rb +0 -112
  832. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/lib/pry/commands/edit.rb +0 -207
  833. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/lib/pry/commands/edit/exception_patcher.rb +0 -25
  834. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/lib/pry/commands/edit/file_and_line_locator.rb +0 -38
  835. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/lib/pry/commands/edit/method_patcher.rb +0 -122
  836. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/lib/pry/commands/exit.rb +0 -42
  837. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/lib/pry/commands/exit_all.rb +0 -29
  838. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/lib/pry/commands/exit_program.rb +0 -24
  839. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/lib/pry/commands/find_method.rb +0 -199
  840. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/lib/pry/commands/fix_indent.rb +0 -19
  841. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/lib/pry/commands/gem_cd.rb +0 -26
  842. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/lib/pry/commands/gem_install.rb +0 -29
  843. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/lib/pry/commands/gem_list.rb +0 -33
  844. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/lib/pry/commands/gem_open.rb +0 -29
  845. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/lib/pry/commands/gist.rb +0 -102
  846. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/lib/pry/commands/help.rb +0 -164
  847. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/lib/pry/commands/hist.rb +0 -161
  848. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/lib/pry/commands/import_set.rb +0 -22
  849. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/lib/pry/commands/install_command.rb +0 -51
  850. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/lib/pry/commands/jump_to.rb +0 -29
  851. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/lib/pry/commands/ls.rb +0 -338
  852. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/lib/pry/commands/nesting.rb +0 -25
  853. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/lib/pry/commands/play.rb +0 -69
  854. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/lib/pry/commands/pry_backtrace.rb +0 -26
  855. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/lib/pry/commands/pry_version.rb +0 -17
  856. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/lib/pry/commands/raise_up.rb +0 -32
  857. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/lib/pry/commands/reload_code.rb +0 -65
  858. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/lib/pry/commands/reset.rb +0 -18
  859. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/lib/pry/commands/ri.rb +0 -56
  860. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/lib/pry/commands/save_file.rb +0 -61
  861. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/lib/pry/commands/shell_command.rb +0 -43
  862. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/lib/pry/commands/shell_mode.rb +0 -27
  863. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/lib/pry/commands/show_doc.rb +0 -78
  864. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/lib/pry/commands/show_info.rb +0 -200
  865. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/lib/pry/commands/show_input.rb +0 -17
  866. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/lib/pry/commands/show_source.rb +0 -38
  867. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/lib/pry/commands/simple_prompt.rb +0 -22
  868. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/lib/pry/commands/stat.rb +0 -40
  869. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/lib/pry/commands/switch_to.rb +0 -23
  870. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/lib/pry/commands/toggle_color.rb +0 -20
  871. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/lib/pry/commands/whereami.rb +0 -182
  872. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/lib/pry/commands/wtf.rb +0 -57
  873. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/lib/pry/completion.rb +0 -321
  874. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/lib/pry/config.rb +0 -258
  875. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/lib/pry/core_extensions.rb +0 -121
  876. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/lib/pry/custom_completions.rb +0 -6
  877. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/lib/pry/editor.rb +0 -129
  878. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/lib/pry/helpers.rb +0 -5
  879. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/lib/pry/helpers/base_helpers.rb +0 -200
  880. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/lib/pry/helpers/command_helpers.rb +0 -154
  881. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/lib/pry/helpers/documentation_helpers.rb +0 -76
  882. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/lib/pry/helpers/options_helpers.rb +0 -27
  883. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/lib/pry/helpers/table.rb +0 -109
  884. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/lib/pry/helpers/text.rb +0 -108
  885. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/lib/pry/history.rb +0 -124
  886. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/lib/pry/history_array.rb +0 -116
  887. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/lib/pry/hooks.rb +0 -250
  888. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/lib/pry/indent.rb +0 -406
  889. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/lib/pry/method.rb +0 -551
  890. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/lib/pry/method/disowned.rb +0 -53
  891. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/lib/pry/method/weird_method_locator.rb +0 -186
  892. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/lib/pry/module_candidate.rb +0 -146
  893. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/lib/pry/pager.rb +0 -90
  894. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/lib/pry/plugins.rb +0 -103
  895. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/lib/pry/pry_class.rb +0 -456
  896. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/lib/pry/pry_instance.rb +0 -765
  897. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/lib/pry/rbx_method.rb +0 -13
  898. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/lib/pry/rbx_path.rb +0 -22
  899. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/lib/pry/repl_file_loader.rb +0 -80
  900. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/lib/pry/rubygem.rb +0 -74
  901. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/lib/pry/terminal.rb +0 -78
  902. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/lib/pry/test/helper.rb +0 -185
  903. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/lib/pry/version.rb +0 -3
  904. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/lib/pry/wrapped_module.rb +0 -387
  905. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/man/pry.1 +0 -195
  906. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/man/pry.1.html +0 -204
  907. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/man/pry.1.ronn +0 -141
  908. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/pry.gemspec +0 -29
  909. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/spec/Procfile +0 -3
  910. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/spec/cli_spec.rb +0 -78
  911. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/spec/code_object_spec.rb +0 -277
  912. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/spec/code_spec.rb +0 -219
  913. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/spec/command_helpers_spec.rb +0 -29
  914. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/spec/command_integration_spec.rb +0 -644
  915. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/spec/command_set_spec.rb +0 -627
  916. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/spec/command_spec.rb +0 -821
  917. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/spec/commands/amend_line_spec.rb +0 -247
  918. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/spec/commands/bang_spec.rb +0 -19
  919. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/spec/commands/cat_spec.rb +0 -164
  920. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/spec/commands/cd_spec.rb +0 -250
  921. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/spec/commands/disable_pry_spec.rb +0 -25
  922. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/spec/commands/edit_spec.rb +0 -727
  923. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/spec/commands/exit_all_spec.rb +0 -34
  924. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/spec/commands/exit_program_spec.rb +0 -19
  925. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/spec/commands/exit_spec.rb +0 -34
  926. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/spec/commands/find_method_spec.rb +0 -70
  927. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/spec/commands/gem_list_spec.rb +0 -26
  928. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/spec/commands/gist_spec.rb +0 -79
  929. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/spec/commands/help_spec.rb +0 -56
  930. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/spec/commands/hist_spec.rb +0 -181
  931. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/spec/commands/jump_to_spec.rb +0 -15
  932. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/spec/commands/ls_spec.rb +0 -181
  933. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/spec/commands/play_spec.rb +0 -140
  934. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/spec/commands/raise_up_spec.rb +0 -56
  935. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/spec/commands/save_file_spec.rb +0 -177
  936. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/spec/commands/show_doc_spec.rb +0 -510
  937. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/spec/commands/show_input_spec.rb +0 -17
  938. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/spec/commands/show_source_spec.rb +0 -782
  939. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/spec/commands/whereami_spec.rb +0 -203
  940. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/spec/completion_spec.rb +0 -241
  941. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/spec/control_d_handler_spec.rb +0 -58
  942. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/spec/documentation_helper_spec.rb +0 -73
  943. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/spec/editor_spec.rb +0 -79
  944. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/spec/exception_whitelist_spec.rb +0 -21
  945. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/spec/fixtures/candidate_helper1.rb +0 -11
  946. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/spec/fixtures/candidate_helper2.rb +0 -8
  947. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/spec/fixtures/example.erb +0 -5
  948. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/spec/fixtures/example_nesting.rb +0 -33
  949. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/spec/fixtures/show_source_doc_examples.rb +0 -15
  950. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/spec/fixtures/testrc +0 -2
  951. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/spec/fixtures/testrcbad +0 -2
  952. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/spec/fixtures/whereami_helper.rb +0 -6
  953. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/spec/helper.rb +0 -34
  954. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/spec/helpers/bacon.rb +0 -86
  955. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/spec/helpers/mock_pry.rb +0 -43
  956. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/spec/helpers/table_spec.rb +0 -105
  957. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/spec/history_array_spec.rb +0 -67
  958. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/spec/hooks_spec.rb +0 -522
  959. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/spec/indent_spec.rb +0 -301
  960. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/spec/input_stack_spec.rb +0 -90
  961. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/spec/method_spec.rb +0 -482
  962. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/spec/prompt_spec.rb +0 -60
  963. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/spec/pry_defaults_spec.rb +0 -419
  964. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/spec/pry_history_spec.rb +0 -99
  965. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/spec/pry_output_spec.rb +0 -95
  966. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/spec/pry_spec.rb +0 -515
  967. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/spec/run_command_spec.rb +0 -25
  968. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/spec/sticky_locals_spec.rb +0 -157
  969. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/spec/syntax_checking_spec.rb +0 -81
  970. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/spec/wrapped_module_spec.rb +0 -261
  971. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/wiki/Customizing-pry.md +0 -397
  972. data/vendor/bundle/ruby/1.9.1/gems/pry-0.9.12.6/wiki/Home.md +0 -4
  973. data/vendor/bundle/ruby/1.9.1/gems/sekrets-1.7.0/README +0 -144
  974. data/vendor/bundle/ruby/1.9.1/gems/sekrets-1.7.0/Rakefile +0 -390
  975. data/vendor/bundle/ruby/1.9.1/gems/sekrets-1.7.0/bin/sekrets +0 -372
  976. data/vendor/bundle/ruby/1.9.1/gems/sekrets-1.7.0/lib/sekrets.rb +0 -511
  977. data/vendor/bundle/ruby/1.9.1/gems/sekrets-1.7.0/lib/sekrets/capistrano.rb +0 -37
  978. data/vendor/bundle/ruby/1.9.1/gems/sekrets-1.7.0/sekrets.gemspec +0 -50
  979. data/vendor/bundle/ruby/1.9.1/gems/sekrets-1.7.0/test/lib/testing.rb +0 -75
  980. data/vendor/bundle/ruby/1.9.1/gems/sekrets-1.7.0/test/sekrets_test.rb +0 -167
  981. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/CHANGELOG +0 -5790
  982. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/MIT-LICENSE +0 -19
  983. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/README.rdoc +0 -815
  984. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/Rakefile +0 -186
  985. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/bin/sequel +0 -244
  986. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/doc/active_record.rdoc +0 -912
  987. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/doc/advanced_associations.rdoc +0 -818
  988. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/doc/association_basics.rdoc +0 -1763
  989. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/doc/bin_sequel.rdoc +0 -144
  990. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/doc/cheat_sheet.rdoc +0 -220
  991. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/doc/code_order.rdoc +0 -96
  992. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/doc/core_extensions.rdoc +0 -364
  993. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/doc/dataset_basics.rdoc +0 -105
  994. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/doc/dataset_filtering.rdoc +0 -191
  995. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/doc/extensions.rdoc +0 -84
  996. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/doc/mass_assignment.rdoc +0 -55
  997. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/doc/migration.rdoc +0 -611
  998. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/doc/model_hooks.rdoc +0 -262
  999. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/doc/model_plugins.rdoc +0 -270
  1000. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/doc/mssql_stored_procedures.rdoc +0 -43
  1001. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/doc/object_model.rdoc +0 -573
  1002. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/doc/opening_databases.rdoc +0 -489
  1003. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/doc/postgresql.rdoc +0 -326
  1004. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/doc/prepared_statements.rdoc +0 -139
  1005. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/doc/querying.rdoc +0 -1017
  1006. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/doc/reflection.rdoc +0 -121
  1007. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/doc/release_notes/1.0.txt +0 -38
  1008. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/doc/release_notes/1.1.txt +0 -143
  1009. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/doc/release_notes/1.3.txt +0 -101
  1010. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/doc/release_notes/1.4.0.txt +0 -53
  1011. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/doc/release_notes/1.5.0.txt +0 -155
  1012. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/doc/release_notes/2.0.0.txt +0 -298
  1013. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/doc/release_notes/2.1.0.txt +0 -271
  1014. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/doc/release_notes/2.10.0.txt +0 -328
  1015. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/doc/release_notes/2.11.0.txt +0 -215
  1016. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/doc/release_notes/2.12.0.txt +0 -534
  1017. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/doc/release_notes/2.2.0.txt +0 -253
  1018. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/doc/release_notes/2.3.0.txt +0 -88
  1019. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/doc/release_notes/2.4.0.txt +0 -106
  1020. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/doc/release_notes/2.5.0.txt +0 -137
  1021. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/doc/release_notes/2.6.0.txt +0 -157
  1022. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/doc/release_notes/2.7.0.txt +0 -166
  1023. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/doc/release_notes/2.8.0.txt +0 -171
  1024. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/doc/release_notes/2.9.0.txt +0 -97
  1025. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/doc/release_notes/3.0.0.txt +0 -221
  1026. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/doc/release_notes/3.1.0.txt +0 -406
  1027. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/doc/release_notes/3.10.0.txt +0 -286
  1028. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/doc/release_notes/3.11.0.txt +0 -254
  1029. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/doc/release_notes/3.12.0.txt +0 -304
  1030. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/doc/release_notes/3.13.0.txt +0 -210
  1031. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/doc/release_notes/3.14.0.txt +0 -118
  1032. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/doc/release_notes/3.15.0.txt +0 -78
  1033. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/doc/release_notes/3.16.0.txt +0 -45
  1034. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/doc/release_notes/3.17.0.txt +0 -58
  1035. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/doc/release_notes/3.18.0.txt +0 -120
  1036. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/doc/release_notes/3.19.0.txt +0 -67
  1037. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/doc/release_notes/3.2.0.txt +0 -268
  1038. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/doc/release_notes/3.20.0.txt +0 -41
  1039. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/doc/release_notes/3.21.0.txt +0 -87
  1040. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/doc/release_notes/3.22.0.txt +0 -39
  1041. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/doc/release_notes/3.23.0.txt +0 -172
  1042. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/doc/release_notes/3.24.0.txt +0 -420
  1043. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/doc/release_notes/3.25.0.txt +0 -88
  1044. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/doc/release_notes/3.26.0.txt +0 -88
  1045. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/doc/release_notes/3.27.0.txt +0 -82
  1046. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/doc/release_notes/3.28.0.txt +0 -304
  1047. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/doc/release_notes/3.29.0.txt +0 -459
  1048. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/doc/release_notes/3.3.0.txt +0 -192
  1049. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/doc/release_notes/3.30.0.txt +0 -135
  1050. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/doc/release_notes/3.31.0.txt +0 -146
  1051. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/doc/release_notes/3.32.0.txt +0 -202
  1052. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/doc/release_notes/3.33.0.txt +0 -157
  1053. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/doc/release_notes/3.34.0.txt +0 -671
  1054. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/doc/release_notes/3.35.0.txt +0 -144
  1055. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/doc/release_notes/3.36.0.txt +0 -245
  1056. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/doc/release_notes/3.37.0.txt +0 -338
  1057. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/doc/release_notes/3.38.0.txt +0 -234
  1058. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/doc/release_notes/3.39.0.txt +0 -237
  1059. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/doc/release_notes/3.4.0.txt +0 -325
  1060. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/doc/release_notes/3.40.0.txt +0 -73
  1061. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/doc/release_notes/3.41.0.txt +0 -155
  1062. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/doc/release_notes/3.42.0.txt +0 -74
  1063. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/doc/release_notes/3.43.0.txt +0 -105
  1064. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/doc/release_notes/3.44.0.txt +0 -152
  1065. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/doc/release_notes/3.45.0.txt +0 -179
  1066. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/doc/release_notes/3.46.0.txt +0 -122
  1067. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/doc/release_notes/3.47.0.txt +0 -270
  1068. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/doc/release_notes/3.48.0.txt +0 -477
  1069. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/doc/release_notes/3.5.0.txt +0 -510
  1070. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/doc/release_notes/3.6.0.txt +0 -366
  1071. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/doc/release_notes/3.7.0.txt +0 -179
  1072. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/doc/release_notes/3.8.0.txt +0 -151
  1073. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/doc/release_notes/3.9.0.txt +0 -233
  1074. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/doc/release_notes/4.0.0.txt +0 -262
  1075. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/doc/release_notes/4.1.0.txt +0 -85
  1076. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/doc/release_notes/4.10.0.txt +0 -226
  1077. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/doc/release_notes/4.11.0.txt +0 -147
  1078. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/doc/release_notes/4.12.0.txt +0 -105
  1079. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/doc/release_notes/4.13.0.txt +0 -169
  1080. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/doc/release_notes/4.14.0.txt +0 -68
  1081. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/doc/release_notes/4.15.0.txt +0 -56
  1082. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/doc/release_notes/4.2.0.txt +0 -129
  1083. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/doc/release_notes/4.3.0.txt +0 -40
  1084. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/doc/release_notes/4.4.0.txt +0 -92
  1085. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/doc/release_notes/4.5.0.txt +0 -34
  1086. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/doc/release_notes/4.6.0.txt +0 -30
  1087. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/doc/release_notes/4.7.0.txt +0 -103
  1088. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/doc/release_notes/4.8.0.txt +0 -175
  1089. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/doc/release_notes/4.9.0.txt +0 -190
  1090. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/doc/schema_modification.rdoc +0 -654
  1091. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/doc/security.rdoc +0 -370
  1092. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/doc/sharding.rdoc +0 -245
  1093. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/doc/sql.rdoc +0 -589
  1094. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/doc/testing.rdoc +0 -176
  1095. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/doc/thread_safety.rdoc +0 -17
  1096. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/doc/transactions.rdoc +0 -168
  1097. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/doc/validations.rdoc +0 -540
  1098. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/doc/virtual_rows.rdoc +0 -272
  1099. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel.rb +0 -1
  1100. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/adapters/ado.rb +0 -151
  1101. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/adapters/ado/access.rb +0 -335
  1102. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/adapters/ado/mssql.rb +0 -69
  1103. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/adapters/amalgalite.rb +0 -179
  1104. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/adapters/cubrid.rb +0 -143
  1105. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/adapters/db2.rb +0 -229
  1106. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/adapters/dbi.rb +0 -101
  1107. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/adapters/do.rb +0 -156
  1108. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/adapters/do/mysql.rb +0 -64
  1109. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/adapters/do/postgres.rb +0 -42
  1110. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/adapters/do/sqlite3.rb +0 -40
  1111. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/adapters/fdbsql.rb +0 -285
  1112. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/adapters/firebird.rb +0 -104
  1113. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/adapters/ibmdb.rb +0 -476
  1114. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/adapters/informix.rb +0 -67
  1115. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/adapters/jdbc.rb +0 -794
  1116. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/adapters/jdbc/as400.rb +0 -82
  1117. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/adapters/jdbc/cubrid.rb +0 -62
  1118. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/adapters/jdbc/db2.rb +0 -91
  1119. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/adapters/jdbc/derby.rb +0 -312
  1120. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/adapters/jdbc/fdbsql.rb +0 -65
  1121. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/adapters/jdbc/firebirdsql.rb +0 -34
  1122. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/adapters/jdbc/h2.rb +0 -227
  1123. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/adapters/jdbc/hsqldb.rb +0 -231
  1124. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/adapters/jdbc/informix-sqli.rb +0 -31
  1125. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/adapters/jdbc/jdbcprogress.rb +0 -31
  1126. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/adapters/jdbc/jtds.rb +0 -45
  1127. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/adapters/jdbc/mssql.rb +0 -47
  1128. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/adapters/jdbc/mysql.rb +0 -90
  1129. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/adapters/jdbc/oracle.rb +0 -140
  1130. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/adapters/jdbc/postgresql.rb +0 -215
  1131. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/adapters/jdbc/sqlanywhere.rb +0 -82
  1132. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/adapters/jdbc/sqlite.rb +0 -82
  1133. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/adapters/jdbc/sqlserver.rb +0 -61
  1134. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/adapters/jdbc/transactions.rb +0 -109
  1135. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/adapters/mock.rb +0 -391
  1136. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/adapters/mysql.rb +0 -372
  1137. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/adapters/mysql2.rb +0 -200
  1138. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/adapters/odbc.rb +0 -149
  1139. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/adapters/odbc/db2.rb +0 -9
  1140. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/adapters/odbc/mssql.rb +0 -61
  1141. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/adapters/odbc/progress.rb +0 -8
  1142. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/adapters/openbase.rb +0 -53
  1143. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/adapters/oracle.rb +0 -459
  1144. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/adapters/postgres.rb +0 -877
  1145. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/adapters/shared/access.rb +0 -299
  1146. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/adapters/shared/cubrid.rb +0 -243
  1147. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/adapters/shared/db2.rb +0 -403
  1148. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/adapters/shared/fdbsql.rb +0 -550
  1149. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/adapters/shared/firebird.rb +0 -245
  1150. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/adapters/shared/informix.rb +0 -52
  1151. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/adapters/shared/mssql.rb +0 -1037
  1152. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/adapters/shared/mysql.rb +0 -984
  1153. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/adapters/shared/mysql_prepared_statements.rb +0 -182
  1154. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/adapters/shared/oracle.rb +0 -522
  1155. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/adapters/shared/postgres.rb +0 -1617
  1156. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/adapters/shared/progress.rb +0 -38
  1157. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/adapters/shared/sqlanywhere.rb +0 -470
  1158. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/adapters/shared/sqlite.rb +0 -729
  1159. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/adapters/sqlanywhere.rb +0 -177
  1160. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/adapters/sqlite.rb +0 -413
  1161. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/adapters/swift.rb +0 -150
  1162. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/adapters/swift/mysql.rb +0 -47
  1163. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/adapters/swift/postgres.rb +0 -45
  1164. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/adapters/swift/sqlite.rb +0 -35
  1165. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/adapters/tinytds.rb +0 -282
  1166. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/adapters/utils/emulate_offset_with_reverse_and_count.rb +0 -75
  1167. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/adapters/utils/emulate_offset_with_row_number.rb +0 -62
  1168. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/adapters/utils/pg_types.rb +0 -68
  1169. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/adapters/utils/replace.rb +0 -36
  1170. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/adapters/utils/split_alter_table.rb +0 -44
  1171. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/adapters/utils/stored_procedures.rb +0 -74
  1172. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/ast_transformer.rb +0 -200
  1173. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/connection_pool.rb +0 -110
  1174. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/connection_pool/sharded_single.rb +0 -98
  1175. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/connection_pool/sharded_threaded.rb +0 -265
  1176. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/connection_pool/single.rb +0 -38
  1177. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/connection_pool/threaded.rb +0 -198
  1178. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/core.rb +0 -394
  1179. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/database.rb +0 -20
  1180. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/database/connecting.rb +0 -318
  1181. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/database/dataset.rb +0 -69
  1182. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/database/dataset_defaults.rb +0 -175
  1183. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/database/features.rb +0 -134
  1184. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/database/logging.rb +0 -73
  1185. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/database/misc.rb +0 -534
  1186. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/database/query.rb +0 -329
  1187. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/database/schema_generator.rb +0 -525
  1188. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/database/schema_methods.rb +0 -964
  1189. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/database/transactions.rb +0 -353
  1190. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/dataset.rb +0 -40
  1191. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/dataset/actions.rb +0 -1045
  1192. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/dataset/features.rb +0 -203
  1193. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/dataset/graph.rb +0 -272
  1194. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/dataset/misc.rb +0 -279
  1195. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/dataset/mutation.rb +0 -109
  1196. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/dataset/placeholder_literalizer.rb +0 -179
  1197. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/dataset/prepared_statements.rb +0 -283
  1198. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/dataset/query.rb +0 -1136
  1199. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/dataset/sql.rb +0 -1555
  1200. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/deprecated.rb +0 -58
  1201. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/exceptions.rb +0 -77
  1202. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/extensions/_pretty_table.rb +0 -84
  1203. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/extensions/arbitrary_servers.rb +0 -110
  1204. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/extensions/blank.rb +0 -47
  1205. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/extensions/columns_introspection.rb +0 -83
  1206. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/extensions/connection_validator.rb +0 -110
  1207. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/extensions/constraint_validations.rb +0 -455
  1208. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/extensions/core_extensions.rb +0 -230
  1209. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/extensions/core_refinements.rb +0 -221
  1210. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/extensions/current_datetime_timestamp.rb +0 -58
  1211. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/extensions/dataset_source_alias.rb +0 -91
  1212. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/extensions/date_arithmetic.rb +0 -192
  1213. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/extensions/empty_array_ignore_nulls.rb +0 -34
  1214. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/extensions/error_sql.rb +0 -72
  1215. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/extensions/eval_inspect.rb +0 -182
  1216. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/extensions/filter_having.rb +0 -59
  1217. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/extensions/from_block.rb +0 -32
  1218. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/extensions/graph_each.rb +0 -75
  1219. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/extensions/hash_aliases.rb +0 -45
  1220. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/extensions/inflector.rb +0 -246
  1221. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/extensions/looser_typecasting.rb +0 -44
  1222. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/extensions/meta_def.rb +0 -31
  1223. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/extensions/migration.rb +0 -736
  1224. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/extensions/mssql_emulate_lateral_with_apply.rb +0 -80
  1225. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/extensions/named_timezones.rb +0 -99
  1226. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/extensions/null_dataset.rb +0 -105
  1227. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/extensions/pagination.rb +0 -121
  1228. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/extensions/pg_array.rb +0 -606
  1229. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/extensions/pg_array_ops.rb +0 -324
  1230. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/extensions/pg_enum.rb +0 -136
  1231. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/extensions/pg_hstore.rb +0 -357
  1232. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/extensions/pg_hstore_ops.rb +0 -349
  1233. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/extensions/pg_inet.rb +0 -118
  1234. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/extensions/pg_interval.rb +0 -198
  1235. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/extensions/pg_json.rb +0 -365
  1236. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/extensions/pg_json_ops.rb +0 -434
  1237. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/extensions/pg_loose_count.rb +0 -33
  1238. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/extensions/pg_range.rb +0 -546
  1239. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/extensions/pg_range_ops.rb +0 -162
  1240. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/extensions/pg_row.rb +0 -615
  1241. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/extensions/pg_row_ops.rb +0 -194
  1242. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/extensions/pg_static_cache_updater.rb +0 -140
  1243. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/extensions/pretty_table.rb +0 -36
  1244. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/extensions/query.rb +0 -78
  1245. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/extensions/query_literals.rb +0 -80
  1246. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/extensions/round_timestamps.rb +0 -52
  1247. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/extensions/ruby18_symbol_extensions.rb +0 -22
  1248. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/extensions/schema_caching.rb +0 -75
  1249. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/extensions/schema_dumper.rb +0 -476
  1250. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/extensions/select_remove.rb +0 -48
  1251. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/extensions/sequel_3_dataset_methods.rb +0 -118
  1252. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/extensions/server_block.rb +0 -149
  1253. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/extensions/set_overrides.rb +0 -72
  1254. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/extensions/split_array_nil.rb +0 -66
  1255. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/extensions/sql_expr.rb +0 -20
  1256. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/extensions/string_date_time.rb +0 -50
  1257. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/extensions/thread_local_timezones.rb +0 -55
  1258. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/extensions/to_dot.rb +0 -154
  1259. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/model.rb +0 -175
  1260. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/model/associations.rb +0 -3171
  1261. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/model/base.rb +0 -2306
  1262. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/model/dataset_module.rb +0 -30
  1263. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/model/default_inflections.rb +0 -45
  1264. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/model/errors.rb +0 -58
  1265. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/model/exceptions.rb +0 -46
  1266. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/model/inflections.rb +0 -162
  1267. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/model/plugins.rb +0 -49
  1268. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/no_core_ext.rb +0 -1
  1269. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/plugins/active_model.rb +0 -99
  1270. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/plugins/after_initialize.rb +0 -37
  1271. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/plugins/association_autoreloading.rb +0 -7
  1272. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/plugins/association_dependencies.rb +0 -97
  1273. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/plugins/association_pks.rb +0 -167
  1274. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/plugins/association_proxies.rb +0 -105
  1275. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/plugins/auto_validations.rb +0 -161
  1276. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/plugins/blacklist_security.rb +0 -93
  1277. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/plugins/boolean_readers.rb +0 -56
  1278. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/plugins/caching.rb +0 -153
  1279. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/plugins/class_table_inheritance.rb +0 -292
  1280. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/plugins/column_select.rb +0 -57
  1281. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/plugins/composition.rb +0 -187
  1282. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/plugins/constraint_validations.rb +0 -229
  1283. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/plugins/dataset_associations.rb +0 -107
  1284. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/plugins/defaults_setter.rb +0 -69
  1285. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/plugins/dirty.rb +0 -231
  1286. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/plugins/eager_each.rb +0 -64
  1287. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/plugins/error_splitter.rb +0 -54
  1288. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/plugins/force_encoding.rb +0 -81
  1289. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/plugins/hook_class_methods.rb +0 -125
  1290. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/plugins/input_transformer.rb +0 -79
  1291. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/plugins/insert_returning_select.rb +0 -70
  1292. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/plugins/instance_filters.rb +0 -131
  1293. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/plugins/instance_hooks.rb +0 -96
  1294. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/plugins/json_serializer.rb +0 -352
  1295. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/plugins/lazy_attributes.rb +0 -117
  1296. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/plugins/list.rb +0 -189
  1297. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/plugins/many_through_many.rb +0 -317
  1298. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/plugins/many_to_one_pk_lookup.rb +0 -7
  1299. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/plugins/modification_detection.rb +0 -90
  1300. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/plugins/mssql_optimistic_locking.rb +0 -92
  1301. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/plugins/nested_attributes.rb +0 -323
  1302. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/plugins/optimistic_locking.rb +0 -83
  1303. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/plugins/pg_array_associations.rb +0 -528
  1304. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/plugins/pg_row.rb +0 -123
  1305. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/plugins/pg_typecast_on_load.rb +0 -78
  1306. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/plugins/prepared_statements.rb +0 -205
  1307. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/plugins/prepared_statements_associations.rb +0 -116
  1308. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/plugins/prepared_statements_safe.rb +0 -73
  1309. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/plugins/prepared_statements_with_pk.rb +0 -59
  1310. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/plugins/rcte_tree.rb +0 -343
  1311. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/plugins/schema.rb +0 -80
  1312. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/plugins/scissors.rb +0 -33
  1313. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/plugins/serialization.rb +0 -235
  1314. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/plugins/serialization_modification_detection.rb +0 -84
  1315. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/plugins/sharding.rb +0 -117
  1316. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/plugins/single_table_inheritance.rb +0 -230
  1317. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/plugins/skip_create_refresh.rb +0 -35
  1318. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/plugins/split_values.rb +0 -64
  1319. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/plugins/static_cache.rb +0 -215
  1320. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/plugins/string_stripper.rb +0 -57
  1321. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/plugins/subclasses.rb +0 -61
  1322. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/plugins/table_select.rb +0 -41
  1323. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/plugins/tactical_eager_loading.rb +0 -85
  1324. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/plugins/timestamps.rb +0 -95
  1325. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/plugins/touch.rb +0 -140
  1326. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/plugins/tree.rb +0 -156
  1327. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/plugins/typecast_on_load.rb +0 -80
  1328. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/plugins/unlimited_update.rb +0 -31
  1329. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/plugins/update_or_create.rb +0 -60
  1330. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/plugins/update_primary_key.rb +0 -70
  1331. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/plugins/validation_class_methods.rb +0 -439
  1332. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/plugins/validation_helpers.rb +0 -291
  1333. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/plugins/xml_serializer.rb +0 -410
  1334. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/sql.rb +0 -1865
  1335. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/timezones.rb +0 -221
  1336. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/lib/sequel/version.rb +0 -18
  1337. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/adapters/db2_spec.rb +0 -148
  1338. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/adapters/fdbsql_spec.rb +0 -429
  1339. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/adapters/firebird_spec.rb +0 -417
  1340. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/adapters/informix_spec.rb +0 -100
  1341. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/adapters/mssql_spec.rb +0 -722
  1342. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/adapters/mysql_spec.rb +0 -1304
  1343. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/adapters/oracle_spec.rb +0 -315
  1344. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/adapters/postgres_spec.rb +0 -3537
  1345. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/adapters/spec_helper.rb +0 -76
  1346. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/adapters/sqlanywhere_spec.rb +0 -170
  1347. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/adapters/sqlite_spec.rb +0 -650
  1348. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/bin_spec.rb +0 -256
  1349. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/core/connection_pool_spec.rb +0 -982
  1350. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/core/database_spec.rb +0 -2487
  1351. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/core/dataset_spec.rb +0 -4970
  1352. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/core/deprecated_spec.rb +0 -70
  1353. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/core/expression_filters_spec.rb +0 -1197
  1354. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/core/mock_adapter_spec.rb +0 -462
  1355. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/core/object_graph_spec.rb +0 -303
  1356. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/core/placeholder_literalizer_spec.rb +0 -163
  1357. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/core/schema_generator_spec.rb +0 -179
  1358. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/core/schema_spec.rb +0 -1610
  1359. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/core/spec_helper.rb +0 -49
  1360. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/core/version_spec.rb +0 -7
  1361. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/core_extensions_spec.rb +0 -695
  1362. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/extensions/active_model_spec.rb +0 -123
  1363. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/extensions/after_initialize_spec.rb +0 -24
  1364. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/extensions/arbitrary_servers_spec.rb +0 -109
  1365. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/extensions/association_dependencies_spec.rb +0 -117
  1366. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/extensions/association_pks_spec.rb +0 -281
  1367. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/extensions/association_proxies_spec.rb +0 -86
  1368. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/extensions/auto_validations_spec.rb +0 -158
  1369. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/extensions/blacklist_security_spec.rb +0 -87
  1370. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/extensions/blank_spec.rb +0 -69
  1371. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/extensions/boolean_readers_spec.rb +0 -93
  1372. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/extensions/caching_spec.rb +0 -270
  1373. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/extensions/class_table_inheritance_spec.rb +0 -274
  1374. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/extensions/column_select_spec.rb +0 -108
  1375. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/extensions/columns_introspection_spec.rb +0 -91
  1376. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/extensions/composition_spec.rb +0 -242
  1377. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/extensions/connection_validator_spec.rb +0 -118
  1378. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/extensions/constraint_validations_plugin_spec.rb +0 -274
  1379. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/extensions/constraint_validations_spec.rb +0 -325
  1380. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/extensions/core_refinements_spec.rb +0 -519
  1381. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/extensions/current_datetime_timestamp_spec.rb +0 -27
  1382. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/extensions/dataset_associations_spec.rb +0 -311
  1383. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/extensions/dataset_source_alias_spec.rb +0 -51
  1384. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/extensions/date_arithmetic_spec.rb +0 -157
  1385. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/extensions/defaults_setter_spec.rb +0 -101
  1386. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/extensions/dirty_spec.rb +0 -180
  1387. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/extensions/eager_each_spec.rb +0 -42
  1388. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/extensions/empty_array_ignore_nulls_spec.rb +0 -24
  1389. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/extensions/error_splitter_spec.rb +0 -18
  1390. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/extensions/error_sql_spec.rb +0 -20
  1391. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/extensions/eval_inspect_spec.rb +0 -73
  1392. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/extensions/filter_having_spec.rb +0 -40
  1393. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/extensions/force_encoding_spec.rb +0 -114
  1394. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/extensions/from_block_spec.rb +0 -21
  1395. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/extensions/graph_each_spec.rb +0 -109
  1396. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/extensions/hash_aliases_spec.rb +0 -24
  1397. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/extensions/hook_class_methods_spec.rb +0 -416
  1398. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/extensions/inflector_spec.rb +0 -183
  1399. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/extensions/input_transformer_spec.rb +0 -54
  1400. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/extensions/insert_returning_select_spec.rb +0 -46
  1401. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/extensions/instance_filters_spec.rb +0 -79
  1402. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/extensions/instance_hooks_spec.rb +0 -276
  1403. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/extensions/json_serializer_spec.rb +0 -267
  1404. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/extensions/lazy_attributes_spec.rb +0 -170
  1405. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/extensions/list_spec.rb +0 -265
  1406. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/extensions/looser_typecasting_spec.rb +0 -43
  1407. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/extensions/many_through_many_spec.rb +0 -2159
  1408. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/extensions/meta_def_spec.rb +0 -21
  1409. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/extensions/migration_spec.rb +0 -709
  1410. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/extensions/modification_detection_spec.rb +0 -80
  1411. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/extensions/mssql_optimistic_locking_spec.rb +0 -91
  1412. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/extensions/named_timezones_spec.rb +0 -108
  1413. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/extensions/nested_attributes_spec.rb +0 -697
  1414. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/extensions/null_dataset_spec.rb +0 -85
  1415. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/extensions/optimistic_locking_spec.rb +0 -128
  1416. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/extensions/pagination_spec.rb +0 -118
  1417. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/extensions/pg_array_associations_spec.rb +0 -736
  1418. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/extensions/pg_array_ops_spec.rb +0 -143
  1419. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/extensions/pg_array_spec.rb +0 -390
  1420. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/extensions/pg_enum_spec.rb +0 -64
  1421. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/extensions/pg_hstore_ops_spec.rb +0 -236
  1422. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/extensions/pg_hstore_spec.rb +0 -206
  1423. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/extensions/pg_inet_spec.rb +0 -52
  1424. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/extensions/pg_interval_spec.rb +0 -76
  1425. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/extensions/pg_json_ops_spec.rb +0 -226
  1426. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/extensions/pg_json_spec.rb +0 -218
  1427. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/extensions/pg_loose_count_spec.rb +0 -17
  1428. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/extensions/pg_range_ops_spec.rb +0 -58
  1429. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/extensions/pg_range_spec.rb +0 -404
  1430. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/extensions/pg_row_ops_spec.rb +0 -60
  1431. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/extensions/pg_row_plugin_spec.rb +0 -62
  1432. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/extensions/pg_row_spec.rb +0 -360
  1433. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/extensions/pg_static_cache_updater_spec.rb +0 -92
  1434. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/extensions/pg_typecast_on_load_spec.rb +0 -63
  1435. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/extensions/prepared_statements_associations_spec.rb +0 -151
  1436. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/extensions/prepared_statements_safe_spec.rb +0 -61
  1437. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/extensions/prepared_statements_spec.rb +0 -103
  1438. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/extensions/prepared_statements_with_pk_spec.rb +0 -31
  1439. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/extensions/pretty_table_spec.rb +0 -92
  1440. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/extensions/query_literals_spec.rb +0 -167
  1441. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/extensions/query_spec.rb +0 -102
  1442. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/extensions/rcte_tree_spec.rb +0 -387
  1443. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/extensions/round_timestamps_spec.rb +0 -43
  1444. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/extensions/schema_caching_spec.rb +0 -41
  1445. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/extensions/schema_dumper_spec.rb +0 -788
  1446. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/extensions/schema_spec.rb +0 -113
  1447. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/extensions/scissors_spec.rb +0 -26
  1448. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/extensions/select_remove_spec.rb +0 -38
  1449. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/extensions/sequel_3_dataset_methods_spec.rb +0 -101
  1450. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/extensions/serialization_modification_detection_spec.rb +0 -98
  1451. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/extensions/serialization_spec.rb +0 -340
  1452. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/extensions/server_block_spec.rb +0 -90
  1453. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/extensions/set_overrides_spec.rb +0 -61
  1454. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/extensions/sharding_spec.rb +0 -198
  1455. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/extensions/shared_caching_spec.rb +0 -175
  1456. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/extensions/single_table_inheritance_spec.rb +0 -276
  1457. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/extensions/skip_create_refresh_spec.rb +0 -17
  1458. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/extensions/spec_helper.rb +0 -96
  1459. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/extensions/split_array_nil_spec.rb +0 -24
  1460. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/extensions/split_values_spec.rb +0 -22
  1461. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/extensions/sql_expr_spec.rb +0 -60
  1462. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/extensions/static_cache_spec.rb +0 -355
  1463. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/extensions/string_date_time_spec.rb +0 -95
  1464. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/extensions/string_stripper_spec.rb +0 -68
  1465. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/extensions/subclasses_spec.rb +0 -66
  1466. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/extensions/table_select_spec.rb +0 -71
  1467. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/extensions/tactical_eager_loading_spec.rb +0 -82
  1468. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/extensions/thread_local_timezones_spec.rb +0 -67
  1469. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/extensions/timestamps_spec.rb +0 -175
  1470. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/extensions/to_dot_spec.rb +0 -154
  1471. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/extensions/touch_spec.rb +0 -203
  1472. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/extensions/tree_spec.rb +0 -270
  1473. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/extensions/typecast_on_load_spec.rb +0 -80
  1474. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/extensions/unlimited_update_spec.rb +0 -20
  1475. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/extensions/update_or_create_spec.rb +0 -81
  1476. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/extensions/update_primary_key_spec.rb +0 -100
  1477. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/extensions/validation_class_methods_spec.rb +0 -1030
  1478. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/extensions/validation_helpers_spec.rb +0 -520
  1479. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/extensions/xml_serializer_spec.rb +0 -207
  1480. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/files/bad_down_migration/001_create_alt_basic.rb +0 -4
  1481. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/files/bad_down_migration/002_create_alt_advanced.rb +0 -4
  1482. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/files/bad_timestamped_migrations/1273253849_create_sessions.rb +0 -9
  1483. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/files/bad_timestamped_migrations/1273253851_create_nodes.rb +0 -9
  1484. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/files/bad_timestamped_migrations/1273253853_3_create_users.rb +0 -3
  1485. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/files/bad_up_migration/001_create_alt_basic.rb +0 -4
  1486. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/files/bad_up_migration/002_create_alt_advanced.rb +0 -3
  1487. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/files/convert_to_timestamp_migrations/001_create_sessions.rb +0 -9
  1488. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/files/convert_to_timestamp_migrations/002_create_nodes.rb +0 -9
  1489. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/files/convert_to_timestamp_migrations/003_3_create_users.rb +0 -4
  1490. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/files/convert_to_timestamp_migrations/1273253850_create_artists.rb +0 -9
  1491. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/files/convert_to_timestamp_migrations/1273253852_create_albums.rb +0 -9
  1492. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/files/duplicate_integer_migrations/001_create_alt_advanced.rb +0 -4
  1493. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/files/duplicate_integer_migrations/001_create_alt_basic.rb +0 -4
  1494. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/files/duplicate_timestamped_migrations/1273253849_create_sessions.rb +0 -9
  1495. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/files/duplicate_timestamped_migrations/1273253853_create_nodes.rb +0 -9
  1496. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/files/duplicate_timestamped_migrations/1273253853_create_users.rb +0 -4
  1497. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/files/integer_migrations/001_create_sessions.rb +0 -9
  1498. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/files/integer_migrations/002_create_nodes.rb +0 -9
  1499. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/files/integer_migrations/003_3_create_users.rb +0 -4
  1500. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/files/interleaved_timestamped_migrations/1273253849_create_sessions.rb +0 -9
  1501. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/files/interleaved_timestamped_migrations/1273253850_create_artists.rb +0 -9
  1502. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/files/interleaved_timestamped_migrations/1273253851_create_nodes.rb +0 -9
  1503. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/files/interleaved_timestamped_migrations/1273253852_create_albums.rb +0 -9
  1504. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/files/interleaved_timestamped_migrations/1273253853_3_create_users.rb +0 -4
  1505. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/files/missing_integer_migrations/001_create_alt_basic.rb +0 -4
  1506. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/files/missing_integer_migrations/003_create_alt_advanced.rb +0 -4
  1507. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/files/missing_timestamped_migrations/1273253849_create_sessions.rb +0 -9
  1508. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/files/missing_timestamped_migrations/1273253853_3_create_users.rb +0 -4
  1509. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/files/reversible_migrations/001_reversible.rb +0 -5
  1510. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/files/reversible_migrations/002_reversible.rb +0 -5
  1511. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/files/reversible_migrations/003_reversible.rb +0 -5
  1512. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/files/reversible_migrations/004_reversible.rb +0 -5
  1513. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/files/reversible_migrations/005_reversible.rb +0 -10
  1514. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/files/timestamped_migrations/1273253849_create_sessions.rb +0 -9
  1515. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/files/timestamped_migrations/1273253851_create_nodes.rb +0 -9
  1516. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/files/timestamped_migrations/1273253853_3_create_users.rb +0 -4
  1517. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/files/transaction_specified_migrations/001_create_alt_basic.rb +0 -4
  1518. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/files/transaction_specified_migrations/002_create_basic.rb +0 -4
  1519. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/files/transaction_unspecified_migrations/001_create_alt_basic.rb +0 -3
  1520. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/files/transaction_unspecified_migrations/002_create_basic.rb +0 -3
  1521. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/files/uppercase_timestamped_migrations/1273253849_CREATE_SESSIONS.RB +0 -9
  1522. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/files/uppercase_timestamped_migrations/1273253851_CREATE_NODES.RB +0 -9
  1523. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/files/uppercase_timestamped_migrations/1273253853_3_CREATE_USERS.RB +0 -4
  1524. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/integration/associations_test.rb +0 -2453
  1525. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/integration/database_test.rb +0 -113
  1526. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/integration/dataset_test.rb +0 -1798
  1527. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/integration/eager_loader_test.rb +0 -687
  1528. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/integration/migrator_test.rb +0 -240
  1529. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/integration/model_test.rb +0 -226
  1530. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/integration/plugin_test.rb +0 -2162
  1531. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/integration/prepared_statement_test.rb +0 -426
  1532. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/integration/schema_test.rb +0 -801
  1533. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/integration/spec_helper.rb +0 -111
  1534. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/integration/timezone_test.rb +0 -86
  1535. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/integration/transaction_test.rb +0 -374
  1536. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/integration/type_test.rb +0 -133
  1537. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/model/association_reflection_spec.rb +0 -500
  1538. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/model/associations_spec.rb +0 -4316
  1539. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/model/base_spec.rb +0 -746
  1540. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/model/class_dataset_methods_spec.rb +0 -145
  1541. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/model/dataset_methods_spec.rb +0 -149
  1542. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/model/eager_loading_spec.rb +0 -2080
  1543. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/model/hooks_spec.rb +0 -536
  1544. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/model/inflector_spec.rb +0 -26
  1545. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/model/model_spec.rb +0 -992
  1546. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/model/plugins_spec.rb +0 -299
  1547. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/model/record_spec.rb +0 -2053
  1548. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/model/spec_helper.rb +0 -64
  1549. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/model/validations_spec.rb +0 -191
  1550. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/rspec_helper.rb +0 -22
  1551. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/sequel_coverage.rb +0 -15
  1552. data/vendor/bundle/ruby/1.9.1/gems/sequel-4.15.0/spec/spec_config.rb +0 -2
  1553. data/vendor/bundle/ruby/1.9.1/gems/slop-3.5.0/CHANGES.md +0 -303
  1554. data/vendor/bundle/ruby/1.9.1/gems/slop-3.5.0/Gemfile +0 -3
  1555. data/vendor/bundle/ruby/1.9.1/gems/slop-3.5.0/LICENSE +0 -20
  1556. data/vendor/bundle/ruby/1.9.1/gems/slop-3.5.0/README.md +0 -182
  1557. data/vendor/bundle/ruby/1.9.1/gems/slop-3.5.0/Rakefile +0 -29
  1558. data/vendor/bundle/ruby/1.9.1/gems/slop-3.5.0/lib/slop.rb +0 -687
  1559. data/vendor/bundle/ruby/1.9.1/gems/slop-3.5.0/lib/slop/commands.rb +0 -196
  1560. data/vendor/bundle/ruby/1.9.1/gems/slop-3.5.0/lib/slop/option.rb +0 -209
  1561. data/vendor/bundle/ruby/1.9.1/gems/slop-3.5.0/slop.gemspec +0 -17
  1562. data/vendor/bundle/ruby/1.9.1/gems/slop-3.5.0/test/commands_test.rb +0 -26
  1563. data/vendor/bundle/ruby/1.9.1/gems/slop-3.5.0/test/helper.rb +0 -12
  1564. data/vendor/bundle/ruby/1.9.1/gems/slop-3.5.0/test/option_test.rb +0 -138
  1565. data/vendor/bundle/ruby/1.9.1/gems/slop-3.5.0/test/slop_test.rb +0 -518
  1566. data/vendor/bundle/ruby/1.9.1/gems/threadify-1.3.0/README +0 -151
  1567. data/vendor/bundle/ruby/1.9.1/gems/threadify-1.3.0/README.erb +0 -43
  1568. data/vendor/bundle/ruby/1.9.1/gems/threadify-1.3.0/lib/threadify.rb +0 -176
  1569. data/vendor/bundle/ruby/1.9.1/gems/threadify-1.3.0/rakefile +0 -222
  1570. data/vendor/bundle/ruby/1.9.1/gems/threadify-1.3.0/sample/a.rb +0 -37
  1571. data/vendor/bundle/ruby/1.9.1/gems/threadify-1.3.0/sample/b.rb +0 -41
  1572. data/vendor/bundle/ruby/1.9.1/gems/threadify-1.3.0/threadify.gemspec +0 -26
  1573. data/vendor/bundle/ruby/1.9.1/specifications/amalgalite-1.3.0.gemspec +0 -52
  1574. data/vendor/bundle/ruby/1.9.1/specifications/arrayfields-4.7.4.gemspec +0 -16
  1575. data/vendor/bundle/ruby/1.9.1/specifications/chronic-0.10.2.gemspec +0 -42
  1576. data/vendor/bundle/ruby/1.9.1/specifications/coderay-1.1.0.gemspec +0 -23
  1577. data/vendor/bundle/ruby/1.9.1/specifications/coerce-0.0.6.gemspec +0 -30
  1578. data/vendor/bundle/ruby/1.9.1/specifications/daemons-1.1.9.gemspec +0 -19
  1579. data/vendor/bundle/ruby/1.9.1/specifications/fastercsv-1.5.5.gemspec +0 -20
  1580. data/vendor/bundle/ruby/1.9.1/specifications/fattr-2.2.2.gemspec +0 -18
  1581. data/vendor/bundle/ruby/1.9.1/specifications/flowdock-0.5.0.gemspec +0 -51
  1582. data/vendor/bundle/ruby/1.9.1/specifications/highline-1.6.21.gemspec +0 -21
  1583. data/vendor/bundle/ruby/1.9.1/specifications/httparty-0.13.1.gemspec +0 -35
  1584. data/vendor/bundle/ruby/1.9.1/specifications/json-1.8.1.gemspec +0 -36
  1585. data/vendor/bundle/ruby/1.9.1/specifications/main-6.0.0.gemspec +0 -39
  1586. data/vendor/bundle/ruby/1.9.1/specifications/main-6.1.0.gemspec +0 -39
  1587. data/vendor/bundle/ruby/1.9.1/specifications/map-6.5.5.gemspec +0 -18
  1588. data/vendor/bundle/ruby/1.9.1/specifications/method_source-0.8.2.gemspec +0 -31
  1589. data/vendor/bundle/ruby/1.9.1/specifications/multi_json-1.10.1.gemspec +0 -30
  1590. data/vendor/bundle/ruby/1.9.1/specifications/multi_xml-0.5.5.gemspec +0 -30
  1591. data/vendor/bundle/ruby/1.9.1/specifications/pry-0.9.12.6.gemspec +0 -51
  1592. data/vendor/bundle/ruby/1.9.1/specifications/sekrets-1.7.0.gemspec +0 -43
  1593. data/vendor/bundle/ruby/1.9.1/specifications/sequel-4.15.0.gemspec +0 -22
  1594. data/vendor/bundle/ruby/1.9.1/specifications/slop-3.5.0.gemspec +0 -33
  1595. data/vendor/bundle/ruby/1.9.1/specifications/threadify-1.3.0.gemspec +0 -16
@@ -1,145 +0,0 @@
1
- require File.join(File.dirname(File.expand_path(__FILE__)), "spec_helper")
2
-
3
- describe Sequel::Model, "class dataset methods" do
4
- before do
5
- @db = Sequel.mock
6
- @c = Class.new(Sequel::Model(@db[:items]))
7
- @d = @c.dataset
8
- def @d.supports_cte?(*) true end
9
- @d._fetch = {:id=>1}
10
- @d.autoid = 1
11
- @d.numrows = 0
12
- @db.sqls
13
- end
14
-
15
- it "should call the dataset method of the same name with the same args" do
16
- @c.<<({}).should == @d
17
- @db.sqls.should == ["INSERT INTO items DEFAULT VALUES"]
18
- @c.all.should == [@c.load(:id=>1)]
19
- @db.sqls.should == ["SELECT * FROM items"]
20
- @c.avg(:id).should == 1
21
- @db.sqls.should == ["SELECT avg(id) AS avg FROM items LIMIT 1"]
22
- @c.count.should == 1
23
- @db.sqls.should == ["SELECT count(*) AS count FROM items LIMIT 1"]
24
- @c.cross_join(@c).sql.should == "SELECT * FROM items CROSS JOIN items"
25
- @c.distinct.sql.should == "SELECT DISTINCT * FROM items"
26
- @c.each{|r| r.should == @c.load(:id=>1)}.should == @d
27
- @db.sqls.should == ["SELECT * FROM items"]
28
- @c.each_server{|r| r.opts[:server].should == :default}
29
- @c.empty?.should == false
30
- @db.sqls.should == ["SELECT 1 AS one FROM items LIMIT 1"]
31
- @c.except(@d, :from_self=>false).sql.should == "SELECT * FROM items EXCEPT SELECT * FROM items"
32
- @c.exclude(:a).sql.should == "SELECT * FROM items WHERE NOT a"
33
- @c.exclude_having(:a).sql.should == "SELECT * FROM items HAVING NOT a"
34
- @c.exclude_where(:a).sql.should == "SELECT * FROM items WHERE NOT a"
35
- @c.fetch_rows("S"){|r| r.should == {:id=>1}}
36
- @db.sqls.should == ["S"]
37
- @c.filter(:a).sql.should == "SELECT * FROM items WHERE a"
38
- @c.first.should == @c.load(:id=>1)
39
- @db.sqls.should == ["SELECT * FROM items LIMIT 1"]
40
- @c.first!.should == @c.load(:id=>1)
41
- @db.sqls.should == ["SELECT * FROM items LIMIT 1"]
42
- @c.for_update.sql.should == "SELECT * FROM items FOR UPDATE"
43
- @c.from.sql.should == "SELECT *"
44
- @c.from_self.sql.should == "SELECT * FROM (SELECT * FROM items) AS t1"
45
- @c.full_join(@c).sql.should == "SELECT * FROM items FULL JOIN items"
46
- @c.full_outer_join(@c).sql.should == "SELECT * FROM items FULL OUTER JOIN items"
47
- @c.get(:a).should == 1
48
- @db.sqls.should == ["SELECT a FROM items LIMIT 1"]
49
- @c.graph(@c, nil, :table_alias=>:a).sql.should == "SELECT * FROM items LEFT OUTER JOIN items AS a"
50
- @db.sqls
51
- @c.grep(:id, 'a%').sql.should == "SELECT * FROM items WHERE ((id LIKE 'a%' ESCAPE '\\'))"
52
- @c.group(:a).sql.should == "SELECT * FROM items GROUP BY a"
53
- @c.group_and_count(:a).sql.should == "SELECT a, count(*) AS count FROM items GROUP BY a"
54
- @c.group_by(:a).sql.should == "SELECT * FROM items GROUP BY a"
55
- @c.having(:a).sql.should == "SELECT * FROM items HAVING a"
56
- @c.import([:id], [[1]])
57
- @db.sqls.should == ["BEGIN", "INSERT INTO items (id) VALUES (1)", "COMMIT"]
58
- @c.inner_join(@c).sql.should == "SELECT * FROM items INNER JOIN items"
59
- @c.insert.should == 2
60
- @db.sqls.should == ["INSERT INTO items DEFAULT VALUES"]
61
- @c.intersect(@d, :from_self=>false).sql.should == "SELECT * FROM items INTERSECT SELECT * FROM items"
62
- @c.interval(:id).should == 1
63
- @db.sqls.should == ["SELECT (max(id) - min(id)) AS interval FROM items LIMIT 1"]
64
- @c.join(@c).sql.should == "SELECT * FROM items INNER JOIN items"
65
- @c.join_table(:inner, @c).sql.should == "SELECT * FROM items INNER JOIN items"
66
- @c.last.should == @c.load(:id=>1)
67
- @db.sqls.should == ["SELECT * FROM items ORDER BY id DESC LIMIT 1"]
68
- @c.left_join(@c).sql.should == "SELECT * FROM items LEFT JOIN items"
69
- @c.left_outer_join(@c).sql.should == "SELECT * FROM items LEFT OUTER JOIN items"
70
- @c.limit(2).sql.should == "SELECT * FROM items LIMIT 2"
71
- @c.lock_style(:update).sql.should == "SELECT * FROM items FOR UPDATE"
72
- @c.map(:id).should == [1]
73
- @db.sqls.should == ["SELECT * FROM items"]
74
- @c.max(:id).should == 1
75
- @db.sqls.should == ["SELECT max(id) AS max FROM items LIMIT 1"]
76
- @c.min(:id).should == 1
77
- @db.sqls.should == ["SELECT min(id) AS min FROM items LIMIT 1"]
78
- @c.multi_insert([{:id=>1}])
79
- @db.sqls.should == ["BEGIN", "INSERT INTO items (id) VALUES (1)", "COMMIT"]
80
- @c.naked.row_proc.should == nil
81
- @c.natural_full_join(@c).sql.should == "SELECT * FROM items NATURAL FULL JOIN items"
82
- @c.natural_join(@c).sql.should == "SELECT * FROM items NATURAL JOIN items"
83
- @c.natural_left_join(@c).sql.should == "SELECT * FROM items NATURAL LEFT JOIN items"
84
- @c.natural_right_join(@c).sql.should == "SELECT * FROM items NATURAL RIGHT JOIN items"
85
- @c.offset(2).sql.should == "SELECT * FROM items OFFSET 2"
86
- @c.order(:a).sql.should == "SELECT * FROM items ORDER BY a"
87
- @c.order_append(:a).sql.should == "SELECT * FROM items ORDER BY a"
88
- @c.order_by(:a).sql.should == "SELECT * FROM items ORDER BY a"
89
- @c.order_more(:a).sql.should == "SELECT * FROM items ORDER BY a"
90
- @c.order_prepend(:a).sql.should == "SELECT * FROM items ORDER BY a"
91
- @c.paged_each{|r| r.should == @c.load(:id=>1)}
92
- @db.sqls.should == ["BEGIN", "SELECT * FROM items ORDER BY id LIMIT 1000 OFFSET 0", "COMMIT"]
93
- @c.qualify.sql.should == 'SELECT items.* FROM items'
94
- @c.right_join(@c).sql.should == "SELECT * FROM items RIGHT JOIN items"
95
- @c.right_outer_join(@c).sql.should == "SELECT * FROM items RIGHT OUTER JOIN items"
96
- @c.select(:a).sql.should == "SELECT a FROM items"
97
- @c.select_all(:items).sql.should == "SELECT items.* FROM items"
98
- @c.select_append(:a).sql.should == "SELECT *, a FROM items"
99
- @c.select_group(:a).sql.should == "SELECT a FROM items GROUP BY a"
100
- @c.select_hash(:id, :id).should == {1=>1}
101
- @db.sqls.should == ["SELECT id, id FROM items"]
102
- @c.select_hash_groups(:id, :id).should == {1=>[1]}
103
- @db.sqls.should == ["SELECT id, id FROM items"]
104
- @c.select_map(:id).should == [1]
105
- @db.sqls.should == ["SELECT id FROM items"]
106
- @c.select_order_map(:id).should == [1]
107
- @db.sqls.should == ["SELECT id FROM items ORDER BY id"]
108
- @c.server(:a).opts[:server].should == :a
109
- @c.set_graph_aliases(:a=>:b).opts[:graph_aliases].should == {:a=>[:b, :a]}
110
- @c.single_record.should == @c.load(:id=>1)
111
- @db.sqls.should == ["SELECT * FROM items LIMIT 1"]
112
- @c.single_value.should == 1
113
- @db.sqls.should == ["SELECT * FROM items LIMIT 1"]
114
- @c.sum(:id).should == 1
115
- @db.sqls.should == ["SELECT sum(id) AS sum FROM items LIMIT 1"]
116
- @c.to_hash(:id, :id).should == {1=>1}
117
- @db.sqls.should == ["SELECT * FROM items"]
118
- @c.to_hash_groups(:id, :id).should == {1=>[1]}
119
- @db.sqls.should == ["SELECT * FROM items"]
120
- @c.truncate
121
- @db.sqls.should == ["TRUNCATE TABLE items"]
122
- @c.union(@d, :from_self=>false).sql.should == "SELECT * FROM items UNION SELECT * FROM items"
123
- @c.where(:a).sql.should == "SELECT * FROM items WHERE a"
124
- @c.with(:a, @d).sql.should == "WITH a AS (SELECT * FROM items) SELECT * FROM items"
125
- @c.with_recursive(:a, @d, @d).sql.should == "WITH a AS (SELECT * FROM items UNION ALL SELECT * FROM items) SELECT * FROM items"
126
- @c.with_sql('S').sql.should == "S"
127
-
128
- sc = Class.new(@c)
129
- sc.set_dataset(@d.where(:a).order(:a).select(:a).group(:a).limit(2))
130
- @db.sqls
131
- sc.invert.sql.should == 'SELECT a FROM items WHERE NOT a GROUP BY a ORDER BY a LIMIT 2'
132
- sc.dataset._fetch = {:v1=>1, :v2=>2}
133
- sc.range(:a).should == (1..2)
134
- @db.sqls.should == ["SELECT min(a) AS v1, max(a) AS v2 FROM (SELECT a FROM items WHERE a GROUP BY a ORDER BY a LIMIT 2) AS t1 LIMIT 1"]
135
- sc.reverse.sql.should == 'SELECT a FROM items WHERE a GROUP BY a ORDER BY a DESC LIMIT 2'
136
- sc.reverse_order.sql.should == 'SELECT a FROM items WHERE a GROUP BY a ORDER BY a DESC LIMIT 2'
137
- sc.select_more(:a).sql.should == 'SELECT a, a FROM items WHERE a GROUP BY a ORDER BY a LIMIT 2'
138
- sc.unfiltered.sql.should == 'SELECT a FROM items GROUP BY a ORDER BY a LIMIT 2'
139
- sc.ungrouped.sql.should == 'SELECT a FROM items WHERE a ORDER BY a LIMIT 2'
140
- sc.unordered.sql.should == 'SELECT a FROM items WHERE a GROUP BY a LIMIT 2'
141
- sc.unlimited.sql.should == 'SELECT a FROM items WHERE a GROUP BY a ORDER BY a'
142
- sc.dataset.graph!(:a)
143
- sc.dataset.ungraphed.opts[:graph].should == nil
144
- end
145
- end
@@ -1,149 +0,0 @@
1
- require File.join(File.dirname(File.expand_path(__FILE__)), "spec_helper")
2
-
3
- describe Sequel::Model::DatasetMethods, "#destroy" do
4
- before do
5
- @c = Class.new(Sequel::Model(:items)) do
6
- self::Destroyed = []
7
- def destroy
8
- model::Destroyed << self
9
- end
10
- end
11
- @d = @c.dataset
12
- @d._fetch = [{:id=>1}, {:id=>2}]
13
- DB.reset
14
- end
15
-
16
- it "should instantiate objects in the dataset and call destroy on each" do
17
- @d.destroy
18
- @c::Destroyed.collect{|x| x.values}.should == [{:id=>1}, {:id=>2}]
19
- end
20
-
21
- it "should return the number of records destroyed" do
22
- @d.destroy.should == 2
23
- @d._fetch = [[{:i=>1}], []]
24
- @d.destroy.should == 1
25
- @d.destroy.should == 0
26
- end
27
-
28
- it "should use a transaction if use_transactions is true for the model" do
29
- @c.use_transactions = true
30
- @d.destroy
31
- DB.sqls.should == ["BEGIN", "SELECT * FROM items", "COMMIT"]
32
- end
33
-
34
- it "should not use a transaction if use_transactions is false for the model" do
35
- @c.use_transactions = false
36
- @d.destroy
37
- DB.sqls.should == ["SELECT * FROM items"]
38
- end
39
- end
40
-
41
- describe Sequel::Model::DatasetMethods, "#to_hash" do
42
- before do
43
- @c = Class.new(Sequel::Model(:items)) do
44
- set_primary_key :name
45
- end
46
- @d = @c.dataset
47
- end
48
-
49
- it "should result in a hash with primary key value keys and model object values" do
50
- @d._fetch = [{:name=>1}, {:name=>2}]
51
- h = @d.to_hash
52
- h.should be_a_kind_of(Hash)
53
- a = h.to_a
54
- a.collect{|x| x[1].class}.should == [@c, @c]
55
- a.sort_by{|x| x[0]}.collect{|x| [x[0], x[1].values]}.should == [[1, {:name=>1}], [2, {:name=>2}]]
56
- end
57
-
58
- it "should result in a hash with given value keys and model object values" do
59
- @d._fetch = [{:name=>1, :number=>3}, {:name=>2, :number=>4}]
60
- h = @d.to_hash(:number)
61
- h.should be_a_kind_of(Hash)
62
- a = h.to_a
63
- a.collect{|x| x[1].class}.should == [@c, @c]
64
- a.sort_by{|x| x[0]}.collect{|x| [x[0], x[1].values]}.should == [[3, {:name=>1, :number=>3}], [4, {:name=>2, :number=>4}]]
65
- end
66
-
67
- it "should raise an error if the class doesn't have a primary key" do
68
- @c.no_primary_key
69
- proc{@d.to_hash}.should raise_error(Sequel::Error)
70
- end
71
- end
72
-
73
- describe Sequel::Model::DatasetMethods do
74
- before do
75
- @c = Class.new(Sequel::Model(:items))
76
- @c.columns :id
77
- @c.db.reset
78
- end
79
-
80
- specify "#join_table should allow use to use a model class when joining" do
81
- @c.join(Class.new(Sequel::Model(:categories)), :item_id => :id).sql.should == 'SELECT * FROM items INNER JOIN categories ON (categories.item_id = items.id)'
82
- end
83
-
84
- specify "#join_table should handle model classes that aren't simple selects using a subselect" do
85
- @c.join(Class.new(Sequel::Model(DB[:categories].where(:foo=>1))), :item_id => :id).sql.should == 'SELECT * FROM items INNER JOIN (SELECT * FROM categories WHERE (foo = 1)) AS t1 ON (t1.item_id = items.id)'
86
- end
87
-
88
- specify "#graph should allow use to use a model class when joining" do
89
- c = Class.new(Sequel::Model(:categories))
90
- c.columns :id
91
- @c.graph(c, :item_id => :id).sql.should == 'SELECT items.id, categories.id AS categories_id FROM items LEFT OUTER JOIN categories ON (categories.item_id = items.id)'
92
- end
93
-
94
- specify "#insert_sql should handle a single model instance as an argument" do
95
- @c.dataset.insert_sql(@c.load(:id=>1)).should == 'INSERT INTO items (id) VALUES (1)'
96
- end
97
-
98
- specify "#first should handle no primary key" do
99
- @c.no_primary_key
100
- @c.first.should be_a_kind_of(@c)
101
- @c.db.sqls.should == ['SELECT * FROM items LIMIT 1']
102
- end
103
-
104
- specify "#last should reverse order by primary key if not already ordered" do
105
- @c.last.should be_a_kind_of(@c)
106
- @c.db.sqls.should == ['SELECT * FROM items ORDER BY id DESC LIMIT 1']
107
- @c.where(:id=>2).last(:foo=>2){{bar=>3}}.should be_a_kind_of(@c)
108
- @c.db.sqls.should == ['SELECT * FROM items WHERE ((id = 2) AND (bar = 3) AND (foo = 2)) ORDER BY id DESC LIMIT 1']
109
- end
110
-
111
- specify "#last should use existing order if there is one" do
112
- @c.order(:foo).last.should be_a_kind_of(@c)
113
- @c.db.sqls.should == ['SELECT * FROM items ORDER BY foo DESC LIMIT 1']
114
- end
115
-
116
- specify "#last should handle a composite primary key" do
117
- @c.set_primary_key [:id1, :id2]
118
- @c.last.should be_a_kind_of(@c)
119
- @c.db.sqls.should == ['SELECT * FROM items ORDER BY id1 DESC, id2 DESC LIMIT 1']
120
- end
121
-
122
- specify "#last should raise an error if no primary key" do
123
- @c.no_primary_key
124
- proc{@c.last}.should raise_error(Sequel::Error)
125
- end
126
-
127
- specify "#paged_each should order by primary key if not already ordered" do
128
- @c.paged_each{|r| r.should be_a_kind_of(@c)}
129
- @c.db.sqls.should == ['BEGIN', 'SELECT * FROM items ORDER BY id LIMIT 1000 OFFSET 0', 'COMMIT']
130
- @c.paged_each(:rows_per_fetch=>5){|r|}
131
- @c.db.sqls.should == ['BEGIN', 'SELECT * FROM items ORDER BY id LIMIT 5 OFFSET 0', 'COMMIT']
132
- end
133
-
134
- specify "#paged_each should use existing order if there is one" do
135
- @c.order(:foo).paged_each{|r| r.should be_a_kind_of(@c)}
136
- @c.db.sqls.should == ['BEGIN', 'SELECT * FROM items ORDER BY foo LIMIT 1000 OFFSET 0', 'COMMIT']
137
- end
138
-
139
- specify "#paged_each should handle a composite primary key" do
140
- @c.set_primary_key [:id1, :id2]
141
- @c.paged_each{|r| r.should be_a_kind_of(@c)}
142
- @c.db.sqls.should == ['BEGIN', 'SELECT * FROM items ORDER BY id1, id2 LIMIT 1000 OFFSET 0', 'COMMIT']
143
- end
144
-
145
- specify "#paged_each should raise an error if no primary key" do
146
- @c.no_primary_key
147
- proc{@c.paged_each{|r| }}.should raise_error(Sequel::Error)
148
- end
149
- end
@@ -1,2080 +0,0 @@
1
- require File.join(File.dirname(File.expand_path(__FILE__)), "spec_helper")
2
-
3
- describe Sequel::Model, "#eager" do
4
- before do
5
- class ::EagerAlbum < Sequel::Model(:albums)
6
- columns :id, :band_id
7
- many_to_one :band, :class=>'EagerBand', :key=>:band_id
8
- one_to_many :tracks, :class=>'EagerTrack', :key=>:album_id
9
- many_to_many :genres, :class=>'EagerGenre', :left_key=>:album_id, :right_key=>:genre_id, :join_table=>:ag
10
- one_through_one :genre, :clone=>:genres
11
- one_to_many :good_tracks, :class=>'EagerTrack', :reciprocal=>nil, :key=>:album_id do |ds|
12
- ds.filter(:name=>'Good')
13
- end
14
- many_to_one :band_name, :class=>'EagerBand', :key=>:band_id, :select=>[:id, :name]
15
- one_to_many :track_names, :class=>'EagerTrack', :key=>:album_id, :select=>[:id, :name]
16
- many_to_many :genre_names, :class=>'EagerGenre', :left_key=>:album_id, :right_key=>:genre_id, :join_table=>:ag, :select=>[:id]
17
-
18
- def band_id3
19
- band_id*3
20
- end
21
- end
22
-
23
- class ::EagerBand < Sequel::Model(:bands)
24
- columns :id, :p_k
25
- one_to_many :albums, :class=>'EagerAlbum', :key=>:band_id, :eager=>:tracks, :reciprocal=>:band
26
- one_to_many :graph_albums, :class=>'EagerAlbum', :key=>:band_id, :eager_graph=>:tracks, :reciprocal=>nil
27
- many_to_many :members, :class=>'EagerBandMember', :left_key=>:band_id, :right_key=>:member_id, :join_table=>:bm
28
- many_to_many :graph_members, :clone=>:members, :eager_graph=>:bands
29
- one_to_many :good_albums, :class=>'EagerAlbum', :key=>:band_id, :reciprocal=>nil, :eager_block=>proc{|ds| ds.filter(:name=>'good')} do |ds|
30
- ds.filter(:name=>'Good')
31
- end
32
- one_to_many :self_titled_albums, :class=>'EagerAlbum', :key=>:band_id, :allow_eager=>false do |ds|
33
- ds.filter(:name=>name)
34
- end
35
- one_to_many :albums_by_name, :class=>'EagerAlbum', :key=>:band_id, :order=>:name, :allow_eager=>false
36
- one_to_many :top_10_albums, :class=>'EagerAlbum', :key=>:band_id, :limit=>10
37
-
38
- def id3
39
- id/3
40
- end
41
- end
42
-
43
- class ::EagerTrack < Sequel::Model(:tracks)
44
- columns :id, :album_id
45
- many_to_one :album, :class=>'EagerAlbum', :key=>:album_id
46
- end
47
-
48
- class ::EagerGenre < Sequel::Model(:genres)
49
- columns :id, :xxx
50
- many_to_many :albums, :class=>'EagerAlbum', :left_key=>:genre_id, :right_key=>:album_id, :join_table=>:ag
51
- end
52
-
53
- class ::EagerBandMember < Sequel::Model(:members)
54
- columns :id
55
- many_to_many :bands, :class=>'EagerBand', :left_key=>:member_id, :right_key=>:band_id, :join_table=>:bm, :order =>:id
56
- end
57
-
58
- EagerAlbum.dataset.columns(:id, :band_id)
59
- EagerAlbum.dataset._fetch = proc do |sql|
60
- h = if sql =~ /101/
61
- {:id => 101, :band_id=> 101}
62
- else
63
- {:id => 1, :band_id=> 2}
64
- end
65
- h[:x_foreign_key_x] = 4 if sql =~ /ag\.genre_id/
66
- h
67
- end
68
-
69
- EagerBand.dataset._fetch = proc do |sql|
70
- case sql
71
- when /id IN (101)/
72
- # nothing
73
- when /id > 100/
74
- [{:id => 101}, {:id => 102}]
75
- else
76
- h = {:id => 2}
77
- h[:x_foreign_key_x] = 5 if sql =~ /bm\.member_id/
78
- h
79
- end
80
- end
81
-
82
- EagerTrack.dataset._fetch = {:id => 3, :album_id => 1}
83
-
84
- EagerGenre.dataset._fetch = proc do |sql|
85
- h = {:id => 4}
86
- h[:x_foreign_key_x] = 1 if sql =~ /ag\.album_id/
87
- h
88
- end
89
-
90
- EagerBandMember.dataset._fetch = proc do |sql|
91
- h = {:id => 5}
92
- h[:x_foreign_key_x] = 2 if sql =~ /bm\.band_id/
93
- h
94
- end
95
-
96
- DB.reset
97
- end
98
- after do
99
- [:EagerAlbum, :EagerBand, :EagerTrack, :EagerGenre, :EagerBandMember].each{|x| Object.send(:remove_const, x)}
100
- end
101
-
102
- it "should populate :key_hash and :id_map option correctly for custom eager loaders" do
103
- khs = {}
104
- pr = proc{|a, m| proc{|h| khs[a] = h[:key_hash][m]; h[:id_map].should == h[:key_hash][m]}}
105
- EagerAlbum.many_to_one :sband, :clone=>:band, :eager_loader=>pr.call(:sband, :band_id)
106
- EagerAlbum.one_to_many :stracks, :clone=>:tracks, :eager_loader=>pr.call(:stracks, :id)
107
- EagerAlbum.many_to_many :sgenres, :clone=>:genres, :eager_loader=>pr.call(:sgenres, :id)
108
- EagerAlbum.eager(:sband, :stracks, :sgenres).all
109
- khs.should == {:sband=>{2=>[EagerAlbum.load(:band_id=>2, :id=>1)]}, :stracks=>{1=>[EagerAlbum.load(:band_id=>2, :id=>1)]}, :sgenres=>{1=>[EagerAlbum.load(:band_id=>2, :id=>1)]}}
110
- end
111
-
112
- it "should populate :key_hash using the method symbol" do
113
- khs = {}
114
- pr = proc{|a, m| proc{|h| khs[a] = h[:key_hash][m]}}
115
- EagerAlbum.many_to_one :sband, :clone=>:band, :eager_loader=>pr.call(:sband, :band_id), :key=>:band_id, :key_column=>:b_id
116
- EagerAlbum.one_to_many :stracks, :clone=>:tracks, :eager_loader=>pr.call(:stracks, :id), :primary_key=>:id, :primary_key_column=>:i
117
- EagerAlbum.many_to_many :sgenres, :clone=>:genres, :eager_loader=>pr.call(:sgenres, :id), :left_primary_key=>:id, :left_primary_key_column=>:i
118
- EagerAlbum.eager(:sband, :stracks, :sgenres).all
119
- khs.should == {:sband=>{2=>[EagerAlbum.load(:band_id=>2, :id=>1)]}, :stracks=>{1=>[EagerAlbum.load(:band_id=>2, :id=>1)]}, :sgenres=>{1=>[EagerAlbum.load(:band_id=>2, :id=>1)]}}
120
- end
121
-
122
- it "should raise an error if called without a symbol or hash" do
123
- proc{EagerAlbum.eager(Object.new)}.should raise_error(Sequel::Error)
124
- end
125
-
126
- it "should eagerly load a single many_to_one association" do
127
- a = EagerAlbum.eager(:band).all
128
- DB.sqls.should == ['SELECT * FROM albums', 'SELECT * FROM bands WHERE (bands.id IN (2))']
129
- a.should == [EagerAlbum.load(:id => 1, :band_id => 2)]
130
- a.first.band.should == EagerBand.load(:id=>2)
131
- DB.sqls.should == []
132
- end
133
-
134
- it "should eagerly load a single many_to_one association with the same name as the column" do
135
- EagerAlbum.def_column_alias(:band_id_id, :band_id)
136
- EagerAlbum.many_to_one :band_id, :key_column=>:band_id, :class=>EagerBand
137
- a = EagerAlbum.eager(:band_id).all
138
- DB.sqls.should == ['SELECT * FROM albums', 'SELECT * FROM bands WHERE (bands.id IN (2))']
139
- a.should == [EagerAlbum.load(:id => 1, :band_id => 2)]
140
- a.first.band_id.should == EagerBand.load(:id=>2)
141
- DB.sqls.should == []
142
- end
143
-
144
- it "should eagerly load a single one_to_one association" do
145
- EagerAlbum.one_to_one :track, :class=>'EagerTrack', :key=>:album_id
146
- a = EagerAlbum.eager(:track).all
147
- a.should == [EagerAlbum.load(:id => 1, :band_id => 2)]
148
- DB.sqls.should == ['SELECT * FROM albums', 'SELECT * FROM tracks WHERE (tracks.album_id IN (1))']
149
- a.first.track.should == EagerTrack.load(:id => 3, :album_id=>1)
150
- DB.sqls.should == []
151
- end
152
-
153
- it "should not break if the dataset does not have a row proc" do
154
- EagerAlbum.one_to_one :track, :class=>'EagerTrack', :key=>:album_id
155
- a = EagerAlbum.eager(:track).naked.all
156
- a.should == [{:id => 1, :band_id => 2}]
157
- DB.sqls.should == ['SELECT * FROM albums']
158
- end
159
-
160
- it "should eagerly load a single one_to_one association without an order" do
161
- EagerAlbum.one_to_one :track, :class=>'EagerTrack', :key=>:album_id
162
- EagerTrack.dataset._fetch = [{:id => 3, :album_id=>1}, {:id => 4, :album_id=>1}]
163
- a = EagerAlbum.eager(:track).all
164
- a.should == [EagerAlbum.load(:id => 1, :band_id => 2)]
165
- DB.sqls.should == ['SELECT * FROM albums', 'SELECT * FROM tracks WHERE (tracks.album_id IN (1))']
166
- a.first.track.should == EagerTrack.load(:id => 3, :album_id=>1)
167
- DB.sqls.should == []
168
- end
169
-
170
- it "should eagerly load a single one_to_one association with an order" do
171
- EagerAlbum.one_to_one :track, :class=>'EagerTrack', :key=>:album_id, :order=>:a
172
- a = EagerAlbum.eager(:track).all
173
- a.should == [EagerAlbum.load(:id => 1, :band_id => 2)]
174
- DB.sqls.should == ['SELECT * FROM albums', 'SELECT * FROM (SELECT * FROM tracks WHERE (1 = tracks.album_id) ORDER BY a LIMIT 1) AS t1']
175
- a.first.track.should == EagerTrack.load(:id => 3, :album_id=>1)
176
- DB.sqls.should == []
177
- end
178
-
179
- it "should eagerly load a single one_to_one association using the :distinct_on strategy" do
180
- def (EagerTrack.dataset).supports_distinct_on?() true end
181
- EagerAlbum.one_to_one :track, :class=>'EagerTrack', :key=>:album_id, :order=>:a, :eager_limit_strategy=>:distinct_on
182
- a = EagerAlbum.eager(:track).all
183
- a.should == [EagerAlbum.load(:id => 1, :band_id => 2)]
184
- DB.sqls.should == ['SELECT * FROM albums', 'SELECT DISTINCT ON (tracks.album_id) * FROM tracks WHERE (tracks.album_id IN (1)) ORDER BY tracks.album_id, a']
185
- a.first.track.should == EagerTrack.load(:id => 3, :album_id=>1)
186
- DB.sqls.should == []
187
- end
188
-
189
- it "should eagerly load a single one_to_one association using the :window_function strategy" do
190
- def (EagerTrack.dataset).supports_window_functions?() true end
191
- EagerAlbum.one_to_one :track, :class=>'EagerTrack', :key=>:album_id, :order=>:name, :eager_limit_strategy=>:window_function
192
- a = EagerAlbum.eager(:track).all
193
- a.should == [EagerAlbum.load(:id => 1, :band_id => 2)]
194
- DB.sqls.should == ['SELECT * FROM albums', 'SELECT * FROM (SELECT *, row_number() OVER (PARTITION BY tracks.album_id ORDER BY name) AS x_sequel_row_number_x FROM tracks WHERE (tracks.album_id IN (1))) AS t1 WHERE (x_sequel_row_number_x = 1)']
195
- a.first.track.should == EagerTrack.load(:id => 3, :album_id=>1)
196
- DB.sqls.should == []
197
- end
198
-
199
- it "should automatically use an eager limit stategy if the association has an offset" do
200
- EagerAlbum.one_to_one :track, :class=>'EagerTrack', :key=>:album_id, :limit=>[1,1]
201
- EagerTrack.dataset._fetch = [{:id => 4, :album_id=>1}]
202
- a = EagerAlbum.eager(:track).all
203
- a.should == [EagerAlbum.load(:id => 1, :band_id => 2)]
204
- DB.sqls.should == ['SELECT * FROM albums', 'SELECT * FROM (SELECT * FROM tracks WHERE (1 = tracks.album_id) LIMIT 1 OFFSET 1) AS t1']
205
- a.first.track.should == EagerTrack.load(:id => 4, :album_id=>1)
206
- DB.sqls.should == []
207
- end
208
-
209
- it "should handle offsets when using the :ruby eager limit stategy" do
210
- EagerAlbum.one_to_one :track, :class=>'EagerTrack', :key=>:album_id, :limit=>[1,1], :eager_limit_strategy=>:ruby
211
- EagerTrack.dataset._fetch = [{:id => 3, :album_id=>1}, {:id => 4, :album_id=>1}]
212
- a = EagerAlbum.eager(:track).all
213
- a.should == [EagerAlbum.load(:id => 1, :band_id => 2)]
214
- DB.sqls.should == ['SELECT * FROM albums', 'SELECT * FROM tracks WHERE (tracks.album_id IN (1))']
215
- a.first.track.should == EagerTrack.load(:id => 4, :album_id=>1)
216
- DB.sqls.should == []
217
- end
218
-
219
- it "should support a :subqueries_per_union option for the number of subqueries in a union" do
220
- EagerAlbum.one_to_one :track, :class=>'EagerTrack', :key=>:album_id, :limit=>[1,1], :subqueries_per_union=>1
221
- EagerAlbum.dataset._fetch = [{:id => 1, :band_id => 2}, {:id => 2, :band_id => 3}, {:id => 3, :band_id => 4}]
222
- EagerTrack.dataset._fetch = [[{:id => 4, :album_id=>1}], [{:id=>5, :album_id=>2}], [{:id=>6, :album_id=>3}]]
223
- a = EagerAlbum.eager(:track).all
224
- a.should == [EagerAlbum.load(:id => 1, :band_id => 2), EagerAlbum.load(:id => 2, :band_id => 3), EagerAlbum.load(:id => 3, :band_id => 4)]
225
- DB.sqls.should == ['SELECT * FROM albums', 'SELECT * FROM (SELECT * FROM tracks WHERE (1 = tracks.album_id) LIMIT 1 OFFSET 1) AS t1', 'SELECT * FROM (SELECT * FROM tracks WHERE (2 = tracks.album_id) LIMIT 1 OFFSET 1) AS t1', 'SELECT * FROM (SELECT * FROM tracks WHERE (3 = tracks.album_id) LIMIT 1 OFFSET 1) AS t1']
226
- a.first.track.should == EagerTrack.load(:id => 4, :album_id=>1)
227
- DB.sqls.should == []
228
-
229
- EagerAlbum.one_to_one :track, :class=>'EagerTrack', :key=>:album_id, :limit=>[1,1], :subqueries_per_union=>2
230
- EagerTrack.dataset._fetch = [[{:id => 4, :album_id=>1}, {:id=>5, :album_id=>2}], [{:id=>6, :album_id=>3}]]
231
- a = EagerAlbum.eager(:track).all
232
- a.should == [EagerAlbum.load(:id => 1, :band_id => 2), EagerAlbum.load(:id => 2, :band_id => 3), EagerAlbum.load(:id => 3, :band_id => 4)]
233
- DB.sqls.should == ['SELECT * FROM albums', 'SELECT * FROM (SELECT * FROM tracks WHERE (1 = tracks.album_id) LIMIT 1 OFFSET 1) AS t1 UNION ALL SELECT * FROM (SELECT * FROM tracks WHERE (2 = tracks.album_id) LIMIT 1 OFFSET 1) AS t1', 'SELECT * FROM (SELECT * FROM tracks WHERE (3 = tracks.album_id) LIMIT 1 OFFSET 1) AS t1']
234
- a.first.track.should == EagerTrack.load(:id => 4, :album_id=>1)
235
- DB.sqls.should == []
236
-
237
- EagerAlbum.one_to_one :track, :class=>'EagerTrack', :key=>:album_id, :limit=>[1,1], :subqueries_per_union=>3
238
- EagerTrack.dataset._fetch = [[{:id => 4, :album_id=>1}, {:id=>5, :album_id=>2}, {:id=>6, :album_id=>3}]]
239
- a = EagerAlbum.eager(:track).all
240
- a.should == [EagerAlbum.load(:id => 1, :band_id => 2), EagerAlbum.load(:id => 2, :band_id => 3), EagerAlbum.load(:id => 3, :band_id => 4)]
241
- DB.sqls.should == ['SELECT * FROM albums', 'SELECT * FROM (SELECT * FROM tracks WHERE (1 = tracks.album_id) LIMIT 1 OFFSET 1) AS t1 UNION ALL SELECT * FROM (SELECT * FROM tracks WHERE (2 = tracks.album_id) LIMIT 1 OFFSET 1) AS t1 UNION ALL SELECT * FROM (SELECT * FROM tracks WHERE (3 = tracks.album_id) LIMIT 1 OFFSET 1) AS t1']
242
- a.first.track.should == EagerTrack.load(:id => 4, :album_id=>1)
243
- DB.sqls.should == []
244
- end
245
-
246
- it "should eagerly load a single one_to_many association" do
247
- a = EagerAlbum.eager(:tracks).all
248
- a.should == [EagerAlbum.load(:id => 1, :band_id => 2)]
249
- DB.sqls.should == ['SELECT * FROM albums', 'SELECT * FROM tracks WHERE (tracks.album_id IN (1))']
250
- a.first.tracks.should == [EagerTrack.load(:id => 3, :album_id=>1)]
251
- DB.sqls.should == []
252
- end
253
-
254
- it "should eagerly load a single one_through_one association" do
255
- a = EagerAlbum.eager(:genre).all
256
- a.should == [EagerAlbum.load(:id => 1, :band_id => 2)]
257
- DB.sqls.should == ['SELECT * FROM albums', "SELECT genres.*, ag.album_id AS x_foreign_key_x FROM genres INNER JOIN ag ON (ag.genre_id = genres.id) WHERE (ag.album_id IN (1))"]
258
- a.first.genre.should == EagerGenre.load(:id=>4)
259
- DB.sqls.should == []
260
- end
261
-
262
- it "should use first matching entry when eager loading one_through_one association" do
263
- EagerGenre.dataset._fetch = [{:id => 3, :x_foreign_key_x=>1}, {:id => 4, :x_foreign_key_x=>1}]
264
- a = EagerAlbum.eager(:genre).all
265
- a.should == [EagerAlbum.load(:id => 1, :band_id => 2)]
266
- DB.sqls.should == ['SELECT * FROM albums', "SELECT genres.*, ag.album_id AS x_foreign_key_x FROM genres INNER JOIN ag ON (ag.genre_id = genres.id) WHERE (ag.album_id IN (1))"]
267
- a.first.genre.should == EagerGenre.load(:id=>3)
268
- DB.sqls.should == []
269
- end
270
-
271
- it "should eagerly load a single one_through_one association" do
272
- EagerAlbum.one_through_one :genre, :clone=>:genre, :order=>:a
273
- a = EagerAlbum.eager(:genre).all
274
- a.should == [EagerAlbum.load(:id => 1, :band_id => 2)]
275
- DB.sqls.should == ['SELECT * FROM albums', "SELECT * FROM (SELECT genres.*, ag.album_id AS x_foreign_key_x FROM genres INNER JOIN ag ON (ag.genre_id = genres.id) WHERE (1 = ag.album_id) ORDER BY a LIMIT 1) AS t1"]
276
- a.first.genre.should == EagerGenre.load(:id=>4)
277
- DB.sqls.should == []
278
- end
279
-
280
- it "should eagerly load a single one_through_one association using the :distinct_on strategy" do
281
- def (EagerGenre.dataset).supports_distinct_on?() true end
282
- EagerAlbum.one_through_one :genre, :clone=>:genre, :order=>:a, :eager_limit_strategy=>:distinct_on
283
- a = EagerAlbum.eager(:genre).all
284
- a.should == [EagerAlbum.load(:id => 1, :band_id => 2)]
285
- DB.sqls.should == ['SELECT * FROM albums', "SELECT DISTINCT ON (ag.album_id) genres.*, ag.album_id AS x_foreign_key_x FROM genres INNER JOIN ag ON (ag.genre_id = genres.id) WHERE (ag.album_id IN (1)) ORDER BY ag.album_id, a"]
286
- a.first.genre.should == EagerGenre.load(:id=>4)
287
- DB.sqls.should == []
288
- end
289
-
290
- it "should eagerly load a single one_through_one association using the :window_function strategy" do
291
- def (EagerGenre.dataset).supports_window_functions?() true end
292
- EagerAlbum.one_through_one :genre, :clone=>:genre, :eager_limit_strategy=>:window_function
293
- a = EagerAlbum.eager(:genre).all
294
- a.should == [EagerAlbum.load(:id => 1, :band_id => 2)]
295
- DB.sqls.should == ['SELECT * FROM albums', "SELECT * FROM (SELECT genres.*, ag.album_id AS x_foreign_key_x, row_number() OVER (PARTITION BY ag.album_id) AS x_sequel_row_number_x FROM genres INNER JOIN ag ON (ag.genre_id = genres.id) WHERE (ag.album_id IN (1))) AS t1 WHERE (x_sequel_row_number_x = 1)"]
296
- a.first.genre.should == EagerGenre.load(:id=>4)
297
- DB.sqls.should == []
298
- end
299
-
300
- it "should automatically use an eager limit stategy if the association has an offset" do
301
- EagerGenre.dataset._fetch = [{:id => 3, :x_foreign_key_x=>1}, {:id => 4, :x_foreign_key_x=>1}]
302
- a = EagerAlbum.eager(:genre).all
303
- a.should == [EagerAlbum.load(:id => 1, :band_id => 2)]
304
- DB.sqls.should == ['SELECT * FROM albums', "SELECT genres.*, ag.album_id AS x_foreign_key_x FROM genres INNER JOIN ag ON (ag.genre_id = genres.id) WHERE (ag.album_id IN (1))"]
305
- a.first.genre.should == EagerGenre.load(:id=>3)
306
- DB.sqls.should == []
307
- end
308
-
309
- it "should eagerly load a single many_to_many association" do
310
- a = EagerAlbum.eager(:genres).all
311
- a.should == [EagerAlbum.load(:id => 1, :band_id => 2)]
312
- DB.sqls.should == ['SELECT * FROM albums', "SELECT genres.*, ag.album_id AS x_foreign_key_x FROM genres INNER JOIN ag ON (ag.genre_id = genres.id) WHERE (ag.album_id IN (1))"]
313
- a.first.genres.should == [EagerGenre.load(:id=>4)]
314
- DB.sqls.should == []
315
- end
316
-
317
- it "should support using a custom :key option when eager loading many_to_one associations" do
318
- EagerAlbum.many_to_one :sband, :clone=>:band, :key=>:band_id3
319
- EagerBand.dataset._fetch = {:id=>6}
320
- a = EagerAlbum.eager(:sband).all
321
- DB.sqls.should == ['SELECT * FROM albums', 'SELECT * FROM bands WHERE (bands.id IN (6))']
322
- a.should == [EagerAlbum.load(:id => 1, :band_id => 2)]
323
- a.first.sband.should == EagerBand.load(:id=>6)
324
- DB.sqls.should == []
325
- end
326
-
327
- it "should support using a custom :primary_key option when eager loading one_to_many associations" do
328
- EagerBand.one_to_many :salbums, :clone=>:albums, :primary_key=>:id3, :eager=>nil, :reciprocal=>nil
329
- EagerBand.dataset._fetch = {:id=>6}
330
- a = EagerBand.eager(:salbums).all
331
- DB.sqls.should == ['SELECT * FROM bands', 'SELECT * FROM albums WHERE (albums.band_id IN (2))']
332
- a.should == [EagerBand.load(:id => 6)]
333
- a.first.salbums.should == [EagerAlbum.load(:id => 1, :band_id => 2)]
334
- DB.sqls.should == []
335
- end
336
-
337
- it "should support using a custom :left_primary_key option when eager loading many_to_many associations" do
338
- EagerAlbum.many_to_many :sgenres, :clone=>:genres, :left_primary_key=>:band_id3
339
- EagerGenre.dataset._fetch = {:id=>4, :x_foreign_key_x=>6}
340
- a = EagerAlbum.eager(:sgenres).all
341
- a.should == [EagerAlbum.load(:id => 1, :band_id => 2)]
342
- DB.sqls.should == ['SELECT * FROM albums', "SELECT genres.*, ag.album_id AS x_foreign_key_x FROM genres INNER JOIN ag ON (ag.genre_id = genres.id) WHERE (ag.album_id IN (6))"]
343
- a.first.sgenres.should == [EagerGenre.load(:id=>4)]
344
- DB.sqls.should == []
345
- end
346
-
347
- it "should support using a custom :left_primary_key option when eager loading one_through_one associations" do
348
- EagerAlbum.one_through_one :sgenre, :clone=>:genre, :left_primary_key=>:band_id3
349
- EagerGenre.dataset._fetch = {:id=>4, :x_foreign_key_x=>6}
350
- a = EagerAlbum.eager(:sgenre).all
351
- a.should == [EagerAlbum.load(:id => 1, :band_id => 2)]
352
- DB.sqls.should == ['SELECT * FROM albums', "SELECT genres.*, ag.album_id AS x_foreign_key_x FROM genres INNER JOIN ag ON (ag.genre_id = genres.id) WHERE (ag.album_id IN (6))"]
353
- a.first.sgenre.should == EagerGenre.load(:id=>4)
354
- DB.sqls.should == []
355
- end
356
-
357
- it "should handle a :eager_loading_predicate_key option to change the SQL used in the lookup, for many_to_one associations" do
358
- EagerAlbum.many_to_one :sband, :clone=>:band, :eager_loading_predicate_key=>Sequel./(:bands__id, 3), :primary_key_method=>:id3
359
- EagerBand.dataset._fetch = {:id=>6}
360
- a = EagerAlbum.eager(:sband).all
361
- DB.sqls.should == ['SELECT * FROM albums', 'SELECT * FROM bands WHERE ((bands.id / 3) IN (2))']
362
- a.should == [EagerAlbum.load(:id => 1, :band_id => 2)]
363
- a.first.sband.should == EagerBand.load(:id=>6)
364
- DB.sqls.should == []
365
- end
366
-
367
- it "should handle a :eager_loading_predicate_key option to change the SQL used in the lookup, for one_to_many associations" do
368
- EagerBand.one_to_many :salbums, :clone=>:albums, :eager_loading_predicate_key=>Sequel.*(:albums__band_id, 3), :key_method=>:band_id3, :eager=>nil, :reciprocal=>nil
369
- EagerBand.dataset._fetch = {:id=>6}
370
- a = EagerBand.eager(:salbums).all
371
- DB.sqls.should == ['SELECT * FROM bands', 'SELECT * FROM albums WHERE ((albums.band_id * 3) IN (6))']
372
- a.should == [EagerBand.load(:id => 6)]
373
- a.first.salbums.should == [EagerAlbum.load(:id => 1, :band_id => 2)]
374
- DB.sqls.should == []
375
- end
376
-
377
- it "should handle a :eager_loading_predicate_key option to change the SQL used in the lookup, for many_to_many associations" do
378
- EagerAlbum.many_to_many :sgenres, :clone=>:genres, :eager_loading_predicate_key=>Sequel.*(:ag__album_id, 1)
379
- a = EagerAlbum.eager(:sgenres).all
380
- a.should == [EagerAlbum.load(:id => 1, :band_id => 2)]
381
- DB.sqls.should == ['SELECT * FROM albums', "SELECT genres.*, (ag.album_id * 1) AS x_foreign_key_x FROM genres INNER JOIN ag ON (ag.genre_id = genres.id) WHERE ((ag.album_id * 1) IN (1))"]
382
- a.first.sgenres.should == [EagerGenre.load(:id=>4)]
383
- DB.sqls.should == []
384
- end
385
-
386
- it "should handle a :eager_loading_predicate_key option to change the SQL used in the lookup, for one_through_one associations" do
387
- EagerAlbum.one_through_one :sgenre, :clone=>:genre, :eager_loading_predicate_key=>Sequel.*(:ag__album_id, 1)
388
- a = EagerAlbum.eager(:sgenre).all
389
- a.should == [EagerAlbum.load(:id => 1, :band_id => 2)]
390
- DB.sqls.should == ['SELECT * FROM albums', "SELECT genres.*, (ag.album_id * 1) AS x_foreign_key_x FROM genres INNER JOIN ag ON (ag.genre_id = genres.id) WHERE ((ag.album_id * 1) IN (1))"]
391
- a.first.sgenre.should == EagerGenre.load(:id=>4)
392
- DB.sqls.should == []
393
- end
394
-
395
- it "should raise an error for an unhandled :eager_loader_key option" do
396
- EagerAlbum.many_to_many :sgenres, :clone=>:genres, :eager_loader_key=>1
397
- ds = EagerAlbum.eager(:sgenres)
398
- proc{ds.all}.should raise_error(Sequel::Error)
399
- end
400
-
401
- it "should not add entry to key_hash for :eager_loader_key=>nil option" do
402
- eo = nil
403
- EagerAlbum.many_to_many :sgenres, :clone=>:genres, :eager_loader_key=>nil, :eager_loader=>proc{|o| eo = o}
404
- ds = EagerAlbum.eager(:sgenres)
405
- ds.all
406
- eo[:key_hash].should == {}
407
- eo[:id_map].should == nil
408
- end
409
-
410
- it "should correctly handle a :select=>[] option to many_to_many" do
411
- EagerAlbum.many_to_many :sgenres, :clone=>:genres, :select=>[]
412
- EagerAlbum.eager(:sgenres).all
413
- DB.sqls.should == ['SELECT * FROM albums', "SELECT *, ag.album_id AS x_foreign_key_x FROM genres INNER JOIN ag ON (ag.genre_id = genres.id) WHERE (ag.album_id IN (1))"]
414
- end
415
-
416
- it "should correctly handle a :select=>[] option to one_through_one" do
417
- EagerAlbum.one_through_one :sgenre, :clone=>:genre, :select=>[]
418
- EagerAlbum.eager(:sgenre).all
419
- DB.sqls.should == ['SELECT * FROM albums', "SELECT *, ag.album_id AS x_foreign_key_x FROM genres INNER JOIN ag ON (ag.genre_id = genres.id) WHERE (ag.album_id IN (1))"]
420
- end
421
-
422
- it "should correctly handle an aliased join table in many_to_many" do
423
- EagerAlbum.many_to_many :sgenres, :clone=>:genres, :join_table=>:ag___ga
424
- EagerAlbum.eager(:sgenres).all
425
- DB.sqls.should == ['SELECT * FROM albums', "SELECT genres.*, ga.album_id AS x_foreign_key_x FROM genres INNER JOIN ag AS ga ON (ga.genre_id = genres.id) WHERE (ga.album_id IN (1))"]
426
- end
427
-
428
- it "should correctly handle an aliased join table in one_through_one" do
429
- EagerAlbum.one_through_one :sgenre, :clone=>:genre, :join_table=>:ag___ga
430
- EagerAlbum.eager(:sgenre).all
431
- DB.sqls.should == ['SELECT * FROM albums', "SELECT genres.*, ga.album_id AS x_foreign_key_x FROM genres INNER JOIN ag AS ga ON (ga.genre_id = genres.id) WHERE (ga.album_id IN (1))"]
432
- end
433
-
434
- it "should eagerly load multiple associations in a single call" do
435
- a = EagerAlbum.eager(:genres, :tracks, :band).all
436
- a.should == [EagerAlbum.load(:id => 1, :band_id => 2)]
437
- sqls = DB.sqls
438
- sqls.shift.should == 'SELECT * FROM albums'
439
- sqls.sort.should == ['SELECT * FROM bands WHERE (bands.id IN (2))',
440
- 'SELECT * FROM tracks WHERE (tracks.album_id IN (1))',
441
- 'SELECT genres.*, ag.album_id AS x_foreign_key_x FROM genres INNER JOIN ag ON (ag.genre_id = genres.id) WHERE (ag.album_id IN (1))']
442
- a = a.first
443
- a.band.should == EagerBand.load(:id=>2)
444
- a.tracks.should == [EagerTrack.load(:id => 3, :album_id=>1)]
445
- a.genres.should == [EagerGenre.load(:id => 4)]
446
- DB.sqls.should == []
447
- end
448
-
449
- it "should eagerly load multiple associations in separate calls" do
450
- a = EagerAlbum.eager(:genres).eager(:tracks).eager(:band).all
451
- a.should == [EagerAlbum.load(:id => 1, :band_id => 2)]
452
- sqls = DB.sqls
453
- sqls.shift.should == 'SELECT * FROM albums'
454
- sqls.sort.should == ['SELECT * FROM bands WHERE (bands.id IN (2))',
455
- 'SELECT * FROM tracks WHERE (tracks.album_id IN (1))',
456
- 'SELECT genres.*, ag.album_id AS x_foreign_key_x FROM genres INNER JOIN ag ON (ag.genre_id = genres.id) WHERE (ag.album_id IN (1))']
457
- a = a.first
458
- a.band.should == EagerBand.load(:id=>2)
459
- a.tracks.should == [EagerTrack.load(:id => 3, :album_id=>1)]
460
- a.genres.should == [EagerGenre.load(:id => 4)]
461
- DB.sqls.should == []
462
- end
463
-
464
- it "should allow cascading of eager loading for associations of associated models" do
465
- a = EagerTrack.eager(:album=>{:band=>:members}).all
466
- a.should == [EagerTrack.load(:id => 3, :album_id => 1)]
467
- DB.sqls.should == ['SELECT * FROM tracks',
468
- 'SELECT * FROM albums WHERE (albums.id IN (1))',
469
- 'SELECT * FROM bands WHERE (bands.id IN (2))',
470
- "SELECT members.*, bm.band_id AS x_foreign_key_x FROM members INNER JOIN bm ON (bm.member_id = members.id) WHERE (bm.band_id IN (2))"]
471
- a = a.first
472
- a.album.should == EagerAlbum.load(:id => 1, :band_id => 2)
473
- a.album.band.should == EagerBand.load(:id => 2)
474
- a.album.band.members.should == [EagerBandMember.load(:id => 5)]
475
- DB.sqls.should == []
476
- end
477
-
478
- it "should cascade eager loading when using a UNION strategy for eager loading limited associations" do
479
- EagerTrack.many_to_one :album2, :clone=>:album
480
- EagerAlbum.one_to_one :track, :class=>'EagerTrack', :key=>:album_id, :order=>:a
481
- a = EagerAlbum.eager(:track=>:album2).all
482
- a.should == [EagerAlbum.load(:id => 1, :band_id => 2)]
483
- DB.sqls.should == ['SELECT * FROM albums', 'SELECT * FROM (SELECT * FROM tracks WHERE (1 = tracks.album_id) ORDER BY a LIMIT 1) AS t1', 'SELECT * FROM albums WHERE (albums.id IN (1))']
484
- a.first.track.should == EagerTrack.load(:id => 3, :album_id=>1)
485
- a.first.track.album2.should == EagerAlbum.load(:id => 1, :band_id => 2)
486
- DB.sqls.should == []
487
-
488
- a = EagerAlbum.eager(:track=>[:album2]).all
489
- a.should == [EagerAlbum.load(:id => 1, :band_id => 2)]
490
- DB.sqls.should == ['SELECT * FROM albums', 'SELECT * FROM (SELECT * FROM tracks WHERE (1 = tracks.album_id) ORDER BY a LIMIT 1) AS t1', 'SELECT * FROM albums WHERE (albums.id IN (1))']
491
- a.first.track.should == EagerTrack.load(:id => 3, :album_id=>1)
492
- a.first.track.album2.should == EagerAlbum.load(:id => 1, :band_id => 2)
493
- DB.sqls.should == []
494
-
495
- a = EagerAlbum.eager(:track=>{:album2=>:track}).all
496
- a.should == [EagerAlbum.load(:id => 1, :band_id => 2)]
497
- DB.sqls.should == ['SELECT * FROM albums', 'SELECT * FROM (SELECT * FROM tracks WHERE (1 = tracks.album_id) ORDER BY a LIMIT 1) AS t1', 'SELECT * FROM albums WHERE (albums.id IN (1))', 'SELECT * FROM (SELECT * FROM tracks WHERE (1 = tracks.album_id) ORDER BY a LIMIT 1) AS t1']
498
- a.first.track.should == EagerTrack.load(:id => 3, :album_id=>1)
499
- a.first.track.album2.should == EagerAlbum.load(:id => 1, :band_id => 2)
500
- a.first.track.album2.track.should == EagerTrack.load(:id => 3, :album_id=>1)
501
- DB.sqls.should == []
502
- end
503
-
504
- it "should call post_load when eager loading limited associations" do
505
- EagerTrack.many_to_one :album2, :clone=>:album
506
- a = []
507
- m = Module.new do
508
- define_method(:post_load) do |objs|
509
- a << 1
510
- super(objs)
511
- end
512
- end
513
- EagerAlbum.one_to_one :track, :class=>'EagerTrack', :key=>:album_id, :order=>:a, :extend=>m
514
- EagerAlbum.eager(:track).all
515
- a.should == [1]
516
- end
517
-
518
- it "should cascade eagerly loading when the :eager association option is used" do
519
- a = EagerBand.eager(:albums).all
520
- a.should == [EagerBand.load(:id=>2)]
521
- DB.sqls.should == ['SELECT * FROM bands',
522
- 'SELECT * FROM albums WHERE (albums.band_id IN (2))',
523
- 'SELECT * FROM tracks WHERE (tracks.album_id IN (1))']
524
- a.first.albums.should == [EagerAlbum.load(:id => 1, :band_id => 2)]
525
- a.first.albums.first.tracks.should == [EagerTrack.load(:id => 3, :album_id => 1)]
526
- DB.sqls.should == []
527
- end
528
-
529
- it "should respect :eager when lazily loading an association" do
530
- a = EagerBand.all
531
- a.should == [EagerBand.load(:id=>2)]
532
- DB.sqls.should == ['SELECT * FROM bands']
533
- a = a.first.albums
534
- DB.sqls.should == ['SELECT * FROM albums WHERE (albums.band_id = 2)',
535
- 'SELECT * FROM tracks WHERE (tracks.album_id IN (1))']
536
- a.should == [EagerAlbum.load(:id => 1, :band_id => 2)]
537
- a.first.tracks.should == [EagerTrack.load(:id => 3, :album_id => 1)]
538
- DB.sqls.should == []
539
- end
540
-
541
- it "should cascade eagerly loading when the :eager_graph association option is used" do
542
- EagerAlbum.dataset._fetch = {:id=>1, :band_id=>2, :tracks_id=>3, :album_id=>1}
543
- a = EagerBand.eager(:graph_albums).all
544
- a.should == [EagerBand.load(:id=>2)]
545
- DB.sqls.should == ['SELECT * FROM bands',
546
- 'SELECT albums.id, albums.band_id, tracks.id AS tracks_id, tracks.album_id FROM albums LEFT OUTER JOIN tracks ON (tracks.album_id = albums.id) WHERE (albums.band_id IN (2))']
547
- a.first.graph_albums.should == [EagerAlbum.load(:id => 1, :band_id => 2)]
548
- a.first.graph_albums.first.tracks.should == [EagerTrack.load(:id => 3, :album_id => 1)]
549
- DB.sqls.should == []
550
- end
551
-
552
- it "should raise an Error when eager loading a many_to_many association with the :eager_graph option" do
553
- proc{EagerBand.eager(:graph_members).all}.should raise_error(Sequel::Error)
554
- end
555
-
556
- it "should respect :eager_graph when lazily loading an association" do
557
- a = EagerBand.all
558
- a.should == [EagerBand.load(:id=>2)]
559
- DB.sqls.should == ['SELECT * FROM bands']
560
- a = a.first
561
- EagerAlbum.dataset._fetch = {:id=>1, :band_id=>2, :tracks_id=>3, :album_id=>1}
562
- a.graph_albums
563
- DB.sqls.should == ['SELECT albums.id, albums.band_id, tracks.id AS tracks_id, tracks.album_id FROM albums LEFT OUTER JOIN tracks ON (tracks.album_id = albums.id) WHERE (albums.band_id = 2)']
564
- a.graph_albums.should == [EagerAlbum.load(:id => 1, :band_id => 2)]
565
- a.graph_albums.first.tracks.should == [EagerTrack.load(:id => 3, :album_id => 1)]
566
- DB.sqls.should == []
567
- end
568
-
569
- it "should respect :eager_graph when lazily loading a many_to_many association" do
570
- ds = EagerBandMember.dataset
571
- def ds.columns() [:id] end
572
- ds._fetch = [{:id=>5, :bands_id=>2, :p_k=>6}, {:id=>5, :bands_id=>3, :p_k=>6}]
573
- a = EagerBand.load(:id=>2)
574
- a.graph_members.should == [EagerBandMember.load(:id=>5)]
575
- DB.sqls.should == ['SELECT members.id, bands.id AS bands_id, bands.p_k FROM (SELECT members.* FROM members INNER JOIN bm ON (bm.member_id = members.id) WHERE (bm.band_id = 2)) AS members LEFT OUTER JOIN bm AS bm_0 ON (bm_0.member_id = members.id) LEFT OUTER JOIN bands ON (bands.id = bm_0.band_id) ORDER BY bands.id']
576
- a.graph_members.first.bands.should == [EagerBand.load(:id=>2, :p_k=>6), EagerBand.load(:id=>3, :p_k=>6)]
577
- DB.sqls.should == []
578
- end
579
-
580
- it "should respect :conditions when eagerly loading" do
581
- EagerBandMember.many_to_many :good_bands, :clone=>:bands, :conditions=>{:a=>32}
582
- a = EagerBandMember.eager(:good_bands).all
583
- a.should == [EagerBandMember.load(:id => 5)]
584
- DB.sqls.should == ['SELECT * FROM members', 'SELECT bands.*, bm.member_id AS x_foreign_key_x FROM bands INNER JOIN bm ON (bm.band_id = bands.id) WHERE ((a = 32) AND (bm.member_id IN (5))) ORDER BY id']
585
- a.first.good_bands.should == [EagerBand.load(:id => 2)]
586
- DB.sqls.should == []
587
-
588
- EagerBandMember.many_to_many :good_bands, :clone=>:bands, :conditions=>"x = 1"
589
- a = EagerBandMember.eager(:good_bands).all
590
- DB.sqls.should == ['SELECT * FROM members', 'SELECT bands.*, bm.member_id AS x_foreign_key_x FROM bands INNER JOIN bm ON (bm.band_id = bands.id) WHERE ((x = 1) AND (bm.member_id IN (5))) ORDER BY id']
591
- end
592
-
593
- it "should respect :order when eagerly loading" do
594
- a = EagerBandMember.eager(:bands).all
595
- a.should == [EagerBandMember.load(:id => 5)]
596
- DB.sqls.should == ['SELECT * FROM members', 'SELECT bands.*, bm.member_id AS x_foreign_key_x FROM bands INNER JOIN bm ON (bm.band_id = bands.id) WHERE (bm.member_id IN (5)) ORDER BY id']
597
- a.first.bands.should == [EagerBand.load(:id => 2)]
598
- DB.sqls.should == []
599
- end
600
-
601
- it "should populate the reciprocal many_to_one association when eagerly loading the one_to_many association" do
602
- a = EagerAlbum.eager(:tracks).all
603
- a.should == [EagerAlbum.load(:id => 1, :band_id => 2)]
604
- DB.sqls.should == ['SELECT * FROM albums', 'SELECT * FROM tracks WHERE (tracks.album_id IN (1))']
605
- a.first.tracks.should == [EagerTrack.load(:id => 3, :album_id=>1)]
606
- a.first.tracks.first.album.should == a.first
607
- DB.sqls.should == []
608
- end
609
-
610
- it "should cache the negative lookup when eagerly loading a many_to_one association" do
611
- a = EagerAlbum.eager(:band).filter(:id=>101).all
612
- a.should == [EagerAlbum.load(:id => 101, :band_id => 101)]
613
- DB.sqls.should == ['SELECT * FROM albums WHERE (id = 101)', 'SELECT * FROM bands WHERE (bands.id IN (101))']
614
- a.first.associations.fetch(:band, 2).should be_nil
615
- a.first.band.should be_nil
616
- DB.sqls.should == []
617
- end
618
-
619
- it "should cache the negative lookup when eagerly loading a *_to_many associations" do
620
- a = EagerBand.eager(:albums).filter('id > 100').all
621
- a.should == [EagerBand.load(:id => 101), EagerBand.load(:id =>102)]
622
- sqls = DB.sqls
623
- ['SELECT * FROM albums WHERE (albums.band_id IN (101, 102))', 'SELECT * FROM albums WHERE (albums.band_id IN (102, 101))'].should include(sqls.delete_at(1))
624
- sqls.should == ['SELECT * FROM bands WHERE (id > 100)', "SELECT * FROM tracks WHERE (tracks.album_id IN (101))"]
625
- a.map{|b| b.associations[:albums]}.should == [[EagerAlbum.load({:band_id=>101, :id=>101})], []]
626
- DB.sqls.should == []
627
- end
628
-
629
- it "should use the association's block when eager loading by default" do
630
- EagerAlbum.eager(:good_tracks).all
631
- DB.sqls.should == ['SELECT * FROM albums', "SELECT * FROM tracks WHERE ((name = 'Good') AND (tracks.album_id IN (1)))"]
632
- end
633
-
634
- it "should use the eager_block option when eager loading if given" do
635
- EagerBand.eager(:good_albums).all
636
- DB.sqls.should == ['SELECT * FROM bands', "SELECT * FROM albums WHERE ((name = 'good') AND (albums.band_id IN (2)))"]
637
- EagerBand.eager(:good_albums=>:good_tracks).all
638
- DB.sqls.should == ['SELECT * FROM bands', "SELECT * FROM albums WHERE ((name = 'good') AND (albums.band_id IN (2)))", "SELECT * FROM tracks WHERE ((name = 'Good') AND (tracks.album_id IN (1)))"]
639
- end
640
-
641
- it "should raise an error when attempting to eagerly load an association with the :allow_eager option set to false" do
642
- proc{EagerBand.eager(:self_titled_albums).all}.should raise_error(Sequel::Error)
643
- proc{EagerBand.eager(:albums_by_name).all}.should raise_error(Sequel::Error)
644
- end
645
-
646
- it "should respect the association's :select option" do
647
- EagerAlbum.eager(:band_name).all
648
- DB.sqls.should == ['SELECT * FROM albums', "SELECT id, name FROM bands WHERE (bands.id IN (2))"]
649
- EagerAlbum.eager(:track_names).all
650
- DB.sqls.should == ['SELECT * FROM albums', "SELECT id, name FROM tracks WHERE (tracks.album_id IN (1))"]
651
- EagerAlbum.eager(:genre_names).all
652
- DB.sqls.should == ['SELECT * FROM albums', "SELECT id, ag.album_id AS x_foreign_key_x FROM genres INNER JOIN ag ON (ag.genre_id = genres.id) WHERE (ag.album_id IN (1))"]
653
- end
654
-
655
- it "should respect many_to_one association's :qualify option" do
656
- EagerAlbum.many_to_one :special_band, :class=>:EagerBand, :qualify=>false, :key=>:band_id
657
- EagerBand.dataset._fetch = {:id=>2}
658
- as = EagerAlbum.eager(:special_band).all
659
- DB.sqls.should == ['SELECT * FROM albums', "SELECT * FROM bands WHERE (id IN (2))"]
660
- as.map{|a| a.special_band}.should == [EagerBand.load(:id=>2)]
661
- DB.sqls.should == []
662
- end
663
-
664
- it "should respect the association's :primary_key option" do
665
- EagerAlbum.many_to_one :special_band, :class=>:EagerBand, :primary_key=>:p_k, :key=>:band_id
666
- EagerBand.dataset._fetch = {:p_k=>2, :id=>1}
667
- as = EagerAlbum.eager(:special_band).all
668
- DB.sqls.should == ['SELECT * FROM albums', "SELECT * FROM bands WHERE (bands.p_k IN (2))"]
669
- as.length.should == 1
670
- as.first.special_band.should == EagerBand.load(:p_k=>2, :id=>1)
671
-
672
- EagerAlbum.one_to_many :special_tracks, :class=>:EagerTrack, :primary_key=>:band_id, :key=>:album_id, :reciprocal=>nil
673
- EagerTrack.dataset._fetch = {:album_id=>2, :id=>1}
674
- as = EagerAlbum.eager(:special_tracks).all
675
- DB.sqls.should == ['SELECT * FROM albums', "SELECT * FROM tracks WHERE (tracks.album_id IN (2))"]
676
- as.length.should == 1
677
- as.first.special_tracks.should == [EagerTrack.load(:album_id=>2, :id=>1)]
678
- end
679
-
680
- it "should respect the many_to_one association's composite keys" do
681
- EagerAlbum.many_to_one :special_band, :class=>:EagerBand, :primary_key=>[:id, :p_k], :key=>[:band_id, :id]
682
- EagerBand.dataset._fetch = {:p_k=>1, :id=>2}
683
- as = EagerAlbum.eager(:special_band).all
684
- DB.sqls.should == ['SELECT * FROM albums', "SELECT * FROM bands WHERE ((bands.id, bands.p_k) IN ((2, 1)))"]
685
- as.length.should == 1
686
- as.first.special_band.should == EagerBand.load(:p_k=>1, :id=>2)
687
- end
688
-
689
- it "should respect the one_to_many association's composite keys" do
690
- EagerAlbum.one_to_many :special_tracks, :class=>:EagerTrack, :primary_key=>[:band_id, :id], :key=>[:id, :album_id]
691
- EagerTrack.dataset._fetch = {:album_id=>1, :id=>2}
692
- as = EagerAlbum.eager(:special_tracks).all
693
- DB.sqls.should == ['SELECT * FROM albums', "SELECT * FROM tracks WHERE ((tracks.id, tracks.album_id) IN ((2, 1)))"]
694
- as.length.should == 1
695
- as.first.special_tracks.should == [EagerTrack.load(:album_id=>1, :id=>2)]
696
- end
697
-
698
- it "should respect many_to_many association's composite keys" do
699
- EagerAlbum.many_to_many :special_genres, :class=>:EagerGenre, :left_primary_key=>[:band_id, :id], :left_key=>[:l1, :l2], :right_primary_key=>[:xxx, :id], :right_key=>[:r1, :r2], :join_table=>:ag
700
- EagerGenre.dataset._fetch = [{:x_foreign_key_0_x=>2, :x_foreign_key_1_x=>1, :id=>5}, {:x_foreign_key_0_x=>2, :x_foreign_key_1_x=>1, :id=>6}]
701
- as = EagerAlbum.eager(:special_genres).all
702
- DB.sqls.should == ['SELECT * FROM albums', "SELECT genres.*, ag.l1 AS x_foreign_key_0_x, ag.l2 AS x_foreign_key_1_x FROM genres INNER JOIN ag ON ((ag.r1 = genres.xxx) AND (ag.r2 = genres.id)) WHERE ((ag.l1, ag.l2) IN ((2, 1)))"]
703
- as.length.should == 1
704
- as.first.special_genres.should == [EagerGenre.load(:id=>5), EagerGenre.load(:id=>6)]
705
- end
706
-
707
- it "should respect one_through_one association's composite keys" do
708
- EagerAlbum.one_through_one :special_genre, :class=>:EagerGenre, :left_primary_key=>[:band_id, :id], :left_key=>[:l1, :l2], :right_primary_key=>[:xxx, :id], :right_key=>[:r1, :r2], :join_table=>:ag
709
- EagerGenre.dataset._fetch = [{:x_foreign_key_0_x=>2, :x_foreign_key_1_x=>1, :id=>5}]
710
- as = EagerAlbum.eager(:special_genre).all
711
- DB.sqls.should == ['SELECT * FROM albums', "SELECT genres.*, ag.l1 AS x_foreign_key_0_x, ag.l2 AS x_foreign_key_1_x FROM genres INNER JOIN ag ON ((ag.r1 = genres.xxx) AND (ag.r2 = genres.id)) WHERE ((ag.l1, ag.l2) IN ((2, 1)))"]
712
- as.length.should == 1
713
- as.first.special_genre.should == EagerGenre.load(:id=>5)
714
- end
715
-
716
- it "should respect many_to_many association's :left_primary_key and :right_primary_key options" do
717
- EagerAlbum.many_to_many :special_genres, :class=>:EagerGenre, :left_primary_key=>:band_id, :left_key=>:album_id, :right_primary_key=>:xxx, :right_key=>:genre_id, :join_table=>:ag
718
- EagerGenre.dataset._fetch = [{:x_foreign_key_x=>2, :id=>5}, {:x_foreign_key_x=>2, :id=>6}]
719
- as = EagerAlbum.eager(:special_genres).all
720
- DB.sqls.should == ['SELECT * FROM albums', "SELECT genres.*, ag.album_id AS x_foreign_key_x FROM genres INNER JOIN ag ON (ag.genre_id = genres.xxx) WHERE (ag.album_id IN (2))"]
721
- as.length.should == 1
722
- as.first.special_genres.should == [EagerGenre.load(:id=>5), EagerGenre.load(:id=>6)]
723
- end
724
-
725
- it "should respect one_through_one association's :left_primary_key and :right_primary_key options" do
726
- EagerAlbum.one_through_one :special_genre, :class=>:EagerGenre, :left_primary_key=>:band_id, :left_key=>:album_id, :right_primary_key=>:xxx, :right_key=>:genre_id, :join_table=>:ag
727
- EagerGenre.dataset._fetch = [{:x_foreign_key_x=>2, :id=>5}]
728
- as = EagerAlbum.eager(:special_genre).all
729
- DB.sqls.should == ['SELECT * FROM albums', "SELECT genres.*, ag.album_id AS x_foreign_key_x FROM genres INNER JOIN ag ON (ag.genre_id = genres.xxx) WHERE (ag.album_id IN (2))"]
730
- as.length.should == 1
731
- as.first.special_genre.should == EagerGenre.load(:id=>5)
732
- end
733
-
734
- it "should respect the :limit option on a one_to_many association using the :ruby strategy" do
735
- EagerAlbum.one_to_many :first_two_tracks, :class=>:EagerTrack, :key=>:album_id, :limit=>2, :eager_limit_strategy=>:ruby
736
- EagerTrack.dataset._fetch = [{:album_id=>1, :id=>2}, {:album_id=>1, :id=>3}, {:album_id=>1, :id=>4}]
737
- as = EagerAlbum.eager(:first_two_tracks).all
738
- DB.sqls.should == ['SELECT * FROM albums', "SELECT * FROM tracks WHERE (tracks.album_id IN (1))"]
739
- as.length.should == 1
740
- as.first.first_two_tracks.should == [EagerTrack.load(:album_id=>1, :id=>2), EagerTrack.load(:album_id=>1, :id=>3)]
741
-
742
- DB.reset
743
- EagerAlbum.one_to_many :first_two_tracks, :class=>:EagerTrack, :key=>:album_id, :limit=>[1,1], :eager_limit_strategy=>:ruby
744
- as = EagerAlbum.eager(:first_two_tracks).all
745
- DB.sqls.should == ['SELECT * FROM albums', "SELECT * FROM tracks WHERE (tracks.album_id IN (1))"]
746
- as.length.should == 1
747
- as.first.first_two_tracks.should == [EagerTrack.load(:album_id=>1, :id=>3)]
748
-
749
- DB.reset
750
- EagerAlbum.one_to_many :first_two_tracks, :class=>:EagerTrack, :key=>:album_id, :limit=>[nil,1], :eager_limit_strategy=>:ruby
751
- as = EagerAlbum.eager(:first_two_tracks).all
752
- DB.sqls.should == ['SELECT * FROM albums', "SELECT * FROM tracks WHERE (tracks.album_id IN (1))"]
753
- as.length.should == 1
754
- as.first.first_two_tracks.should == [EagerTrack.load(:album_id=>1, :id=>3), EagerTrack.load(:album_id=>1, :id=>4)]
755
- end
756
-
757
- it "should respect the :limit option on a one_to_many association" do
758
- EagerAlbum.one_to_many :tracks, :class=>'EagerTrack', :key=>:album_id, :order=>:name, :limit=>2
759
- a = EagerAlbum.eager(:tracks).all
760
- a.should == [EagerAlbum.load(:id => 1, :band_id => 2)]
761
- DB.sqls.should == ['SELECT * FROM albums', 'SELECT * FROM (SELECT * FROM tracks WHERE (1 = tracks.album_id) ORDER BY name LIMIT 2) AS t1']
762
- a.first.tracks.should == [EagerTrack.load(:id => 3, :album_id=>1)]
763
- DB.sqls.should == []
764
-
765
- EagerAlbum.one_to_many :tracks, :class=>'EagerTrack', :key=>:album_id, :order=>:name, :limit=>[2, 1]
766
- a = EagerAlbum.eager(:tracks).all
767
- a.should == [EagerAlbum.load(:id => 1, :band_id => 2)]
768
- DB.sqls.should == ['SELECT * FROM albums', 'SELECT * FROM (SELECT * FROM tracks WHERE (1 = tracks.album_id) ORDER BY name LIMIT 2 OFFSET 1) AS t1']
769
- a.first.tracks.should == [EagerTrack.load(:id => 3, :album_id=>1)]
770
- DB.sqls.should == []
771
-
772
- EagerAlbum.one_to_many :tracks, :class=>'EagerTrack', :key=>:album_id, :order=>:name, :limit=>[nil, 1]
773
- a = EagerAlbum.eager(:tracks).all
774
- a.should == [EagerAlbum.load(:id => 1, :band_id => 2)]
775
- DB.sqls.should == ['SELECT * FROM albums', 'SELECT * FROM (SELECT * FROM tracks WHERE (1 = tracks.album_id) ORDER BY name OFFSET 1) AS t1']
776
- a.first.tracks.should == [EagerTrack.load(:id => 3, :album_id=>1)]
777
- DB.sqls.should == []
778
- end
779
-
780
- it "should respect the :limit option on a one_to_many association with an association block" do
781
- EagerAlbum.one_to_many :tracks, :class=>'EagerTrack', :key=>:album_id, :order=>:name, :limit=>2 do |ds| ds.where(:a=>1) end
782
- a = EagerAlbum.eager(:tracks).all
783
- a.should == [EagerAlbum.load(:id => 1, :band_id => 2)]
784
- DB.sqls.should == ['SELECT * FROM albums', 'SELECT * FROM (SELECT * FROM tracks WHERE ((a = 1) AND (1 = tracks.album_id)) ORDER BY name LIMIT 2) AS t1']
785
- a.first.tracks.should == [EagerTrack.load(:id => 3, :album_id=>1)]
786
- DB.sqls.should == []
787
- end
788
-
789
- it "should respect the :limit option on a one_to_many association using the :window_function strategy" do
790
- def (EagerTrack.dataset).supports_window_functions?() true end
791
- EagerAlbum.one_to_many :tracks, :class=>'EagerTrack', :key=>:album_id, :order=>:name, :limit=>2, :eager_limit_strategy=>:window_function
792
- a = EagerAlbum.eager(:tracks).all
793
- a.should == [EagerAlbum.load(:id => 1, :band_id => 2)]
794
- DB.sqls.should == ['SELECT * FROM albums', 'SELECT * FROM (SELECT *, row_number() OVER (PARTITION BY tracks.album_id ORDER BY name) AS x_sequel_row_number_x FROM tracks WHERE (tracks.album_id IN (1))) AS t1 WHERE (x_sequel_row_number_x <= 2)']
795
- a.first.tracks.should == [EagerTrack.load(:id => 3, :album_id=>1)]
796
- DB.sqls.should == []
797
-
798
- EagerAlbum.one_to_many :tracks, :class=>'EagerTrack', :key=>:album_id, :order=>:name, :limit=>[2, 1], :eager_limit_strategy=>:window_function
799
- a = EagerAlbum.eager(:tracks).all
800
- a.should == [EagerAlbum.load(:id => 1, :band_id => 2)]
801
- DB.sqls.should == ['SELECT * FROM albums', 'SELECT * FROM (SELECT *, row_number() OVER (PARTITION BY tracks.album_id ORDER BY name) AS x_sequel_row_number_x FROM tracks WHERE (tracks.album_id IN (1))) AS t1 WHERE ((x_sequel_row_number_x >= 2) AND (x_sequel_row_number_x < 4))']
802
- a.first.tracks.should == [EagerTrack.load(:id => 3, :album_id=>1)]
803
- DB.sqls.should == []
804
-
805
- EagerAlbum.one_to_many :tracks, :class=>'EagerTrack', :key=>:album_id, :order=>:name, :limit=>[nil, 1], :eager_limit_strategy=>:window_function
806
- a = EagerAlbum.eager(:tracks).all
807
- a.should == [EagerAlbum.load(:id => 1, :band_id => 2)]
808
- DB.sqls.should == ['SELECT * FROM albums', 'SELECT * FROM (SELECT *, row_number() OVER (PARTITION BY tracks.album_id ORDER BY name) AS x_sequel_row_number_x FROM tracks WHERE (tracks.album_id IN (1))) AS t1 WHERE (x_sequel_row_number_x >= 2)']
809
- a.first.tracks.should == [EagerTrack.load(:id => 3, :album_id=>1)]
810
- DB.sqls.should == []
811
- end
812
-
813
- it "should use a ruby strategy for limit if :eager_graph option is used" do
814
- EagerTrack.many_to_one :album2, :clone=>:album
815
- EagerAlbum.one_to_many :first_two_tracks, :class=>:EagerTrack, :key=>:album_id, :limit=>2, :eager_graph=>:album2
816
- EagerTrack.dataset._fetch = [{:album_id=>1, :id=>2, :album2_id=>1, :band_id=>5}, {:album_id=>1, :id=>3, :album2_id=>1, :band_id=>5}, {:album_id=>1, :id=>4, :album2_id=>1, :band_id=>5}]
817
- as = EagerAlbum.eager(:first_two_tracks).all
818
- DB.sqls.should == ['SELECT * FROM albums', "SELECT tracks.id, tracks.album_id, album2.id AS album2_id, album2.band_id FROM tracks LEFT OUTER JOIN albums AS album2 ON (album2.id = tracks.album_id) WHERE (tracks.album_id IN (1))"]
819
- as.length.should == 1
820
- tracks = as.first.first_two_tracks
821
- tracks.should == [EagerTrack.load(:album_id=>1, :id=>2), EagerTrack.load(:album_id=>1, :id=>3)]
822
- tracks.first.album2.should == EagerAlbum.load(:id=>1, :band_id=>5)
823
- tracks.last.album2.should == EagerAlbum.load(:id=>1, :band_id=>5)
824
- end
825
-
826
- it "should not use a union strategy for limit by default if providing a per-eager load callback" do
827
- def (EagerTrack.dataset).supports_window_functions?() true end
828
- EagerAlbum.one_to_many :tracks, :class=>'EagerTrack', :key=>:album_id, :order=>:name, :limit=>2
829
- a = EagerAlbum.eager(:tracks=>proc{|ds| ds.where(:id=>3)}).all
830
- a.should == [EagerAlbum.load(:id => 1, :band_id => 2)]
831
- DB.sqls.should == ['SELECT * FROM albums', 'SELECT * FROM (SELECT *, row_number() OVER (PARTITION BY tracks.album_id ORDER BY name) AS x_sequel_row_number_x FROM tracks WHERE ((tracks.album_id IN (1)) AND (id = 3))) AS t1 WHERE (x_sequel_row_number_x <= 2)']
832
- a.first.tracks.should == [EagerTrack.load(:id => 3, :album_id=>1)]
833
- DB.sqls.should == []
834
- end
835
-
836
- it "should respect the limit option on a many_to_many association using the :ruby strategy" do
837
- EagerAlbum.many_to_many :first_two_genres, :class=>:EagerGenre, :left_primary_key=>:band_id, :left_key=>:album_id, :right_key=>:genre_id, :join_table=>:ag, :limit=>2, :eager_limit_strategy=>:ruby
838
- EagerGenre.dataset._fetch = [{:x_foreign_key_x=>2, :id=>5}, {:x_foreign_key_x=>2, :id=>6}, {:x_foreign_key_x=>2, :id=>7}]
839
- as = EagerAlbum.eager(:first_two_genres).all
840
- DB.sqls.should == ['SELECT * FROM albums', "SELECT genres.*, ag.album_id AS x_foreign_key_x FROM genres INNER JOIN ag ON (ag.genre_id = genres.id) WHERE (ag.album_id IN (2))"]
841
- as.length.should == 1
842
- as.first.first_two_genres.should == [EagerGenre.load(:id=>5), EagerGenre.load(:id=>6)]
843
-
844
- EagerGenre.dataset._fetch = [{:x_foreign_key_x=>2, :id=>5}, {:x_foreign_key_x=>2, :id=>6}, {:x_foreign_key_x=>2, :id=>7}]
845
- EagerAlbum.many_to_many :first_two_genres, :class=>:EagerGenre, :left_primary_key=>:band_id, :left_key=>:album_id, :right_key=>:genre_id, :join_table=>:ag, :limit=>[1, 1], :eager_limit_strategy=>:ruby
846
- as = EagerAlbum.eager(:first_two_genres).all
847
- DB.sqls.should == ['SELECT * FROM albums', "SELECT genres.*, ag.album_id AS x_foreign_key_x FROM genres INNER JOIN ag ON (ag.genre_id = genres.id) WHERE (ag.album_id IN (2))"]
848
- as.length.should == 1
849
- as.first.first_two_genres.should == [EagerGenre.load(:id=>6)]
850
-
851
- EagerGenre.dataset._fetch = [{:x_foreign_key_x=>2, :id=>5}, {:x_foreign_key_x=>2, :id=>6}, {:x_foreign_key_x=>2, :id=>7}]
852
- EagerAlbum.many_to_many :first_two_genres, :class=>:EagerGenre, :left_primary_key=>:band_id, :left_key=>:album_id, :right_key=>:genre_id, :join_table=>:ag, :limit=>[nil, 1], :eager_limit_strategy=>:ruby
853
- as = EagerAlbum.eager(:first_two_genres).all
854
- DB.sqls.should == ['SELECT * FROM albums', "SELECT genres.*, ag.album_id AS x_foreign_key_x FROM genres INNER JOIN ag ON (ag.genre_id = genres.id) WHERE (ag.album_id IN (2))"]
855
- as.length.should == 1
856
- as.first.first_two_genres.should == [EagerGenre.load(:id=>6), EagerGenre.load(:id=>7)]
857
- end
858
-
859
- it "should respect the limit option on a many_to_many association" do
860
- def (EagerGenre.dataset).supports_window_functions?() true end
861
- EagerAlbum.many_to_many :first_two_genres, :class=>:EagerGenre, :left_primary_key=>:band_id, :left_key=>:album_id, :right_key=>:genre_id, :join_table=>:ag, :limit=>2, :order=>:name
862
- EagerGenre.dataset._fetch = [{:x_foreign_key_x=>2, :id=>5}, {:x_foreign_key_x=>2, :id=>6}]
863
- as = EagerAlbum.eager(:first_two_genres).all
864
- DB.sqls.should == ['SELECT * FROM albums', "SELECT * FROM (SELECT genres.*, ag.album_id AS x_foreign_key_x FROM genres INNER JOIN ag ON (ag.genre_id = genres.id) WHERE (2 = ag.album_id) ORDER BY name LIMIT 2) AS t1"]
865
- as.length.should == 1
866
- as.first.first_two_genres.should == [EagerGenre.load(:id=>5), EagerGenre.load(:id=>6)]
867
-
868
- EagerGenre.dataset._fetch = [{:x_foreign_key_x=>2, :id=>5}]
869
- EagerAlbum.many_to_many :first_two_genres, :class=>:EagerGenre, :left_primary_key=>:band_id, :left_key=>:album_id, :right_key=>:genre_id, :join_table=>:ag, :limit=>[1, 1], :order=>:name
870
- as = EagerAlbum.eager(:first_two_genres).all
871
- DB.sqls.should == ['SELECT * FROM albums', "SELECT * FROM (SELECT genres.*, ag.album_id AS x_foreign_key_x FROM genres INNER JOIN ag ON (ag.genre_id = genres.id) WHERE (2 = ag.album_id) ORDER BY name LIMIT 1 OFFSET 1) AS t1"]
872
- as.length.should == 1
873
- as.first.first_two_genres.should == [EagerGenre.load(:id=>5)]
874
-
875
- EagerGenre.dataset._fetch = [{:x_foreign_key_x=>2, :id=>5}, {:x_foreign_key_x=>2, :id=>6}]
876
- EagerAlbum.many_to_many :first_two_genres, :class=>:EagerGenre, :left_primary_key=>:band_id, :left_key=>:album_id, :right_key=>:genre_id, :join_table=>:ag, :limit=>[nil, 1], :order=>:name
877
- as = EagerAlbum.eager(:first_two_genres).all
878
- DB.sqls.should == ['SELECT * FROM albums', "SELECT * FROM (SELECT genres.*, ag.album_id AS x_foreign_key_x FROM genres INNER JOIN ag ON (ag.genre_id = genres.id) WHERE (2 = ag.album_id) ORDER BY name OFFSET 1) AS t1"]
879
- as.length.should == 1
880
- as.first.first_two_genres.should == [EagerGenre.load(:id=>5), EagerGenre.load(:id=>6)]
881
- end
882
-
883
- it "should respect the limit option on a many_to_many association using the :window_function strategy" do
884
- def (EagerGenre.dataset).supports_window_functions?() true end
885
- EagerAlbum.many_to_many :first_two_genres, :class=>:EagerGenre, :left_primary_key=>:band_id, :left_key=>:album_id, :right_key=>:genre_id, :join_table=>:ag, :limit=>2, :order=>:name, :eager_limit_strategy=>:window_function
886
- EagerGenre.dataset._fetch = [{:x_foreign_key_x=>2, :id=>5}, {:x_foreign_key_x=>2, :id=>6}]
887
- as = EagerAlbum.eager(:first_two_genres).all
888
- DB.sqls.should == ['SELECT * FROM albums', "SELECT * FROM (SELECT genres.*, ag.album_id AS x_foreign_key_x, row_number() OVER (PARTITION BY ag.album_id ORDER BY name) AS x_sequel_row_number_x FROM genres INNER JOIN ag ON (ag.genre_id = genres.id) WHERE (ag.album_id IN (2))) AS t1 WHERE (x_sequel_row_number_x <= 2)"]
889
- as.length.should == 1
890
- as.first.first_two_genres.should == [EagerGenre.load(:id=>5), EagerGenre.load(:id=>6)]
891
-
892
- EagerGenre.dataset._fetch = [{:x_foreign_key_x=>2, :id=>5}]
893
- EagerAlbum.many_to_many :first_two_genres, :class=>:EagerGenre, :left_primary_key=>:band_id, :left_key=>:album_id, :right_key=>:genre_id, :join_table=>:ag, :limit=>[1, 1], :order=>:name, :eager_limit_strategy=>:window_function
894
- as = EagerAlbum.eager(:first_two_genres).all
895
- DB.sqls.should == ['SELECT * FROM albums', "SELECT * FROM (SELECT genres.*, ag.album_id AS x_foreign_key_x, row_number() OVER (PARTITION BY ag.album_id ORDER BY name) AS x_sequel_row_number_x FROM genres INNER JOIN ag ON (ag.genre_id = genres.id) WHERE (ag.album_id IN (2))) AS t1 WHERE ((x_sequel_row_number_x >= 2) AND (x_sequel_row_number_x < 3))"]
896
- as.length.should == 1
897
- as.first.first_two_genres.should == [EagerGenre.load(:id=>5)]
898
-
899
- EagerGenre.dataset._fetch = [{:x_foreign_key_x=>2, :id=>5}, {:x_foreign_key_x=>2, :id=>6}]
900
- EagerAlbum.many_to_many :first_two_genres, :class=>:EagerGenre, :left_primary_key=>:band_id, :left_key=>:album_id, :right_key=>:genre_id, :join_table=>:ag, :limit=>[nil, 1], :order=>:name, :eager_limit_strategy=>:window_function
901
- as = EagerAlbum.eager(:first_two_genres).all
902
- DB.sqls.should == ['SELECT * FROM albums', "SELECT * FROM (SELECT genres.*, ag.album_id AS x_foreign_key_x, row_number() OVER (PARTITION BY ag.album_id ORDER BY name) AS x_sequel_row_number_x FROM genres INNER JOIN ag ON (ag.genre_id = genres.id) WHERE (ag.album_id IN (2))) AS t1 WHERE (x_sequel_row_number_x >= 2)"]
903
- as.length.should == 1
904
- as.first.first_two_genres.should == [EagerGenre.load(:id=>5), EagerGenre.load(:id=>6)]
905
- end
906
-
907
- it "should use the :eager_loader association option when eager loading" do
908
- EagerAlbum.many_to_one :special_band, :key=>:band_id, :eager_loader=>(proc do |eo|
909
- item = EagerBand.filter(:album_id=>eo[:rows].collect{|r| [r.pk, r.pk*2]}.flatten).order(:name).first
910
- eo[:rows].each{|r| r.associations[:special_band] = item}
911
- end)
912
- EagerAlbum.one_to_many :special_tracks, :eager_loader=>(proc do |eo|
913
- items = EagerTrack.filter(:album_id=>eo[:rows].collect{|r| [r.pk, r.pk*2]}.flatten).all
914
- eo[:rows].each{|r| r.associations[:special_tracks] = items}
915
- end)
916
- EagerAlbum.many_to_many :special_genres, :class=>:EagerGenre, :eager_loader=>(proc do |eo|
917
- items = EagerGenre.inner_join(:ag, [:genre_id]).filter(:album_id=>eo[:rows].collect{|r| r.pk}).all
918
- eo[:rows].each{|r| r.associations[:special_genres] = items}
919
- end)
920
- a = EagerAlbum.eager(:special_genres, :special_tracks, :special_band).all
921
- a.should == [EagerAlbum.load(:id => 1, :band_id => 2)]
922
- sqls = DB.sqls
923
- sqls.shift.should == 'SELECT * FROM albums'
924
- sqls.sort.should == ['SELECT * FROM bands WHERE (album_id IN (1, 2)) ORDER BY name LIMIT 1',
925
- 'SELECT * FROM genres INNER JOIN ag USING (genre_id) WHERE (album_id IN (1))',
926
- 'SELECT * FROM tracks WHERE (album_id IN (1, 2))']
927
- a = a.first
928
- a.special_band.should == EagerBand.load(:id => 2)
929
- a.special_tracks.should == [EagerTrack.load(:id => 3, :album_id=>1)]
930
- a.special_genres.should == [EagerGenre.load(:id => 4)]
931
- DB.sqls.should == []
932
- end
933
-
934
- it "should respect :after_load callbacks on associations when eager loading" do
935
- EagerAlbum.many_to_one :al_band, :class=>'EagerBand', :key=>:band_id, :after_load=>proc{|o, a| a.id *=2}
936
- EagerAlbum.one_to_many :al_tracks, :class=>'EagerTrack', :key=>:album_id, :after_load=>proc{|o, os| os.each{|a| a.id *=2}}
937
- EagerAlbum.many_to_many :al_genres, :class=>'EagerGenre', :left_key=>:album_id, :right_key=>:genre_id, :join_table=>:ag, :after_load=>proc{|o, os| os.each{|a| a.id *=2}}
938
- a = EagerAlbum.eager(:al_band, :al_tracks, :al_genres).all.first
939
- a.should == EagerAlbum.load(:id => 1, :band_id => 2)
940
- a.al_band.should == EagerBand.load(:id=>4)
941
- a.al_tracks.should == [EagerTrack.load(:id=>6, :album_id=>1)]
942
- a.al_genres.should == [EagerGenre.load(:id=>8)]
943
- end
944
-
945
- it "should respect :uniq option when eagerly loading many_to_many associations" do
946
- EagerAlbum.many_to_many :al_genres, :class=>'EagerGenre', :left_key=>:album_id, :right_key=>:genre_id, :join_table=>:ag, :uniq=>true
947
- EagerGenre.dataset._fetch = [{:x_foreign_key_x=>1, :id=>8}, {:x_foreign_key_x=>1, :id=>8}]
948
- a = EagerAlbum.eager(:al_genres).all.first
949
- DB.sqls.should == ['SELECT * FROM albums', "SELECT genres.*, ag.album_id AS x_foreign_key_x FROM genres INNER JOIN ag ON (ag.genre_id = genres.id) WHERE (ag.album_id IN (1))"]
950
- a.should == EagerAlbum.load(:id => 1, :band_id => 2)
951
- a.al_genres.should == [EagerGenre.load(:id=>8)]
952
- end
953
-
954
- it "should respect :distinct option when eagerly loading many_to_many associations" do
955
- EagerAlbum.many_to_many :al_genres, :class=>'EagerGenre', :left_key=>:album_id, :right_key=>:genre_id, :join_table=>:ag, :distinct=>true
956
- a = EagerAlbum.eager(:al_genres).all.first
957
- DB.sqls.should == ['SELECT * FROM albums', "SELECT DISTINCT genres.*, ag.album_id AS x_foreign_key_x FROM genres INNER JOIN ag ON (ag.genre_id = genres.id) WHERE (ag.album_id IN (1))"]
958
- a.should == EagerAlbum.load(:id => 1, :band_id => 2)
959
- a.al_genres.should == [EagerGenre.load(:id=>4)]
960
- end
961
-
962
- it "should eagerly load a many_to_one association with custom eager block" do
963
- a = EagerAlbum.eager(:band => proc {|ds| ds.select(:id, :name)}).all
964
- a.should == [EagerAlbum.load(:id => 1, :band_id => 2)]
965
- DB.sqls.should == ['SELECT * FROM albums', 'SELECT id, name FROM bands WHERE (bands.id IN (2))']
966
- a.first.band.should == EagerBand.load(:id => 2)
967
- DB.sqls.should == []
968
- end
969
-
970
- it "should eagerly load a one_to_one association with custom eager block" do
971
- EagerAlbum.one_to_one :track, :class=>'EagerTrack', :key=>:album_id
972
- a = EagerAlbum.eager(:track => proc {|ds| ds.select(:id)}).all
973
- a.should == [EagerAlbum.load(:id => 1, :band_id => 2)]
974
- DB.sqls.should == ['SELECT * FROM albums', 'SELECT id FROM tracks WHERE (tracks.album_id IN (1))']
975
- a.first.track.should == EagerTrack.load(:id => 3, :album_id=>1)
976
- DB.sqls.should == []
977
- end
978
-
979
- it "should eagerly load a one_to_many association with custom eager block" do
980
- a = EagerAlbum.eager(:tracks => proc {|ds| ds.select(:id)}).all
981
- a.should == [EagerAlbum.load(:id => 1, :band_id => 2)]
982
- DB.sqls.should == ['SELECT * FROM albums', 'SELECT id FROM tracks WHERE (tracks.album_id IN (1))']
983
- a.first.tracks.should == [EagerTrack.load(:id => 3, :album_id=>1)]
984
- DB.sqls.should == []
985
- end
986
-
987
- it "should eagerly load a many_to_many association with custom eager block" do
988
- a = EagerAlbum.eager(:genres => proc {|ds| ds.select(:name)}).all
989
- a.should == [EagerAlbum.load(:id => 1, :band_id => 2)]
990
- DB.sqls.should == ['SELECT * FROM albums', "SELECT name, ag.album_id AS x_foreign_key_x FROM genres INNER JOIN ag ON (ag.genre_id = genres.id) WHERE (ag.album_id IN (1))"]
991
- a.first.genres.should == [EagerGenre.load(:id => 4)]
992
- DB.sqls.should == []
993
- end
994
-
995
- it "should eagerly load a one_through_one association with custom eager block" do
996
- a = EagerAlbum.eager(:genre => proc {|ds| ds.select(:name)}).all
997
- a.should == [EagerAlbum.load(:id => 1, :band_id => 2)]
998
- DB.sqls.should == ['SELECT * FROM albums', "SELECT name, ag.album_id AS x_foreign_key_x FROM genres INNER JOIN ag ON (ag.genre_id = genres.id) WHERE (ag.album_id IN (1))"]
999
- a.first.genre.should == EagerGenre.load(:id => 4)
1000
- DB.sqls.should == []
1001
- end
1002
-
1003
- it "should allow cascading of eager loading within a custom eager block" do
1004
- a = EagerTrack.eager(:album => proc {|ds| ds.eager(:band => :members)}).all
1005
- a.should == [EagerTrack.load(:id => 3, :album_id => 1)]
1006
- DB.sqls.should == ['SELECT * FROM tracks',
1007
- 'SELECT * FROM albums WHERE (albums.id IN (1))',
1008
- 'SELECT * FROM bands WHERE (bands.id IN (2))',
1009
- "SELECT members.*, bm.band_id AS x_foreign_key_x FROM members INNER JOIN bm ON (bm.member_id = members.id) WHERE (bm.band_id IN (2))"]
1010
- a = a.first
1011
- a.album.should == EagerAlbum.load(:id => 1, :band_id => 2)
1012
- a.album.band.should == EagerBand.load(:id => 2)
1013
- a.album.band.members.should == [EagerBandMember.load(:id => 5)]
1014
- DB.sqls.should == []
1015
- end
1016
-
1017
- it "should allow cascading of eager loading with custom callback with hash value" do
1018
- a = EagerTrack.eager(:album=>{proc{|ds| ds.select(:id, :band_id)}=>{:band => :members}}).all
1019
- a.should == [EagerTrack.load(:id => 3, :album_id => 1)]
1020
- DB.sqls.should == ['SELECT * FROM tracks',
1021
- 'SELECT id, band_id FROM albums WHERE (albums.id IN (1))',
1022
- 'SELECT * FROM bands WHERE (bands.id IN (2))',
1023
- "SELECT members.*, bm.band_id AS x_foreign_key_x FROM members INNER JOIN bm ON (bm.member_id = members.id) WHERE (bm.band_id IN (2))"]
1024
- a = a.first
1025
- a.album.should == EagerAlbum.load(:id => 1, :band_id => 2)
1026
- a.album.band.should == EagerBand.load(:id => 2)
1027
- a.album.band.members.should == [EagerBandMember.load(:id => 5)]
1028
- DB.sqls.should == []
1029
- end
1030
-
1031
- it "should allow cascading of eager loading with custom callback with symbol value" do
1032
- a = EagerTrack.eager(:album=>{proc{|ds| ds.select(:id, :band_id)}=>:band}).all
1033
- a.should == [EagerTrack.load(:id => 3, :album_id => 1)]
1034
- DB.sqls.should == ['SELECT * FROM tracks',
1035
- 'SELECT id, band_id FROM albums WHERE (albums.id IN (1))',
1036
- 'SELECT * FROM bands WHERE (bands.id IN (2))']
1037
- a = a.first
1038
- a.album.should == EagerAlbum.load(:id => 1, :band_id => 2)
1039
- a.album.band.should == EagerBand.load(:id => 2)
1040
- DB.sqls.should == []
1041
- end
1042
-
1043
- it "should allow cascading of eager loading with custom callback with array value" do
1044
- a = EagerTrack.eager(:album=>{proc{|ds| ds.select(:id, :band_id)}=>[:band, :band_name]}).all
1045
- a.should == [EagerTrack.load(:id => 3, :album_id => 1)]
1046
- sqls = DB.sqls
1047
- sqls.slice!(0..1).should == ['SELECT * FROM tracks',
1048
- 'SELECT id, band_id FROM albums WHERE (albums.id IN (1))']
1049
- sqls.sort.should == ['SELECT * FROM bands WHERE (bands.id IN (2))',
1050
- 'SELECT id, name FROM bands WHERE (bands.id IN (2))']
1051
- a = a.first
1052
- a.album.should == EagerAlbum.load(:id => 1, :band_id => 2)
1053
- a.album.band.should == EagerBand.load(:id => 2)
1054
- a.album.band_name.should == EagerBand.load(:id => 2)
1055
- DB.sqls.should == []
1056
- end
1057
-
1058
- it "should call both association and custom eager blocks" do
1059
- EagerBand.eager(:good_albums => proc {|ds| ds.select(:name)}).all
1060
- DB.sqls.should == ['SELECT * FROM bands', "SELECT name FROM albums WHERE ((name = 'good') AND (albums.band_id IN (2)))"]
1061
- end
1062
- end
1063
-
1064
- describe Sequel::Model, "#eager_graph" do
1065
- before(:all) do
1066
- class ::GraphAlbum < Sequel::Model(:albums)
1067
- dataset.opts[:from] = [:albums]
1068
- columns :id, :band_id
1069
- many_to_one :band, :class=>'GraphBand', :key=>:band_id
1070
- one_to_many :tracks, :class=>'GraphTrack', :key=>:album_id
1071
- one_to_one :track, :class=>'GraphTrack', :key=>:album_id
1072
- many_to_many :genres, :class=>'GraphGenre', :left_key=>:album_id, :right_key=>:genre_id, :join_table=>:ag
1073
- one_through_one :genre, :clone=>:genres
1074
- many_to_one :previous_album, :class=>'GraphAlbum'
1075
- end
1076
-
1077
- class ::GraphBand < Sequel::Model(:bands)
1078
- dataset.opts[:from] = [:bands]
1079
- columns :id, :vocalist_id
1080
- many_to_one :vocalist, :class=>'GraphBandMember', :key=>:vocalist_id
1081
- one_to_many :albums, :class=>'GraphAlbum', :key=>:band_id
1082
- many_to_many :members, :class=>'GraphBandMember', :left_key=>:band_id, :right_key=>:member_id, :join_table=>:bm
1083
- many_to_many :genres, :class=>'GraphGenre', :left_key=>:band_id, :right_key=>:genre_id, :join_table=>:bg
1084
- end
1085
-
1086
- class ::GraphTrack < Sequel::Model(:tracks)
1087
- dataset.opts[:from] = [:tracks]
1088
- columns :id, :album_id
1089
- many_to_one :album, :class=>'GraphAlbum', :key=>:album_id
1090
- end
1091
-
1092
- class ::GraphGenre < Sequel::Model(:genres)
1093
- dataset.opts[:from] = [:genres]
1094
- columns :id
1095
- many_to_many :albums, :class=>'GraphAlbum', :left_key=>:genre_id, :right_key=>:album_id, :join_table=>:ag
1096
- end
1097
-
1098
- class ::GraphBandMember < Sequel::Model(:members)
1099
- dataset.opts[:from] = [:members]
1100
- columns :id
1101
- many_to_many :bands, :class=>'GraphBand', :left_key=>:member_id, :right_key=>:band_id, :join_table=>:bm
1102
- end
1103
- end
1104
- after(:all) do
1105
- [:GraphAlbum, :GraphBand, :GraphTrack, :GraphGenre, :GraphBandMember].each{|x| Object.send(:remove_const, x)}
1106
- end
1107
-
1108
- it "should raise an error if called without a symbol or hash" do
1109
- proc{GraphAlbum.eager_graph(Object.new)}.should raise_error(Sequel::Error)
1110
- end
1111
-
1112
- it "should work correctly with select_map" do
1113
- ds = GraphAlbum.eager_graph(:band)
1114
- ds._fetch = [{:id=>1}, {:id=>2}]
1115
- ds.select_map(:albums__id).should == [1, 2]
1116
- DB.sqls.should == ['SELECT albums.id FROM albums LEFT OUTER JOIN bands AS band ON (band.id = albums.band_id)']
1117
- ds._fetch = [{:id=>1}, {:id=>2}]
1118
- ds.select_map([:albums__id, :albums__id]).should == [[1, 1], [2, 2]]
1119
- DB.sqls.should == ['SELECT albums.id, albums.id FROM albums LEFT OUTER JOIN bands AS band ON (band.id = albums.band_id)']
1120
- end
1121
-
1122
- it "should work correctly with single_value" do
1123
- ds = GraphAlbum.eager_graph(:band).select(:albums__id)
1124
- ds._fetch = [{:id=>1}]
1125
- ds.single_value.should == 1
1126
- DB.sqls.should == ['SELECT albums.id FROM albums LEFT OUTER JOIN bands AS band ON (band.id = albums.band_id) LIMIT 1']
1127
- end
1128
-
1129
- it "should not split results and assign associations if ungraphed is called" do
1130
- ds = GraphAlbum.eager_graph(:band).ungraphed
1131
- ds.sql.should == 'SELECT albums.id, albums.band_id, band.id AS band_id_0, band.vocalist_id FROM albums LEFT OUTER JOIN bands AS band ON (band.id = albums.band_id)'
1132
- ds._fetch = {:id=>1, :band_id=>2, :band_id_0=>2, :vocalist_id=>3}
1133
- ds.all.should == [GraphAlbum.load(:id=>1, :band_id=>2, :band_id_0=>2, :vocalist_id=>3)]
1134
- end
1135
-
1136
- it "should not modify existing dataset" do
1137
- ds1 = GraphAlbum.dataset
1138
- ds2 = ds1.eager_graph(:band)
1139
- proc{ds1.eager_graph(:band)}.should_not raise_error
1140
- proc{ds2.eager_graph(:tracks)}.should_not raise_error
1141
- proc{ds2.eager_graph(:tracks)}.should_not raise_error
1142
- end
1143
-
1144
- it "should allow manually selecting the alias base per call via an AliasedExpression" do
1145
- ds = GraphAlbum.eager_graph(Sequel.as(:band, :b))
1146
- ds.sql.should == 'SELECT albums.id, albums.band_id, b.id AS b_id, b.vocalist_id FROM albums LEFT OUTER JOIN bands AS b ON (b.id = albums.band_id)'
1147
- ds._fetch = {:id=>1, :band_id=>2, :b_id=>2, :vocalist_id=>3}
1148
- a = ds.all
1149
- a.should == [GraphAlbum.load(:id => 1, :band_id => 2)]
1150
- a.first.band.should == GraphBand.load(:id => 2, :vocalist_id=>3)
1151
- end
1152
-
1153
- it "should handle multiple associations using the same alias base" do
1154
- ds = GraphAlbum.eager_graph(Sequel.as(:genres, :b), Sequel.as(:tracks, :b), Sequel.as(:band, :b))
1155
- ds.sql.should == 'SELECT albums.id, albums.band_id, b.id AS b_id, b_0.id AS b_0_id, b_0.album_id, b_1.id AS b_1_id, b_1.vocalist_id FROM albums LEFT OUTER JOIN ag ON (ag.album_id = albums.id) LEFT OUTER JOIN genres AS b ON (b.id = ag.genre_id) LEFT OUTER JOIN tracks AS b_0 ON (b_0.album_id = albums.id) LEFT OUTER JOIN bands AS b_1 ON (b_1.id = albums.band_id)'
1156
- ds._fetch = {:id=>1, :band_id=>2, :b_id=>4, :b_0_id=>3, :album_id=>1, :b_1_id=>2, :vocalist_id=>6}
1157
- a = ds.all
1158
- a.should == [GraphAlbum.load(:id => 1, :band_id => 2)]
1159
- a = a.first
1160
- a.band.should == GraphBand.load(:id => 2, :vocalist_id=>6)
1161
- a.tracks.should == [GraphTrack.load({:id => 3, :album_id=>1})]
1162
- a.genres.should == [GraphGenre.load(:id => 4)]
1163
-
1164
- ds = GraphTrack.eager_graph(Sequel.as(:album, :b)=>{Sequel.as(:band, :b)=>Sequel.as(:members, :b)})
1165
- ds.sql.should == 'SELECT tracks.id, tracks.album_id, b.id AS b_id, b.band_id, b_0.id AS b_0_id, b_0.vocalist_id, b_1.id AS b_1_id FROM tracks LEFT OUTER JOIN albums AS b ON (b.id = tracks.album_id) LEFT OUTER JOIN bands AS b_0 ON (b_0.id = b.band_id) LEFT OUTER JOIN bm ON (bm.band_id = b_0.id) LEFT OUTER JOIN members AS b_1 ON (b_1.id = bm.member_id)'
1166
- ds._fetch = {:id=>3, :album_id=>1, :b_id=>1, :band_id=>2, :b_1_id=>5, :b_0_id=>2, :vocalist_id=>6}
1167
- a = ds.all
1168
- a.should == [GraphTrack.load(:id => 3, :album_id => 1)]
1169
- a = a.first
1170
- a.album.should == GraphAlbum.load(:id => 1, :band_id => 2)
1171
- a.album.band.should == GraphBand.load(:id => 2, :vocalist_id=>6)
1172
- a.album.band.members.should == [GraphBandMember.load(:id => 5)]
1173
- end
1174
-
1175
- it "should set up correct inner joins when using association_join" do
1176
- GraphAlbum.association_join(:band).sql.should == 'SELECT * FROM albums INNER JOIN bands AS band ON (band.id = albums.band_id)'
1177
- GraphAlbum.association_join(:track).sql.should == 'SELECT * FROM albums INNER JOIN tracks AS track ON (track.album_id = albums.id)'
1178
- GraphAlbum.association_join(:tracks).sql.should == 'SELECT * FROM albums INNER JOIN tracks ON (tracks.album_id = albums.id)'
1179
- GraphAlbum.association_join(:genres).sql.should == 'SELECT * FROM albums INNER JOIN ag ON (ag.album_id = albums.id) INNER JOIN genres ON (genres.id = ag.genre_id)'
1180
- GraphAlbum.association_join(:genre).sql.should == 'SELECT * FROM albums INNER JOIN ag ON (ag.album_id = albums.id) INNER JOIN genres AS genre ON (genre.id = ag.genre_id)'
1181
- end
1182
-
1183
- it "should handle custom selects when using association_join" do
1184
- GraphAlbum.select{a(b)}.association_join(:band).sql.should == 'SELECT a(b) FROM albums INNER JOIN bands AS band ON (band.id = albums.band_id)'
1185
- GraphAlbum.select{a(b)}.association_join(:track).sql.should == 'SELECT a(b) FROM albums INNER JOIN tracks AS track ON (track.album_id = albums.id)'
1186
- GraphAlbum.select{a(b)}.association_join(:tracks).sql.should == 'SELECT a(b) FROM albums INNER JOIN tracks ON (tracks.album_id = albums.id)'
1187
- GraphAlbum.select{a(b)}.association_join(:genres).sql.should == 'SELECT a(b) FROM albums INNER JOIN ag ON (ag.album_id = albums.id) INNER JOIN genres ON (genres.id = ag.genre_id)'
1188
- GraphAlbum.select{a(b)}.association_join(:genre).sql.should == 'SELECT a(b) FROM albums INNER JOIN ag ON (ag.album_id = albums.id) INNER JOIN genres AS genre ON (genre.id = ag.genre_id)'
1189
- end
1190
-
1191
- it "should set up correct join types when using association_*_join" do
1192
- GraphAlbum.association_inner_join(:band).sql.should == 'SELECT * FROM albums INNER JOIN bands AS band ON (band.id = albums.band_id)'
1193
- GraphAlbum.association_left_join(:track).sql.should == 'SELECT * FROM albums LEFT JOIN tracks AS track ON (track.album_id = albums.id)'
1194
- GraphAlbum.association_right_join(:tracks).sql.should == 'SELECT * FROM albums RIGHT JOIN tracks ON (tracks.album_id = albums.id)'
1195
- GraphAlbum.association_full_join(:genres).sql.should == 'SELECT * FROM albums FULL JOIN ag ON (ag.album_id = albums.id) FULL JOIN genres ON (genres.id = ag.genre_id)'
1196
- end
1197
-
1198
- it "should eagerly load a single many_to_one association" do
1199
- ds = GraphAlbum.eager_graph(:band)
1200
- ds.sql.should == 'SELECT albums.id, albums.band_id, band.id AS band_id_0, band.vocalist_id FROM albums LEFT OUTER JOIN bands AS band ON (band.id = albums.band_id)'
1201
- ds._fetch = {:id=>1, :band_id=>2, :band_id_0=>2, :vocalist_id=>3}
1202
- a = ds.all
1203
- a.should == [GraphAlbum.load(:id => 1, :band_id => 2)]
1204
- a.first.band.should == GraphBand.load(:id => 2, :vocalist_id=>3)
1205
- end
1206
-
1207
- it "should eagerly load a single many_to_one association with the same name as a column" do
1208
- GraphAlbum.def_column_alias(:band_id_id, :band_id)
1209
- GraphAlbum.many_to_one :band_id, :key_column=>:band_id, :class=>GraphBand
1210
- ds = GraphAlbum.eager_graph(:band_id)
1211
- ds.sql.should == 'SELECT albums.id, albums.band_id, band_id.id AS band_id_id, band_id.vocalist_id FROM albums LEFT OUTER JOIN bands AS band_id ON (band_id.id = albums.band_id)'
1212
- ds._fetch = {:id=>1, :band_id=>2, :band_id_id=>2, :vocalist_id=>3}
1213
- a = ds.all
1214
- a.should == [GraphAlbum.load(:id => 1, :band_id => 2)]
1215
- a.first.band_id.should == GraphBand.load(:id => 2, :vocalist_id=>3)
1216
- end
1217
-
1218
- it "should support :join_type eager_graph option one_to_one association" do
1219
- ds = GraphAlbum.eager_graph_with_options(:track, :join_type=>:inner)
1220
- ds.sql.should == 'SELECT albums.id, albums.band_id, track.id AS track_id, track.album_id FROM albums INNER JOIN tracks AS track ON (track.album_id = albums.id)'
1221
- ds._fetch = {:id=>1, :band_id=>2, :track_id=>3, :album_id=>1}
1222
- a = ds.all
1223
- a.should == [GraphAlbum.load(:id => 1, :band_id => 2)]
1224
- a.first.track.should == GraphTrack.load(:id => 3, :album_id=>1)
1225
- end
1226
-
1227
- it "should eagerly load a single one_to_one association" do
1228
- ds = GraphAlbum.eager_graph(:track)
1229
- ds.sql.should == 'SELECT albums.id, albums.band_id, track.id AS track_id, track.album_id FROM albums LEFT OUTER JOIN tracks AS track ON (track.album_id = albums.id)'
1230
- ds._fetch = {:id=>1, :band_id=>2, :track_id=>3, :album_id=>1}
1231
- a = ds.all
1232
- a.should == [GraphAlbum.load(:id => 1, :band_id => 2)]
1233
- a.first.track.should == GraphTrack.load(:id => 3, :album_id=>1)
1234
- end
1235
-
1236
- it "should eagerly graph a single one_to_one association using the :distinct_on strategy" do
1237
- sub = Class.new(GraphTrack)
1238
- def (sub.dataset).supports_distinct_on?() true end
1239
- def (sub.dataset).columns() [:id, :album_id] end
1240
- GraphAlbum.one_to_one :ltrack, :clone=>:track, :class=>sub
1241
- ds = GraphAlbum.eager_graph_with_options(:ltrack, :limit_strategy=>true)
1242
- ds.sql.should == 'SELECT albums.id, albums.band_id, ltrack.id AS ltrack_id, ltrack.album_id FROM albums LEFT OUTER JOIN (SELECT DISTINCT ON (tracks.album_id) * FROM tracks ORDER BY tracks.album_id) AS ltrack ON (ltrack.album_id = albums.id)'
1243
- ds._fetch = {:id=>1, :band_id=>2, :ltrack_id=>3, :album_id=>1}
1244
- a = ds.all
1245
- a.should == [GraphAlbum.load(:id => 1, :band_id => 2)]
1246
- a.first.ltrack.should == sub.load(:id => 3, :album_id=>1)
1247
- end
1248
-
1249
- it "should eagerly graph a single one_to_one association using the :window_function strategy" do
1250
- sub = Class.new(GraphTrack)
1251
- def (sub.dataset).supports_window_functions?() true end
1252
- def (sub.dataset).columns() [:id, :album_id] end
1253
- GraphAlbum.one_to_one :ltrack, :clone=>:track, :class=>sub
1254
- ds = GraphAlbum.eager_graph_with_options(:ltrack, :limit_strategy=>true)
1255
- ds.sql.should == 'SELECT albums.id, albums.band_id, ltrack.id AS ltrack_id, ltrack.album_id FROM albums LEFT OUTER JOIN (SELECT id, album_id FROM (SELECT *, row_number() OVER (PARTITION BY tracks.album_id) AS x_sequel_row_number_x FROM tracks) AS t1 WHERE (x_sequel_row_number_x = 1)) AS ltrack ON (ltrack.album_id = albums.id)'
1256
- ds._fetch = {:id=>1, :band_id=>2, :ltrack_id=>3, :album_id=>1}
1257
- a = ds.all
1258
- a.should == [GraphAlbum.load(:id => 1, :band_id => 2)]
1259
- a.first.ltrack.should == sub.load(:id => 3, :album_id=>1)
1260
- end
1261
-
1262
- it "should eagerly graph a single one_to_one association using the :correlated_subquery strategy" do
1263
- sub = Class.new(GraphTrack)
1264
- def (sub.dataset).supports_window_functions?() true end
1265
- def (sub.dataset).columns() [:id, :album_id] end
1266
- GraphAlbum.one_to_one :ltrack, :clone=>:track, :class=>sub
1267
- ds = GraphAlbum.eager_graph_with_options(:ltrack, :limit_strategy=>:correlated_subquery)
1268
- ds.sql.should == 'SELECT albums.id, albums.band_id, ltrack.id AS ltrack_id, ltrack.album_id FROM albums LEFT OUTER JOIN (SELECT * FROM tracks WHERE (tracks.id IN (SELECT t1.id FROM tracks AS t1 WHERE (t1.album_id = tracks.album_id) LIMIT 1))) AS ltrack ON (ltrack.album_id = albums.id)'
1269
- ds._fetch = {:id=>1, :band_id=>2, :ltrack_id=>3, :album_id=>1}
1270
- a = ds.all
1271
- a.should == [GraphAlbum.load(:id => 1, :band_id => 2)]
1272
- a.first.ltrack.should == sub.load(:id => 3, :album_id=>1)
1273
- end
1274
-
1275
- it "should eagerly load a single one_to_many association" do
1276
- ds = GraphAlbum.eager_graph(:tracks)
1277
- ds.sql.should == 'SELECT albums.id, albums.band_id, tracks.id AS tracks_id, tracks.album_id FROM albums LEFT OUTER JOIN tracks ON (tracks.album_id = albums.id)'
1278
- ds._fetch = {:id=>1, :band_id=>2, :tracks_id=>3, :album_id=>1}
1279
- a = ds.all
1280
- a.should == [GraphAlbum.load(:id => 1, :band_id => 2)]
1281
- a.first.tracks.should == [GraphTrack.load(:id => 3, :album_id=>1)]
1282
- end
1283
-
1284
- it "should eagerly graph a single one_to_many association using the :window_function strategy" do
1285
- sub = Class.new(GraphTrack)
1286
- def (sub.dataset).supports_window_functions?() true end
1287
- def (sub.dataset).columns() [:id, :album_id] end
1288
- GraphAlbum.one_to_many :ltracks, :clone=>:tracks, :limit=>2, :class=>sub
1289
- ds = GraphAlbum.eager_graph_with_options(:ltracks, :limit_strategy=>true)
1290
- ds.sql.should == 'SELECT albums.id, albums.band_id, ltracks.id AS ltracks_id, ltracks.album_id FROM albums LEFT OUTER JOIN (SELECT id, album_id FROM (SELECT *, row_number() OVER (PARTITION BY tracks.album_id) AS x_sequel_row_number_x FROM tracks) AS t1 WHERE (x_sequel_row_number_x <= 2)) AS ltracks ON (ltracks.album_id = albums.id)'
1291
- ds._fetch = {:id=>1, :band_id=>2, :ltracks_id=>3, :album_id=>1}
1292
- a = ds.all
1293
- a.should == [GraphAlbum.load(:id => 1, :band_id => 2)]
1294
- a.first.ltracks.should == [sub.load(:id => 3, :album_id=>1)]
1295
- end
1296
-
1297
- it "should eagerly load a single many_to_many association" do
1298
- ds = GraphAlbum.eager_graph(:genres)
1299
- ds.sql.should == 'SELECT albums.id, albums.band_id, genres.id AS genres_id FROM albums LEFT OUTER JOIN ag ON (ag.album_id = albums.id) LEFT OUTER JOIN genres ON (genres.id = ag.genre_id)'
1300
- ds._fetch = {:id=>1, :band_id=>2, :genres_id=>4}
1301
- a = ds.all
1302
- a.should == [GraphAlbum.load(:id => 1, :band_id => 2)]
1303
- a.first.genres.should == [GraphGenre.load(:id => 4)]
1304
- end
1305
-
1306
- it "should eagerly graph a single many_to_many association using the :window_function strategy" do
1307
- sub = Class.new(GraphGenre)
1308
- def (sub.dataset).supports_window_functions?() true end
1309
- def (sub.dataset).columns() literal(opts[:select]) =~ /x_foreign_key_x/ ? [:id, :x_foreign_key_x] : [:id] end
1310
- GraphAlbum.many_to_many :lgenres, :clone=>:genres, :class=>sub, :limit=>2
1311
- ds = GraphAlbum.eager_graph_with_options(:lgenres, :limit_strategy=>true)
1312
- ds.sql.should == 'SELECT albums.id, albums.band_id, lgenres.id AS lgenres_id FROM albums LEFT OUTER JOIN (SELECT id, x_foreign_key_x FROM (SELECT genres.*, ag.album_id AS x_foreign_key_x, row_number() OVER (PARTITION BY ag.album_id) AS x_sequel_row_number_x FROM genres INNER JOIN ag ON (ag.genre_id = genres.id)) AS t1 WHERE (x_sequel_row_number_x <= 2)) AS lgenres ON (lgenres.x_foreign_key_x = albums.id)'
1313
- ds._fetch = {:id=>1, :band_id=>2, :lgenres_id=>4}
1314
- a = ds.all
1315
- a.should == [GraphAlbum.load(:id => 1, :band_id => 2)]
1316
- a.first.lgenres.should == [sub.load(:id => 4)]
1317
- end
1318
-
1319
- it "should eagerly load a single one_through_one association" do
1320
- ds = GraphAlbum.eager_graph(:genre)
1321
- ds.sql.should == 'SELECT albums.id, albums.band_id, genre.id AS genre_id FROM albums LEFT OUTER JOIN ag ON (ag.album_id = albums.id) LEFT OUTER JOIN genres AS genre ON (genre.id = ag.genre_id)'
1322
- ds._fetch = {:id=>1, :band_id=>2, :genre_id=>4}
1323
- a = ds.all
1324
- a.should == [GraphAlbum.load(:id => 1, :band_id => 2)]
1325
- a.first.genre.should == GraphGenre.load(:id => 4)
1326
- end
1327
-
1328
- it "should eagerly graph a single one_through_one association using the :distinct_on strategy" do
1329
- sub = Class.new(GraphGenre)
1330
- def (sub.dataset).supports_distinct_on?() true end
1331
- def (sub.dataset).columns() [:id] end
1332
- GraphAlbum.one_through_one :lgenre, :clone=>:genre, :class=>sub
1333
- ds = GraphAlbum.eager_graph_with_options(:lgenre, :limit_strategy=>true)
1334
- ds.sql.should == 'SELECT albums.id, albums.band_id, lgenre.id AS lgenre_id FROM albums LEFT OUTER JOIN (SELECT DISTINCT ON (ag.album_id) genres.*, ag.album_id AS x_foreign_key_x FROM genres INNER JOIN ag ON (ag.genre_id = genres.id) ORDER BY ag.album_id) AS lgenre ON (lgenre.x_foreign_key_x = albums.id)'
1335
- ds._fetch = {:id=>1, :band_id=>2, :lgenre_id=>4}
1336
- a = ds.all
1337
- a.should == [GraphAlbum.load(:id => 1, :band_id => 2)]
1338
- a.first.lgenre.should == sub.load(:id => 4)
1339
- end
1340
-
1341
- it "should eagerly graph a single one_through_one association using the :window_function strategy" do
1342
- sub = Class.new(GraphGenre)
1343
- def (sub.dataset).supports_window_functions?() true end
1344
- def (sub.dataset).columns() literal(opts[:select]) =~ /x_foreign_key_x/ ? [:id, :x_foreign_key_x] : [:id] end
1345
- GraphAlbum.one_through_one :lgenre, :clone=>:genre, :class=>sub
1346
- ds = GraphAlbum.eager_graph_with_options(:lgenre, :limit_strategy=>true)
1347
- ds.sql.should == 'SELECT albums.id, albums.band_id, lgenre.id AS lgenre_id FROM albums LEFT OUTER JOIN (SELECT id, x_foreign_key_x FROM (SELECT genres.*, ag.album_id AS x_foreign_key_x, row_number() OVER (PARTITION BY ag.album_id) AS x_sequel_row_number_x FROM genres INNER JOIN ag ON (ag.genre_id = genres.id)) AS t1 WHERE (x_sequel_row_number_x = 1)) AS lgenre ON (lgenre.x_foreign_key_x = albums.id)'
1348
- ds._fetch = {:id=>1, :band_id=>2, :lgenre_id=>4}
1349
- a = ds.all
1350
- a.should == [GraphAlbum.load(:id => 1, :band_id => 2)]
1351
- a.first.lgenre.should == sub.load(:id => 4)
1352
- end
1353
-
1354
- it "should correctly handle an aliased join table in many_to_many and one_through_one" do
1355
- c = Class.new(GraphAlbum)
1356
- c.many_to_many :genres, :clone=>:genres, :join_table=>:ag___ga
1357
- c.eager_graph(:genres).sql.should == 'SELECT albums.id, albums.band_id, genres.id AS genres_id FROM albums LEFT OUTER JOIN ag AS ga ON (ga.album_id = albums.id) LEFT OUTER JOIN genres ON (genres.id = ga.genre_id)'
1358
-
1359
- c.many_to_many :genre, :clone=>:genre, :join_table=>:ag___ga
1360
- c.eager_graph(:genre).sql.should == 'SELECT albums.id, albums.band_id, genre.id AS genre_id FROM albums LEFT OUTER JOIN ag AS ga ON (ga.album_id = albums.id) LEFT OUTER JOIN genres AS genre ON (genre.id = ga.genre_id)'
1361
-
1362
- c.many_to_many :genres, :clone=>:genres, :join_table=>:ag___albums
1363
- c.eager_graph(:genres).sql.should == 'SELECT albums.id, albums.band_id, genres.id AS genres_id FROM albums LEFT OUTER JOIN ag AS albums_0 ON (albums_0.album_id = albums.id) LEFT OUTER JOIN genres ON (genres.id = albums_0.genre_id)'
1364
-
1365
- c.many_to_many :genres, :clone=>:genres, :join_table=>:ag___genres
1366
- c.eager_graph(:genres).sql.should == 'SELECT albums.id, albums.band_id, genres.id AS genres_id FROM albums LEFT OUTER JOIN ag AS genres_0 ON (genres_0.album_id = albums.id) LEFT OUTER JOIN genres ON (genres.id = genres_0.genre_id)'
1367
- end
1368
-
1369
- it "should handle multiple associations in a single call to association_join" do
1370
- GraphAlbum.association_join(:genres, :tracks, :band).sql.should == 'SELECT * FROM albums INNER JOIN ag ON (ag.album_id = albums.id) INNER JOIN genres ON (genres.id = ag.genre_id) INNER JOIN tracks ON (tracks.album_id = albums.id) INNER JOIN bands AS band ON (band.id = albums.band_id)'
1371
- end
1372
-
1373
- it "should eagerly load multiple associations in a single call" do
1374
- ds = GraphAlbum.eager_graph(:genres, :tracks, :band)
1375
- ds.sql.should == 'SELECT albums.id, albums.band_id, genres.id AS genres_id, tracks.id AS tracks_id, tracks.album_id, band.id AS band_id_0, band.vocalist_id FROM albums LEFT OUTER JOIN ag ON (ag.album_id = albums.id) LEFT OUTER JOIN genres ON (genres.id = ag.genre_id) LEFT OUTER JOIN tracks ON (tracks.album_id = albums.id) LEFT OUTER JOIN bands AS band ON (band.id = albums.band_id)'
1376
- ds._fetch = {:id=>1, :band_id=>2, :genres_id=>4, :tracks_id=>3, :album_id=>1, :band_id_0=>2, :vocalist_id=>6}
1377
- a = ds.all
1378
- a.should == [GraphAlbum.load(:id => 1, :band_id => 2)]
1379
- a = a.first
1380
- a.band.should == GraphBand.load(:id => 2, :vocalist_id=>6)
1381
- a.tracks.should == [GraphTrack.load({:id => 3, :album_id=>1})]
1382
- a.genres.should == [GraphGenre.load(:id => 4)]
1383
- end
1384
-
1385
- it "should eagerly load multiple associations with different limit strategies in a single call" do
1386
- subg = Class.new(GraphGenre)
1387
- def (subg.dataset).supports_distinct_on?() true end
1388
- def (subg.dataset).supports_window_functions?() true end
1389
- def (subg.dataset).columns() literal(opts[:select]) =~ /x_foreign_key_x/ ? [:id, :x_foreign_key_x] : [:id] end
1390
- GraphAlbum.one_through_one :lgenre, :clone=>:genre, :class=>subg
1391
- GraphAlbum.many_to_many :lgenres, :clone=>:genres, :class=>subg, :limit=>2
1392
-
1393
- ds = GraphAlbum.eager_graph_with_options([:lgenre, :lgenres], :limit_strategy=>{:lgenre=>:distinct_on, :lgenres=>:window_function})
1394
- ds.sql.should == 'SELECT albums.id, albums.band_id, lgenre.id AS lgenre_id, lgenres.id AS lgenres_id FROM albums LEFT OUTER JOIN (SELECT DISTINCT ON (ag.album_id) genres.*, ag.album_id AS x_foreign_key_x FROM genres INNER JOIN ag ON (ag.genre_id = genres.id) ORDER BY ag.album_id) AS lgenre ON (lgenre.x_foreign_key_x = albums.id) LEFT OUTER JOIN (SELECT id, x_foreign_key_x FROM (SELECT genres.*, ag.album_id AS x_foreign_key_x, row_number() OVER (PARTITION BY ag.album_id) AS x_sequel_row_number_x FROM genres INNER JOIN ag ON (ag.genre_id = genres.id)) AS t1 WHERE (x_sequel_row_number_x <= 2)) AS lgenres ON (lgenres.x_foreign_key_x = albums.id)'
1395
- ds._fetch = {:id=>1, :band_id=>2, :lgenres_id=>4, :lgenre_id=>3}
1396
- a = ds.all
1397
- a.should == [GraphAlbum.load(:id => 1, :band_id => 2)]
1398
- a = a.first
1399
- a.lgenre.should == subg.load(:id => 3)
1400
- a.lgenres.should == [subg.load(:id => 4)]
1401
- end
1402
-
1403
- it "should handle multiple associations in separate calls to association_join" do
1404
- GraphAlbum.association_join(:genres).association_join(:tracks).association_join(:band).sql.should == 'SELECT * FROM albums INNER JOIN ag ON (ag.album_id = albums.id) INNER JOIN genres ON (genres.id = ag.genre_id) INNER JOIN tracks ON (tracks.album_id = albums.id) INNER JOIN bands AS band ON (band.id = albums.band_id)'
1405
- end
1406
-
1407
- it "should eagerly load multiple associations in separate calls" do
1408
- ds = GraphAlbum.eager_graph(:genres).eager_graph(:tracks).eager_graph(:band)
1409
- ds.sql.should == 'SELECT albums.id, albums.band_id, genres.id AS genres_id, tracks.id AS tracks_id, tracks.album_id, band.id AS band_id_0, band.vocalist_id FROM albums LEFT OUTER JOIN ag ON (ag.album_id = albums.id) LEFT OUTER JOIN genres ON (genres.id = ag.genre_id) LEFT OUTER JOIN tracks ON (tracks.album_id = albums.id) LEFT OUTER JOIN bands AS band ON (band.id = albums.band_id)'
1410
- ds._fetch = {:id=>1, :band_id=>2, :genres_id=>4, :tracks_id=>3, :album_id=>1, :band_id_0=>2, :vocalist_id=>6}
1411
- a = ds.all
1412
- a.should == [GraphAlbum.load(:id => 1, :band_id => 2)]
1413
- a = a.first
1414
- a.band.should == GraphBand.load(:id => 2, :vocalist_id=>6)
1415
- a.tracks.should == [GraphTrack.load({:id => 3, :album_id=>1})]
1416
- a.genres.should == [GraphGenre.load(:id => 4)]
1417
- end
1418
-
1419
- it "should handle cascading associations in a single call to association_join" do
1420
- GraphTrack.association_join(:album=>{:band=>:members}).sql.should == 'SELECT * FROM tracks INNER JOIN albums AS album ON (album.id = tracks.album_id) INNER JOIN bands AS band ON (band.id = album.band_id) INNER JOIN bm ON (bm.band_id = band.id) INNER JOIN members ON (members.id = bm.member_id)'
1421
- GraphBand.association_join({:albums=>:tracks}, :members).sql.should == 'SELECT * FROM bands INNER JOIN albums ON (albums.band_id = bands.id) INNER JOIN tracks ON (tracks.album_id = albums.id) INNER JOIN bm ON (bm.band_id = bands.id) INNER JOIN members ON (members.id = bm.member_id)'
1422
- end
1423
-
1424
- it "should handle matching association names for different models when using association_join" do
1425
- GraphAlbum.association_join(:genres).association_join(:band=>:genres).sql.should == 'SELECT * FROM albums INNER JOIN ag ON (ag.album_id = albums.id) INNER JOIN genres ON (genres.id = ag.genre_id) INNER JOIN bands AS band ON (band.id = albums.band_id) INNER JOIN bg ON (bg.band_id = band.id) INNER JOIN genres AS genres_0 ON (genres_0.id = bg.genre_id)'
1426
- end
1427
-
1428
- it "should allow cascading of eager loading for associations of associated models" do
1429
- ds = GraphTrack.eager_graph(:album=>{:band=>:members})
1430
- ds.sql.should == 'SELECT tracks.id, tracks.album_id, album.id AS album_id_0, album.band_id, band.id AS band_id_0, band.vocalist_id, members.id AS members_id FROM tracks LEFT OUTER JOIN albums AS album ON (album.id = tracks.album_id) LEFT OUTER JOIN bands AS band ON (band.id = album.band_id) LEFT OUTER JOIN bm ON (bm.band_id = band.id) LEFT OUTER JOIN members ON (members.id = bm.member_id)'
1431
- ds._fetch = {:id=>3, :album_id=>1, :album_id_0=>1, :band_id=>2, :members_id=>5, :band_id_0=>2, :vocalist_id=>6}
1432
- a = ds.all
1433
- a.should == [GraphTrack.load(:id => 3, :album_id => 1)]
1434
- a = a.first
1435
- a.album.should == GraphAlbum.load(:id => 1, :band_id => 2)
1436
- a.album.band.should == GraphBand.load(:id => 2, :vocalist_id=>6)
1437
- a.album.band.members.should == [GraphBandMember.load(:id => 5)]
1438
- end
1439
-
1440
- it "should allow cascading of eager loading for multiple *_to_many associations, eliminating duplicates caused by cartesian products" do
1441
- ds = GraphBand.eager_graph({:albums=>:tracks}, :members)
1442
- ds.sql.should == 'SELECT bands.id, bands.vocalist_id, albums.id AS albums_id, albums.band_id, tracks.id AS tracks_id, tracks.album_id, members.id AS members_id FROM bands LEFT OUTER JOIN albums ON (albums.band_id = bands.id) LEFT OUTER JOIN tracks ON (tracks.album_id = albums.id) LEFT OUTER JOIN bm ON (bm.band_id = bands.id) LEFT OUTER JOIN members ON (members.id = bm.member_id)'
1443
- ds._fetch = [{:id=>1, :vocalist_id=>2, :albums_id=>3, :band_id=>1, :tracks_id=>4, :album_id=>3, :members_id=>5},
1444
- {:id=>1, :vocalist_id=>2, :albums_id=>3, :band_id=>1, :tracks_id=>4, :album_id=>3, :members_id=>6},
1445
- {:id=>1, :vocalist_id=>2, :albums_id=>3, :band_id=>1, :tracks_id=>5, :album_id=>3, :members_id=>5},
1446
- {:id=>1, :vocalist_id=>2, :albums_id=>3, :band_id=>1, :tracks_id=>5, :album_id=>3, :members_id=>6},
1447
- {:id=>1, :vocalist_id=>2, :albums_id=>4, :band_id=>1, :tracks_id=>6, :album_id=>4, :members_id=>5},
1448
- {:id=>1, :vocalist_id=>2, :albums_id=>4, :band_id=>1, :tracks_id=>6, :album_id=>4, :members_id=>6},
1449
- {:id=>1, :vocalist_id=>2, :albums_id=>4, :band_id=>1, :tracks_id=>7, :album_id=>4, :members_id=>5},
1450
- {:id=>1, :vocalist_id=>2, :albums_id=>4, :band_id=>1, :tracks_id=>7, :album_id=>4, :members_id=>6},
1451
- {:id=>2, :vocalist_id=>2, :albums_id=>5, :band_id=>2, :tracks_id=>8, :album_id=>5, :members_id=>5},
1452
- {:id=>2, :vocalist_id=>2, :albums_id=>5, :band_id=>2, :tracks_id=>8, :album_id=>5, :members_id=>6},
1453
- {:id=>2, :vocalist_id=>2, :albums_id=>5, :band_id=>2, :tracks_id=>9, :album_id=>5, :members_id=>5},
1454
- {:id=>2, :vocalist_id=>2, :albums_id=>5, :band_id=>2, :tracks_id=>9, :album_id=>5, :members_id=>6},
1455
- {:id=>2, :vocalist_id=>2, :albums_id=>6, :band_id=>2, :tracks_id=>1, :album_id=>6, :members_id=>5},
1456
- {:id=>2, :vocalist_id=>2, :albums_id=>6, :band_id=>2, :tracks_id=>1, :album_id=>6, :members_id=>6},
1457
- {:id=>2, :vocalist_id=>2, :albums_id=>6, :band_id=>2, :tracks_id=>2, :album_id=>6, :members_id=>5},
1458
- {:id=>2, :vocalist_id=>2, :albums_id=>6, :band_id=>2, :tracks_id=>2, :album_id=>6, :members_id=>6}]
1459
- a = ds.all
1460
- a.should == [GraphBand.load(:id=>1, :vocalist_id=>2), GraphBand.load(:id=>2, :vocalist_id=>2)]
1461
- members = a.map{|x| x.members}
1462
- members.should == [[GraphBandMember.load(:id=>5), GraphBandMember.load(:id=>6)], [GraphBandMember.load(:id=>5), GraphBandMember.load(:id=>6)]]
1463
- albums = a.map{|x| x.albums}
1464
- albums.should == [[GraphAlbum.load(:id=>3, :band_id=>1), GraphAlbum.load(:id=>4, :band_id=>1)], [GraphAlbum.load(:id=>5, :band_id=>2), GraphAlbum.load(:id=>6, :band_id=>2)]]
1465
- tracks = albums.map{|x| x.map{|y| y.tracks}}
1466
- tracks.should == [[[GraphTrack.load(:id=>4, :album_id=>3), GraphTrack.load(:id=>5, :album_id=>3)], [GraphTrack.load(:id=>6, :album_id=>4), GraphTrack.load(:id=>7, :album_id=>4)]], [[GraphTrack.load(:id=>8, :album_id=>5), GraphTrack.load(:id=>9, :album_id=>5)], [GraphTrack.load(:id=>1, :album_id=>6), GraphTrack.load(:id=>2, :album_id=>6)]]]
1467
- end
1468
-
1469
- it "should populate the reciprocal many_to_one association when eagerly loading the one_to_many association" do
1470
- DB.reset
1471
- ds = GraphAlbum.eager_graph(:tracks)
1472
- ds.sql.should == 'SELECT albums.id, albums.band_id, tracks.id AS tracks_id, tracks.album_id FROM albums LEFT OUTER JOIN tracks ON (tracks.album_id = albums.id)'
1473
- ds._fetch = {:id=>1, :band_id=>2, :tracks_id=>3, :album_id=>1}
1474
- a = ds.all
1475
- a.should == [GraphAlbum.load(:id => 1, :band_id => 2)]
1476
- a = a.first
1477
- a.tracks.should == [GraphTrack.load(:id => 3, :album_id=>1)]
1478
- a.tracks.first.album.should == a
1479
- DB.sqls.should == ['SELECT albums.id, albums.band_id, tracks.id AS tracks_id, tracks.album_id FROM albums LEFT OUTER JOIN tracks ON (tracks.album_id = albums.id)']
1480
- end
1481
-
1482
- it "should eager load multiple associations from the same table" do
1483
- ds = GraphBand.eager_graph(:vocalist, :members)
1484
- ds.sql.should == 'SELECT bands.id, bands.vocalist_id, vocalist.id AS vocalist_id_0, members.id AS members_id FROM bands LEFT OUTER JOIN members AS vocalist ON (vocalist.id = bands.vocalist_id) LEFT OUTER JOIN bm ON (bm.band_id = bands.id) LEFT OUTER JOIN members ON (members.id = bm.member_id)'
1485
- ds._fetch = {:id=>2, :vocalist_id=>6, :vocalist_id_0=>6, :members_id=>5}
1486
- a = ds.all
1487
- a.should == [GraphBand.load(:id => 2, :vocalist_id => 6)]
1488
- a = a.first
1489
- a.vocalist.should == GraphBandMember.load(:id => 6)
1490
- a.members.should == [GraphBandMember.load(:id => 5)]
1491
- end
1492
-
1493
- it "should give you a plain hash when called without .all" do
1494
- ds = GraphAlbum.eager_graph(:band)
1495
- ds.sql.should == 'SELECT albums.id, albums.band_id, band.id AS band_id_0, band.vocalist_id FROM albums LEFT OUTER JOIN bands AS band ON (band.id = albums.band_id)'
1496
- ds._fetch = {:id=>1, :band_id=>2, :band_id_0=>2, :vocalist_id=>3}
1497
- ds.first.should == {:id=>1, :band_id=>2, :band_id_0=>2, :vocalist_id=>3}
1498
- end
1499
-
1500
- it "should not drop any associated objects if the graph could not be a cartesian product" do
1501
- ds = GraphBand.eager_graph(:members, :vocalist)
1502
- ds.sql.should == 'SELECT bands.id, bands.vocalist_id, members.id AS members_id, vocalist.id AS vocalist_id_0 FROM bands LEFT OUTER JOIN bm ON (bm.band_id = bands.id) LEFT OUTER JOIN members ON (members.id = bm.member_id) LEFT OUTER JOIN members AS vocalist ON (vocalist.id = bands.vocalist_id)'
1503
- ds._fetch = [{:id=>2, :vocalist_id=>6, :members_id=>5, :vocalist_id_0=>6}, {:id=>2, :vocalist_id=>6, :members_id=>5, :vocalist_id_0=>6}]
1504
- a = ds.all
1505
- a.should == [GraphBand.load(:id => 2, :vocalist_id => 6)]
1506
- a = a.first
1507
- a.vocalist.should == GraphBandMember.load(:id => 6)
1508
- a.members.should == [GraphBandMember.load(:id => 5), GraphBandMember.load(:id => 5)]
1509
- end
1510
-
1511
- it "should respect the :cartesian_product_number option" do
1512
- GraphBand.many_to_one :other_vocalist, :class=>'GraphBandMember', :key=>:vocalist_id, :cartesian_product_number=>1
1513
- ds = GraphBand.eager_graph(:members, :other_vocalist)
1514
- ds.sql.should == 'SELECT bands.id, bands.vocalist_id, members.id AS members_id, other_vocalist.id AS other_vocalist_id FROM bands LEFT OUTER JOIN bm ON (bm.band_id = bands.id) LEFT OUTER JOIN members ON (members.id = bm.member_id) LEFT OUTER JOIN members AS other_vocalist ON (other_vocalist.id = bands.vocalist_id)'
1515
- ds._fetch = [{:id=>2, :vocalist_id=>6, :members_id=>5, :other_vocalist_id=>6}, {:id=>2, :vocalist_id=>6, :members_id=>5, :other_vocalist_id=>6}]
1516
- a = ds.all
1517
- a.should == [GraphBand.load(:id=>2, :vocalist_id => 6)]
1518
- a.first.other_vocalist.should == GraphBandMember.load(:id=>6)
1519
- a.first.members.should == [GraphBandMember.load(:id=>5)]
1520
- end
1521
-
1522
- it "should drop duplicate items that occur in sequence if the graph could be a cartesian product" do
1523
- ds = GraphBand.eager_graph(:members, :genres)
1524
- ds.sql.should == 'SELECT bands.id, bands.vocalist_id, members.id AS members_id, genres.id AS genres_id FROM bands LEFT OUTER JOIN bm ON (bm.band_id = bands.id) LEFT OUTER JOIN members ON (members.id = bm.member_id) LEFT OUTER JOIN bg ON (bg.band_id = bands.id) LEFT OUTER JOIN genres ON (genres.id = bg.genre_id)'
1525
- ds._fetch = [{:id=>2, :vocalist_id=>6, :members_id=>5, :genres_id=>7},
1526
- {:id=>2, :vocalist_id=>6, :members_id=>5, :genres_id=>8},
1527
- {:id=>2, :vocalist_id=>6, :members_id=>6, :genres_id=>7},
1528
- {:id=>2, :vocalist_id=>6, :members_id=>6, :genres_id=>8}]
1529
- a = ds.all
1530
- a.should == [GraphBand.load(:id => 2, :vocalist_id => 6)]
1531
- a = a.first
1532
- a.members.should == [GraphBandMember.load(:id => 5), GraphBandMember.load(:id => 6)]
1533
- a.genres.should == [GraphGenre.load(:id => 7), GraphGenre.load(:id => 8)]
1534
- end
1535
-
1536
- it "should be able to be used in combination with #eager" do
1537
- DB.reset
1538
- ds = GraphAlbum.eager_graph(:tracks).eager(:genres)
1539
- ds._fetch = {:id=>1, :band_id=>2, :tracks_id=>3, :album_id=>1}
1540
- ds2 = GraphGenre.dataset
1541
- ds2._fetch = {:id=>6, :x_foreign_key_x=>1}
1542
- a = ds.all
1543
- a.should == [GraphAlbum.load(:id => 1, :band_id => 2)]
1544
- a = a.first
1545
- a.tracks.should == [GraphTrack.load(:id=>3, :album_id=>1)]
1546
- a.genres.should == [GraphGenre.load(:id => 6)]
1547
- DB.sqls.should == ['SELECT albums.id, albums.band_id, tracks.id AS tracks_id, tracks.album_id FROM albums LEFT OUTER JOIN tracks ON (tracks.album_id = albums.id)',
1548
- "SELECT genres.*, ag.album_id AS x_foreign_key_x FROM genres INNER JOIN ag ON (ag.genre_id = genres.id) WHERE (ag.album_id IN (1))"]
1549
- end
1550
-
1551
- it "should handle no associated records for a single many_to_one association" do
1552
- ds = GraphAlbum.eager_graph(:band)
1553
- ds.sql.should == 'SELECT albums.id, albums.band_id, band.id AS band_id_0, band.vocalist_id FROM albums LEFT OUTER JOIN bands AS band ON (band.id = albums.band_id)'
1554
- ds._fetch = {:id=>1, :band_id=>2, :band_id_0=>nil, :vocalist_id=>nil}
1555
- a = ds.all
1556
- a.should == [GraphAlbum.load(:id => 1, :band_id => 2)]
1557
- a.first.band.should == nil
1558
- end
1559
-
1560
- it "should handle no associated records for a single one_to_one association" do
1561
- ds = GraphAlbum.eager_graph(:track)
1562
- ds.sql.should == 'SELECT albums.id, albums.band_id, track.id AS track_id, track.album_id FROM albums LEFT OUTER JOIN tracks AS track ON (track.album_id = albums.id)'
1563
- ds._fetch = {:id=>1, :band_id=>2, :track_id=>nil, :album_id=>nil}
1564
- a = ds.all
1565
- a.should == [GraphAlbum.load(:id => 1, :band_id => 2)]
1566
- a.first.track.should == nil
1567
- end
1568
-
1569
- it "should handle no associated records for a single one_to_many association" do
1570
- ds = GraphAlbum.eager_graph(:tracks)
1571
- ds.sql.should == 'SELECT albums.id, albums.band_id, tracks.id AS tracks_id, tracks.album_id FROM albums LEFT OUTER JOIN tracks ON (tracks.album_id = albums.id)'
1572
- ds._fetch = {:id=>1, :band_id=>2, :tracks_id=>nil, :album_id=>nil}
1573
- a = ds.all
1574
- a.should == [GraphAlbum.load(:id => 1, :band_id => 2)]
1575
- a.first.tracks.should == []
1576
- end
1577
-
1578
- it "should handle no associated records for a single one_through_one association" do
1579
- ds = GraphAlbum.eager_graph(:genre)
1580
- ds.sql.should == 'SELECT albums.id, albums.band_id, genre.id AS genre_id FROM albums LEFT OUTER JOIN ag ON (ag.album_id = albums.id) LEFT OUTER JOIN genres AS genre ON (genre.id = ag.genre_id)'
1581
- ds._fetch = {:id=>1, :band_id=>2, :genres_id=>nil}
1582
- a = ds.all
1583
- a.should == [GraphAlbum.load(:id => 1, :band_id => 2)]
1584
- a.first.genre.should == nil
1585
- end
1586
-
1587
- it "should handle no associated records for a single many_to_many association" do
1588
- ds = GraphAlbum.eager_graph(:genres)
1589
- ds.sql.should == 'SELECT albums.id, albums.band_id, genres.id AS genres_id FROM albums LEFT OUTER JOIN ag ON (ag.album_id = albums.id) LEFT OUTER JOIN genres ON (genres.id = ag.genre_id)'
1590
- ds._fetch = {:id=>1, :band_id=>2, :genres_id=>nil}
1591
- a = ds.all
1592
- a.should == [GraphAlbum.load(:id => 1, :band_id => 2)]
1593
- a.first.genres.should == []
1594
- end
1595
-
1596
- it "should handle missing associated records when loading multiple associations" do
1597
- ds = GraphAlbum.eager_graph(:genres, :tracks, :band)
1598
- ds.sql.should == 'SELECT albums.id, albums.band_id, genres.id AS genres_id, tracks.id AS tracks_id, tracks.album_id, band.id AS band_id_0, band.vocalist_id FROM albums LEFT OUTER JOIN ag ON (ag.album_id = albums.id) LEFT OUTER JOIN genres ON (genres.id = ag.genre_id) LEFT OUTER JOIN tracks ON (tracks.album_id = albums.id) LEFT OUTER JOIN bands AS band ON (band.id = albums.band_id)'
1599
- ds._fetch = [{:id=>1, :band_id=>2, :genres_id=>nil, :tracks_id=>3, :album_id=>1, :band_id_0=>nil, :vocalist_id=>nil},
1600
- {:id=>1, :band_id=>2, :genres_id=>nil, :tracks_id=>4, :album_id=>1, :band_id_0=>nil, :vocalist_id=>nil},
1601
- {:id=>1, :band_id=>2, :genres_id=>nil, :tracks_id=>5, :album_id=>1, :band_id_0=>nil, :vocalist_id=>nil},
1602
- {:id=>1, :band_id=>2, :genres_id=>nil, :tracks_id=>6, :album_id=>1, :band_id_0=>nil, :vocalist_id=>nil}]
1603
- a = ds.all
1604
- a.should == [GraphAlbum.load(:id => 1, :band_id => 2)]
1605
- a = a.first
1606
- a.tracks.should == [GraphTrack.load(:id => 3, :album_id => 1), GraphTrack.load(:id => 4, :album_id => 1), GraphTrack.load(:id => 5, :album_id => 1), GraphTrack.load(:id => 6, :album_id => 1)]
1607
- a.band.should == nil
1608
- a.genres.should == []
1609
- end
1610
-
1611
- it "should handle missing associated records when cascading eager loading for associations of associated models" do
1612
- ds = GraphTrack.eager_graph(:album=>{:band=>:members})
1613
- ds.sql.should == 'SELECT tracks.id, tracks.album_id, album.id AS album_id_0, album.band_id, band.id AS band_id_0, band.vocalist_id, members.id AS members_id FROM tracks LEFT OUTER JOIN albums AS album ON (album.id = tracks.album_id) LEFT OUTER JOIN bands AS band ON (band.id = album.band_id) LEFT OUTER JOIN bm ON (bm.band_id = band.id) LEFT OUTER JOIN members ON (members.id = bm.member_id)'
1614
- ds._fetch = [{:id=>2, :album_id=>2, :album_id_0=>nil, :band_id=>nil, :members_id=>nil, :band_id_0=>nil, :vocalist_id=>nil},
1615
- {:id=>3, :album_id=>3, :album_id_0=>3, :band_id=>3, :members_id=>nil, :band_id_0=>nil, :vocalist_id=>nil},
1616
- {:id=>4, :album_id=>4, :album_id_0=>4, :band_id=>2, :members_id=>nil, :band_id_0=>2, :vocalist_id=>6},
1617
- {:id=>5, :album_id=>1, :album_id_0=>1, :band_id=>4, :members_id=>5, :band_id_0=>4, :vocalist_id=>8},
1618
- {:id=>5, :album_id=>1, :album_id_0=>1, :band_id=>4, :members_id=>6, :band_id_0=>4, :vocalist_id=>8}]
1619
- a = ds.all
1620
- a.should == [GraphTrack.load(:id => 2, :album_id => 2), GraphTrack.load(:id => 3, :album_id => 3), GraphTrack.load(:id => 4, :album_id => 4), GraphTrack.load(:id => 5, :album_id => 1)]
1621
- a.map{|x| x.album}.should == [nil, GraphAlbum.load(:id => 3, :band_id => 3), GraphAlbum.load(:id => 4, :band_id => 2), GraphAlbum.load(:id => 1, :band_id => 4)]
1622
- a.map{|x| x.album.band if x.album}.should == [nil, nil, GraphBand.load(:id => 2, :vocalist_id=>6), GraphBand.load(:id => 4, :vocalist_id=>8)]
1623
- a.map{|x| x.album.band.members if x.album && x.album.band}.should == [nil, nil, [], [GraphBandMember.load(:id => 5), GraphBandMember.load(:id => 6)]]
1624
- end
1625
-
1626
- it "should respect the association's :primary_key option" do
1627
- GraphAlbum.many_to_one :inner_band, :class=>'GraphBand', :key=>:band_id, :primary_key=>:vocalist_id
1628
- ds = GraphAlbum.eager_graph(:inner_band)
1629
- ds.sql.should == 'SELECT albums.id, albums.band_id, inner_band.id AS inner_band_id, inner_band.vocalist_id FROM albums LEFT OUTER JOIN bands AS inner_band ON (inner_band.vocalist_id = albums.band_id)'
1630
- ds._fetch = {:id=>3, :band_id=>2, :inner_band_id=>5, :vocalist_id=>2}
1631
- as = ds.all
1632
- as.should == [GraphAlbum.load(:id=>3, :band_id=>2)]
1633
- as.first.inner_band.should == GraphBand.load(:id=>5, :vocalist_id=>2)
1634
-
1635
- GraphAlbum.one_to_many :right_tracks, :class=>'GraphTrack', :key=>:album_id, :primary_key=>:band_id, :reciprocal=>nil
1636
- ds = GraphAlbum.eager_graph(:right_tracks)
1637
- ds.sql.should == 'SELECT albums.id, albums.band_id, right_tracks.id AS right_tracks_id, right_tracks.album_id FROM albums LEFT OUTER JOIN tracks AS right_tracks ON (right_tracks.album_id = albums.band_id)'
1638
- ds._fetch = [{:id=>3, :band_id=>2, :right_tracks_id=>5, :album_id=>2}, {:id=>3, :band_id=>2, :right_tracks_id=>6, :album_id=>2}]
1639
- as = ds.all
1640
- as.should == [GraphAlbum.load(:id=>3, :band_id=>2)]
1641
- as.first.right_tracks.should == [GraphTrack.load(:id=>5, :album_id=>2), GraphTrack.load(:id=>6, :album_id=>2)]
1642
- end
1643
-
1644
- it "should respect many_to_one association's composite keys" do
1645
- GraphAlbum.many_to_one :inner_band, :class=>'GraphBand', :key=>[:band_id, :id], :primary_key=>[:vocalist_id, :id]
1646
- ds = GraphAlbum.eager_graph(:inner_band)
1647
- ds.sql.should == 'SELECT albums.id, albums.band_id, inner_band.id AS inner_band_id, inner_band.vocalist_id FROM albums LEFT OUTER JOIN bands AS inner_band ON ((inner_band.vocalist_id = albums.band_id) AND (inner_band.id = albums.id))'
1648
- ds._fetch = {:id=>3, :band_id=>2, :inner_band_id=>3, :vocalist_id=>2}
1649
- as = ds.all
1650
- as.should == [GraphAlbum.load(:id=>3, :band_id=>2)]
1651
- as.first.inner_band.should == GraphBand.load(:id=>3, :vocalist_id=>2)
1652
- end
1653
-
1654
- it "should respect one_to_many association's composite keys" do
1655
- GraphAlbum.one_to_many :right_tracks, :class=>'GraphTrack', :key=>[:album_id, :id], :primary_key=>[:band_id, :id]
1656
- ds = GraphAlbum.eager_graph(:right_tracks)
1657
- ds.sql.should == 'SELECT albums.id, albums.band_id, right_tracks.id AS right_tracks_id, right_tracks.album_id FROM albums LEFT OUTER JOIN tracks AS right_tracks ON ((right_tracks.album_id = albums.band_id) AND (right_tracks.id = albums.id))'
1658
- ds._fetch = {:id=>3, :band_id=>2, :right_tracks_id=>3, :album_id=>2}
1659
- as = ds.all
1660
- as.should == [GraphAlbum.load(:id=>3, :band_id=>2)]
1661
- as.first.right_tracks.should == [GraphTrack.load(:id=>3, :album_id=>2)]
1662
- end
1663
-
1664
- it "should respect many_to_many association's composite keys" do
1665
- GraphAlbum.many_to_many :sbands, :class=>'GraphBand', :left_key=>[:l1, :l2], :left_primary_key=>[:band_id, :id], :right_key=>[:r1, :r2], :right_primary_key=>[:vocalist_id, :id], :join_table=>:b
1666
- ds = GraphAlbum.eager_graph(:sbands)
1667
- ds.sql.should == 'SELECT albums.id, albums.band_id, sbands.id AS sbands_id, sbands.vocalist_id FROM albums LEFT OUTER JOIN b ON ((b.l1 = albums.band_id) AND (b.l2 = albums.id)) LEFT OUTER JOIN bands AS sbands ON ((sbands.vocalist_id = b.r1) AND (sbands.id = b.r2))'
1668
- ds._fetch = [{:id=>3, :band_id=>2, :sbands_id=>5, :vocalist_id=>6}, {:id=>3, :band_id=>2, :sbands_id=>6, :vocalist_id=>22}]
1669
- as = ds.all
1670
- as.should == [GraphAlbum.load(:id=>3, :band_id=>2)]
1671
- as.first.sbands.should == [GraphBand.load(:id=>5, :vocalist_id=>6), GraphBand.load(:id=>6, :vocalist_id=>22)]
1672
- end
1673
-
1674
- it "should respect many_to_many association's :left_primary_key and :right_primary_key options" do
1675
- GraphAlbum.many_to_many :inner_genres, :class=>'GraphGenre', :left_key=>:album_id, :left_primary_key=>:band_id, :right_key=>:genre_id, :right_primary_key=>:xxx, :join_table=>:ag
1676
- ds = GraphAlbum.eager_graph(:inner_genres)
1677
- ds.sql.should == 'SELECT albums.id, albums.band_id, inner_genres.id AS inner_genres_id FROM albums LEFT OUTER JOIN ag ON (ag.album_id = albums.band_id) LEFT OUTER JOIN genres AS inner_genres ON (inner_genres.xxx = ag.genre_id)'
1678
- ds._fetch = [{:id=>3, :band_id=>2, :inner_genres_id=>5, :xxx=>12}, {:id=>3, :band_id=>2, :inner_genres_id=>6, :xxx=>22}]
1679
- as = ds.all
1680
- as.should == [GraphAlbum.load(:id=>3, :band_id=>2)]
1681
- as.first.inner_genres.should == [GraphGenre.load(:id=>5), GraphGenre.load(:id=>6)]
1682
- end
1683
-
1684
- it "should respect composite primary keys for classes when eager loading" do
1685
- c1 = Class.new(GraphAlbum)
1686
- c2 = Class.new(GraphBand)
1687
- c1.set_primary_key [:band_id, :id]
1688
- c2.set_primary_key [:vocalist_id, :id]
1689
- c1.many_to_many :sbands, :class=>c2, :left_key=>[:l1, :l2], :right_key=>[:r1, :r2], :join_table=>:b
1690
- c2.one_to_many :salbums, :class=>c1, :key=>[:band_id, :id]
1691
- ds = c1.eager_graph(:sbands=>:salbums)
1692
- ds.sql.should == 'SELECT albums.id, albums.band_id, sbands.id AS sbands_id, sbands.vocalist_id, salbums.id AS salbums_id, salbums.band_id AS salbums_band_id FROM albums LEFT OUTER JOIN b ON ((b.l1 = albums.band_id) AND (b.l2 = albums.id)) LEFT OUTER JOIN bands AS sbands ON ((sbands.vocalist_id = b.r1) AND (sbands.id = b.r2)) LEFT OUTER JOIN albums AS salbums ON ((salbums.band_id = sbands.vocalist_id) AND (salbums.id = sbands.id))'
1693
- ds._fetch = [{:id=>3, :band_id=>2, :sbands_id=>5, :vocalist_id=>6, :salbums_id=>7, :salbums_band_id=>8},
1694
- {:id=>3, :band_id=>2, :sbands_id=>5, :vocalist_id=>6, :salbums_id=>9, :salbums_band_id=>10},
1695
- {:id=>3, :band_id=>2, :sbands_id=>6, :vocalist_id=>22, :salbums_id=>nil, :salbums_band_id=>nil},
1696
- {:id=>7, :band_id=>8, :sbands_id=>nil, :vocalist_id=>nil, :salbums_id=>nil, :salbums_band_id=>nil}]
1697
- as = ds.all
1698
- as.should == [c1.load(:id=>3, :band_id=>2), c1.load(:id=>7, :band_id=>8)]
1699
- as.map{|x| x.sbands}.should == [[c2.load(:id=>5, :vocalist_id=>6), c2.load(:id=>6, :vocalist_id=>22)], []]
1700
- as.map{|x| x.sbands.map{|y| y.salbums}}.should == [[[c1.load(:id=>7, :band_id=>8), c1.load(:id=>9, :band_id=>10)], []], []]
1701
- end
1702
-
1703
- it "should respect the association's :graph_select option" do
1704
- GraphAlbum.many_to_one :inner_band, :class=>'GraphBand', :key=>:band_id, :graph_select=>:vocalist_id
1705
- GraphAlbum.eager_graph(:inner_band).sql.should == 'SELECT albums.id, albums.band_id, inner_band.vocalist_id FROM albums LEFT OUTER JOIN bands AS inner_band ON (inner_band.id = albums.band_id)'
1706
-
1707
- GraphAlbum.one_to_many :right_tracks, :class=>'GraphTrack', :key=>:album_id, :graph_select=>[:album_id]
1708
- GraphAlbum.eager_graph(:right_tracks).sql.should == 'SELECT albums.id, albums.band_id, right_tracks.album_id FROM albums LEFT OUTER JOIN tracks AS right_tracks ON (right_tracks.album_id = albums.id)'
1709
-
1710
- GraphAlbum.many_to_many :inner_genres, :class=>'GraphGenre', :left_key=>:album_id, :right_key=>:genre_id, :join_table=>:ag, :graph_select=>[]
1711
- GraphAlbum.eager_graph(:inner_genres).sql.should == 'SELECT albums.id, albums.band_id FROM albums LEFT OUTER JOIN ag ON (ag.album_id = albums.id) LEFT OUTER JOIN genres AS inner_genres ON (inner_genres.id = ag.genre_id)'
1712
- end
1713
-
1714
- it "should respect the association's :graph_alias_base option" do
1715
- GraphAlbum.many_to_one :inner_band, :class=>'GraphBand', :key=>:band_id, :graph_alias_base=>:foo
1716
- ds = GraphAlbum.eager_graph(:inner_band)
1717
- ds.sql.should == 'SELECT albums.id, albums.band_id, foo.id AS foo_id, foo.vocalist_id FROM albums LEFT OUTER JOIN bands AS foo ON (foo.id = albums.band_id)'
1718
- GraphAlbum.one_to_many :right_tracks, :class=>'GraphTrack', :key=>:album_id, :graph_alias_base=>:foo
1719
- ds.eager_graph(:right_tracks).sql.should == 'SELECT albums.id, albums.band_id, foo.id AS foo_id, foo.vocalist_id, foo_0.id AS foo_0_id, foo_0.album_id FROM albums LEFT OUTER JOIN bands AS foo ON (foo.id = albums.band_id) LEFT OUTER JOIN tracks AS foo_0 ON (foo_0.album_id = albums.id)'
1720
- end
1721
-
1722
- it "should respect the association's :graph_join_type option" do
1723
- GraphAlbum.many_to_one :inner_band, :class=>'GraphBand', :key=>:band_id, :graph_join_type=>:inner
1724
- GraphAlbum.eager_graph(:inner_band).sql.should == 'SELECT albums.id, albums.band_id, inner_band.id AS inner_band_id, inner_band.vocalist_id FROM albums INNER JOIN bands AS inner_band ON (inner_band.id = albums.band_id)'
1725
-
1726
- GraphAlbum.one_to_many :right_tracks, :class=>'GraphTrack', :key=>:album_id, :graph_join_type=>:right_outer
1727
- GraphAlbum.eager_graph(:right_tracks).sql.should == 'SELECT albums.id, albums.band_id, right_tracks.id AS right_tracks_id, right_tracks.album_id FROM albums RIGHT OUTER JOIN tracks AS right_tracks ON (right_tracks.album_id = albums.id)'
1728
-
1729
- GraphAlbum.many_to_many :inner_genres, :class=>'GraphGenre', :left_key=>:album_id, :right_key=>:genre_id, :join_table=>:ag, :graph_join_type=>:inner
1730
- GraphAlbum.eager_graph(:inner_genres).sql.should == 'SELECT albums.id, albums.band_id, inner_genres.id AS inner_genres_id FROM albums INNER JOIN ag ON (ag.album_id = albums.id) INNER JOIN genres AS inner_genres ON (inner_genres.id = ag.genre_id)'
1731
- end
1732
-
1733
- it "should respect the association's :graph_join_table_join_type option" do
1734
- GraphAlbum.many_to_many :inner_genres, :class=>'GraphGenre', :left_key=>:album_id, :right_key=>:genre_id, :join_table=>:ag, :graph_join_table_join_type=>:inner
1735
- GraphAlbum.eager_graph(:inner_genres).sql.should == 'SELECT albums.id, albums.band_id, inner_genres.id AS inner_genres_id FROM albums INNER JOIN ag ON (ag.album_id = albums.id) LEFT OUTER JOIN genres AS inner_genres ON (inner_genres.id = ag.genre_id)'
1736
-
1737
- GraphAlbum.many_to_many :inner_genres, :class=>'GraphGenre', :left_key=>:album_id, :right_key=>:genre_id, :join_table=>:ag, :graph_join_table_join_type=>:inner, :graph_join_type=>:right_outer
1738
- GraphAlbum.eager_graph(:inner_genres).sql.should == 'SELECT albums.id, albums.band_id, inner_genres.id AS inner_genres_id FROM albums INNER JOIN ag ON (ag.album_id = albums.id) RIGHT OUTER JOIN genres AS inner_genres ON (inner_genres.id = ag.genre_id)'
1739
- end
1740
-
1741
- it "should respect the association's :conditions option" do
1742
- GraphAlbum.many_to_one :active_band, :class=>'GraphBand', :key=>:band_id, :conditions=>{:active=>true}
1743
- GraphAlbum.eager_graph(:active_band).sql.should == "SELECT albums.id, albums.band_id, active_band.id AS active_band_id, active_band.vocalist_id FROM albums LEFT OUTER JOIN bands AS active_band ON ((active_band.id = albums.band_id) AND (active_band.active IS TRUE))"
1744
-
1745
- GraphAlbum.one_to_many :right_tracks, :class=>'GraphTrack', :key=>:album_id, :conditions=>{:id=>(0..100)}, :reciprocal=>nil
1746
- GraphAlbum.eager_graph(:right_tracks).sql.should == 'SELECT albums.id, albums.band_id, right_tracks.id AS right_tracks_id, right_tracks.album_id FROM albums LEFT OUTER JOIN tracks AS right_tracks ON ((right_tracks.album_id = albums.id) AND (right_tracks.id >= 0) AND (right_tracks.id <= 100))'
1747
-
1748
- GraphAlbum.many_to_many :active_genres, :class=>'GraphGenre', :left_key=>:album_id, :right_key=>:genre_id, :join_table=>:ag, :conditions=>{true=>:active}
1749
- GraphAlbum.eager_graph(:active_genres).sql.should == "SELECT albums.id, albums.band_id, active_genres.id AS active_genres_id FROM albums LEFT OUTER JOIN ag ON (ag.album_id = albums.id) LEFT OUTER JOIN genres AS active_genres ON ((active_genres.id = ag.genre_id) AND ('t' = ag.active))"
1750
- end
1751
-
1752
- it "should respect the association's :graph_conditions option" do
1753
- GraphAlbum.many_to_one :active_band, :class=>'GraphBand', :key=>:band_id, :graph_conditions=>{:active=>true}
1754
- GraphAlbum.eager_graph(:active_band).sql.should == "SELECT albums.id, albums.band_id, active_band.id AS active_band_id, active_band.vocalist_id FROM albums LEFT OUTER JOIN bands AS active_band ON ((active_band.id = albums.band_id) AND (active_band.active IS TRUE))"
1755
-
1756
- GraphAlbum.one_to_many :right_tracks, :class=>'GraphTrack', :key=>:album_id, :graph_conditions=>{:id=>(0..100)}
1757
- GraphAlbum.eager_graph(:right_tracks).sql.should == 'SELECT albums.id, albums.band_id, right_tracks.id AS right_tracks_id, right_tracks.album_id FROM albums LEFT OUTER JOIN tracks AS right_tracks ON ((right_tracks.album_id = albums.id) AND (right_tracks.id >= 0) AND (right_tracks.id <= 100))'
1758
-
1759
- GraphAlbum.many_to_many :active_genres, :class=>'GraphGenre', :left_key=>:album_id, :right_key=>:genre_id, :join_table=>:ag, :graph_conditions=>{true=>:active}
1760
- GraphAlbum.eager_graph(:active_genres).sql.should == "SELECT albums.id, albums.band_id, active_genres.id AS active_genres_id FROM albums LEFT OUTER JOIN ag ON (ag.album_id = albums.id) LEFT OUTER JOIN genres AS active_genres ON ((active_genres.id = ag.genre_id) AND ('t' = ag.active))"
1761
- end
1762
-
1763
- it "should respect the association's :graph_join_table_conditions option" do
1764
- GraphAlbum.many_to_many :active_genres, :class=>'GraphGenre', :left_key=>:album_id, :right_key=>:genre_id, :join_table=>:ag, :graph_join_table_conditions=>{:active=>true}
1765
- GraphAlbum.eager_graph(:active_genres).sql.should == "SELECT albums.id, albums.band_id, active_genres.id AS active_genres_id FROM albums LEFT OUTER JOIN ag ON ((ag.album_id = albums.id) AND (ag.active IS TRUE)) LEFT OUTER JOIN genres AS active_genres ON (active_genres.id = ag.genre_id)"
1766
-
1767
- GraphAlbum.many_to_many :active_genres, :class=>'GraphGenre', :left_key=>:album_id, :right_key=>:genre_id, :join_table=>:ag, :graph_conditions=>{true=>:active}, :graph_join_table_conditions=>{true=>:active}
1768
- GraphAlbum.eager_graph(:active_genres).sql.should == "SELECT albums.id, albums.band_id, active_genres.id AS active_genres_id FROM albums LEFT OUTER JOIN ag ON ((ag.album_id = albums.id) AND ('t' = albums.active)) LEFT OUTER JOIN genres AS active_genres ON ((active_genres.id = ag.genre_id) AND ('t' = ag.active))"
1769
- end
1770
-
1771
- it "should respect the association's :graph_block option" do
1772
- GraphAlbum.many_to_one :active_band, :class=>'GraphBand', :key=>:band_id, :graph_block=>proc{|ja,lja,js| {Sequel.qualify(ja, :active)=>true}}
1773
- GraphAlbum.eager_graph(:active_band).sql.should == "SELECT albums.id, albums.band_id, active_band.id AS active_band_id, active_band.vocalist_id FROM albums LEFT OUTER JOIN bands AS active_band ON ((active_band.id = albums.band_id) AND (active_band.active IS TRUE))"
1774
-
1775
- GraphAlbum.one_to_many :right_tracks, :class=>'GraphTrack', :key=>:album_id, :graph_block=>proc{|ja,lja,js| {Sequel.qualify(ja, :id)=>(0..100)}}
1776
- GraphAlbum.eager_graph(:right_tracks).sql.should == 'SELECT albums.id, albums.band_id, right_tracks.id AS right_tracks_id, right_tracks.album_id FROM albums LEFT OUTER JOIN tracks AS right_tracks ON ((right_tracks.album_id = albums.id) AND (right_tracks.id >= 0) AND (right_tracks.id <= 100))'
1777
-
1778
- GraphAlbum.many_to_many :active_genres, :class=>'GraphGenre', :left_key=>:album_id, :right_key=>:genre_id, :join_table=>:ag, :graph_block=>proc{|ja,lja,js| {true=>Sequel.qualify(lja, :active)}}
1779
- GraphAlbum.eager_graph(:active_genres).sql.should == "SELECT albums.id, albums.band_id, active_genres.id AS active_genres_id FROM albums LEFT OUTER JOIN ag ON (ag.album_id = albums.id) LEFT OUTER JOIN genres AS active_genres ON ((active_genres.id = ag.genre_id) AND ('t' = ag.active))"
1780
- end
1781
-
1782
- it "should respect the association's :graph_join_table_block option" do
1783
- GraphAlbum.many_to_many :active_genres, :class=>'GraphGenre', :left_key=>:album_id, :right_key=>:genre_id, :join_table=>:ag, :graph_join_table_block=>proc{|ja,lja,js| {Sequel.qualify(ja, :active)=>true}}
1784
- GraphAlbum.eager_graph(:active_genres).sql.should == "SELECT albums.id, albums.band_id, active_genres.id AS active_genres_id FROM albums LEFT OUTER JOIN ag ON ((ag.album_id = albums.id) AND (ag.active IS TRUE)) LEFT OUTER JOIN genres AS active_genres ON (active_genres.id = ag.genre_id)"
1785
-
1786
- GraphAlbum.many_to_many :active_genres, :class=>'GraphGenre', :left_key=>:album_id, :right_key=>:genre_id, :join_table=>:ag, :graph_block=>proc{|ja,lja,js| {true=>Sequel.qualify(lja, :active)}}, :graph_join_table_block=>proc{|ja,lja,js| {true=>Sequel.qualify(lja, :active)}}
1787
- GraphAlbum.eager_graph(:active_genres).sql.should == "SELECT albums.id, albums.band_id, active_genres.id AS active_genres_id FROM albums LEFT OUTER JOIN ag ON ((ag.album_id = albums.id) AND ('t' = albums.active)) LEFT OUTER JOIN genres AS active_genres ON ((active_genres.id = ag.genre_id) AND ('t' = ag.active))"
1788
- end
1789
-
1790
- it "should respect the association's :eager_grapher option" do
1791
- GraphAlbum.many_to_one :active_band, :class=>'GraphBand', :key=>:band_id, :eager_grapher=>proc{|eo| eo[:self].graph(GraphBand, {:active=>true}, :table_alias=>eo[:table_alias], :join_type=>:inner)}
1792
- GraphAlbum.eager_graph(:active_band).sql.should == "SELECT albums.id, albums.band_id, active_band.id AS active_band_id, active_band.vocalist_id FROM albums INNER JOIN bands AS active_band ON (active_band.active IS TRUE)"
1793
-
1794
- GraphAlbum.one_to_many :right_tracks, :class=>'GraphTrack', :key=>:album_id, :eager_grapher=>proc{|eo| eo[:self].graph(GraphTrack, nil, :join_type=>:natural, :table_alias=>eo[:table_alias])}
1795
- GraphAlbum.eager_graph(:right_tracks).sql.should == 'SELECT albums.id, albums.band_id, right_tracks.id AS right_tracks_id, right_tracks.album_id FROM albums NATURAL JOIN tracks AS right_tracks'
1796
-
1797
- GraphAlbum.many_to_many :active_genres, :class=>'GraphGenre', :eager_grapher=>proc{|eo| eo[:self].graph(:ag, {:album_id=>:id}, :table_alias=>:a123, :implicit_qualifier=>eo[:implicit_qualifier]).graph(GraphGenre, [:album_id], :table_alias=>eo[:table_alias])}
1798
- GraphAlbum.eager_graph(:active_genres).sql.should == "SELECT albums.id, albums.band_id, active_genres.id AS active_genres_id FROM albums LEFT OUTER JOIN ag AS a123 ON (a123.album_id = albums.id) LEFT OUTER JOIN genres AS active_genres USING (album_id)"
1799
- end
1800
-
1801
- it "should respect the association's :graph_only_conditions option" do
1802
- GraphAlbum.many_to_one :active_band, :class=>'GraphBand', :key=>:band_id, :graph_only_conditions=>{:active=>true}
1803
- GraphAlbum.eager_graph(:active_band).sql.should == "SELECT albums.id, albums.band_id, active_band.id AS active_band_id, active_band.vocalist_id FROM albums LEFT OUTER JOIN bands AS active_band ON (active_band.active IS TRUE)"
1804
-
1805
- GraphAlbum.one_to_many :right_tracks, :class=>'GraphTrack', :key=>:album_id, :graph_only_conditions=>nil, :graph_join_type=>:natural
1806
- GraphAlbum.eager_graph(:right_tracks).sql.should == 'SELECT albums.id, albums.band_id, right_tracks.id AS right_tracks_id, right_tracks.album_id FROM albums NATURAL JOIN tracks AS right_tracks'
1807
-
1808
- GraphAlbum.many_to_many :active_genres, :class=>'GraphGenre', :left_key=>:album_id, :right_key=>:genre_id, :join_table=>:ag, :graph_only_conditions=>[:album_id]
1809
- GraphAlbum.eager_graph(:active_genres).sql.should == "SELECT albums.id, albums.band_id, active_genres.id AS active_genres_id FROM albums LEFT OUTER JOIN ag ON (ag.album_id = albums.id) LEFT OUTER JOIN genres AS active_genres USING (album_id)"
1810
- end
1811
-
1812
- it "should respect the association's :graph_join_table_only_conditions option" do
1813
- GraphAlbum.many_to_many :active_genres, :class=>'GraphGenre', :left_key=>:album_id, :right_key=>:genre_id, :join_table=>:ag, :graph_join_table_only_conditions=>{:active=>true}
1814
- GraphAlbum.eager_graph(:active_genres).sql.should == "SELECT albums.id, albums.band_id, active_genres.id AS active_genres_id FROM albums LEFT OUTER JOIN ag ON (ag.active IS TRUE) LEFT OUTER JOIN genres AS active_genres ON (active_genres.id = ag.genre_id)"
1815
-
1816
- GraphAlbum.many_to_many :active_genres, :class=>'GraphGenre', :left_key=>:album_id, :right_key=>:genre_id, :join_table=>:ag, :graph_only_conditions=>(Sequel.expr(:price) + 2 > 100), :graph_join_table_only_conditions=>"active"
1817
- GraphAlbum.eager_graph(:active_genres).sql.should == "SELECT albums.id, albums.band_id, active_genres.id AS active_genres_id FROM albums LEFT OUTER JOIN ag ON (active) LEFT OUTER JOIN genres AS active_genres ON ((price + 2) > 100)"
1818
- end
1819
-
1820
- it "should create unique table aliases for all associations" do
1821
- GraphAlbum.eager_graph(:previous_album=>{:previous_album=>:previous_album}).sql.should == "SELECT albums.id, albums.band_id, previous_album.id AS previous_album_id, previous_album.band_id AS previous_album_band_id, previous_album_0.id AS previous_album_0_id, previous_album_0.band_id AS previous_album_0_band_id, previous_album_1.id AS previous_album_1_id, previous_album_1.band_id AS previous_album_1_band_id FROM albums LEFT OUTER JOIN albums AS previous_album ON (previous_album.id = albums.previous_album_id) LEFT OUTER JOIN albums AS previous_album_0 ON (previous_album_0.id = previous_album.previous_album_id) LEFT OUTER JOIN albums AS previous_album_1 ON (previous_album_1.id = previous_album_0.previous_album_id)"
1822
- end
1823
-
1824
- it "should respect the association's :order" do
1825
- GraphAlbum.one_to_many :right_tracks, :class=>'GraphTrack', :key=>:album_id, :order=>[:id, :album_id]
1826
- GraphAlbum.eager_graph(:right_tracks).sql.should == 'SELECT albums.id, albums.band_id, right_tracks.id AS right_tracks_id, right_tracks.album_id FROM albums LEFT OUTER JOIN tracks AS right_tracks ON (right_tracks.album_id = albums.id) ORDER BY right_tracks.id, right_tracks.album_id'
1827
- end
1828
-
1829
- it "should only qualify unqualified symbols, identifiers, or ordered versions in association's :order" do
1830
- GraphAlbum.one_to_many :right_tracks, :class=>'GraphTrack', :key=>:album_id, :order=>[Sequel.identifier(:blah__id), Sequel.identifier(:blah__id).desc, Sequel.desc(:blah__id), :blah__id, :album_id, Sequel.desc(:album_id), 1, Sequel.lit('RANDOM()'), Sequel.qualify(:b, :a)]
1831
- GraphAlbum.eager_graph(:right_tracks).sql.should == 'SELECT albums.id, albums.band_id, right_tracks.id AS right_tracks_id, right_tracks.album_id FROM albums LEFT OUTER JOIN tracks AS right_tracks ON (right_tracks.album_id = albums.id) ORDER BY right_tracks.blah__id, right_tracks.blah__id DESC, blah.id DESC, blah.id, right_tracks.album_id, right_tracks.album_id DESC, 1, RANDOM(), b.a'
1832
- end
1833
-
1834
- it "should not respect the association's :order if :order_eager_graph is false" do
1835
- GraphAlbum.one_to_many :right_tracks, :class=>'GraphTrack', :key=>:album_id, :order=>[:id, :album_id], :order_eager_graph=>false
1836
- GraphAlbum.eager_graph(:right_tracks).sql.should == 'SELECT albums.id, albums.band_id, right_tracks.id AS right_tracks_id, right_tracks.album_id FROM albums LEFT OUTER JOIN tracks AS right_tracks ON (right_tracks.album_id = albums.id)'
1837
- end
1838
-
1839
- it "should add the association's :order to the existing order" do
1840
- GraphAlbum.one_to_many :right_tracks, :class=>'GraphTrack', :key=>:album_id, :order=>[:id, :album_id]
1841
- GraphAlbum.order(:band_id).eager_graph(:right_tracks).sql.should == 'SELECT albums.id, albums.band_id, right_tracks.id AS right_tracks_id, right_tracks.album_id FROM albums LEFT OUTER JOIN tracks AS right_tracks ON (right_tracks.album_id = albums.id) ORDER BY band_id, right_tracks.id, right_tracks.album_id'
1842
- end
1843
-
1844
- it "should use the association's :graph_order in preference or order" do
1845
- GraphAlbum.one_to_many :right_tracks, :class=>'GraphTrack', :key=>:album_id, :order=>[:tracks__id, :tracks__album_id], :graph_order=>[:id, :album_id]
1846
- GraphAlbum.order(:band_id).eager_graph(:right_tracks).sql.should == 'SELECT albums.id, albums.band_id, right_tracks.id AS right_tracks_id, right_tracks.album_id FROM albums LEFT OUTER JOIN tracks AS right_tracks ON (right_tracks.album_id = albums.id) ORDER BY band_id, right_tracks.id, right_tracks.album_id'
1847
- end
1848
-
1849
- it "should add the association's :order for cascading associations" do
1850
- GraphBand.one_to_many :a_albums, :class=>'GraphAlbum', :key=>:band_id, :order=>:name, :reciprocal=>nil
1851
- GraphAlbum.one_to_many :b_tracks, :class=>'GraphTrack', :key=>:album_id, :order=>[:id, :album_id]
1852
- GraphBand.eager_graph(:a_albums=>:b_tracks).sql.should == 'SELECT bands.id, bands.vocalist_id, a_albums.id AS a_albums_id, a_albums.band_id, b_tracks.id AS b_tracks_id, b_tracks.album_id FROM bands LEFT OUTER JOIN albums AS a_albums ON (a_albums.band_id = bands.id) LEFT OUTER JOIN tracks AS b_tracks ON (b_tracks.album_id = a_albums.id) ORDER BY a_albums.name, b_tracks.id, b_tracks.album_id'
1853
- GraphAlbum.one_to_many :albums, :class=>'GraphAlbum', :key=>:band_id, :order=>[:band_id, :id]
1854
- GraphAlbum.eager_graph(:albums=>{:albums=>:albums}).sql.should == 'SELECT albums.id, albums.band_id, albums_0.id AS albums_0_id, albums_0.band_id AS albums_0_band_id, albums_1.id AS albums_1_id, albums_1.band_id AS albums_1_band_id, albums_2.id AS albums_2_id, albums_2.band_id AS albums_2_band_id FROM albums LEFT OUTER JOIN albums AS albums_0 ON (albums_0.band_id = albums.id) LEFT OUTER JOIN albums AS albums_1 ON (albums_1.band_id = albums_0.id) LEFT OUTER JOIN albums AS albums_2 ON (albums_2.band_id = albums_1.id) ORDER BY albums_0.band_id, albums_0.id, albums_1.band_id, albums_1.id, albums_2.band_id, albums_2.id'
1855
- end
1856
-
1857
- it "should add the associations :order for multiple associations" do
1858
- GraphAlbum.many_to_many :a_genres, :class=>'GraphGenre', :left_key=>:album_id, :right_key=>:genre_id, :join_table=>:ag, :order=>:id
1859
- GraphAlbum.one_to_many :b_tracks, :class=>'GraphTrack', :key=>:album_id, :order=>[:id, :album_id]
1860
- GraphAlbum.eager_graph(:a_genres, :b_tracks).sql.should == 'SELECT albums.id, albums.band_id, a_genres.id AS a_genres_id, b_tracks.id AS b_tracks_id, b_tracks.album_id FROM albums LEFT OUTER JOIN ag ON (ag.album_id = albums.id) LEFT OUTER JOIN genres AS a_genres ON (a_genres.id = ag.genre_id) LEFT OUTER JOIN tracks AS b_tracks ON (b_tracks.album_id = albums.id) ORDER BY a_genres.id, b_tracks.id, b_tracks.album_id'
1861
- end
1862
-
1863
- it "should use the correct qualifier when graphing multiple tables with extra conditions" do
1864
- GraphAlbum.many_to_many :a_genres, :class=>'GraphGenre', :left_key=>:album_id, :right_key=>:genre_id, :join_table=>:ag
1865
- GraphAlbum.one_to_many :b_tracks, :class=>'GraphTrack', :key=>:album_id, :graph_conditions=>{:a=>:b}
1866
- GraphAlbum.eager_graph(:a_genres, :b_tracks).sql.should == 'SELECT albums.id, albums.band_id, a_genres.id AS a_genres_id, b_tracks.id AS b_tracks_id, b_tracks.album_id FROM albums LEFT OUTER JOIN ag ON (ag.album_id = albums.id) LEFT OUTER JOIN genres AS a_genres ON (a_genres.id = ag.genre_id) LEFT OUTER JOIN tracks AS b_tracks ON ((b_tracks.album_id = albums.id) AND (b_tracks.a = albums.b))'
1867
- end
1868
-
1869
- it "should eagerly load associated records for classes that do not have a primary key" do
1870
- GraphAlbum.no_primary_key
1871
- GraphGenre.no_primary_key
1872
- GraphAlbum.many_to_many :inner_genres, :class=>'GraphGenre', :left_key=>:album_id, :left_primary_key=>:band_id, :right_key=>:genre_id, :right_primary_key=>:xxx, :join_table=>:ag
1873
- ds = GraphAlbum.eager_graph(:inner_genres)
1874
- ds.sql.should == 'SELECT albums.id, albums.band_id, inner_genres.id AS inner_genres_id FROM albums LEFT OUTER JOIN ag ON (ag.album_id = albums.band_id) LEFT OUTER JOIN genres AS inner_genres ON (inner_genres.xxx = ag.genre_id)'
1875
- ds._fetch = [{:id=>3, :band_id=>2, :inner_genres_id=>5, :xxx=>12}, {:id=>3, :band_id=>2, :inner_genres_id=>6, :xxx=>22}]
1876
- as = ds.all
1877
- as.should == [GraphAlbum.load(:id=>3, :band_id=>2)]
1878
- as.first.inner_genres.should == [GraphGenre.load(:id=>5), GraphGenre.load(:id=>6)]
1879
- GraphAlbum.set_primary_key :id
1880
- GraphGenre.set_primary_key :id
1881
- end
1882
-
1883
- it "should handle eager loading with schemas and aliases of different types" do
1884
- GraphAlbum.eager_graph(:band).join(:s__genres, [:b_id]).eager_graph(:genres).sql.should == 'SELECT albums.id, albums.band_id, band.id AS band_id_0, band.vocalist_id, genres_0.id AS genres_0_id FROM albums LEFT OUTER JOIN bands AS band ON (band.id = albums.band_id) INNER JOIN s.genres USING (b_id) LEFT OUTER JOIN ag ON (ag.album_id = albums.id) LEFT OUTER JOIN genres AS genres_0 ON (genres_0.id = ag.genre_id)'
1885
- GraphAlbum.eager_graph(:band).join(Sequel.qualify(:s, :genres), [:b_id]).eager_graph(:genres).sql.should == 'SELECT albums.id, albums.band_id, band.id AS band_id_0, band.vocalist_id, genres_0.id AS genres_0_id FROM albums LEFT OUTER JOIN bands AS band ON (band.id = albums.band_id) INNER JOIN s.genres USING (b_id) LEFT OUTER JOIN ag ON (ag.album_id = albums.id) LEFT OUTER JOIN genres AS genres_0 ON (genres_0.id = ag.genre_id)'
1886
- GraphAlbum.eager_graph(:band).join(Sequel.expr(:s__b).as('genres'), [:b_id]).eager_graph(:genres).sql.should == 'SELECT albums.id, albums.band_id, band.id AS band_id_0, band.vocalist_id, genres_0.id AS genres_0_id FROM albums LEFT OUTER JOIN bands AS band ON (band.id = albums.band_id) INNER JOIN s.b AS genres USING (b_id) LEFT OUTER JOIN ag ON (ag.album_id = albums.id) LEFT OUTER JOIN genres AS genres_0 ON (genres_0.id = ag.genre_id)'
1887
- GraphAlbum.eager_graph(:band).join(:s__b, [:b_id], :table_alias=>Sequel.identifier(:genres)).eager_graph(:genres).sql.should == 'SELECT albums.id, albums.band_id, band.id AS band_id_0, band.vocalist_id, genres_0.id AS genres_0_id FROM albums LEFT OUTER JOIN bands AS band ON (band.id = albums.band_id) INNER JOIN s.b AS genres USING (b_id) LEFT OUTER JOIN ag ON (ag.album_id = albums.id) LEFT OUTER JOIN genres AS genres_0 ON (genres_0.id = ag.genre_id)'
1888
- GraphAlbum.eager_graph(:band).join(Sequel.identifier(:genres), [:b_id]).eager_graph(:genres).sql.should == 'SELECT albums.id, albums.band_id, band.id AS band_id_0, band.vocalist_id, genres_0.id AS genres_0_id FROM albums LEFT OUTER JOIN bands AS band ON (band.id = albums.band_id) INNER JOIN genres USING (b_id) LEFT OUTER JOIN ag ON (ag.album_id = albums.id) LEFT OUTER JOIN genres AS genres_0 ON (genres_0.id = ag.genre_id)'
1889
- GraphAlbum.eager_graph(:band).join('genres', [:b_id]).eager_graph(:genres).sql.should == 'SELECT albums.id, albums.band_id, band.id AS band_id_0, band.vocalist_id, genres_0.id AS genres_0_id FROM albums LEFT OUTER JOIN bands AS band ON (band.id = albums.band_id) INNER JOIN genres USING (b_id) LEFT OUTER JOIN ag ON (ag.album_id = albums.id) LEFT OUTER JOIN genres AS genres_0 ON (genres_0.id = ag.genre_id)'
1890
- end
1891
-
1892
- it "should raise errors if invalid aliases or table styles are used" do
1893
- proc{GraphAlbum.from_self(:alias=>Sequel.qualify(:s, :bands)).eager_graph(:band)}.should raise_error(Sequel::Error)
1894
- proc{GraphAlbum.from(Sequel.lit('?', :bands)).eager_graph(:band)}.should raise_error(Sequel::Error)
1895
- end
1896
-
1897
- it "should eagerly load schema qualified tables correctly with joins" do
1898
- c1 = Class.new(GraphAlbum)
1899
- c2 = Class.new(GraphGenre)
1900
- ds = c1.dataset = c1.dataset.from(:s__a)
1901
- def ds.columns() [:id] end
1902
- c2.dataset = c2.dataset.from(:s__g)
1903
- c1.many_to_many :a_genres, :class=>c2, :left_primary_key=>:id, :left_key=>:album_id, :right_key=>:genre_id, :join_table=>:s__ag
1904
- ds = c1.join(:s__t, [:b_id]).eager_graph(:a_genres)
1905
- ds.sql.should == 'SELECT a.id, a_genres.id AS a_genres_id FROM (SELECT * FROM s.a INNER JOIN s.t USING (b_id)) AS a LEFT OUTER JOIN s.ag AS ag ON (ag.album_id = a.id) LEFT OUTER JOIN s.g AS a_genres ON (a_genres.id = ag.genre_id)'
1906
- ds = c1.eager_graph(:a_genres)
1907
- ds.sql.should == 'SELECT s.a.id, a_genres.id AS a_genres_id FROM s.a LEFT OUTER JOIN s.ag AS ag ON (ag.album_id = s.a.id) LEFT OUTER JOIN s.g AS a_genres ON (a_genres.id = ag.genre_id)'
1908
- end
1909
-
1910
- it "should respect :after_load callbacks on associations when eager graphing" do
1911
- GraphAlbum.many_to_one :al_band, :class=>GraphBand, :key=>:band_id, :after_load=>proc{|o, a| a.id *=2}
1912
- GraphAlbum.one_to_many :al_tracks, :class=>GraphTrack, :key=>:album_id, :after_load=>proc{|o, os| os.each{|a| a.id *=2}}
1913
- GraphAlbum.many_to_many :al_genres, :class=>GraphGenre, :left_key=>:album_id, :right_key=>:genre_id, :join_table=>:ag, :after_load=>proc{|o, os| os.each{|a| a.id *=2}}
1914
- ds = GraphAlbum.eager_graph(:al_band, :al_tracks, :al_genres)
1915
- ds.sql.should == "SELECT albums.id, albums.band_id, al_band.id AS al_band_id, al_band.vocalist_id, al_tracks.id AS al_tracks_id, al_tracks.album_id, al_genres.id AS al_genres_id FROM albums LEFT OUTER JOIN bands AS al_band ON (al_band.id = albums.band_id) LEFT OUTER JOIN tracks AS al_tracks ON (al_tracks.album_id = albums.id) LEFT OUTER JOIN ag ON (ag.album_id = albums.id) LEFT OUTER JOIN genres AS al_genres ON (al_genres.id = ag.genre_id)"
1916
- ds._fetch = {:id=>1, :band_id=>2, :al_band_id=>3, :vocalist_id=>4, :al_tracks_id=>5, :album_id=>6, :al_genres_id=>7}
1917
- a = ds.all.first
1918
- a.should == GraphAlbum.load(:id => 1, :band_id => 2)
1919
- a.al_band.should == GraphBand.load(:id=>6, :vocalist_id=>4)
1920
- a.al_tracks.should == [GraphTrack.load(:id=>10, :album_id=>6)]
1921
- a.al_genres.should == [GraphGenre.load(:id=>14)]
1922
- end
1923
-
1924
- it "should respect limits on associations when eager graphing" do
1925
- GraphAlbum.many_to_one :al_band, :class=>GraphBand, :key=>:band_id
1926
- GraphAlbum.one_to_many :al_tracks, :class=>GraphTrack, :key=>:album_id, :limit=>2
1927
- GraphAlbum.many_to_many :al_genres, :class=>GraphGenre, :left_key=>:album_id, :right_key=>:genre_id, :join_table=>:ag, :limit=>2
1928
- ds = GraphAlbum.eager_graph(:al_band, :al_tracks, :al_genres)
1929
- ds.sql.should == "SELECT albums.id, albums.band_id, al_band.id AS al_band_id, al_band.vocalist_id, al_tracks.id AS al_tracks_id, al_tracks.album_id, al_genres.id AS al_genres_id FROM albums LEFT OUTER JOIN bands AS al_band ON (al_band.id = albums.band_id) LEFT OUTER JOIN tracks AS al_tracks ON (al_tracks.album_id = albums.id) LEFT OUTER JOIN ag ON (ag.album_id = albums.id) LEFT OUTER JOIN genres AS al_genres ON (al_genres.id = ag.genre_id)"
1930
- ds._fetch = [{:id=>1, :band_id=>2, :al_band_id=>3, :vocalist_id=>4, :al_tracks_id=>5, :album_id=>6, :al_genres_id=>7},
1931
- {:id=>1, :band_id=>2, :al_band_id=>8, :vocalist_id=>9, :al_tracks_id=>10, :album_id=>11, :al_genres_id=>12},
1932
- {:id=>1, :band_id=>2, :al_band_id=>13, :vocalist_id=>14, :al_tracks_id=>15, :album_id=>16, :al_genres_id=>17}]
1933
- a = ds.all.first
1934
- a.should == GraphAlbum.load(:id => 1, :band_id => 2)
1935
- a.al_band.should == GraphBand.load(:id=>3, :vocalist_id=>4)
1936
- a.al_tracks.should == [GraphTrack.load(:id=>5, :album_id=>6), GraphTrack.load(:id=>10, :album_id=>11)]
1937
- a.al_genres.should == [GraphGenre.load(:id=>7), GraphGenre.load(:id=>12)]
1938
- end
1939
-
1940
- it "should handle offsets on associations with no results when eager graphing" do
1941
- GraphAlbum.one_to_many :al_tracks, :class=>GraphTrack, :key=>:album_id, :limit=>[2, 1]
1942
- ds = GraphAlbum.eager_graph(:al_tracks)
1943
- ds.sql.should == "SELECT albums.id, albums.band_id, al_tracks.id AS al_tracks_id, al_tracks.album_id FROM albums LEFT OUTER JOIN tracks AS al_tracks ON (al_tracks.album_id = albums.id)"
1944
- ds._fetch = [{:id=>1, :band_id=>2, :al_tracks_id=>nil, :album_id=>nil}]
1945
- a = ds.all.first
1946
- a.should == GraphAlbum.load(:id => 1, :band_id => 2)
1947
- a.al_tracks.should == []
1948
- end
1949
-
1950
- it "should respect offsets on associations when eager graphing" do
1951
- GraphAlbum.many_to_one :al_band, :class=>GraphBand, :key=>:band_id
1952
- GraphAlbum.one_to_many :al_tracks, :class=>GraphTrack, :key=>:album_id, :limit=>[1, 1]
1953
- GraphAlbum.many_to_many :al_genres, :class=>GraphGenre, :left_key=>:album_id, :right_key=>:genre_id, :join_table=>:ag, :limit=>[1,1]
1954
- ds = GraphAlbum.eager_graph(:al_band, :al_tracks, :al_genres)
1955
- ds.sql.should == "SELECT albums.id, albums.band_id, al_band.id AS al_band_id, al_band.vocalist_id, al_tracks.id AS al_tracks_id, al_tracks.album_id, al_genres.id AS al_genres_id FROM albums LEFT OUTER JOIN bands AS al_band ON (al_band.id = albums.band_id) LEFT OUTER JOIN tracks AS al_tracks ON (al_tracks.album_id = albums.id) LEFT OUTER JOIN ag ON (ag.album_id = albums.id) LEFT OUTER JOIN genres AS al_genres ON (al_genres.id = ag.genre_id)"
1956
- ds._fetch = [{:id=>1, :band_id=>2, :al_band_id=>3, :vocalist_id=>4, :al_tracks_id=>5, :album_id=>6, :al_genres_id=>7},
1957
- {:id=>1, :band_id=>2, :al_band_id=>8, :vocalist_id=>9, :al_tracks_id=>10, :album_id=>11, :al_genres_id=>12},
1958
- {:id=>1, :band_id=>2, :al_band_id=>13, :vocalist_id=>14, :al_tracks_id=>15, :album_id=>16, :al_genres_id=>17}]
1959
- a = ds.all.first
1960
- a.should == GraphAlbum.load(:id => 1, :band_id => 2)
1961
- a.al_band.should == GraphBand.load(:id=>3, :vocalist_id=>4)
1962
- a.al_tracks.should == [GraphTrack.load(:id=>10, :album_id=>11)]
1963
- a.al_genres.should == [GraphGenre.load(:id=>12)]
1964
- end
1965
-
1966
- it "should respect offsets on associations when eager graphing one_to_one and one_through_one associations" do
1967
- GraphAlbum.many_to_one :al_band, :class=>GraphBand, :key=>:band_id
1968
- GraphAlbum.one_to_one :al_track, :class=>GraphTrack, :key=>:album_id, :limit=>[nil, 1]
1969
- GraphAlbum.one_through_one :al_genre, :class=>GraphGenre, :left_key=>:album_id, :right_key=>:genre_id, :join_table=>:ag, :limit=>[nil,1]
1970
- ds = GraphAlbum.eager_graph(:al_band, :al_track, :al_genre)
1971
- ds.sql.should == "SELECT albums.id, albums.band_id, al_band.id AS al_band_id, al_band.vocalist_id, al_track.id AS al_track_id, al_track.album_id, al_genre.id AS al_genre_id FROM albums LEFT OUTER JOIN bands AS al_band ON (al_band.id = albums.band_id) LEFT OUTER JOIN tracks AS al_track ON (al_track.album_id = albums.id) LEFT OUTER JOIN ag ON (ag.album_id = albums.id) LEFT OUTER JOIN genres AS al_genre ON (al_genre.id = ag.genre_id)"
1972
- ds._fetch = [{:id=>1, :band_id=>2, :al_band_id=>3, :vocalist_id=>4, :al_track_id=>5, :album_id=>6, :al_genre_id=>7},
1973
- {:id=>1, :band_id=>2, :al_band_id=>8, :vocalist_id=>9, :al_track_id=>10, :album_id=>11, :al_genre_id=>12},
1974
- {:id=>1, :band_id=>2, :al_band_id=>13, :vocalist_id=>14, :al_track_id=>15, :album_id=>16, :al_genre_id=>17}]
1975
- a = ds.all.first
1976
- a.should == GraphAlbum.load(:id => 1, :band_id => 2)
1977
- a.al_band.should == GraphBand.load(:id=>3, :vocalist_id=>4)
1978
- a.al_track.should == GraphTrack.load(:id=>10, :album_id=>11)
1979
- a.al_genre.should == GraphGenre.load(:id=>12)
1980
- end
1981
-
1982
- it "should eagerly load a many_to_one association with a custom callback" do
1983
- ds = GraphAlbum.eager_graph(:band => proc {|ds1| ds1.select(:id).columns(:id)})
1984
- ds.sql.should == 'SELECT albums.id, albums.band_id, band.id AS band_id_0 FROM albums LEFT OUTER JOIN (SELECT id FROM bands) AS band ON (band.id = albums.band_id)'
1985
- ds._fetch = {:id=>1, :band_id=>2, :band_id_0=>2}
1986
- a = ds.all
1987
- a.should == [GraphAlbum.load(:id => 1, :band_id => 2)]
1988
- a.first.band.should == GraphBand.load(:id => 2)
1989
- end
1990
-
1991
- it "should eagerly load a one_to_one association with a custom callback" do
1992
- ds = GraphAlbum.eager_graph(:track => proc {|ds1| ds1.select(:album_id).columns(:album_id)})
1993
- ds.sql.should == 'SELECT albums.id, albums.band_id, track.album_id FROM albums LEFT OUTER JOIN (SELECT album_id FROM tracks) AS track ON (track.album_id = albums.id)'
1994
- ds._fetch = {:id=>1, :band_id=>2, :album_id=>1}
1995
- a = ds.all
1996
- a.should == [GraphAlbum.load(:id => 1, :band_id => 2)]
1997
- a.first.track.should == GraphTrack.load(:album_id=>1)
1998
- end
1999
-
2000
- it "should eagerly load a one_to_many association with a custom callback" do
2001
- ds = GraphAlbum.eager_graph(:tracks => proc {|ds1| ds1.select(:album_id).columns(:album_id)})
2002
- ds.sql.should == 'SELECT albums.id, albums.band_id, tracks.album_id FROM albums LEFT OUTER JOIN (SELECT album_id FROM tracks) AS tracks ON (tracks.album_id = albums.id)'
2003
- ds._fetch = {:id=>1, :band_id=>2, :album_id=>1}
2004
- a = ds.all
2005
- a.should == [GraphAlbum.load(:id => 1, :band_id => 2)]
2006
- a.first.tracks.should == [GraphTrack.load(:album_id=>1)]
2007
- end
2008
-
2009
- it "should eagerly load a one_through_one association with a custom callback" do
2010
- ds = GraphAlbum.eager_graph(:genre => proc {|ds1| ds1.select(:id).columns(:id)})
2011
- ds.sql.should == 'SELECT albums.id, albums.band_id, genre.id AS genre_id FROM albums LEFT OUTER JOIN ag ON (ag.album_id = albums.id) LEFT OUTER JOIN (SELECT id FROM genres) AS genre ON (genre.id = ag.genre_id)'
2012
- ds._fetch = {:id=>1, :band_id=>2, :genre_id=>4}
2013
- a = ds.all
2014
- a.should == [GraphAlbum.load(:id => 1, :band_id => 2)]
2015
- a.first.genre.should == GraphGenre.load(:id => 4)
2016
- end
2017
-
2018
- it "should eagerly load a many_to_many association with a custom callback" do
2019
- ds = GraphAlbum.eager_graph(:genres => proc {|ds1| ds1.select(:id).columns(:id)})
2020
- ds.sql.should == 'SELECT albums.id, albums.band_id, genres.id AS genres_id FROM albums LEFT OUTER JOIN ag ON (ag.album_id = albums.id) LEFT OUTER JOIN (SELECT id FROM genres) AS genres ON (genres.id = ag.genre_id)'
2021
- ds._fetch = {:id=>1, :band_id=>2, :genres_id=>4}
2022
- a = ds.all
2023
- a.should == [GraphAlbum.load(:id => 1, :band_id => 2)]
2024
- a.first.genres.should == [GraphGenre.load(:id => 4)]
2025
- end
2026
-
2027
- it "should allow cascading of eager loading with a custom callback with hash value" do
2028
- ds = GraphTrack.eager_graph(:album=>{proc{|ds1| ds1.select(:id, :band_id).columns(:id, :band_id)}=>{:band=>:members}})
2029
- ds.sql.should == 'SELECT tracks.id, tracks.album_id, album.id AS album_id_0, album.band_id, band.id AS band_id_0, band.vocalist_id, members.id AS members_id FROM tracks LEFT OUTER JOIN (SELECT id, band_id FROM albums) AS album ON (album.id = tracks.album_id) LEFT OUTER JOIN bands AS band ON (band.id = album.band_id) LEFT OUTER JOIN bm ON (bm.band_id = band.id) LEFT OUTER JOIN members ON (members.id = bm.member_id)'
2030
- ds._fetch = {:id=>3, :album_id=>1, :album_id_0=>1, :band_id=>2, :members_id=>5, :band_id_0=>2, :vocalist_id=>6}
2031
- a = ds.all
2032
- a.should == [GraphTrack.load(:id => 3, :album_id => 1)]
2033
- a = a.first
2034
- a.album.should == GraphAlbum.load(:id => 1, :band_id => 2)
2035
- a.album.band.should == GraphBand.load(:id => 2, :vocalist_id=>6)
2036
- a.album.band.members.should == [GraphBandMember.load(:id => 5)]
2037
- end
2038
-
2039
- it "should allow cascading of eager loading with a custom callback with array value" do
2040
- ds = GraphTrack.eager_graph(:album=>{proc{|ds1| ds1.select(:id, :band_id).columns(:id, :band_id)}=>[:band, :tracks]})
2041
- ds.sql.should == 'SELECT tracks.id, tracks.album_id, album.id AS album_id_0, album.band_id, band.id AS band_id_0, band.vocalist_id, tracks_0.id AS tracks_0_id, tracks_0.album_id AS tracks_0_album_id FROM tracks LEFT OUTER JOIN (SELECT id, band_id FROM albums) AS album ON (album.id = tracks.album_id) LEFT OUTER JOIN bands AS band ON (band.id = album.band_id) LEFT OUTER JOIN tracks AS tracks_0 ON (tracks_0.album_id = album.id)'
2042
- ds._fetch = {:id=>3, :album_id=>1, :album_id_0=>1, :band_id=>2, :band_id_0=>2, :vocalist_id=>6, :tracks_0_id=>3, :tracks_0_album_id=>1}
2043
- a = ds.all
2044
- a.should == [GraphTrack.load(:id => 3, :album_id => 1)]
2045
- a = a.first
2046
- a.album.should == GraphAlbum.load(:id => 1, :band_id => 2)
2047
- a.album.band.should == GraphBand.load(:id => 2, :vocalist_id=>6)
2048
- a.album.tracks.should == [GraphTrack.load(:id => 3, :album_id => 1)]
2049
- end
2050
- end
2051
-
2052
- describe "Sequel::Models with double underscores in table names" do
2053
- before do
2054
- @db = Sequel.mock(:fetch=>{:id=>1, :foo_id=>2})
2055
- @Foo = Class.new(Sequel::Model(@db[Sequel.identifier(:fo__os)]))
2056
- @Foo.columns :id, :foo_id
2057
- @Foo.one_to_many :foos, :class=>@Foo
2058
- @db.sqls
2059
- end
2060
-
2061
- it "should have working eager_graph implementations" do
2062
- @db.fetch = {:id=>1, :foo_id=>1, :foos_id=>1, :foos_foo_id=>1}
2063
- foos = @Foo.eager_graph(:foos).all
2064
- @db.sqls.should == ["SELECT fo__os.id, fo__os.foo_id, foos.id AS foos_id, foos.foo_id AS foos_foo_id FROM fo__os LEFT OUTER JOIN (SELECT * FROM fo__os) AS foos ON (foos._id = fo__os.id)"]
2065
- foos.should == [@Foo.load(:id=>1, :foo_id=>1)]
2066
- foos.first.foos.should == [@Foo.load(:id=>1, :foo_id=>1)]
2067
- end
2068
-
2069
- it "should have working eager_graph implementations when qualified" do
2070
- @Foo.dataset = Sequel.identifier(:fo__os).qualify(:s)
2071
- @Foo.columns :id, :foo_id
2072
- @db.sqls
2073
- @db.fetch = {:id=>1, :foo_id=>1, :foos_id=>1, :foos_foo_id=>1}
2074
- foos = @Foo.eager_graph(:foos).all
2075
- @db.sqls.should == ["SELECT s.fo__os.id, s.fo__os.foo_id, foos.id AS foos_id, foos.foo_id AS foos_foo_id FROM s.fo__os LEFT OUTER JOIN (SELECT * FROM s.fo__os) AS foos ON (foos._id = s.fo__os.id)"]
2076
- foos.should == [@Foo.load(:id=>1, :foo_id=>1)]
2077
- foos.first.foos.should == [@Foo.load(:id=>1, :foo_id=>1)]
2078
- end
2079
- end
2080
-