tdiary 5.0.1 → 5.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2377) hide show
  1. checksums.yaml +4 -4
  2. data/ChangeLog +10 -0
  3. data/Gemfile +1 -1
  4. data/Gemfile.lock +19 -19
  5. data/doc/INSTALL-cgi.md +6 -8
  6. data/doc/INSTALL-rack.md +16 -0
  7. data/doc/INSTALL.md +6 -6
  8. data/js/comment_emoji_autocomplete.js +30 -31
  9. data/lib/tdiary/cli.rb +11 -11
  10. data/lib/tdiary/core_ext.rb +1 -1
  11. data/lib/tdiary/dispatcher.rb +2 -2
  12. data/lib/tdiary/environment.rb +16 -0
  13. data/lib/tdiary/plugin/00default.rb +22 -9
  14. data/lib/tdiary/plugin.rb +1 -3
  15. data/lib/tdiary/server.rb +7 -7
  16. data/lib/tdiary/style/wiki.rb +5 -5
  17. data/lib/tdiary/tasks/release.rake +142 -139
  18. data/lib/tdiary/version.rb +1 -1
  19. data/misc/paas/heroku/Gemfile.local +1 -1
  20. data/misc/paas/heroku/Gemfile.lock +66 -61
  21. data/misc/plugin/amazon.rb +21 -9
  22. data/public/index.rdf +7 -378
  23. data/tdiary.conf +82 -0
  24. data/theme/base.css +5 -5
  25. data/theme/default/default.css +9 -7
  26. data/vendor/bundle/bin/cdiff +2 -2
  27. data/vendor/bundle/bin/colortab +2 -2
  28. data/vendor/bundle/bin/coveralls +2 -2
  29. data/vendor/bundle/bin/decolor +2 -2
  30. data/vendor/bundle/bin/emot +2 -2
  31. data/vendor/bundle/bin/hikidoc +2 -2
  32. data/vendor/bundle/bin/htmldiff +3 -3
  33. data/vendor/bundle/bin/jasmine +2 -2
  34. data/vendor/bundle/bin/launchy +2 -2
  35. data/vendor/bundle/bin/ldiff +3 -3
  36. data/vendor/bundle/bin/nokogiri +2 -1
  37. data/vendor/bundle/bin/pit +2 -2
  38. data/vendor/bundle/bin/racksh +2 -2
  39. data/vendor/bundle/bin/rackup +2 -2
  40. data/vendor/bundle/bin/rake +2 -1
  41. data/vendor/bundle/bin/restclient +2 -2
  42. data/vendor/bundle/bin/sequel +2 -1
  43. data/vendor/bundle/bin/sprockets +2 -1
  44. data/vendor/bundle/bin/term_display +2 -2
  45. data/vendor/bundle/bin/term_mandel +2 -2
  46. data/vendor/bundle/bin/thor +2 -2
  47. data/vendor/bundle/cache/capybara-2.8.0.gem +0 -0
  48. data/vendor/bundle/cache/ffi-1.9.14.gem +0 -0
  49. data/vendor/bundle/cache/rspec-3.5.0.gem +0 -0
  50. data/vendor/bundle/cache/rspec-core-3.5.2.gem +0 -0
  51. data/vendor/bundle/cache/rspec-expectations-3.5.0.gem +0 -0
  52. data/vendor/bundle/cache/rspec-mocks-3.5.0.gem +0 -0
  53. data/vendor/bundle/cache/rspec-support-3.5.0.gem +0 -0
  54. data/vendor/bundle/cache/sequel-4.37.0.gem +0 -0
  55. data/vendor/bundle/cache/sprockets-3.7.0.gem +0 -0
  56. data/vendor/bundle/cache/test-unit-3.2.1.gem +0 -0
  57. data/vendor/bundle/cache/tins-1.12.0.gem +0 -0
  58. data/vendor/bundle/extensions/x86_64-linux/2.3.0-static/bson-4.1.1/gem_make.out +2 -2
  59. data/vendor/bundle/extensions/x86_64-linux/2.3.0-static/ffi-1.9.14/ffi_c.so +0 -0
  60. data/vendor/bundle/extensions/x86_64-linux/{2.2.0-static/bson-4.0.0 → 2.3.0-static/ffi-1.9.14}/gem.build_complete +0 -0
  61. data/vendor/bundle/extensions/x86_64-linux/2.3.0-static/ffi-1.9.14/gem_make.out +52 -0
  62. data/vendor/bundle/extensions/x86_64-linux/2.3.0-static/ffi-1.9.14/mkmf.log +399 -0
  63. data/vendor/bundle/extensions/x86_64-linux/2.3.0-static/github-markdown-0.6.9/gem_make.out +12 -12
  64. data/vendor/bundle/extensions/x86_64-linux/2.3.0-static/github-markdown-0.6.9/github/markdown.so +0 -0
  65. data/vendor/bundle/extensions/x86_64-linux/2.3.0-static/nokogiri-1.6.8/gem_make.out +2 -2
  66. data/vendor/bundle/extensions/x86_64-linux/{2.2.0-static/eventmachine-1.0.8 → 2.3.0-static/puma-3.6.0}/gem.build_complete +0 -0
  67. data/vendor/bundle/extensions/x86_64-linux/2.3.0-static/puma-3.6.0/gem_make.out +41 -0
  68. data/vendor/bundle/extensions/x86_64-linux/2.3.0-static/{puma-3.4.0 → puma-3.6.0}/mkmf.log +0 -0
  69. data/vendor/bundle/extensions/x86_64-linux/2.3.0-static/puma-3.6.0/puma/puma_http11.so +0 -0
  70. data/vendor/bundle/extensions/x86_64-linux/2.3.0-static/redcarpet-3.3.4/gem_make.out +2 -2
  71. data/vendor/bundle/extensions/x86_64-linux/2.3.0-static/redcarpet-3.3.4/redcarpet.so +0 -0
  72. data/vendor/bundle/extensions/x86_64-linux/{2.2.0-static/github-markdown-0.6.9 → 2.3.0-static/sqlite3-1.3.11}/gem.build_complete +0 -0
  73. data/vendor/bundle/extensions/x86_64-linux/2.3.0-static/sqlite3-1.3.11/gem_make.out +36 -0
  74. data/vendor/bundle/extensions/x86_64-linux/2.3.0-static/sqlite3-1.3.11/mkmf.log +467 -0
  75. data/vendor/bundle/extensions/x86_64-linux/2.3.0-static/sqlite3-1.3.11/sqlite3/sqlite3_native.so +0 -0
  76. data/vendor/bundle/extensions/x86_64-linux/2.3.0-static/unf_ext-0.0.7.2/gem_make.out +2 -2
  77. data/vendor/bundle/extensions/x86_64-linux/2.3.0-static/unf_ext-0.0.7.2/mkmf.log +2 -2
  78. data/vendor/bundle/extensions/x86_64-linux/2.3.0-static/unf_ext-0.0.7.2/unf_ext.so +0 -0
  79. data/vendor/bundle/gems/capybara-2.8.0/History.md +794 -0
  80. data/vendor/bundle/gems/{capybara-2.7.1 → capybara-2.8.0}/License.txt +0 -0
  81. data/vendor/bundle/gems/capybara-2.8.0/README.md +1007 -0
  82. data/vendor/bundle/gems/{capybara-2.7.1 → capybara-2.8.0}/lib/capybara/cucumber.rb +0 -0
  83. data/vendor/bundle/gems/capybara-2.8.0/lib/capybara/driver/base.rb +147 -0
  84. data/vendor/bundle/gems/capybara-2.8.0/lib/capybara/driver/node.rb +113 -0
  85. data/vendor/bundle/gems/{capybara-2.7.1 → capybara-2.8.0}/lib/capybara/dsl.rb +0 -0
  86. data/vendor/bundle/gems/capybara-2.8.0/lib/capybara/helpers.rb +141 -0
  87. data/vendor/bundle/gems/capybara-2.8.0/lib/capybara/node/actions.rb +266 -0
  88. data/vendor/bundle/gems/capybara-2.8.0/lib/capybara/node/base.rb +131 -0
  89. data/vendor/bundle/gems/{capybara-2.7.1 → capybara-2.8.0}/lib/capybara/node/document.rb +0 -0
  90. data/vendor/bundle/gems/{capybara-2.7.1 → capybara-2.8.0}/lib/capybara/node/document_matchers.rb +0 -0
  91. data/vendor/bundle/gems/capybara-2.8.0/lib/capybara/node/element.rb +359 -0
  92. data/vendor/bundle/gems/capybara-2.8.0/lib/capybara/node/finders.rb +232 -0
  93. data/vendor/bundle/gems/capybara-2.8.0/lib/capybara/node/matchers.rb +595 -0
  94. data/vendor/bundle/gems/{capybara-2.7.1 → capybara-2.8.0}/lib/capybara/node/simple.rb +0 -0
  95. data/vendor/bundle/gems/{capybara-2.7.1 → capybara-2.8.0}/lib/capybara/queries/base_query.rb +0 -0
  96. data/vendor/bundle/gems/{capybara-2.7.1 → capybara-2.8.0}/lib/capybara/queries/current_path_query.rb +0 -0
  97. data/vendor/bundle/gems/{capybara-2.7.1 → capybara-2.8.0}/lib/capybara/queries/match_query.rb +0 -0
  98. data/vendor/bundle/gems/capybara-2.8.0/lib/capybara/queries/selector_query.rb +155 -0
  99. data/vendor/bundle/gems/capybara-2.8.0/lib/capybara/queries/text_query.rb +84 -0
  100. data/vendor/bundle/gems/{capybara-2.7.1 → capybara-2.8.0}/lib/capybara/queries/title_query.rb +0 -0
  101. data/vendor/bundle/gems/{capybara-2.7.1 → capybara-2.8.0}/lib/capybara/query.rb +0 -0
  102. data/vendor/bundle/gems/{capybara-2.7.1 → capybara-2.8.0}/lib/capybara/rack_test/browser.rb +0 -0
  103. data/vendor/bundle/gems/{capybara-2.7.1 → capybara-2.8.0}/lib/capybara/rack_test/css_handlers.rb +0 -0
  104. data/vendor/bundle/gems/{capybara-2.7.1 → capybara-2.8.0}/lib/capybara/rack_test/driver.rb +0 -0
  105. data/vendor/bundle/gems/{capybara-2.7.1 → capybara-2.8.0}/lib/capybara/rack_test/form.rb +0 -0
  106. data/vendor/bundle/gems/capybara-2.8.0/lib/capybara/rack_test/node.rb +217 -0
  107. data/vendor/bundle/gems/{capybara-2.7.1 → capybara-2.8.0}/lib/capybara/rails.rb +0 -0
  108. data/vendor/bundle/gems/capybara-2.8.0/lib/capybara/result.rb +130 -0
  109. data/vendor/bundle/gems/capybara-2.8.0/lib/capybara/rspec/features.rb +55 -0
  110. data/vendor/bundle/gems/{capybara-2.7.1 → capybara-2.8.0}/lib/capybara/rspec/matchers.rb +0 -0
  111. data/vendor/bundle/gems/{capybara-2.7.1 → capybara-2.8.0}/lib/capybara/rspec.rb +0 -0
  112. data/vendor/bundle/gems/{capybara-2.7.1 → capybara-2.8.0}/lib/capybara/selector/filter.rb +0 -0
  113. data/vendor/bundle/gems/capybara-2.8.0/lib/capybara/selector/filter_set.rb +46 -0
  114. data/vendor/bundle/gems/capybara-2.8.0/lib/capybara/selector.rb +406 -0
  115. data/vendor/bundle/gems/capybara-2.8.0/lib/capybara/selenium/driver.rb +294 -0
  116. data/vendor/bundle/gems/capybara-2.8.0/lib/capybara/selenium/node.rb +191 -0
  117. data/vendor/bundle/gems/capybara-2.8.0/lib/capybara/server.rb +133 -0
  118. data/vendor/bundle/gems/{capybara-2.7.1 → capybara-2.8.0}/lib/capybara/session/matchers.rb +0 -0
  119. data/vendor/bundle/gems/capybara-2.8.0/lib/capybara/session.rb +784 -0
  120. data/vendor/bundle/gems/{capybara-2.7.1 → capybara-2.8.0}/lib/capybara/spec/fixtures/another_test_file.txt +0 -0
  121. data/vendor/bundle/gems/{capybara-2.7.1 → capybara-2.8.0}/lib/capybara/spec/fixtures/capybara.jpg +0 -0
  122. data/vendor/bundle/gems/{capybara-2.7.1 → capybara-2.8.0}/lib/capybara/spec/fixtures/test_file.txt +0 -0
  123. data/vendor/bundle/gems/{capybara-2.7.1 → capybara-2.8.0}/lib/capybara/spec/public/jquery-ui.js +0 -0
  124. data/vendor/bundle/gems/{capybara-2.7.1 → capybara-2.8.0}/lib/capybara/spec/public/jquery.js +0 -0
  125. data/vendor/bundle/gems/{capybara-2.7.1 → capybara-2.8.0}/lib/capybara/spec/public/test.js +0 -0
  126. data/vendor/bundle/gems/{capybara-2.7.1 → capybara-2.8.0}/lib/capybara/spec/session/accept_alert_spec.rb +0 -0
  127. data/vendor/bundle/gems/{capybara-2.7.1 → capybara-2.8.0}/lib/capybara/spec/session/accept_confirm_spec.rb +0 -0
  128. data/vendor/bundle/gems/{capybara-2.7.1 → capybara-2.8.0}/lib/capybara/spec/session/accept_prompt_spec.rb +0 -0
  129. data/vendor/bundle/gems/capybara-2.8.0/lib/capybara/spec/session/all_spec.rb +158 -0
  130. data/vendor/bundle/gems/{capybara-2.7.1 → capybara-2.8.0}/lib/capybara/spec/session/assert_current_path.rb +0 -0
  131. data/vendor/bundle/gems/{capybara-2.7.1 → capybara-2.8.0}/lib/capybara/spec/session/assert_selector.rb +0 -0
  132. data/vendor/bundle/gems/capybara-2.8.0/lib/capybara/spec/session/assert_text.rb +219 -0
  133. data/vendor/bundle/gems/{capybara-2.7.1 → capybara-2.8.0}/lib/capybara/spec/session/assert_title.rb +0 -0
  134. data/vendor/bundle/gems/{capybara-2.7.1 → capybara-2.8.0}/lib/capybara/spec/session/attach_file_spec.rb +0 -0
  135. data/vendor/bundle/gems/{capybara-2.7.1 → capybara-2.8.0}/lib/capybara/spec/session/body_spec.rb +0 -0
  136. data/vendor/bundle/gems/capybara-2.8.0/lib/capybara/spec/session/check_spec.rb +172 -0
  137. data/vendor/bundle/gems/capybara-2.8.0/lib/capybara/spec/session/choose_spec.rb +89 -0
  138. data/vendor/bundle/gems/capybara-2.8.0/lib/capybara/spec/session/click_button_spec.rb +446 -0
  139. data/vendor/bundle/gems/{capybara-2.7.1 → capybara-2.8.0}/lib/capybara/spec/session/click_link_or_button_spec.rb +0 -0
  140. data/vendor/bundle/gems/capybara-2.8.0/lib/capybara/spec/session/click_link_spec.rb +189 -0
  141. data/vendor/bundle/gems/{capybara-2.7.1 → capybara-2.8.0}/lib/capybara/spec/session/current_scope_spec.rb +0 -0
  142. data/vendor/bundle/gems/{capybara-2.7.1 → capybara-2.8.0}/lib/capybara/spec/session/current_url_spec.rb +0 -0
  143. data/vendor/bundle/gems/{capybara-2.7.1 → capybara-2.8.0}/lib/capybara/spec/session/dismiss_confirm_spec.rb +0 -0
  144. data/vendor/bundle/gems/{capybara-2.7.1 → capybara-2.8.0}/lib/capybara/spec/session/dismiss_prompt_spec.rb +0 -0
  145. data/vendor/bundle/gems/{capybara-2.7.1 → capybara-2.8.0}/lib/capybara/spec/session/element/assert_match_selector.rb +0 -0
  146. data/vendor/bundle/gems/{capybara-2.7.1 → capybara-2.8.0}/lib/capybara/spec/session/element/match_css_spec.rb +0 -0
  147. data/vendor/bundle/gems/{capybara-2.7.1 → capybara-2.8.0}/lib/capybara/spec/session/element/match_xpath_spec.rb +0 -0
  148. data/vendor/bundle/gems/{capybara-2.7.1 → capybara-2.8.0}/lib/capybara/spec/session/element/matches_selector_spec.rb +0 -0
  149. data/vendor/bundle/gems/{capybara-2.7.1 → capybara-2.8.0}/lib/capybara/spec/session/evaluate_script_spec.rb +0 -0
  150. data/vendor/bundle/gems/capybara-2.8.0/lib/capybara/spec/session/execute_script_spec.rb +13 -0
  151. data/vendor/bundle/gems/{capybara-2.7.1 → capybara-2.8.0}/lib/capybara/spec/session/fill_in_spec.rb +0 -0
  152. data/vendor/bundle/gems/capybara-2.8.0/lib/capybara/spec/session/find_button_spec.rb +73 -0
  153. data/vendor/bundle/gems/{capybara-2.7.1 → capybara-2.8.0}/lib/capybara/spec/session/find_by_id_spec.rb +0 -0
  154. data/vendor/bundle/gems/capybara-2.8.0/lib/capybara/spec/session/find_field_spec.rb +110 -0
  155. data/vendor/bundle/gems/capybara-2.8.0/lib/capybara/spec/session/find_link_spec.rb +51 -0
  156. data/vendor/bundle/gems/capybara-2.8.0/lib/capybara/spec/session/find_spec.rb +413 -0
  157. data/vendor/bundle/gems/capybara-2.8.0/lib/capybara/spec/session/first_spec.rb +113 -0
  158. data/vendor/bundle/gems/{capybara-2.7.1 → capybara-2.8.0}/lib/capybara/spec/session/go_back_spec.rb +0 -0
  159. data/vendor/bundle/gems/{capybara-2.7.1 → capybara-2.8.0}/lib/capybara/spec/session/go_forward_spec.rb +0 -0
  160. data/vendor/bundle/gems/{capybara-2.7.1 → capybara-2.8.0}/lib/capybara/spec/session/has_button_spec.rb +0 -0
  161. data/vendor/bundle/gems/{capybara-2.7.1 → capybara-2.8.0}/lib/capybara/spec/session/has_css_spec.rb +0 -0
  162. data/vendor/bundle/gems/{capybara-2.7.1 → capybara-2.8.0}/lib/capybara/spec/session/has_current_path_spec.rb +0 -0
  163. data/vendor/bundle/gems/capybara-2.8.0/lib/capybara/spec/session/has_field_spec.rb +299 -0
  164. data/vendor/bundle/gems/{capybara-2.7.1 → capybara-2.8.0}/lib/capybara/spec/session/has_link_spec.rb +0 -0
  165. data/vendor/bundle/gems/{capybara-2.7.1 → capybara-2.8.0}/lib/capybara/spec/session/has_select_spec.rb +0 -0
  166. data/vendor/bundle/gems/{capybara-2.7.1 → capybara-2.8.0}/lib/capybara/spec/session/has_selector_spec.rb +0 -0
  167. data/vendor/bundle/gems/{capybara-2.7.1 → capybara-2.8.0}/lib/capybara/spec/session/has_table_spec.rb +0 -0
  168. data/vendor/bundle/gems/capybara-2.8.0/lib/capybara/spec/session/has_text_spec.rb +317 -0
  169. data/vendor/bundle/gems/{capybara-2.7.1 → capybara-2.8.0}/lib/capybara/spec/session/has_title_spec.rb +0 -0
  170. data/vendor/bundle/gems/{capybara-2.7.1 → capybara-2.8.0}/lib/capybara/spec/session/has_xpath_spec.rb +0 -0
  171. data/vendor/bundle/gems/{capybara-2.7.1 → capybara-2.8.0}/lib/capybara/spec/session/headers.rb +0 -0
  172. data/vendor/bundle/gems/{capybara-2.7.1 → capybara-2.8.0}/lib/capybara/spec/session/html_spec.rb +0 -0
  173. data/vendor/bundle/gems/capybara-2.8.0/lib/capybara/spec/session/node_spec.rb +436 -0
  174. data/vendor/bundle/gems/capybara-2.8.0/lib/capybara/spec/session/reset_session_spec.rb +114 -0
  175. data/vendor/bundle/gems/{capybara-2.7.1 → capybara-2.8.0}/lib/capybara/spec/session/response_code.rb +0 -0
  176. data/vendor/bundle/gems/{capybara-2.7.1 → capybara-2.8.0}/lib/capybara/spec/session/save_and_open_page_spec.rb +0 -0
  177. data/vendor/bundle/gems/{capybara-2.7.1 → capybara-2.8.0}/lib/capybara/spec/session/save_and_open_screenshot_spec.rb +0 -0
  178. data/vendor/bundle/gems/{capybara-2.7.1 → capybara-2.8.0}/lib/capybara/spec/session/save_page_spec.rb +0 -0
  179. data/vendor/bundle/gems/{capybara-2.7.1 → capybara-2.8.0}/lib/capybara/spec/session/save_screenshot_spec.rb +0 -0
  180. data/vendor/bundle/gems/{capybara-2.7.1 → capybara-2.8.0}/lib/capybara/spec/session/screenshot_spec.rb +0 -0
  181. data/vendor/bundle/gems/{capybara-2.7.1 → capybara-2.8.0}/lib/capybara/spec/session/select_spec.rb +0 -0
  182. data/vendor/bundle/gems/capybara-2.8.0/lib/capybara/spec/session/selectors_spec.rb +49 -0
  183. data/vendor/bundle/gems/{capybara-2.7.1 → capybara-2.8.0}/lib/capybara/spec/session/source_spec.rb +0 -0
  184. data/vendor/bundle/gems/{capybara-2.7.1 → capybara-2.8.0}/lib/capybara/spec/session/text_spec.rb +0 -0
  185. data/vendor/bundle/gems/{capybara-2.7.1 → capybara-2.8.0}/lib/capybara/spec/session/title_spec.rb +0 -0
  186. data/vendor/bundle/gems/capybara-2.8.0/lib/capybara/spec/session/uncheck_spec.rb +80 -0
  187. data/vendor/bundle/gems/{capybara-2.7.1 → capybara-2.8.0}/lib/capybara/spec/session/unselect_spec.rb +0 -0
  188. data/vendor/bundle/gems/{capybara-2.7.1 → capybara-2.8.0}/lib/capybara/spec/session/visit_spec.rb +0 -0
  189. data/vendor/bundle/gems/{capybara-2.7.1 → capybara-2.8.0}/lib/capybara/spec/session/window/become_closed_spec.rb +0 -0
  190. data/vendor/bundle/gems/{capybara-2.7.1 → capybara-2.8.0}/lib/capybara/spec/session/window/current_window_spec.rb +0 -0
  191. data/vendor/bundle/gems/{capybara-2.7.1 → capybara-2.8.0}/lib/capybara/spec/session/window/open_new_window_spec.rb +0 -0
  192. data/vendor/bundle/gems/capybara-2.8.0/lib/capybara/spec/session/window/switch_to_window_spec.rb +125 -0
  193. data/vendor/bundle/gems/capybara-2.8.0/lib/capybara/spec/session/window/window_opened_by_spec.rb +93 -0
  194. data/vendor/bundle/gems/capybara-2.8.0/lib/capybara/spec/session/window/window_spec.rb +169 -0
  195. data/vendor/bundle/gems/{capybara-2.7.1 → capybara-2.8.0}/lib/capybara/spec/session/window/windows_spec.rb +0 -0
  196. data/vendor/bundle/gems/{capybara-2.7.1 → capybara-2.8.0}/lib/capybara/spec/session/window/within_window_spec.rb +0 -0
  197. data/vendor/bundle/gems/capybara-2.8.0/lib/capybara/spec/session/within_frame_spec.rb +82 -0
  198. data/vendor/bundle/gems/{capybara-2.7.1 → capybara-2.8.0}/lib/capybara/spec/session/within_spec.rb +0 -0
  199. data/vendor/bundle/gems/capybara-2.8.0/lib/capybara/spec/spec_helper.rb +103 -0
  200. data/vendor/bundle/gems/{capybara-2.7.1 → capybara-2.8.0}/lib/capybara/spec/test_app.rb +0 -0
  201. data/vendor/bundle/gems/{capybara-2.7.1 → capybara-2.8.0}/lib/capybara/spec/views/buttons.erb +0 -0
  202. data/vendor/bundle/gems/{capybara-2.7.1 → capybara-2.8.0}/lib/capybara/spec/views/fieldsets.erb +0 -0
  203. data/vendor/bundle/gems/capybara-2.8.0/lib/capybara/spec/views/form.erb +529 -0
  204. data/vendor/bundle/gems/{capybara-2.7.1 → capybara-2.8.0}/lib/capybara/spec/views/frame_child.erb +0 -0
  205. data/vendor/bundle/gems/{capybara-2.7.1 → capybara-2.8.0}/lib/capybara/spec/views/frame_one.erb +0 -0
  206. data/vendor/bundle/gems/{capybara-2.7.1 → capybara-2.8.0}/lib/capybara/spec/views/frame_parent.erb +0 -0
  207. data/vendor/bundle/gems/{capybara-2.7.1 → capybara-2.8.0}/lib/capybara/spec/views/frame_two.erb +0 -0
  208. data/vendor/bundle/gems/{capybara-2.7.1 → capybara-2.8.0}/lib/capybara/spec/views/header_links.erb +0 -0
  209. data/vendor/bundle/gems/{capybara-2.7.1 → capybara-2.8.0}/lib/capybara/spec/views/host_links.erb +0 -0
  210. data/vendor/bundle/gems/{capybara-2.7.1 → capybara-2.8.0}/lib/capybara/spec/views/path.erb +0 -0
  211. data/vendor/bundle/gems/{capybara-2.7.1 → capybara-2.8.0}/lib/capybara/spec/views/popup_one.erb +0 -0
  212. data/vendor/bundle/gems/{capybara-2.7.1 → capybara-2.8.0}/lib/capybara/spec/views/popup_two.erb +0 -0
  213. data/vendor/bundle/gems/{capybara-2.7.1 → capybara-2.8.0}/lib/capybara/spec/views/postback.erb +0 -0
  214. data/vendor/bundle/gems/{capybara-2.7.1 → capybara-2.8.0}/lib/capybara/spec/views/tables.erb +0 -0
  215. data/vendor/bundle/gems/{capybara-2.7.1 → capybara-2.8.0}/lib/capybara/spec/views/with_base_tag.erb +0 -0
  216. data/vendor/bundle/gems/{capybara-2.7.1 → capybara-2.8.0}/lib/capybara/spec/views/with_count.erb +0 -0
  217. data/vendor/bundle/gems/{capybara-2.7.1 → capybara-2.8.0}/lib/capybara/spec/views/with_hover.erb +0 -0
  218. data/vendor/bundle/gems/capybara-2.8.0/lib/capybara/spec/views/with_html.erb +122 -0
  219. data/vendor/bundle/gems/{capybara-2.7.1 → capybara-2.8.0}/lib/capybara/spec/views/with_html_entities.erb +0 -0
  220. data/vendor/bundle/gems/{capybara-2.7.1 → capybara-2.8.0}/lib/capybara/spec/views/with_js.erb +0 -0
  221. data/vendor/bundle/gems/{capybara-2.7.1 → capybara-2.8.0}/lib/capybara/spec/views/with_scope.erb +0 -0
  222. data/vendor/bundle/gems/{capybara-2.7.1 → capybara-2.8.0}/lib/capybara/spec/views/with_simple_html.erb +0 -0
  223. data/vendor/bundle/gems/{capybara-2.7.1 → capybara-2.8.0}/lib/capybara/spec/views/with_slow_unload.erb +0 -0
  224. data/vendor/bundle/gems/{capybara-2.7.1 → capybara-2.8.0}/lib/capybara/spec/views/with_title.erb +0 -0
  225. data/vendor/bundle/gems/capybara-2.8.0/lib/capybara/spec/views/with_unload_alert.erb +14 -0
  226. data/vendor/bundle/gems/capybara-2.8.0/lib/capybara/spec/views/with_windows.erb +50 -0
  227. data/vendor/bundle/gems/{capybara-2.7.1 → capybara-2.8.0}/lib/capybara/spec/views/within_frames.erb +0 -0
  228. data/vendor/bundle/gems/capybara-2.8.0/lib/capybara/version.rb +4 -0
  229. data/vendor/bundle/gems/{capybara-2.7.1 → capybara-2.8.0}/lib/capybara/window.rb +0 -0
  230. data/vendor/bundle/gems/capybara-2.8.0/lib/capybara.rb +515 -0
  231. data/vendor/bundle/gems/{capybara-2.7.1 → capybara-2.8.0}/spec/basic_node_spec.rb +0 -0
  232. data/vendor/bundle/gems/capybara-2.8.0/spec/capybara_spec.rb +124 -0
  233. data/vendor/bundle/gems/{capybara-2.7.1 → capybara-2.8.0}/spec/dsl_spec.rb +0 -0
  234. data/vendor/bundle/gems/{capybara-2.7.1 → capybara-2.8.0}/spec/fixtures/selenium_driver_rspec_failure.rb +0 -0
  235. data/vendor/bundle/gems/{capybara-2.7.1 → capybara-2.8.0}/spec/fixtures/selenium_driver_rspec_success.rb +0 -0
  236. data/vendor/bundle/gems/capybara-2.8.0/spec/rack_test_spec.rb +210 -0
  237. data/vendor/bundle/gems/capybara-2.8.0/spec/result_spec.rb +91 -0
  238. data/vendor/bundle/gems/capybara-2.8.0/spec/rspec/features_spec.rb +95 -0
  239. data/vendor/bundle/gems/{capybara-2.7.1 → capybara-2.8.0}/spec/rspec/matchers_spec.rb +0 -0
  240. data/vendor/bundle/gems/{capybara-2.7.1 → capybara-2.8.0}/spec/rspec/scenarios_spec.rb +0 -0
  241. data/vendor/bundle/gems/{capybara-2.7.1 → capybara-2.8.0}/spec/rspec/views_spec.rb +0 -0
  242. data/vendor/bundle/gems/{capybara-2.7.1 → capybara-2.8.0}/spec/rspec_spec.rb +0 -0
  243. data/vendor/bundle/gems/{capybara-2.7.1 → capybara-2.8.0}/spec/selector_spec.rb +0 -0
  244. data/vendor/bundle/gems/capybara-2.8.0/spec/selenium_spec.rb +154 -0
  245. data/vendor/bundle/gems/{capybara-2.7.1 → capybara-2.8.0}/spec/selenium_spec_chrome.rb +0 -0
  246. data/vendor/bundle/gems/capybara-2.8.0/spec/server_spec.rb +204 -0
  247. data/vendor/bundle/gems/{capybara-2.7.1 → capybara-2.8.0}/spec/spec_helper.rb +0 -0
  248. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/COPYING +0 -0
  249. data/vendor/bundle/gems/ffi-1.9.14/LICENSE +24 -0
  250. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/README.md +0 -0
  251. data/vendor/bundle/gems/ffi-1.9.14/Rakefile +232 -0
  252. data/vendor/bundle/gems/ffi-1.9.14/ext/ffi_c/AbstractMemory.c +1032 -0
  253. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/AbstractMemory.h +0 -0
  254. data/vendor/bundle/gems/ffi-1.9.14/ext/ffi_c/AbstractMemory.o +0 -0
  255. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/ArrayType.c +0 -0
  256. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/ArrayType.h +0 -0
  257. data/vendor/bundle/gems/ffi-1.9.14/ext/ffi_c/ArrayType.o +0 -0
  258. data/vendor/bundle/gems/ffi-1.9.14/ext/ffi_c/Buffer.c +365 -0
  259. data/vendor/bundle/gems/ffi-1.9.14/ext/ffi_c/Buffer.o +0 -0
  260. data/vendor/bundle/gems/ffi-1.9.14/ext/ffi_c/Call.c +517 -0
  261. data/vendor/bundle/gems/ffi-1.9.14/ext/ffi_c/Call.h +110 -0
  262. data/vendor/bundle/gems/ffi-1.9.14/ext/ffi_c/Call.o +0 -0
  263. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/ClosurePool.c +0 -0
  264. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/ClosurePool.h +0 -0
  265. data/vendor/bundle/gems/ffi-1.9.14/ext/ffi_c/ClosurePool.o +0 -0
  266. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/DataConverter.c +0 -0
  267. data/vendor/bundle/gems/ffi-1.9.14/ext/ffi_c/DataConverter.o +0 -0
  268. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/DynamicLibrary.c +0 -0
  269. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/DynamicLibrary.h +0 -0
  270. data/vendor/bundle/gems/ffi-1.9.14/ext/ffi_c/DynamicLibrary.o +0 -0
  271. data/vendor/bundle/gems/ffi-1.9.14/ext/ffi_c/Function.c +998 -0
  272. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/Function.h +0 -0
  273. data/vendor/bundle/gems/ffi-1.9.14/ext/ffi_c/Function.o +0 -0
  274. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/FunctionInfo.c +0 -0
  275. data/vendor/bundle/gems/ffi-1.9.14/ext/ffi_c/FunctionInfo.o +0 -0
  276. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/LastError.c +0 -0
  277. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/LastError.h +0 -0
  278. data/vendor/bundle/gems/ffi-1.9.14/ext/ffi_c/LastError.o +0 -0
  279. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/LongDouble.c +0 -0
  280. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/LongDouble.h +0 -0
  281. data/vendor/bundle/gems/ffi-1.9.14/ext/ffi_c/LongDouble.o +0 -0
  282. data/vendor/bundle/gems/ffi-1.9.14/ext/ffi_c/Makefile +260 -0
  283. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/MappedType.c +0 -0
  284. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/MappedType.h +0 -0
  285. data/vendor/bundle/gems/ffi-1.9.14/ext/ffi_c/MappedType.o +0 -0
  286. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/MemoryPointer.c +0 -0
  287. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/MemoryPointer.h +0 -0
  288. data/vendor/bundle/gems/ffi-1.9.14/ext/ffi_c/MemoryPointer.o +0 -0
  289. data/vendor/bundle/gems/ffi-1.9.14/ext/ffi_c/MethodHandle.c +358 -0
  290. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/MethodHandle.h +0 -0
  291. data/vendor/bundle/gems/ffi-1.9.14/ext/ffi_c/MethodHandle.o +0 -0
  292. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/Platform.c +0 -0
  293. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/Platform.h +0 -0
  294. data/vendor/bundle/gems/ffi-1.9.14/ext/ffi_c/Platform.o +0 -0
  295. data/vendor/bundle/gems/ffi-1.9.14/ext/ffi_c/Pointer.c +508 -0
  296. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/Pointer.h +0 -0
  297. data/vendor/bundle/gems/ffi-1.9.14/ext/ffi_c/Pointer.o +0 -0
  298. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/Struct.c +0 -0
  299. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/Struct.h +0 -0
  300. data/vendor/bundle/gems/ffi-1.9.14/ext/ffi_c/Struct.o +0 -0
  301. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/StructByReference.c +0 -0
  302. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/StructByReference.h +0 -0
  303. data/vendor/bundle/gems/ffi-1.9.14/ext/ffi_c/StructByReference.o +0 -0
  304. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/StructByValue.c +0 -0
  305. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/StructByValue.h +0 -0
  306. data/vendor/bundle/gems/ffi-1.9.14/ext/ffi_c/StructByValue.o +0 -0
  307. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/StructLayout.c +0 -0
  308. data/vendor/bundle/gems/ffi-1.9.14/ext/ffi_c/StructLayout.o +0 -0
  309. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/Thread.c +0 -0
  310. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/Thread.h +0 -0
  311. data/vendor/bundle/gems/ffi-1.9.14/ext/ffi_c/Thread.o +0 -0
  312. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/Type.c +0 -0
  313. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/Type.h +0 -0
  314. data/vendor/bundle/gems/ffi-1.9.14/ext/ffi_c/Type.o +0 -0
  315. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/Types.c +0 -0
  316. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/Types.h +0 -0
  317. data/vendor/bundle/gems/ffi-1.9.14/ext/ffi_c/Types.o +0 -0
  318. data/vendor/bundle/gems/ffi-1.9.14/ext/ffi_c/Variadic.c +304 -0
  319. data/vendor/bundle/gems/ffi-1.9.14/ext/ffi_c/Variadic.o +0 -0
  320. data/vendor/bundle/gems/ffi-1.9.14/ext/ffi_c/compat.h +78 -0
  321. data/vendor/bundle/gems/ffi-1.9.14/ext/ffi_c/extconf.h +11 -0
  322. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/extconf.rb +0 -0
  323. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/ffi.c +0 -0
  324. data/vendor/bundle/gems/ffi-1.9.14/ext/ffi_c/ffi.o +0 -0
  325. data/vendor/bundle/gems/ffi-1.9.14/ext/ffi_c/ffi_c.so +0 -0
  326. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/ChangeLog +0 -0
  327. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/ChangeLog.libffi +0 -0
  328. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/ChangeLog.libgcj +0 -0
  329. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/ChangeLog.v1 +0 -0
  330. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/LICENSE +0 -0
  331. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/Makefile.am +0 -0
  332. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/Makefile.in +0 -0
  333. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/Makefile.vc +0 -0
  334. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/Makefile.vc64 +0 -0
  335. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/README +0 -0
  336. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/acinclude.m4 +0 -0
  337. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/aclocal.m4 +0 -0
  338. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/build-ios.sh +0 -0
  339. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/compile +0 -0
  340. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/config.guess +0 -0
  341. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/config.sub +0 -0
  342. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/configure +0 -0
  343. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/configure.ac +0 -0
  344. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/configure.host +0 -0
  345. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/depcomp +0 -0
  346. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/doc/libffi.info +0 -0
  347. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/doc/libffi.texi +0 -0
  348. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/doc/stamp-vti +0 -0
  349. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/doc/version.texi +0 -0
  350. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/fficonfig.h.in +0 -0
  351. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/fficonfig.hw +0 -0
  352. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/include/Makefile.am +0 -0
  353. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/include/Makefile.in +0 -0
  354. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/include/ffi.h.in +0 -0
  355. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/include/ffi.h.vc +0 -0
  356. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/include/ffi.h.vc64 +0 -0
  357. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/include/ffi_common.h +0 -0
  358. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/install-sh +0 -0
  359. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/libffi.pc.in +0 -0
  360. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/libtool-version +0 -0
  361. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/ltmain.sh +0 -0
  362. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/m4/ax_cc_maxopt.m4 +0 -0
  363. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/m4/ax_cflags_warn_all.m4 +0 -0
  364. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/m4/ax_check_compiler_flags.m4 +0 -0
  365. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/m4/ax_compiler_vendor.m4 +0 -0
  366. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/m4/ax_configure_args.m4 +0 -0
  367. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/m4/ax_enable_builddir.m4 +0 -0
  368. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/m4/ax_gcc_archflag.m4 +0 -0
  369. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/m4/ax_gcc_x86_cpuid.m4 +0 -0
  370. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/m4/libtool.m4 +0 -0
  371. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/m4/ltoptions.m4 +0 -0
  372. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/m4/ltsugar.m4 +0 -0
  373. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/m4/ltversion.m4 +0 -0
  374. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/m4/lt~obsolete.m4 +0 -0
  375. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/man/Makefile.am +0 -0
  376. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/man/Makefile.in +0 -0
  377. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/man/ffi.3 +0 -0
  378. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/man/ffi_call.3 +0 -0
  379. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/man/ffi_prep_cif.3 +0 -0
  380. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/mdate-sh +0 -0
  381. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/missing +0 -0
  382. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/msvcc.sh +0 -0
  383. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/src/alpha/ffi.c +0 -0
  384. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/src/alpha/ffitarget.h +0 -0
  385. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/src/alpha/osf.S +0 -0
  386. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/src/arm/ffi.c +0 -0
  387. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/src/arm/ffitarget.h +0 -0
  388. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/src/arm/gentramp.sh +0 -0
  389. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/src/arm/sysv.S +0 -0
  390. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/src/arm/trampoline.S +0 -0
  391. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/src/avr32/ffi.c +0 -0
  392. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/src/avr32/ffitarget.h +0 -0
  393. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/src/avr32/sysv.S +0 -0
  394. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/src/closures.c +0 -0
  395. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/src/cris/ffi.c +0 -0
  396. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/src/cris/ffitarget.h +0 -0
  397. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/src/cris/sysv.S +0 -0
  398. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/src/debug.c +0 -0
  399. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/src/dlmalloc.c +0 -0
  400. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/src/frv/eabi.S +0 -0
  401. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/src/frv/ffi.c +0 -0
  402. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/src/frv/ffitarget.h +0 -0
  403. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/src/ia64/ffi.c +0 -0
  404. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/src/ia64/ffitarget.h +0 -0
  405. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/src/ia64/ia64_flags.h +0 -0
  406. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/src/ia64/unix.S +0 -0
  407. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/src/java_raw_api.c +0 -0
  408. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/src/m32r/ffi.c +0 -0
  409. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/src/m32r/ffitarget.h +0 -0
  410. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/src/m32r/sysv.S +0 -0
  411. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/src/m68k/ffi.c +0 -0
  412. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/src/m68k/ffitarget.h +0 -0
  413. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/src/m68k/sysv.S +0 -0
  414. data/vendor/bundle/gems/ffi-1.9.14/ext/ffi_c/libffi/src/mips/ffi.c +1038 -0
  415. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/src/mips/ffitarget.h +0 -0
  416. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/src/mips/n32.S +0 -0
  417. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/src/mips/o32.S +0 -0
  418. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/src/moxie/eabi.S +0 -0
  419. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/src/moxie/ffi.c +0 -0
  420. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/src/pa/ffi.c +0 -0
  421. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/src/pa/ffitarget.h +0 -0
  422. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/src/pa/hpux32.S +0 -0
  423. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/src/pa/linux.S +0 -0
  424. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/src/powerpc/aix.S +0 -0
  425. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/src/powerpc/aix_closure.S +0 -0
  426. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/src/powerpc/asm.h +0 -0
  427. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/src/powerpc/darwin.S +0 -0
  428. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/src/powerpc/darwin_closure.S +0 -0
  429. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/src/powerpc/ffi.c +0 -0
  430. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/src/powerpc/ffi_darwin.c +0 -0
  431. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/src/powerpc/ffitarget.h +0 -0
  432. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/src/powerpc/linux64.S +0 -0
  433. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/src/powerpc/linux64_closure.S +0 -0
  434. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/src/powerpc/ppc_closure.S +0 -0
  435. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/src/powerpc/sysv.S +0 -0
  436. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/src/prep_cif.c +0 -0
  437. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/src/raw_api.c +0 -0
  438. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/src/s390/ffi.c +0 -0
  439. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/src/s390/ffitarget.h +0 -0
  440. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/src/s390/sysv.S +0 -0
  441. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/src/sh/ffi.c +0 -0
  442. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/src/sh/ffitarget.h +0 -0
  443. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/src/sh/sysv.S +0 -0
  444. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/src/sh64/ffi.c +0 -0
  445. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/src/sh64/ffitarget.h +0 -0
  446. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/src/sh64/sysv.S +0 -0
  447. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/src/sparc/ffi.c +0 -0
  448. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/src/sparc/ffitarget.h +0 -0
  449. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/src/sparc/v8.S +0 -0
  450. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/src/sparc/v9.S +0 -0
  451. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/src/types.c +0 -0
  452. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/src/x86/darwin.S +0 -0
  453. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/src/x86/darwin64.S +0 -0
  454. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/src/x86/ffi.c +0 -0
  455. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/src/x86/ffi64.c +0 -0
  456. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/src/x86/ffitarget.h +0 -0
  457. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/src/x86/freebsd.S +0 -0
  458. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/src/x86/sysv.S +0 -0
  459. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/src/x86/unix64.S +0 -0
  460. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/src/x86/win32.S +0 -0
  461. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/src/x86/win64.S +0 -0
  462. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/testsuite/Makefile.am +0 -0
  463. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/testsuite/Makefile.in +0 -0
  464. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/testsuite/config/default.exp +0 -0
  465. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/testsuite/lib/libffi-dg.exp +0 -0
  466. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/testsuite/lib/libffi.exp +0 -0
  467. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/testsuite/lib/target-libpath.exp +0 -0
  468. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/testsuite/lib/wrapper.exp +0 -0
  469. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/testsuite/libffi.call/call.exp +0 -0
  470. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/testsuite/libffi.call/closure_fn0.c +0 -0
  471. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/testsuite/libffi.call/closure_fn1.c +0 -0
  472. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/testsuite/libffi.call/closure_fn2.c +0 -0
  473. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/testsuite/libffi.call/closure_fn3.c +0 -0
  474. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/testsuite/libffi.call/closure_fn4.c +0 -0
  475. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/testsuite/libffi.call/closure_fn5.c +0 -0
  476. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/testsuite/libffi.call/closure_fn6.c +0 -0
  477. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/testsuite/libffi.call/closure_loc_fn0.c +0 -0
  478. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/testsuite/libffi.call/closure_stdcall.c +0 -0
  479. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/testsuite/libffi.call/cls_12byte.c +0 -0
  480. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/testsuite/libffi.call/cls_16byte.c +0 -0
  481. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/testsuite/libffi.call/cls_18byte.c +0 -0
  482. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/testsuite/libffi.call/cls_19byte.c +0 -0
  483. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/testsuite/libffi.call/cls_1_1byte.c +0 -0
  484. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/testsuite/libffi.call/cls_20byte.c +0 -0
  485. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/testsuite/libffi.call/cls_20byte1.c +0 -0
  486. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/testsuite/libffi.call/cls_24byte.c +0 -0
  487. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/testsuite/libffi.call/cls_2byte.c +0 -0
  488. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/testsuite/libffi.call/cls_3_1byte.c +0 -0
  489. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/testsuite/libffi.call/cls_3byte1.c +0 -0
  490. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/testsuite/libffi.call/cls_3byte2.c +0 -0
  491. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/testsuite/libffi.call/cls_4_1byte.c +0 -0
  492. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/testsuite/libffi.call/cls_4byte.c +0 -0
  493. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/testsuite/libffi.call/cls_5_1_byte.c +0 -0
  494. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/testsuite/libffi.call/cls_5byte.c +0 -0
  495. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/testsuite/libffi.call/cls_64byte.c +0 -0
  496. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/testsuite/libffi.call/cls_6_1_byte.c +0 -0
  497. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/testsuite/libffi.call/cls_6byte.c +0 -0
  498. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/testsuite/libffi.call/cls_7_1_byte.c +0 -0
  499. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/testsuite/libffi.call/cls_7byte.c +0 -0
  500. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/testsuite/libffi.call/cls_8byte.c +0 -0
  501. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/testsuite/libffi.call/cls_9byte1.c +0 -0
  502. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/testsuite/libffi.call/cls_9byte2.c +0 -0
  503. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_double.c +0 -0
  504. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_float.c +0 -0
  505. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_longdouble.c +0 -0
  506. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_longdouble_split.c +0 -0
  507. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_longdouble_split2.c +0 -0
  508. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_pointer.c +0 -0
  509. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_sint16.c +0 -0
  510. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_sint32.c +0 -0
  511. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_sint64.c +0 -0
  512. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_uint16.c +0 -0
  513. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_uint32.c +0 -0
  514. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_uint64.c +0 -0
  515. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/testsuite/libffi.call/cls_dbls_struct.c +0 -0
  516. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/testsuite/libffi.call/cls_double.c +0 -0
  517. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/testsuite/libffi.call/cls_double_va.c +0 -0
  518. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/testsuite/libffi.call/cls_float.c +0 -0
  519. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/testsuite/libffi.call/cls_longdouble.c +0 -0
  520. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/testsuite/libffi.call/cls_longdouble_va.c +0 -0
  521. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/testsuite/libffi.call/cls_multi_schar.c +0 -0
  522. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/testsuite/libffi.call/cls_multi_sshort.c +0 -0
  523. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/testsuite/libffi.call/cls_multi_sshortchar.c +0 -0
  524. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/testsuite/libffi.call/cls_multi_uchar.c +0 -0
  525. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/testsuite/libffi.call/cls_multi_ushort.c +0 -0
  526. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/testsuite/libffi.call/cls_multi_ushortchar.c +0 -0
  527. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/testsuite/libffi.call/cls_pointer.c +0 -0
  528. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/testsuite/libffi.call/cls_pointer_stack.c +0 -0
  529. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/testsuite/libffi.call/cls_schar.c +0 -0
  530. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/testsuite/libffi.call/cls_sint.c +0 -0
  531. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/testsuite/libffi.call/cls_sshort.c +0 -0
  532. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/testsuite/libffi.call/cls_uchar.c +0 -0
  533. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/testsuite/libffi.call/cls_uint.c +0 -0
  534. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/testsuite/libffi.call/cls_ulonglong.c +0 -0
  535. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/testsuite/libffi.call/cls_ushort.c +0 -0
  536. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/testsuite/libffi.call/err_bad_abi.c +0 -0
  537. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/testsuite/libffi.call/err_bad_typedef.c +0 -0
  538. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/testsuite/libffi.call/ffitest.h +0 -0
  539. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/testsuite/libffi.call/float.c +0 -0
  540. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/testsuite/libffi.call/float1.c +0 -0
  541. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/testsuite/libffi.call/float2.c +0 -0
  542. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/testsuite/libffi.call/float3.c +0 -0
  543. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/testsuite/libffi.call/float4.c +0 -0
  544. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/testsuite/libffi.call/huge_struct.c +0 -0
  545. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/testsuite/libffi.call/many.c +0 -0
  546. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/testsuite/libffi.call/many_win32.c +0 -0
  547. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/testsuite/libffi.call/negint.c +0 -0
  548. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct.c +0 -0
  549. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct1.c +0 -0
  550. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct10.c +0 -0
  551. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct2.c +0 -0
  552. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct3.c +0 -0
  553. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct4.c +0 -0
  554. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct5.c +0 -0
  555. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct6.c +0 -0
  556. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct7.c +0 -0
  557. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct8.c +0 -0
  558. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct9.c +0 -0
  559. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/testsuite/libffi.call/problem1.c +0 -0
  560. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/testsuite/libffi.call/promotion.c +0 -0
  561. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/testsuite/libffi.call/pyobjc-tc.c +0 -0
  562. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/testsuite/libffi.call/return_dbl.c +0 -0
  563. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/testsuite/libffi.call/return_dbl1.c +0 -0
  564. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/testsuite/libffi.call/return_dbl2.c +0 -0
  565. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/testsuite/libffi.call/return_fl.c +0 -0
  566. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/testsuite/libffi.call/return_fl1.c +0 -0
  567. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/testsuite/libffi.call/return_fl2.c +0 -0
  568. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/testsuite/libffi.call/return_fl3.c +0 -0
  569. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/testsuite/libffi.call/return_ldl.c +0 -0
  570. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/testsuite/libffi.call/return_ll.c +0 -0
  571. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/testsuite/libffi.call/return_ll1.c +0 -0
  572. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/testsuite/libffi.call/return_sc.c +0 -0
  573. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/testsuite/libffi.call/return_sl.c +0 -0
  574. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/testsuite/libffi.call/return_uc.c +0 -0
  575. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/testsuite/libffi.call/return_ul.c +0 -0
  576. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/testsuite/libffi.call/stret_large.c +0 -0
  577. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/testsuite/libffi.call/stret_large2.c +0 -0
  578. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/testsuite/libffi.call/stret_medium.c +0 -0
  579. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/testsuite/libffi.call/stret_medium2.c +0 -0
  580. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/testsuite/libffi.call/strlen.c +0 -0
  581. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/testsuite/libffi.call/strlen_win32.c +0 -0
  582. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/testsuite/libffi.call/struct1.c +0 -0
  583. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/testsuite/libffi.call/struct2.c +0 -0
  584. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/testsuite/libffi.call/struct3.c +0 -0
  585. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/testsuite/libffi.call/struct4.c +0 -0
  586. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/testsuite/libffi.call/struct5.c +0 -0
  587. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/testsuite/libffi.call/struct6.c +0 -0
  588. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/testsuite/libffi.call/struct7.c +0 -0
  589. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/testsuite/libffi.call/struct8.c +0 -0
  590. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/testsuite/libffi.call/struct9.c +0 -0
  591. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/testsuite/libffi.call/testclosure.c +0 -0
  592. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/testsuite/libffi.special/ffitestcxx.h +0 -0
  593. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/testsuite/libffi.special/special.exp +0 -0
  594. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/testsuite/libffi.special/unwindtest.cc +0 -0
  595. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/testsuite/libffi.special/unwindtest_ffi_call.cc +0 -0
  596. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi/texinfo.tex +0 -0
  597. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi.bsd.mk +0 -0
  598. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi.darwin.mk +0 -0
  599. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi.gnu.mk +0 -0
  600. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi.mk +0 -0
  601. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi.vc.mk +0 -0
  602. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/libffi.vc64.mk +0 -0
  603. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/rbffi.h +0 -0
  604. data/vendor/bundle/gems/ffi-1.9.14/ext/ffi_c/rbffi_endian.h +59 -0
  605. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/win32/stdbool.h +0 -0
  606. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/ext/ffi_c/win32/stdint.h +0 -0
  607. data/vendor/bundle/gems/ffi-1.9.14/ffi.gemspec +23 -0
  608. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/gen/Rakefile +0 -0
  609. data/vendor/bundle/gems/ffi-1.9.14/lib/ffi/autopointer.rb +203 -0
  610. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/lib/ffi/buffer.rb +0 -0
  611. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/lib/ffi/callback.rb +0 -0
  612. data/vendor/bundle/gems/ffi-1.9.14/lib/ffi/enum.rb +172 -0
  613. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/lib/ffi/errno.rb +0 -0
  614. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/lib/ffi/ffi.rb +0 -0
  615. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/lib/ffi/io.rb +0 -0
  616. data/vendor/bundle/gems/ffi-1.9.14/lib/ffi/library.rb +538 -0
  617. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/lib/ffi/managedstruct.rb +0 -0
  618. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/lib/ffi/memorypointer.rb +0 -0
  619. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/lib/ffi/platform/aarch64-linux/types.conf +0 -0
  620. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/lib/ffi/platform/arm-linux/types.conf +0 -0
  621. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/lib/ffi/platform/i386-cygwin/types.conf +0 -0
  622. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/lib/ffi/platform/i386-darwin/types.conf +0 -0
  623. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/lib/ffi/platform/i386-freebsd/types.conf +0 -0
  624. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/lib/ffi/platform/i386-gnu/types.conf +0 -0
  625. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/lib/ffi/platform/i386-linux/types.conf +0 -0
  626. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/lib/ffi/platform/i386-netbsd/types.conf +0 -0
  627. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/lib/ffi/platform/i386-openbsd/types.conf +0 -0
  628. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/lib/ffi/platform/i386-solaris/types.conf +0 -0
  629. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/lib/ffi/platform/i386-windows/types.conf +0 -0
  630. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/lib/ffi/platform/ia64-linux/types.conf +0 -0
  631. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/lib/ffi/platform/mips-linux/types.conf +0 -0
  632. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/lib/ffi/platform/mips64el-linux/types.conf +0 -0
  633. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/lib/ffi/platform/mipsel-linux/types.conf +0 -0
  634. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/lib/ffi/platform/powerpc-aix/types.conf +0 -0
  635. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/lib/ffi/platform/powerpc-darwin/types.conf +0 -0
  636. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/lib/ffi/platform/powerpc-linux/types.conf +0 -0
  637. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/lib/ffi/platform/powerpc64-linux/types.conf +0 -0
  638. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/lib/ffi/platform/s390-linux/types.conf +0 -0
  639. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/lib/ffi/platform/s390x-linux/types.conf +0 -0
  640. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/lib/ffi/platform/sparc-linux/types.conf +0 -0
  641. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/lib/ffi/platform/sparc-solaris/types.conf +0 -0
  642. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/lib/ffi/platform/sparcv9-solaris/types.conf +0 -0
  643. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/lib/ffi/platform/x86_64-cygwin/types.conf +0 -0
  644. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/lib/ffi/platform/x86_64-darwin/types.conf +0 -0
  645. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/lib/ffi/platform/x86_64-freebsd/types.conf +0 -0
  646. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/lib/ffi/platform/x86_64-linux/types.conf +0 -0
  647. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/lib/ffi/platform/x86_64-netbsd/types.conf +0 -0
  648. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/lib/ffi/platform/x86_64-openbsd/types.conf +0 -0
  649. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/lib/ffi/platform/x86_64-solaris/types.conf +0 -0
  650. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/lib/ffi/platform/x86_64-windows/types.conf +0 -0
  651. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/lib/ffi/platform.rb +0 -0
  652. data/vendor/bundle/gems/ffi-1.9.14/lib/ffi/pointer.rb +134 -0
  653. data/vendor/bundle/gems/ffi-1.9.14/lib/ffi/struct.rb +373 -0
  654. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/lib/ffi/struct_layout_builder.rb +0 -0
  655. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/lib/ffi/tools/const_generator.rb +0 -0
  656. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/lib/ffi/tools/generator.rb +0 -0
  657. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/lib/ffi/tools/generator_task.rb +0 -0
  658. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/lib/ffi/tools/struct_generator.rb +0 -0
  659. data/vendor/bundle/gems/ffi-1.9.14/lib/ffi/tools/types_generator.rb +134 -0
  660. data/vendor/bundle/gems/ffi-1.9.14/lib/ffi/types.rb +194 -0
  661. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/lib/ffi/union.rb +0 -0
  662. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/lib/ffi/variadic.rb +0 -0
  663. data/vendor/bundle/gems/ffi-1.9.14/lib/ffi/version.rb +4 -0
  664. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/lib/ffi.rb +0 -0
  665. data/vendor/bundle/gems/ffi-1.9.14/lib/ffi_c.so +0 -0
  666. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/libtest/Benchmark.c +0 -0
  667. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/libtest/BoolTest.c +0 -0
  668. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/libtest/BufferTest.c +0 -0
  669. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/libtest/ClosureTest.c +0 -0
  670. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/libtest/EnumTest.c +0 -0
  671. data/vendor/bundle/gems/ffi-1.9.14/libtest/FunctionTest.c +70 -0
  672. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/libtest/GNUmakefile +0 -0
  673. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/libtest/GlobalVariable.c +0 -0
  674. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/libtest/LastErrorTest.c +0 -0
  675. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/libtest/NumberTest.c +0 -0
  676. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/libtest/PointerTest.c +0 -0
  677. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/libtest/ReferenceTest.c +0 -0
  678. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/libtest/StringTest.c +0 -0
  679. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/libtest/StructTest.c +0 -0
  680. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/libtest/UnionTest.c +0 -0
  681. data/vendor/bundle/gems/{ffi-1.9.10/spec/ffi/fixtures → ffi-1.9.14/libtest}/VariadicTest.c +0 -0
  682. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/spec/ffi/LICENSE.SPECS +0 -0
  683. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/spec/ffi/async_callback_spec.rb +0 -0
  684. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/spec/ffi/bool_spec.rb +0 -0
  685. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/spec/ffi/buffer_spec.rb +0 -0
  686. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/spec/ffi/callback_spec.rb +0 -0
  687. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/spec/ffi/custom_param_type.rb +0 -0
  688. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/spec/ffi/custom_type_spec.rb +0 -0
  689. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/spec/ffi/dup_spec.rb +0 -0
  690. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/spec/ffi/enum_spec.rb +0 -0
  691. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/spec/ffi/errno_spec.rb +0 -0
  692. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/spec/ffi/ffi_spec.rb +0 -0
  693. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/spec/ffi/fixtures/Benchmark.c +0 -0
  694. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/spec/ffi/fixtures/BoolTest.c +0 -0
  695. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/spec/ffi/fixtures/BufferTest.c +0 -0
  696. data/vendor/bundle/gems/ffi-1.9.14/spec/ffi/fixtures/ClosureTest.c +205 -0
  697. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/spec/ffi/fixtures/EnumTest.c +0 -0
  698. data/vendor/bundle/gems/ffi-1.9.14/spec/ffi/fixtures/FunctionTest.c +142 -0
  699. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/spec/ffi/fixtures/GNUmakefile +0 -0
  700. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/spec/ffi/fixtures/GlobalVariable.c +0 -0
  701. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/spec/ffi/fixtures/LastErrorTest.c +0 -0
  702. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/spec/ffi/fixtures/NumberTest.c +0 -0
  703. data/vendor/bundle/gems/ffi-1.9.14/spec/ffi/fixtures/PipeHelper.h +21 -0
  704. data/vendor/bundle/gems/ffi-1.9.14/spec/ffi/fixtures/PipeHelperPosix.c +41 -0
  705. data/vendor/bundle/gems/ffi-1.9.14/spec/ffi/fixtures/PipeHelperWindows.c +72 -0
  706. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/spec/ffi/fixtures/PointerTest.c +0 -0
  707. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/spec/ffi/fixtures/ReferenceTest.c +0 -0
  708. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/spec/ffi/fixtures/StringTest.c +0 -0
  709. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/spec/ffi/fixtures/StructTest.c +0 -0
  710. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/spec/ffi/fixtures/UnionTest.c +0 -0
  711. data/vendor/bundle/gems/ffi-1.9.14/spec/ffi/fixtures/VariadicTest.c +99 -0
  712. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/spec/ffi/fixtures/classes.rb +0 -0
  713. data/vendor/bundle/gems/ffi-1.9.14/spec/ffi/function_spec.rb +97 -0
  714. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/spec/ffi/io_spec.rb +0 -0
  715. data/vendor/bundle/gems/ffi-1.9.14/spec/ffi/library_spec.rb +286 -0
  716. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/spec/ffi/long_double.rb +0 -0
  717. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/spec/ffi/managed_struct_spec.rb +0 -0
  718. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/spec/ffi/memorypointer_spec.rb +0 -0
  719. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/spec/ffi/number_spec.rb +0 -0
  720. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/spec/ffi/platform_spec.rb +0 -0
  721. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/spec/ffi/pointer_spec.rb +0 -0
  722. data/vendor/bundle/gems/ffi-1.9.14/spec/ffi/rbx/attach_function_spec.rb +34 -0
  723. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/spec/ffi/rbx/memory_pointer_spec.rb +0 -0
  724. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/spec/ffi/rbx/spec_helper.rb +0 -0
  725. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/spec/ffi/rbx/struct_spec.rb +0 -0
  726. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/spec/ffi/spec_helper.rb +0 -0
  727. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/spec/ffi/string_spec.rb +0 -0
  728. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/spec/ffi/strptr_spec.rb +0 -0
  729. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/spec/ffi/struct_by_ref_spec.rb +0 -0
  730. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/spec/ffi/struct_callback_spec.rb +0 -0
  731. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/spec/ffi/struct_initialize_spec.rb +0 -0
  732. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/spec/ffi/struct_packed_spec.rb +0 -0
  733. data/vendor/bundle/gems/ffi-1.9.14/spec/ffi/struct_spec.rb +886 -0
  734. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/spec/ffi/typedef_spec.rb +0 -0
  735. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/spec/ffi/union_spec.rb +0 -0
  736. data/vendor/bundle/gems/ffi-1.9.14/spec/ffi/variadic_spec.rb +132 -0
  737. data/vendor/bundle/gems/{ffi-1.9.10 → ffi-1.9.14}/spec/spec.opts +0 -0
  738. data/vendor/bundle/gems/nokogiri-1.6.8/ext/nokogiri/Makefile +2 -2
  739. data/vendor/bundle/gems/redcarpet-3.3.4/ext/redcarpet/Makefile +7 -7
  740. data/vendor/bundle/gems/redcarpet-3.3.4/ext/redcarpet/rc_markdown.o +0 -0
  741. data/vendor/bundle/gems/redcarpet-3.3.4/ext/redcarpet/rc_render.o +0 -0
  742. data/vendor/bundle/gems/redcarpet-3.3.4/ext/redcarpet/redcarpet.so +0 -0
  743. data/vendor/bundle/gems/redcarpet-3.3.4/lib/redcarpet.so +0 -0
  744. data/vendor/bundle/gems/{rspec-3.4.0 → rspec-3.5.0}/LICENSE.md +0 -0
  745. data/vendor/bundle/gems/rspec-3.5.0/README.md +39 -0
  746. data/vendor/bundle/gems/rspec-3.5.0/lib/rspec/version.rb +5 -0
  747. data/vendor/bundle/gems/{rspec-3.4.0 → rspec-3.5.0}/lib/rspec.rb +0 -0
  748. data/vendor/bundle/gems/rspec-core-3.5.2/Changelog.md +2080 -0
  749. data/vendor/bundle/gems/{rspec-core-3.4.4 → rspec-core-3.5.2}/LICENSE.md +0 -0
  750. data/vendor/bundle/gems/{rspec-core-3.4.4 → rspec-core-3.5.2}/README.md +0 -0
  751. data/vendor/bundle/gems/{rspec-core-3.4.4 → rspec-core-3.5.2}/exe/rspec +0 -0
  752. data/vendor/bundle/gems/{rspec-core-3.4.4 → rspec-core-3.5.2}/lib/rspec/autorun.rb +0 -0
  753. data/vendor/bundle/gems/rspec-core-3.5.2/lib/rspec/core/backtrace_formatter.rb +65 -0
  754. data/vendor/bundle/gems/{rspec-core-3.4.4 → rspec-core-3.5.2}/lib/rspec/core/bisect/coordinator.rb +0 -0
  755. data/vendor/bundle/gems/{rspec-core-3.4.4 → rspec-core-3.5.2}/lib/rspec/core/bisect/example_minimizer.rb +0 -0
  756. data/vendor/bundle/gems/rspec-core-3.5.2/lib/rspec/core/bisect/runner.rb +169 -0
  757. data/vendor/bundle/gems/rspec-core-3.5.2/lib/rspec/core/bisect/server.rb +65 -0
  758. data/vendor/bundle/gems/rspec-core-3.5.2/lib/rspec/core/configuration.rb +2093 -0
  759. data/vendor/bundle/gems/rspec-core-3.5.2/lib/rspec/core/configuration_options.rb +194 -0
  760. data/vendor/bundle/gems/{rspec-core-3.4.4 → rspec-core-3.5.2}/lib/rspec/core/drb.rb +0 -0
  761. data/vendor/bundle/gems/rspec-core-3.5.2/lib/rspec/core/dsl.rb +98 -0
  762. data/vendor/bundle/gems/rspec-core-3.5.2/lib/rspec/core/example.rb +649 -0
  763. data/vendor/bundle/gems/rspec-core-3.5.2/lib/rspec/core/example_group.rb +873 -0
  764. data/vendor/bundle/gems/{rspec-core-3.4.4 → rspec-core-3.5.2}/lib/rspec/core/example_status_persister.rb +0 -0
  765. data/vendor/bundle/gems/{rspec-core-3.4.4 → rspec-core-3.5.2}/lib/rspec/core/filter_manager.rb +0 -0
  766. data/vendor/bundle/gems/{rspec-core-3.4.4 → rspec-core-3.5.2}/lib/rspec/core/flat_map.rb +0 -0
  767. data/vendor/bundle/gems/{rspec-core-3.4.4 → rspec-core-3.5.2}/lib/rspec/core/formatters/base_formatter.rb +0 -0
  768. data/vendor/bundle/gems/{rspec-core-3.4.4 → rspec-core-3.5.2}/lib/rspec/core/formatters/base_text_formatter.rb +0 -0
  769. data/vendor/bundle/gems/rspec-core-3.5.2/lib/rspec/core/formatters/bisect_formatter.rb +69 -0
  770. data/vendor/bundle/gems/{rspec-core-3.4.4 → rspec-core-3.5.2}/lib/rspec/core/formatters/bisect_progress_formatter.rb +0 -0
  771. data/vendor/bundle/gems/{rspec-core-3.4.4 → rspec-core-3.5.2}/lib/rspec/core/formatters/console_codes.rb +0 -0
  772. data/vendor/bundle/gems/{rspec-core-3.4.4 → rspec-core-3.5.2}/lib/rspec/core/formatters/deprecation_formatter.rb +0 -0
  773. data/vendor/bundle/gems/rspec-core-3.5.2/lib/rspec/core/formatters/documentation_formatter.rb +69 -0
  774. data/vendor/bundle/gems/rspec-core-3.5.2/lib/rspec/core/formatters/exception_presenter.rb +490 -0
  775. data/vendor/bundle/gems/{rspec-core-3.4.4 → rspec-core-3.5.2}/lib/rspec/core/formatters/fallback_message_formatter.rb +0 -0
  776. data/vendor/bundle/gems/rspec-core-3.5.2/lib/rspec/core/formatters/helpers.rb +110 -0
  777. data/vendor/bundle/gems/rspec-core-3.5.2/lib/rspec/core/formatters/html_formatter.rb +151 -0
  778. data/vendor/bundle/gems/{rspec-core-3.4.4 → rspec-core-3.5.2}/lib/rspec/core/formatters/html_printer.rb +0 -0
  779. data/vendor/bundle/gems/{rspec-core-3.4.4 → rspec-core-3.5.2}/lib/rspec/core/formatters/html_snippet_extractor.rb +0 -0
  780. data/vendor/bundle/gems/{rspec-core-3.4.4 → rspec-core-3.5.2}/lib/rspec/core/formatters/json_formatter.rb +0 -0
  781. data/vendor/bundle/gems/{rspec-core-3.4.4 → rspec-core-3.5.2}/lib/rspec/core/formatters/profile_formatter.rb +0 -0
  782. data/vendor/bundle/gems/{rspec-core-3.4.4 → rspec-core-3.5.2}/lib/rspec/core/formatters/progress_formatter.rb +0 -0
  783. data/vendor/bundle/gems/{rspec-core-3.4.4 → rspec-core-3.5.2}/lib/rspec/core/formatters/protocol.rb +0 -0
  784. data/vendor/bundle/gems/{rspec-core-3.4.4 → rspec-core-3.5.2}/lib/rspec/core/formatters/snippet_extractor.rb +0 -0
  785. data/vendor/bundle/gems/{rspec-core-3.4.4 → rspec-core-3.5.2}/lib/rspec/core/formatters.rb +0 -0
  786. data/vendor/bundle/gems/rspec-core-3.5.2/lib/rspec/core/hooks.rb +631 -0
  787. data/vendor/bundle/gems/rspec-core-3.5.2/lib/rspec/core/invocations.rb +67 -0
  788. data/vendor/bundle/gems/{rspec-core-3.4.4 → rspec-core-3.5.2}/lib/rspec/core/memoized_helpers.rb +0 -0
  789. data/vendor/bundle/gems/rspec-core-3.5.2/lib/rspec/core/metadata.rb +498 -0
  790. data/vendor/bundle/gems/rspec-core-3.5.2/lib/rspec/core/metadata_filter.rb +243 -0
  791. data/vendor/bundle/gems/{rspec-core-3.4.4 → rspec-core-3.5.2}/lib/rspec/core/minitest_assertions_adapter.rb +0 -0
  792. data/vendor/bundle/gems/{rspec-core-3.4.4 → rspec-core-3.5.2}/lib/rspec/core/mocking_adapters/flexmock.rb +0 -0
  793. data/vendor/bundle/gems/{rspec-core-3.4.4 → rspec-core-3.5.2}/lib/rspec/core/mocking_adapters/mocha.rb +0 -0
  794. data/vendor/bundle/gems/{rspec-core-3.4.4 → rspec-core-3.5.2}/lib/rspec/core/mocking_adapters/null.rb +0 -0
  795. data/vendor/bundle/gems/{rspec-core-3.4.4 → rspec-core-3.5.2}/lib/rspec/core/mocking_adapters/rr.rb +0 -0
  796. data/vendor/bundle/gems/{rspec-core-3.4.4 → rspec-core-3.5.2}/lib/rspec/core/mocking_adapters/rspec.rb +0 -0
  797. data/vendor/bundle/gems/rspec-core-3.5.2/lib/rspec/core/notifications.rb +499 -0
  798. data/vendor/bundle/gems/rspec-core-3.5.2/lib/rspec/core/option_parser.rb +289 -0
  799. data/vendor/bundle/gems/{rspec-core-3.4.4 → rspec-core-3.5.2}/lib/rspec/core/ordering.rb +0 -0
  800. data/vendor/bundle/gems/{rspec-core-3.4.4 → rspec-core-3.5.2}/lib/rspec/core/pending.rb +0 -0
  801. data/vendor/bundle/gems/{rspec-core-3.4.4 → rspec-core-3.5.2}/lib/rspec/core/profiler.rb +0 -0
  802. data/vendor/bundle/gems/rspec-core-3.5.2/lib/rspec/core/project_initializer/spec/spec_helper.rb +103 -0
  803. data/vendor/bundle/gems/{rspec-core-3.4.4 → rspec-core-3.5.2}/lib/rspec/core/project_initializer.rb +0 -0
  804. data/vendor/bundle/gems/rspec-core-3.5.2/lib/rspec/core/rake_task.rb +168 -0
  805. data/vendor/bundle/gems/{rspec-core-3.4.4 → rspec-core-3.5.2}/lib/rspec/core/reporter.rb +0 -0
  806. data/vendor/bundle/gems/{rspec-core-3.4.4 → rspec-core-3.5.2}/lib/rspec/core/ruby_project.rb +0 -0
  807. data/vendor/bundle/gems/rspec-core-3.5.2/lib/rspec/core/runner.rb +186 -0
  808. data/vendor/bundle/gems/{rspec-core-3.4.4 → rspec-core-3.5.2}/lib/rspec/core/sandbox.rb +0 -0
  809. data/vendor/bundle/gems/{rspec-core-3.4.4 → rspec-core-3.5.2}/lib/rspec/core/set.rb +0 -0
  810. data/vendor/bundle/gems/{rspec-core-3.4.4 → rspec-core-3.5.2}/lib/rspec/core/shared_context.rb +0 -0
  811. data/vendor/bundle/gems/rspec-core-3.5.2/lib/rspec/core/shared_example_group.rb +247 -0
  812. data/vendor/bundle/gems/{rspec-core-3.4.4 → rspec-core-3.5.2}/lib/rspec/core/shell_escape.rb +0 -0
  813. data/vendor/bundle/gems/{rspec-core-3.4.4 → rspec-core-3.5.2}/lib/rspec/core/source/location.rb +0 -0
  814. data/vendor/bundle/gems/{rspec-core-3.4.4 → rspec-core-3.5.2}/lib/rspec/core/source/node.rb +0 -0
  815. data/vendor/bundle/gems/{rspec-core-3.4.4 → rspec-core-3.5.2}/lib/rspec/core/source/syntax_highlighter.rb +0 -0
  816. data/vendor/bundle/gems/rspec-core-3.5.2/lib/rspec/core/source/token.rb +87 -0
  817. data/vendor/bundle/gems/rspec-core-3.5.2/lib/rspec/core/source.rb +86 -0
  818. data/vendor/bundle/gems/{rspec-core-3.4.4 → rspec-core-3.5.2}/lib/rspec/core/test_unit_assertions_adapter.rb +0 -0
  819. data/vendor/bundle/gems/rspec-core-3.5.2/lib/rspec/core/version.rb +9 -0
  820. data/vendor/bundle/gems/{rspec-core-3.4.4 → rspec-core-3.5.2}/lib/rspec/core/warnings.rb +0 -0
  821. data/vendor/bundle/gems/rspec-core-3.5.2/lib/rspec/core/world.rb +246 -0
  822. data/vendor/bundle/gems/rspec-core-3.5.2/lib/rspec/core.rb +184 -0
  823. data/vendor/bundle/gems/rspec-expectations-3.5.0/Changelog.md +1034 -0
  824. data/vendor/bundle/gems/{rspec-expectations-3.4.0 → rspec-expectations-3.5.0}/LICENSE.md +0 -0
  825. data/vendor/bundle/gems/{rspec-expectations-3.4.0 → rspec-expectations-3.5.0}/README.md +0 -0
  826. data/vendor/bundle/gems/rspec-expectations-3.5.0/lib/rspec/expectations/configuration.rb +201 -0
  827. data/vendor/bundle/gems/rspec-expectations-3.5.0/lib/rspec/expectations/expectation_target.rb +127 -0
  828. data/vendor/bundle/gems/{rspec-expectations-3.4.0 → rspec-expectations-3.5.0}/lib/rspec/expectations/fail_with.rb +0 -0
  829. data/vendor/bundle/gems/{rspec-expectations-3.4.0 → rspec-expectations-3.5.0}/lib/rspec/expectations/failure_aggregator.rb +0 -0
  830. data/vendor/bundle/gems/rspec-expectations-3.5.0/lib/rspec/expectations/handler.rb +170 -0
  831. data/vendor/bundle/gems/rspec-expectations-3.5.0/lib/rspec/expectations/minitest_integration.rb +58 -0
  832. data/vendor/bundle/gems/rspec-expectations-3.5.0/lib/rspec/expectations/syntax.rb +132 -0
  833. data/vendor/bundle/gems/rspec-expectations-3.5.0/lib/rspec/expectations/version.rb +8 -0
  834. data/vendor/bundle/gems/{rspec-expectations-3.4.0 → rspec-expectations-3.5.0}/lib/rspec/expectations.rb +0 -0
  835. data/vendor/bundle/gems/{rspec-expectations-3.4.0 → rspec-expectations-3.5.0}/lib/rspec/matchers/aliased_matcher.rb +0 -0
  836. data/vendor/bundle/gems/{rspec-expectations-3.4.0 → rspec-expectations-3.5.0}/lib/rspec/matchers/built_in/all.rb +0 -0
  837. data/vendor/bundle/gems/{rspec-expectations-3.4.0 → rspec-expectations-3.5.0}/lib/rspec/matchers/built_in/base_matcher.rb +0 -0
  838. data/vendor/bundle/gems/rspec-expectations-3.5.0/lib/rspec/matchers/built_in/be.rb +288 -0
  839. data/vendor/bundle/gems/{rspec-expectations-3.4.0 → rspec-expectations-3.5.0}/lib/rspec/matchers/built_in/be_between.rb +0 -0
  840. data/vendor/bundle/gems/{rspec-expectations-3.4.0 → rspec-expectations-3.5.0}/lib/rspec/matchers/built_in/be_instance_of.rb +0 -0
  841. data/vendor/bundle/gems/{rspec-expectations-3.4.0 → rspec-expectations-3.5.0}/lib/rspec/matchers/built_in/be_kind_of.rb +0 -0
  842. data/vendor/bundle/gems/{rspec-expectations-3.4.0 → rspec-expectations-3.5.0}/lib/rspec/matchers/built_in/be_within.rb +0 -0
  843. data/vendor/bundle/gems/rspec-expectations-3.5.0/lib/rspec/matchers/built_in/change.rb +354 -0
  844. data/vendor/bundle/gems/{rspec-expectations-3.4.0 → rspec-expectations-3.5.0}/lib/rspec/matchers/built_in/compound.rb +0 -0
  845. data/vendor/bundle/gems/{rspec-expectations-3.4.0 → rspec-expectations-3.5.0}/lib/rspec/matchers/built_in/contain_exactly.rb +0 -0
  846. data/vendor/bundle/gems/{rspec-expectations-3.4.0 → rspec-expectations-3.5.0}/lib/rspec/matchers/built_in/cover.rb +0 -0
  847. data/vendor/bundle/gems/{rspec-expectations-3.4.0 → rspec-expectations-3.5.0}/lib/rspec/matchers/built_in/eq.rb +0 -0
  848. data/vendor/bundle/gems/{rspec-expectations-3.4.0 → rspec-expectations-3.5.0}/lib/rspec/matchers/built_in/eql.rb +0 -0
  849. data/vendor/bundle/gems/{rspec-expectations-3.4.0 → rspec-expectations-3.5.0}/lib/rspec/matchers/built_in/equal.rb +0 -0
  850. data/vendor/bundle/gems/{rspec-expectations-3.4.0 → rspec-expectations-3.5.0}/lib/rspec/matchers/built_in/exist.rb +0 -0
  851. data/vendor/bundle/gems/{rspec-expectations-3.4.0 → rspec-expectations-3.5.0}/lib/rspec/matchers/built_in/has.rb +0 -0
  852. data/vendor/bundle/gems/{rspec-expectations-3.4.0 → rspec-expectations-3.5.0}/lib/rspec/matchers/built_in/have_attributes.rb +0 -0
  853. data/vendor/bundle/gems/rspec-expectations-3.5.0/lib/rspec/matchers/built_in/include.rb +143 -0
  854. data/vendor/bundle/gems/{rspec-expectations-3.4.0 → rspec-expectations-3.5.0}/lib/rspec/matchers/built_in/match.rb +0 -0
  855. data/vendor/bundle/gems/{rspec-expectations-3.4.0 → rspec-expectations-3.5.0}/lib/rspec/matchers/built_in/operators.rb +0 -0
  856. data/vendor/bundle/gems/{rspec-expectations-3.4.0 → rspec-expectations-3.5.0}/lib/rspec/matchers/built_in/output.rb +0 -0
  857. data/vendor/bundle/gems/rspec-expectations-3.5.0/lib/rspec/matchers/built_in/raise_error.rb +230 -0
  858. data/vendor/bundle/gems/rspec-expectations-3.5.0/lib/rspec/matchers/built_in/respond_to.rb +165 -0
  859. data/vendor/bundle/gems/{rspec-expectations-3.4.0 → rspec-expectations-3.5.0}/lib/rspec/matchers/built_in/satisfy.rb +0 -0
  860. data/vendor/bundle/gems/{rspec-expectations-3.4.0 → rspec-expectations-3.5.0}/lib/rspec/matchers/built_in/start_or_end_with.rb +0 -0
  861. data/vendor/bundle/gems/{rspec-expectations-3.4.0 → rspec-expectations-3.5.0}/lib/rspec/matchers/built_in/throw_symbol.rb +0 -0
  862. data/vendor/bundle/gems/{rspec-expectations-3.4.0 → rspec-expectations-3.5.0}/lib/rspec/matchers/built_in/yield.rb +0 -0
  863. data/vendor/bundle/gems/{rspec-expectations-3.4.0 → rspec-expectations-3.5.0}/lib/rspec/matchers/built_in.rb +0 -0
  864. data/vendor/bundle/gems/{rspec-expectations-3.4.0 → rspec-expectations-3.5.0}/lib/rspec/matchers/composable.rb +0 -0
  865. data/vendor/bundle/gems/rspec-expectations-3.5.0/lib/rspec/matchers/dsl.rb +466 -0
  866. data/vendor/bundle/gems/rspec-expectations-3.5.0/lib/rspec/matchers/english_phrasing.rb +58 -0
  867. data/vendor/bundle/gems/{rspec-expectations-3.4.0 → rspec-expectations-3.5.0}/lib/rspec/matchers/expecteds_for_multiple_diffs.rb +0 -0
  868. data/vendor/bundle/gems/{rspec-expectations-3.4.0 → rspec-expectations-3.5.0}/lib/rspec/matchers/fail_matchers.rb +0 -0
  869. data/vendor/bundle/gems/{rspec-expectations-3.4.0 → rspec-expectations-3.5.0}/lib/rspec/matchers/generated_descriptions.rb +0 -0
  870. data/vendor/bundle/gems/{rspec-expectations-3.4.0 → rspec-expectations-3.5.0}/lib/rspec/matchers/matcher_delegator.rb +0 -0
  871. data/vendor/bundle/gems/{rspec-expectations-3.4.0 → rspec-expectations-3.5.0}/lib/rspec/matchers/matcher_protocol.rb +0 -0
  872. data/vendor/bundle/gems/rspec-expectations-3.5.0/lib/rspec/matchers.rb +1038 -0
  873. data/vendor/bundle/gems/rspec-mocks-3.5.0/Changelog.md +1043 -0
  874. data/vendor/bundle/gems/{rspec-mocks-3.4.1 → rspec-mocks-3.5.0}/LICENSE.md +0 -0
  875. data/vendor/bundle/gems/{rspec-mocks-3.4.1 → rspec-mocks-3.5.0}/README.md +0 -0
  876. data/vendor/bundle/gems/{rspec-mocks-3.4.1 → rspec-mocks-3.5.0}/lib/rspec/mocks/any_instance/chain.rb +0 -0
  877. data/vendor/bundle/gems/{rspec-mocks-3.4.1 → rspec-mocks-3.5.0}/lib/rspec/mocks/any_instance/error_generator.rb +0 -0
  878. data/vendor/bundle/gems/{rspec-mocks-3.4.1 → rspec-mocks-3.5.0}/lib/rspec/mocks/any_instance/expect_chain_chain.rb +0 -0
  879. data/vendor/bundle/gems/{rspec-mocks-3.4.1 → rspec-mocks-3.5.0}/lib/rspec/mocks/any_instance/expectation_chain.rb +0 -0
  880. data/vendor/bundle/gems/{rspec-mocks-3.4.1 → rspec-mocks-3.5.0}/lib/rspec/mocks/any_instance/message_chains.rb +0 -0
  881. data/vendor/bundle/gems/{rspec-mocks-3.4.1 → rspec-mocks-3.5.0}/lib/rspec/mocks/any_instance/proxy.rb +0 -0
  882. data/vendor/bundle/gems/rspec-mocks-3.5.0/lib/rspec/mocks/any_instance/recorder.rb +289 -0
  883. data/vendor/bundle/gems/rspec-mocks-3.5.0/lib/rspec/mocks/any_instance/stub_chain.rb +47 -0
  884. data/vendor/bundle/gems/rspec-mocks-3.5.0/lib/rspec/mocks/any_instance/stub_chain_chain.rb +28 -0
  885. data/vendor/bundle/gems/{rspec-mocks-3.4.1 → rspec-mocks-3.5.0}/lib/rspec/mocks/any_instance.rb +0 -0
  886. data/vendor/bundle/gems/{rspec-mocks-3.4.1 → rspec-mocks-3.5.0}/lib/rspec/mocks/argument_list_matcher.rb +0 -0
  887. data/vendor/bundle/gems/{rspec-mocks-3.4.1 → rspec-mocks-3.5.0}/lib/rspec/mocks/argument_matchers.rb +0 -0
  888. data/vendor/bundle/gems/{rspec-mocks-3.4.1 → rspec-mocks-3.5.0}/lib/rspec/mocks/configuration.rb +0 -0
  889. data/vendor/bundle/gems/rspec-mocks-3.5.0/lib/rspec/mocks/error_generator.rb +369 -0
  890. data/vendor/bundle/gems/{rspec-mocks-3.4.1 → rspec-mocks-3.5.0}/lib/rspec/mocks/example_methods.rb +0 -0
  891. data/vendor/bundle/gems/{rspec-mocks-3.4.1 → rspec-mocks-3.5.0}/lib/rspec/mocks/instance_method_stasher.rb +0 -0
  892. data/vendor/bundle/gems/{rspec-mocks-3.4.1 → rspec-mocks-3.5.0}/lib/rspec/mocks/marshal_extension.rb +0 -0
  893. data/vendor/bundle/gems/{rspec-mocks-3.4.1 → rspec-mocks-3.5.0}/lib/rspec/mocks/matchers/expectation_customization.rb +0 -0
  894. data/vendor/bundle/gems/rspec-mocks-3.5.0/lib/rspec/mocks/matchers/have_received.rb +130 -0
  895. data/vendor/bundle/gems/rspec-mocks-3.5.0/lib/rspec/mocks/matchers/receive.rb +132 -0
  896. data/vendor/bundle/gems/rspec-mocks-3.5.0/lib/rspec/mocks/matchers/receive_message_chain.rb +82 -0
  897. data/vendor/bundle/gems/rspec-mocks-3.5.0/lib/rspec/mocks/matchers/receive_messages.rb +77 -0
  898. data/vendor/bundle/gems/{rspec-mocks-3.4.1 → rspec-mocks-3.5.0}/lib/rspec/mocks/message_chain.rb +0 -0
  899. data/vendor/bundle/gems/rspec-mocks-3.5.0/lib/rspec/mocks/message_expectation.rb +740 -0
  900. data/vendor/bundle/gems/{rspec-mocks-3.4.1 → rspec-mocks-3.5.0}/lib/rspec/mocks/method_double.rb +0 -0
  901. data/vendor/bundle/gems/rspec-mocks-3.5.0/lib/rspec/mocks/method_reference.rb +202 -0
  902. data/vendor/bundle/gems/rspec-mocks-3.5.0/lib/rspec/mocks/minitest_integration.rb +68 -0
  903. data/vendor/bundle/gems/{rspec-mocks-3.4.1 → rspec-mocks-3.5.0}/lib/rspec/mocks/mutate_const.rb +0 -0
  904. data/vendor/bundle/gems/{rspec-mocks-3.4.1 → rspec-mocks-3.5.0}/lib/rspec/mocks/object_reference.rb +0 -0
  905. data/vendor/bundle/gems/{rspec-mocks-3.4.1 → rspec-mocks-3.5.0}/lib/rspec/mocks/order_group.rb +0 -0
  906. data/vendor/bundle/gems/rspec-mocks-3.5.0/lib/rspec/mocks/proxy.rb +489 -0
  907. data/vendor/bundle/gems/{rspec-mocks-3.4.1 → rspec-mocks-3.5.0}/lib/rspec/mocks/space.rb +0 -0
  908. data/vendor/bundle/gems/{rspec-mocks-3.4.1 → rspec-mocks-3.5.0}/lib/rspec/mocks/standalone.rb +0 -0
  909. data/vendor/bundle/gems/{rspec-mocks-3.4.1 → rspec-mocks-3.5.0}/lib/rspec/mocks/syntax.rb +0 -0
  910. data/vendor/bundle/gems/rspec-mocks-3.5.0/lib/rspec/mocks/targets.rb +124 -0
  911. data/vendor/bundle/gems/{rspec-mocks-3.4.1 → rspec-mocks-3.5.0}/lib/rspec/mocks/test_double.rb +0 -0
  912. data/vendor/bundle/gems/{rspec-mocks-3.4.1 → rspec-mocks-3.5.0}/lib/rspec/mocks/verifying_double.rb +0 -0
  913. data/vendor/bundle/gems/{rspec-mocks-3.4.1 → rspec-mocks-3.5.0}/lib/rspec/mocks/verifying_message_expectation.rb +0 -0
  914. data/vendor/bundle/gems/{rspec-mocks-3.4.1 → rspec-mocks-3.5.0}/lib/rspec/mocks/verifying_proxy.rb +0 -0
  915. data/vendor/bundle/gems/rspec-mocks-3.5.0/lib/rspec/mocks/version.rb +9 -0
  916. data/vendor/bundle/gems/rspec-mocks-3.5.0/lib/rspec/mocks.rb +130 -0
  917. data/vendor/bundle/gems/rspec-support-3.5.0/Changelog.md +192 -0
  918. data/vendor/bundle/gems/{rspec-support-3.4.1 → rspec-support-3.5.0}/LICENSE.md +0 -0
  919. data/vendor/bundle/gems/rspec-support-3.5.0/README.md +40 -0
  920. data/vendor/bundle/gems/{rspec-support-3.4.1 → rspec-support-3.5.0}/lib/rspec/support/caller_filter.rb +0 -0
  921. data/vendor/bundle/gems/{rspec-support-3.4.1 → rspec-support-3.5.0}/lib/rspec/support/comparable_version.rb +0 -0
  922. data/vendor/bundle/gems/{rspec-support-3.4.1 → rspec-support-3.5.0}/lib/rspec/support/differ.rb +0 -0
  923. data/vendor/bundle/gems/{rspec-support-3.4.1 → rspec-support-3.5.0}/lib/rspec/support/directory_maker.rb +0 -0
  924. data/vendor/bundle/gems/rspec-support-3.5.0/lib/rspec/support/encoded_string.rb +165 -0
  925. data/vendor/bundle/gems/{rspec-support-3.4.1 → rspec-support-3.5.0}/lib/rspec/support/fuzzy_matcher.rb +0 -0
  926. data/vendor/bundle/gems/{rspec-support-3.4.1 → rspec-support-3.5.0}/lib/rspec/support/hunk_generator.rb +0 -0
  927. data/vendor/bundle/gems/{rspec-support-3.4.1 → rspec-support-3.5.0}/lib/rspec/support/matcher_definition.rb +0 -0
  928. data/vendor/bundle/gems/rspec-support-3.5.0/lib/rspec/support/method_signature_verifier.rb +392 -0
  929. data/vendor/bundle/gems/{rspec-support-3.4.1 → rspec-support-3.5.0}/lib/rspec/support/mutex.rb +0 -0
  930. data/vendor/bundle/gems/rspec-support-3.5.0/lib/rspec/support/object_formatter.rb +249 -0
  931. data/vendor/bundle/gems/{rspec-support-3.4.1 → rspec-support-3.5.0}/lib/rspec/support/recursive_const_methods.rb +0 -0
  932. data/vendor/bundle/gems/{rspec-support-3.4.1 → rspec-support-3.5.0}/lib/rspec/support/reentrant_mutex.rb +0 -0
  933. data/vendor/bundle/gems/{rspec-support-3.4.1 → rspec-support-3.5.0}/lib/rspec/support/ruby_features.rb +0 -0
  934. data/vendor/bundle/gems/{rspec-support-3.4.1 → rspec-support-3.5.0}/lib/rspec/support/spec/deprecation_helpers.rb +0 -0
  935. data/vendor/bundle/gems/{rspec-support-3.4.1 → rspec-support-3.5.0}/lib/rspec/support/spec/formatting_support.rb +0 -0
  936. data/vendor/bundle/gems/{rspec-support-3.4.1 → rspec-support-3.5.0}/lib/rspec/support/spec/in_sub_process.rb +0 -0
  937. data/vendor/bundle/gems/rspec-support-3.5.0/lib/rspec/support/spec/library_wide_checks.rb +150 -0
  938. data/vendor/bundle/gems/rspec-support-3.5.0/lib/rspec/support/spec/shell_out.rb +82 -0
  939. data/vendor/bundle/gems/{rspec-support-3.4.1 → rspec-support-3.5.0}/lib/rspec/support/spec/stderr_splitter.rb +0 -0
  940. data/vendor/bundle/gems/{rspec-support-3.4.1 → rspec-support-3.5.0}/lib/rspec/support/spec/string_matcher.rb +0 -0
  941. data/vendor/bundle/gems/rspec-support-3.5.0/lib/rspec/support/spec/with_isolated_directory.rb +13 -0
  942. data/vendor/bundle/gems/{rspec-support-3.4.1 → rspec-support-3.5.0}/lib/rspec/support/spec/with_isolated_stderr.rb +0 -0
  943. data/vendor/bundle/gems/rspec-support-3.5.0/lib/rspec/support/spec.rb +81 -0
  944. data/vendor/bundle/gems/rspec-support-3.5.0/lib/rspec/support/version.rb +7 -0
  945. data/vendor/bundle/gems/{rspec-support-3.4.1 → rspec-support-3.5.0}/lib/rspec/support/warnings.rb +0 -0
  946. data/vendor/bundle/gems/{rspec-support-3.4.1 → rspec-support-3.5.0}/lib/rspec/support.rb +0 -0
  947. data/vendor/bundle/gems/sequel-4.37.0/CHANGELOG +6314 -0
  948. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/MIT-LICENSE +0 -0
  949. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/README.rdoc +0 -0
  950. data/vendor/bundle/gems/sequel-4.37.0/Rakefile +164 -0
  951. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/bin/sequel +0 -0
  952. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/doc/active_record.rdoc +0 -0
  953. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/doc/advanced_associations.rdoc +0 -0
  954. data/vendor/bundle/gems/sequel-4.37.0/doc/association_basics.rdoc +1833 -0
  955. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/doc/bin_sequel.rdoc +0 -0
  956. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/doc/cheat_sheet.rdoc +0 -0
  957. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/doc/code_order.rdoc +0 -0
  958. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/doc/core_extensions.rdoc +0 -0
  959. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/doc/dataset_basics.rdoc +0 -0
  960. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/doc/dataset_filtering.rdoc +0 -0
  961. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/doc/extensions.rdoc +0 -0
  962. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/doc/mass_assignment.rdoc +0 -0
  963. data/vendor/bundle/gems/sequel-4.37.0/doc/migration.rdoc +637 -0
  964. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/doc/model_hooks.rdoc +0 -0
  965. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/doc/model_plugins.rdoc +0 -0
  966. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/doc/mssql_stored_procedures.rdoc +0 -0
  967. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/doc/object_model.rdoc +0 -0
  968. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/doc/opening_databases.rdoc +0 -0
  969. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/doc/postgresql.rdoc +0 -0
  970. data/vendor/bundle/gems/sequel-4.37.0/doc/prepared_statements.rdoc +139 -0
  971. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/doc/querying.rdoc +0 -0
  972. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/doc/reflection.rdoc +0 -0
  973. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/doc/release_notes/1.0.txt +0 -0
  974. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/doc/release_notes/1.1.txt +0 -0
  975. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/doc/release_notes/1.3.txt +0 -0
  976. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/doc/release_notes/1.4.0.txt +0 -0
  977. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/doc/release_notes/1.5.0.txt +0 -0
  978. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/doc/release_notes/2.0.0.txt +0 -0
  979. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/doc/release_notes/2.1.0.txt +0 -0
  980. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/doc/release_notes/2.10.0.txt +0 -0
  981. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/doc/release_notes/2.11.0.txt +0 -0
  982. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/doc/release_notes/2.12.0.txt +0 -0
  983. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/doc/release_notes/2.2.0.txt +0 -0
  984. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/doc/release_notes/2.3.0.txt +0 -0
  985. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/doc/release_notes/2.4.0.txt +0 -0
  986. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/doc/release_notes/2.5.0.txt +0 -0
  987. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/doc/release_notes/2.6.0.txt +0 -0
  988. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/doc/release_notes/2.7.0.txt +0 -0
  989. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/doc/release_notes/2.8.0.txt +0 -0
  990. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/doc/release_notes/2.9.0.txt +0 -0
  991. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/doc/release_notes/3.0.0.txt +0 -0
  992. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/doc/release_notes/3.1.0.txt +0 -0
  993. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/doc/release_notes/3.10.0.txt +0 -0
  994. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/doc/release_notes/3.11.0.txt +0 -0
  995. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/doc/release_notes/3.12.0.txt +0 -0
  996. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/doc/release_notes/3.13.0.txt +0 -0
  997. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/doc/release_notes/3.14.0.txt +0 -0
  998. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/doc/release_notes/3.15.0.txt +0 -0
  999. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/doc/release_notes/3.16.0.txt +0 -0
  1000. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/doc/release_notes/3.17.0.txt +0 -0
  1001. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/doc/release_notes/3.18.0.txt +0 -0
  1002. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/doc/release_notes/3.19.0.txt +0 -0
  1003. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/doc/release_notes/3.2.0.txt +0 -0
  1004. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/doc/release_notes/3.20.0.txt +0 -0
  1005. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/doc/release_notes/3.21.0.txt +0 -0
  1006. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/doc/release_notes/3.22.0.txt +0 -0
  1007. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/doc/release_notes/3.23.0.txt +0 -0
  1008. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/doc/release_notes/3.24.0.txt +0 -0
  1009. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/doc/release_notes/3.25.0.txt +0 -0
  1010. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/doc/release_notes/3.26.0.txt +0 -0
  1011. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/doc/release_notes/3.27.0.txt +0 -0
  1012. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/doc/release_notes/3.28.0.txt +0 -0
  1013. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/doc/release_notes/3.29.0.txt +0 -0
  1014. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/doc/release_notes/3.3.0.txt +0 -0
  1015. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/doc/release_notes/3.30.0.txt +0 -0
  1016. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/doc/release_notes/3.31.0.txt +0 -0
  1017. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/doc/release_notes/3.32.0.txt +0 -0
  1018. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/doc/release_notes/3.33.0.txt +0 -0
  1019. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/doc/release_notes/3.34.0.txt +0 -0
  1020. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/doc/release_notes/3.35.0.txt +0 -0
  1021. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/doc/release_notes/3.36.0.txt +0 -0
  1022. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/doc/release_notes/3.37.0.txt +0 -0
  1023. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/doc/release_notes/3.38.0.txt +0 -0
  1024. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/doc/release_notes/3.39.0.txt +0 -0
  1025. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/doc/release_notes/3.4.0.txt +0 -0
  1026. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/doc/release_notes/3.40.0.txt +0 -0
  1027. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/doc/release_notes/3.41.0.txt +0 -0
  1028. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/doc/release_notes/3.42.0.txt +0 -0
  1029. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/doc/release_notes/3.43.0.txt +0 -0
  1030. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/doc/release_notes/3.44.0.txt +0 -0
  1031. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/doc/release_notes/3.45.0.txt +0 -0
  1032. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/doc/release_notes/3.46.0.txt +0 -0
  1033. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/doc/release_notes/3.47.0.txt +0 -0
  1034. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/doc/release_notes/3.48.0.txt +0 -0
  1035. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/doc/release_notes/3.5.0.txt +0 -0
  1036. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/doc/release_notes/3.6.0.txt +0 -0
  1037. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/doc/release_notes/3.7.0.txt +0 -0
  1038. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/doc/release_notes/3.8.0.txt +0 -0
  1039. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/doc/release_notes/3.9.0.txt +0 -0
  1040. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/doc/release_notes/4.0.0.txt +0 -0
  1041. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/doc/release_notes/4.1.0.txt +0 -0
  1042. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/doc/release_notes/4.10.0.txt +0 -0
  1043. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/doc/release_notes/4.11.0.txt +0 -0
  1044. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/doc/release_notes/4.12.0.txt +0 -0
  1045. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/doc/release_notes/4.13.0.txt +0 -0
  1046. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/doc/release_notes/4.14.0.txt +0 -0
  1047. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/doc/release_notes/4.15.0.txt +0 -0
  1048. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/doc/release_notes/4.16.0.txt +0 -0
  1049. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/doc/release_notes/4.17.0.txt +0 -0
  1050. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/doc/release_notes/4.18.0.txt +0 -0
  1051. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/doc/release_notes/4.19.0.txt +0 -0
  1052. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/doc/release_notes/4.2.0.txt +0 -0
  1053. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/doc/release_notes/4.20.0.txt +0 -0
  1054. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/doc/release_notes/4.21.0.txt +0 -0
  1055. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/doc/release_notes/4.22.0.txt +0 -0
  1056. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/doc/release_notes/4.23.0.txt +0 -0
  1057. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/doc/release_notes/4.24.0.txt +0 -0
  1058. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/doc/release_notes/4.25.0.txt +0 -0
  1059. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/doc/release_notes/4.26.0.txt +0 -0
  1060. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/doc/release_notes/4.27.0.txt +0 -0
  1061. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/doc/release_notes/4.28.0.txt +0 -0
  1062. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/doc/release_notes/4.29.0.txt +0 -0
  1063. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/doc/release_notes/4.3.0.txt +0 -0
  1064. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/doc/release_notes/4.30.0.txt +0 -0
  1065. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/doc/release_notes/4.31.0.txt +0 -0
  1066. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/doc/release_notes/4.32.0.txt +0 -0
  1067. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/doc/release_notes/4.33.0.txt +0 -0
  1068. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/doc/release_notes/4.34.0.txt +0 -0
  1069. data/vendor/bundle/gems/sequel-4.37.0/doc/release_notes/4.35.0.txt +130 -0
  1070. data/vendor/bundle/gems/sequel-4.37.0/doc/release_notes/4.36.0.txt +116 -0
  1071. data/vendor/bundle/gems/sequel-4.37.0/doc/release_notes/4.37.0.txt +50 -0
  1072. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/doc/release_notes/4.4.0.txt +0 -0
  1073. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/doc/release_notes/4.5.0.txt +0 -0
  1074. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/doc/release_notes/4.6.0.txt +0 -0
  1075. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/doc/release_notes/4.7.0.txt +0 -0
  1076. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/doc/release_notes/4.8.0.txt +0 -0
  1077. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/doc/release_notes/4.9.0.txt +0 -0
  1078. data/vendor/bundle/gems/sequel-4.37.0/doc/schema_modification.rdoc +665 -0
  1079. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/doc/security.rdoc +0 -0
  1080. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/doc/sharding.rdoc +0 -0
  1081. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/doc/sql.rdoc +0 -0
  1082. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/doc/testing.rdoc +0 -0
  1083. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/doc/thread_safety.rdoc +0 -0
  1084. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/doc/transactions.rdoc +0 -0
  1085. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/doc/validations.rdoc +0 -0
  1086. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/doc/virtual_rows.rdoc +0 -0
  1087. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/adapters/ado/access.rb +0 -0
  1088. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/adapters/ado/mssql.rb +0 -0
  1089. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/adapters/ado.rb +0 -0
  1090. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/adapters/amalgalite.rb +0 -0
  1091. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/adapters/cubrid.rb +0 -0
  1092. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/adapters/do/mysql.rb +0 -0
  1093. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/adapters/do/postgres.rb +0 -0
  1094. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/adapters/do/sqlite3.rb +0 -0
  1095. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/adapters/do.rb +0 -0
  1096. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/adapters/ibmdb.rb +0 -0
  1097. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/adapters/jdbc/as400.rb +0 -0
  1098. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/adapters/jdbc/cubrid.rb +0 -0
  1099. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/adapters/jdbc/db2.rb +0 -0
  1100. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/adapters/jdbc/derby.rb +0 -0
  1101. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/adapters/jdbc/firebirdsql.rb +0 -0
  1102. data/vendor/bundle/gems/sequel-4.37.0/lib/sequel/adapters/jdbc/h2.rb +229 -0
  1103. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/adapters/jdbc/hsqldb.rb +0 -0
  1104. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/adapters/jdbc/informix-sqli.rb +0 -0
  1105. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/adapters/jdbc/jdbcprogress.rb +0 -0
  1106. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/adapters/jdbc/jtds.rb +0 -0
  1107. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/adapters/jdbc/mssql.rb +0 -0
  1108. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/adapters/jdbc/mysql.rb +0 -0
  1109. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/adapters/jdbc/oracle.rb +0 -0
  1110. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/adapters/jdbc/postgresql.rb +0 -0
  1111. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/adapters/jdbc/sqlanywhere.rb +0 -0
  1112. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/adapters/jdbc/sqlite.rb +0 -0
  1113. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/adapters/jdbc/sqlserver.rb +0 -0
  1114. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/adapters/jdbc/transactions.rb +0 -0
  1115. data/vendor/bundle/gems/sequel-4.37.0/lib/sequel/adapters/jdbc.rb +817 -0
  1116. data/vendor/bundle/gems/sequel-4.37.0/lib/sequel/adapters/mock.rb +393 -0
  1117. data/vendor/bundle/gems/sequel-4.37.0/lib/sequel/adapters/mysql.rb +378 -0
  1118. data/vendor/bundle/gems/sequel-4.37.0/lib/sequel/adapters/mysql2.rb +307 -0
  1119. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/adapters/odbc/db2.rb +0 -0
  1120. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/adapters/odbc/mssql.rb +0 -0
  1121. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/adapters/odbc/progress.rb +0 -0
  1122. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/adapters/odbc.rb +0 -0
  1123. data/vendor/bundle/gems/sequel-4.37.0/lib/sequel/adapters/oracle.rb +416 -0
  1124. data/vendor/bundle/gems/sequel-4.37.0/lib/sequel/adapters/postgres.rb +886 -0
  1125. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/adapters/postgresql.rb +0 -0
  1126. data/vendor/bundle/gems/sequel-4.37.0/lib/sequel/adapters/shared/access.rb +296 -0
  1127. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/adapters/shared/cubrid.rb +0 -0
  1128. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/adapters/shared/db2.rb +0 -0
  1129. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/adapters/shared/firebird.rb +0 -0
  1130. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/adapters/shared/informix.rb +0 -0
  1131. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/adapters/shared/mssql.rb +0 -0
  1132. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/adapters/shared/mysql.rb +0 -0
  1133. data/vendor/bundle/gems/sequel-4.37.0/lib/sequel/adapters/shared/oracle.rb +600 -0
  1134. data/vendor/bundle/gems/sequel-4.37.0/lib/sequel/adapters/shared/postgres.rb +1770 -0
  1135. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/adapters/shared/progress.rb +0 -0
  1136. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/adapters/shared/sqlanywhere.rb +0 -0
  1137. data/vendor/bundle/gems/sequel-4.37.0/lib/sequel/adapters/shared/sqlite.rb +777 -0
  1138. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/adapters/sqlanywhere.rb +0 -0
  1139. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/adapters/sqlite.rb +0 -0
  1140. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/adapters/swift/mysql.rb +0 -0
  1141. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/adapters/swift/postgres.rb +0 -0
  1142. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/adapters/swift/sqlite.rb +0 -0
  1143. data/vendor/bundle/gems/sequel-4.37.0/lib/sequel/adapters/swift.rb +162 -0
  1144. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/adapters/tinytds.rb +0 -0
  1145. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/adapters/utils/emulate_offset_with_reverse_and_count.rb +0 -0
  1146. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/adapters/utils/emulate_offset_with_row_number.rb +0 -0
  1147. data/vendor/bundle/gems/sequel-4.37.0/lib/sequel/adapters/utils/mysql_mysql2.rb +82 -0
  1148. data/vendor/bundle/gems/sequel-4.37.0/lib/sequel/adapters/utils/mysql_prepared_statements.rb +82 -0
  1149. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/adapters/utils/pg_types.rb +0 -0
  1150. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/adapters/utils/replace.rb +0 -0
  1151. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/adapters/utils/split_alter_table.rb +0 -0
  1152. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/adapters/utils/stored_procedures.rb +0 -0
  1153. data/vendor/bundle/gems/sequel-4.37.0/lib/sequel/ast_transformer.rb +208 -0
  1154. data/vendor/bundle/gems/sequel-4.37.0/lib/sequel/connection_pool/sharded_single.rb +110 -0
  1155. data/vendor/bundle/gems/sequel-4.37.0/lib/sequel/connection_pool/sharded_threaded.rb +352 -0
  1156. data/vendor/bundle/gems/sequel-4.37.0/lib/sequel/connection_pool/single.rb +52 -0
  1157. data/vendor/bundle/gems/sequel-4.37.0/lib/sequel/connection_pool/threaded.rb +286 -0
  1158. data/vendor/bundle/gems/sequel-4.37.0/lib/sequel/connection_pool.rb +130 -0
  1159. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/core.rb +0 -0
  1160. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/database/connecting.rb +0 -0
  1161. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/database/dataset.rb +0 -0
  1162. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/database/dataset_defaults.rb +0 -0
  1163. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/database/features.rb +0 -0
  1164. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/database/logging.rb +0 -0
  1165. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/database/misc.rb +0 -0
  1166. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/database/query.rb +0 -0
  1167. data/vendor/bundle/gems/sequel-4.37.0/lib/sequel/database/schema_generator.rb +560 -0
  1168. data/vendor/bundle/gems/sequel-4.37.0/lib/sequel/database/schema_methods.rb +1006 -0
  1169. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/database/transactions.rb +0 -0
  1170. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/database.rb +0 -0
  1171. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/dataset/actions.rb +0 -0
  1172. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/dataset/features.rb +0 -0
  1173. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/dataset/graph.rb +0 -0
  1174. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/dataset/misc.rb +0 -0
  1175. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/dataset/mutation.rb +0 -0
  1176. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/dataset/placeholder_literalizer.rb +0 -0
  1177. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/dataset/prepared_statements.rb +0 -0
  1178. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/dataset/query.rb +0 -0
  1179. data/vendor/bundle/gems/sequel-4.37.0/lib/sequel/dataset/sql.rb +1589 -0
  1180. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/dataset.rb +0 -0
  1181. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/deprecated.rb +0 -0
  1182. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/exceptions.rb +0 -0
  1183. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/extensions/_pretty_table.rb +0 -0
  1184. data/vendor/bundle/gems/sequel-4.37.0/lib/sequel/extensions/arbitrary_servers.rb +114 -0
  1185. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/extensions/blank.rb +0 -0
  1186. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/extensions/columns_introspection.rb +0 -0
  1187. data/vendor/bundle/gems/sequel-4.37.0/lib/sequel/extensions/connection_expiration.rb +89 -0
  1188. data/vendor/bundle/gems/sequel-4.37.0/lib/sequel/extensions/connection_validator.rb +122 -0
  1189. data/vendor/bundle/gems/sequel-4.37.0/lib/sequel/extensions/constraint_validations.rb +487 -0
  1190. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/extensions/core_extensions.rb +0 -0
  1191. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/extensions/core_refinements.rb +0 -0
  1192. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/extensions/current_datetime_timestamp.rb +0 -0
  1193. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/extensions/dataset_source_alias.rb +0 -0
  1194. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/extensions/date_arithmetic.rb +0 -0
  1195. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/extensions/duplicate_columns_handler.rb +0 -0
  1196. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/extensions/empty_array_consider_nulls.rb +0 -0
  1197. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/extensions/empty_array_ignore_nulls.rb +0 -0
  1198. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/extensions/error_sql.rb +0 -0
  1199. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/extensions/eval_inspect.rb +0 -0
  1200. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/extensions/filter_having.rb +0 -0
  1201. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/extensions/from_block.rb +0 -0
  1202. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/extensions/graph_each.rb +0 -0
  1203. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/extensions/hash_aliases.rb +0 -0
  1204. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/extensions/inflector.rb +0 -0
  1205. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/extensions/looser_typecasting.rb +0 -0
  1206. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/extensions/meta_def.rb +0 -0
  1207. data/vendor/bundle/gems/sequel-4.37.0/lib/sequel/extensions/migration.rb +758 -0
  1208. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/extensions/mssql_emulate_lateral_with_apply.rb +0 -0
  1209. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/extensions/named_timezones.rb +0 -0
  1210. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/extensions/no_auto_literal_strings.rb +0 -0
  1211. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/extensions/null_dataset.rb +0 -0
  1212. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/extensions/pagination.rb +0 -0
  1213. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/extensions/pg_array.rb +0 -0
  1214. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/extensions/pg_array_ops.rb +0 -0
  1215. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/extensions/pg_enum.rb +0 -0
  1216. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/extensions/pg_hstore.rb +0 -0
  1217. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/extensions/pg_hstore_ops.rb +0 -0
  1218. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/extensions/pg_inet.rb +0 -0
  1219. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/extensions/pg_inet_ops.rb +0 -0
  1220. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/extensions/pg_interval.rb +0 -0
  1221. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/extensions/pg_json.rb +0 -0
  1222. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/extensions/pg_json_ops.rb +0 -0
  1223. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/extensions/pg_loose_count.rb +0 -0
  1224. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/extensions/pg_range.rb +0 -0
  1225. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/extensions/pg_range_ops.rb +0 -0
  1226. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/extensions/pg_row.rb +0 -0
  1227. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/extensions/pg_row_ops.rb +0 -0
  1228. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/extensions/pg_static_cache_updater.rb +0 -0
  1229. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/extensions/pretty_table.rb +0 -0
  1230. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/extensions/query.rb +0 -0
  1231. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/extensions/query_literals.rb +0 -0
  1232. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/extensions/round_timestamps.rb +0 -0
  1233. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/extensions/ruby18_symbol_extensions.rb +0 -0
  1234. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/extensions/schema_caching.rb +0 -0
  1235. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/extensions/schema_dumper.rb +0 -0
  1236. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/extensions/select_remove.rb +0 -0
  1237. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/extensions/sequel_3_dataset_methods.rb +0 -0
  1238. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/extensions/server_block.rb +0 -0
  1239. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/extensions/server_logging.rb +0 -0
  1240. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/extensions/set_overrides.rb +0 -0
  1241. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/extensions/split_array_nil.rb +0 -0
  1242. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/extensions/sql_comments.rb +0 -0
  1243. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/extensions/sql_expr.rb +0 -0
  1244. data/vendor/bundle/gems/sequel-4.37.0/lib/sequel/extensions/string_agg.rb +178 -0
  1245. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/extensions/string_date_time.rb +0 -0
  1246. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/extensions/thread_local_timezones.rb +0 -0
  1247. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/extensions/to_dot.rb +0 -0
  1248. data/vendor/bundle/gems/sequel-4.37.0/lib/sequel/model/associations.rb +3292 -0
  1249. data/vendor/bundle/gems/sequel-4.37.0/lib/sequel/model/base.rb +2515 -0
  1250. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/model/dataset_module.rb +0 -0
  1251. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/model/default_inflections.rb +0 -0
  1252. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/model/errors.rb +0 -0
  1253. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/model/exceptions.rb +0 -0
  1254. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/model/inflections.rb +0 -0
  1255. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/model/plugins.rb +0 -0
  1256. data/vendor/bundle/gems/sequel-4.37.0/lib/sequel/model.rb +135 -0
  1257. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/no_core_ext.rb +0 -0
  1258. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/plugins/accessed_columns.rb +0 -0
  1259. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/plugins/active_model.rb +0 -0
  1260. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/plugins/after_initialize.rb +0 -0
  1261. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/plugins/association_autoreloading.rb +0 -0
  1262. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/plugins/association_dependencies.rb +0 -0
  1263. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/plugins/association_pks.rb +0 -0
  1264. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/plugins/association_proxies.rb +0 -0
  1265. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/plugins/auto_validations.rb +0 -0
  1266. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/plugins/before_after_save.rb +0 -0
  1267. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/plugins/blacklist_security.rb +0 -0
  1268. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/plugins/boolean_readers.rb +0 -0
  1269. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/plugins/boolean_subsets.rb +0 -0
  1270. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/plugins/caching.rb +0 -0
  1271. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/plugins/class_table_inheritance.rb +0 -0
  1272. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/plugins/column_conflicts.rb +0 -0
  1273. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/plugins/column_select.rb +0 -0
  1274. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/plugins/composition.rb +0 -0
  1275. data/vendor/bundle/gems/sequel-4.37.0/lib/sequel/plugins/constraint_validations.rb +245 -0
  1276. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/plugins/csv_serializer.rb +0 -0
  1277. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/plugins/dataset_associations.rb +0 -0
  1278. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/plugins/defaults_setter.rb +0 -0
  1279. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/plugins/delay_add_association.rb +0 -0
  1280. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/plugins/dirty.rb +0 -0
  1281. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/plugins/eager_each.rb +0 -0
  1282. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/plugins/error_splitter.rb +0 -0
  1283. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/plugins/force_encoding.rb +0 -0
  1284. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/plugins/hook_class_methods.rb +0 -0
  1285. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/plugins/identifier_columns.rb +0 -0
  1286. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/plugins/input_transformer.rb +0 -0
  1287. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/plugins/insert_returning_select.rb +0 -0
  1288. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/plugins/instance_filters.rb +0 -0
  1289. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/plugins/instance_hooks.rb +0 -0
  1290. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/plugins/inverted_subsets.rb +0 -0
  1291. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/plugins/json_serializer.rb +0 -0
  1292. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/plugins/lazy_attributes.rb +0 -0
  1293. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/plugins/list.rb +0 -0
  1294. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/plugins/many_through_many.rb +0 -0
  1295. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/plugins/many_to_one_pk_lookup.rb +0 -0
  1296. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/plugins/modification_detection.rb +0 -0
  1297. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/plugins/mssql_optimistic_locking.rb +0 -0
  1298. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/plugins/nested_attributes.rb +0 -0
  1299. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/plugins/optimistic_locking.rb +0 -0
  1300. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/plugins/pg_array_associations.rb +0 -0
  1301. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/plugins/pg_row.rb +0 -0
  1302. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/plugins/pg_typecast_on_load.rb +0 -0
  1303. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/plugins/prepared_statements.rb +0 -0
  1304. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/plugins/prepared_statements_associations.rb +0 -0
  1305. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/plugins/prepared_statements_safe.rb +0 -0
  1306. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/plugins/prepared_statements_with_pk.rb +0 -0
  1307. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/plugins/rcte_tree.rb +0 -0
  1308. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/plugins/schema.rb +0 -0
  1309. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/plugins/scissors.rb +0 -0
  1310. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/plugins/serialization.rb +0 -0
  1311. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/plugins/serialization_modification_detection.rb +0 -0
  1312. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/plugins/sharding.rb +0 -0
  1313. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/plugins/single_table_inheritance.rb +0 -0
  1314. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/plugins/singular_table_names.rb +0 -0
  1315. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/plugins/skip_create_refresh.rb +0 -0
  1316. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/plugins/split_values.rb +0 -0
  1317. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/plugins/static_cache.rb +0 -0
  1318. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/plugins/string_stripper.rb +0 -0
  1319. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/plugins/subclasses.rb +0 -0
  1320. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/plugins/subset_conditions.rb +0 -0
  1321. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/plugins/table_select.rb +0 -0
  1322. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/plugins/tactical_eager_loading.rb +0 -0
  1323. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/plugins/timestamps.rb +0 -0
  1324. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/plugins/touch.rb +0 -0
  1325. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/plugins/tree.rb +0 -0
  1326. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/plugins/typecast_on_load.rb +0 -0
  1327. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/plugins/unlimited_update.rb +0 -0
  1328. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/plugins/update_or_create.rb +0 -0
  1329. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/plugins/update_primary_key.rb +0 -0
  1330. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/plugins/update_refresh.rb +0 -0
  1331. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/plugins/uuid.rb +0 -0
  1332. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/plugins/validate_associated.rb +0 -0
  1333. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/plugins/validation_class_methods.rb +0 -0
  1334. data/vendor/bundle/gems/sequel-4.37.0/lib/sequel/plugins/validation_helpers.rb +308 -0
  1335. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/plugins/xml_serializer.rb +0 -0
  1336. data/vendor/bundle/gems/sequel-4.37.0/lib/sequel/sql.rb +1909 -0
  1337. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel/timezones.rb +0 -0
  1338. data/vendor/bundle/gems/sequel-4.37.0/lib/sequel/version.rb +20 -0
  1339. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/lib/sequel.rb +0 -0
  1340. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/adapter_spec.rb +0 -0
  1341. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/adapters/db2_spec.rb +0 -0
  1342. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/adapters/firebird_spec.rb +0 -0
  1343. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/adapters/informix_spec.rb +0 -0
  1344. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/adapters/mssql_spec.rb +0 -0
  1345. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/adapters/mysql_spec.rb +0 -0
  1346. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/adapters/oracle_spec.rb +0 -0
  1347. data/vendor/bundle/gems/sequel-4.37.0/spec/adapters/postgres_spec.rb +3790 -0
  1348. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/adapters/spec_helper.rb +0 -0
  1349. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/adapters/sqlanywhere_spec.rb +0 -0
  1350. data/vendor/bundle/gems/sequel-4.37.0/spec/adapters/sqlite_spec.rb +706 -0
  1351. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/bin_spec.rb +0 -0
  1352. data/vendor/bundle/gems/sequel-4.37.0/spec/core/connection_pool_spec.rb +1087 -0
  1353. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/core/database_spec.rb +0 -0
  1354. data/vendor/bundle/gems/sequel-4.37.0/spec/core/dataset_spec.rb +5179 -0
  1355. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/core/deprecated_spec.rb +0 -0
  1356. data/vendor/bundle/gems/sequel-4.37.0/spec/core/expression_filters_spec.rb +1247 -0
  1357. data/vendor/bundle/gems/sequel-4.37.0/spec/core/mock_adapter_spec.rb +465 -0
  1358. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/core/object_graph_spec.rb +0 -0
  1359. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/core/placeholder_literalizer_spec.rb +0 -0
  1360. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/core/schema_generator_spec.rb +0 -0
  1361. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/core/schema_spec.rb +0 -0
  1362. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/core/spec_helper.rb +0 -0
  1363. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/core/version_spec.rb +0 -0
  1364. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/core_extensions_spec.rb +0 -0
  1365. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/core_model_spec.rb +0 -0
  1366. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/core_spec.rb +0 -0
  1367. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/extensions/accessed_columns_spec.rb +0 -0
  1368. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/extensions/active_model_spec.rb +0 -0
  1369. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/extensions/after_initialize_spec.rb +0 -0
  1370. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/extensions/arbitrary_servers_spec.rb +0 -0
  1371. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/extensions/association_dependencies_spec.rb +0 -0
  1372. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/extensions/association_pks_spec.rb +0 -0
  1373. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/extensions/association_proxies_spec.rb +0 -0
  1374. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/extensions/auto_validations_spec.rb +0 -0
  1375. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/extensions/before_after_save_spec.rb +0 -0
  1376. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/extensions/blacklist_security_spec.rb +0 -0
  1377. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/extensions/blank_spec.rb +0 -0
  1378. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/extensions/boolean_readers_spec.rb +0 -0
  1379. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/extensions/boolean_subsets_spec.rb +0 -0
  1380. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/extensions/caching_spec.rb +0 -0
  1381. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/extensions/class_table_inheritance_spec.rb +0 -0
  1382. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/extensions/column_conflicts_spec.rb +0 -0
  1383. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/extensions/column_select_spec.rb +0 -0
  1384. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/extensions/columns_introspection_spec.rb +0 -0
  1385. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/extensions/composition_spec.rb +0 -0
  1386. data/vendor/bundle/gems/sequel-4.37.0/spec/extensions/connection_expiration_spec.rb +121 -0
  1387. data/vendor/bundle/gems/sequel-4.37.0/spec/extensions/connection_validator_spec.rb +127 -0
  1388. data/vendor/bundle/gems/sequel-4.37.0/spec/extensions/constraint_validations_plugin_spec.rb +288 -0
  1389. data/vendor/bundle/gems/sequel-4.37.0/spec/extensions/constraint_validations_spec.rb +389 -0
  1390. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/extensions/core_refinements_spec.rb +0 -0
  1391. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/extensions/csv_serializer_spec.rb +0 -0
  1392. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/extensions/current_datetime_timestamp_spec.rb +0 -0
  1393. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/extensions/dataset_associations_spec.rb +0 -0
  1394. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/extensions/dataset_source_alias_spec.rb +0 -0
  1395. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/extensions/date_arithmetic_spec.rb +0 -0
  1396. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/extensions/defaults_setter_spec.rb +0 -0
  1397. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/extensions/delay_add_association_spec.rb +0 -0
  1398. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/extensions/dirty_spec.rb +0 -0
  1399. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/extensions/duplicate_columns_handler_spec.rb +0 -0
  1400. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/extensions/eager_each_spec.rb +0 -0
  1401. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/extensions/empty_array_consider_nulls_spec.rb +0 -0
  1402. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/extensions/error_splitter_spec.rb +0 -0
  1403. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/extensions/error_sql_spec.rb +0 -0
  1404. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/extensions/eval_inspect_spec.rb +0 -0
  1405. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/extensions/filter_having_spec.rb +0 -0
  1406. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/extensions/force_encoding_spec.rb +0 -0
  1407. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/extensions/from_block_spec.rb +0 -0
  1408. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/extensions/graph_each_spec.rb +0 -0
  1409. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/extensions/hash_aliases_spec.rb +0 -0
  1410. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/extensions/hook_class_methods_spec.rb +0 -0
  1411. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/extensions/identifier_columns_spec.rb +0 -0
  1412. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/extensions/inflector_spec.rb +0 -0
  1413. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/extensions/input_transformer_spec.rb +0 -0
  1414. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/extensions/insert_returning_select_spec.rb +0 -0
  1415. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/extensions/instance_filters_spec.rb +0 -0
  1416. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/extensions/instance_hooks_spec.rb +0 -0
  1417. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/extensions/inverted_subsets_spec.rb +0 -0
  1418. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/extensions/json_serializer_spec.rb +0 -0
  1419. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/extensions/lazy_attributes_spec.rb +0 -0
  1420. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/extensions/list_spec.rb +0 -0
  1421. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/extensions/looser_typecasting_spec.rb +0 -0
  1422. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/extensions/many_through_many_spec.rb +0 -0
  1423. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/extensions/meta_def_spec.rb +0 -0
  1424. data/vendor/bundle/gems/sequel-4.37.0/spec/extensions/migration_spec.rb +731 -0
  1425. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/extensions/modification_detection_spec.rb +0 -0
  1426. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/extensions/mssql_optimistic_locking_spec.rb +0 -0
  1427. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/extensions/named_timezones_spec.rb +0 -0
  1428. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/extensions/nested_attributes_spec.rb +0 -0
  1429. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/extensions/no_auto_literal_strings_spec.rb +0 -0
  1430. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/extensions/null_dataset_spec.rb +0 -0
  1431. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/extensions/optimistic_locking_spec.rb +0 -0
  1432. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/extensions/pagination_spec.rb +0 -0
  1433. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/extensions/pg_array_associations_spec.rb +0 -0
  1434. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/extensions/pg_array_ops_spec.rb +0 -0
  1435. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/extensions/pg_array_spec.rb +0 -0
  1436. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/extensions/pg_enum_spec.rb +0 -0
  1437. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/extensions/pg_hstore_ops_spec.rb +0 -0
  1438. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/extensions/pg_hstore_spec.rb +0 -0
  1439. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/extensions/pg_inet_ops_spec.rb +0 -0
  1440. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/extensions/pg_inet_spec.rb +0 -0
  1441. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/extensions/pg_interval_spec.rb +0 -0
  1442. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/extensions/pg_json_ops_spec.rb +0 -0
  1443. data/vendor/bundle/gems/sequel-4.37.0/spec/extensions/pg_json_spec.rb +218 -0
  1444. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/extensions/pg_loose_count_spec.rb +0 -0
  1445. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/extensions/pg_range_ops_spec.rb +0 -0
  1446. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/extensions/pg_range_spec.rb +0 -0
  1447. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/extensions/pg_row_ops_spec.rb +0 -0
  1448. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/extensions/pg_row_plugin_spec.rb +0 -0
  1449. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/extensions/pg_row_spec.rb +0 -0
  1450. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/extensions/pg_static_cache_updater_spec.rb +0 -0
  1451. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/extensions/pg_typecast_on_load_spec.rb +0 -0
  1452. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/extensions/prepared_statements_associations_spec.rb +0 -0
  1453. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/extensions/prepared_statements_safe_spec.rb +0 -0
  1454. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/extensions/prepared_statements_spec.rb +0 -0
  1455. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/extensions/prepared_statements_with_pk_spec.rb +0 -0
  1456. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/extensions/pretty_table_spec.rb +0 -0
  1457. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/extensions/query_literals_spec.rb +0 -0
  1458. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/extensions/query_spec.rb +0 -0
  1459. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/extensions/rcte_tree_spec.rb +0 -0
  1460. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/extensions/round_timestamps_spec.rb +0 -0
  1461. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/extensions/schema_caching_spec.rb +0 -0
  1462. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/extensions/schema_dumper_spec.rb +0 -0
  1463. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/extensions/schema_spec.rb +0 -0
  1464. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/extensions/scissors_spec.rb +0 -0
  1465. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/extensions/select_remove_spec.rb +0 -0
  1466. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/extensions/sequel_3_dataset_methods_spec.rb +0 -0
  1467. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/extensions/serialization_modification_detection_spec.rb +0 -0
  1468. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/extensions/serialization_spec.rb +0 -0
  1469. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/extensions/server_block_spec.rb +0 -0
  1470. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/extensions/server_logging_spec.rb +0 -0
  1471. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/extensions/set_overrides_spec.rb +0 -0
  1472. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/extensions/sharding_spec.rb +0 -0
  1473. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/extensions/shared_caching_spec.rb +0 -0
  1474. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/extensions/single_table_inheritance_spec.rb +0 -0
  1475. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/extensions/singular_table_names_spec.rb +0 -0
  1476. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/extensions/skip_create_refresh_spec.rb +0 -0
  1477. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/extensions/spec_helper.rb +0 -0
  1478. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/extensions/split_array_nil_spec.rb +0 -0
  1479. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/extensions/split_values_spec.rb +0 -0
  1480. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/extensions/sql_comments_spec.rb +0 -0
  1481. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/extensions/sql_expr_spec.rb +0 -0
  1482. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/extensions/static_cache_spec.rb +0 -0
  1483. data/vendor/bundle/gems/sequel-4.37.0/spec/extensions/string_agg_spec.rb +85 -0
  1484. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/extensions/string_date_time_spec.rb +0 -0
  1485. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/extensions/string_stripper_spec.rb +0 -0
  1486. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/extensions/subclasses_spec.rb +0 -0
  1487. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/extensions/subset_conditions_spec.rb +0 -0
  1488. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/extensions/table_select_spec.rb +0 -0
  1489. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/extensions/tactical_eager_loading_spec.rb +0 -0
  1490. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/extensions/thread_local_timezones_spec.rb +0 -0
  1491. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/extensions/timestamps_spec.rb +0 -0
  1492. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/extensions/to_dot_spec.rb +0 -0
  1493. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/extensions/touch_spec.rb +0 -0
  1494. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/extensions/tree_spec.rb +0 -0
  1495. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/extensions/typecast_on_load_spec.rb +0 -0
  1496. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/extensions/unlimited_update_spec.rb +0 -0
  1497. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/extensions/update_or_create_spec.rb +0 -0
  1498. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/extensions/update_primary_key_spec.rb +0 -0
  1499. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/extensions/update_refresh_spec.rb +0 -0
  1500. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/extensions/uuid_spec.rb +0 -0
  1501. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/extensions/validate_associated_spec.rb +0 -0
  1502. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/extensions/validation_class_methods_spec.rb +0 -0
  1503. data/vendor/bundle/gems/sequel-4.37.0/spec/extensions/validation_helpers_spec.rb +554 -0
  1504. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/extensions/xml_serializer_spec.rb +0 -0
  1505. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/files/bad_down_migration/001_create_alt_basic.rb +0 -0
  1506. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/files/bad_down_migration/002_create_alt_advanced.rb +0 -0
  1507. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/files/bad_timestamped_migrations/1273253849_create_sessions.rb +0 -0
  1508. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/files/bad_timestamped_migrations/1273253851_create_nodes.rb +0 -0
  1509. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/files/bad_timestamped_migrations/1273253853_3_create_users.rb +0 -0
  1510. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/files/bad_up_migration/001_create_alt_basic.rb +0 -0
  1511. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/files/bad_up_migration/002_create_alt_advanced.rb +0 -0
  1512. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/files/convert_to_timestamp_migrations/001_create_sessions.rb +0 -0
  1513. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/files/convert_to_timestamp_migrations/002_create_nodes.rb +0 -0
  1514. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/files/convert_to_timestamp_migrations/003_3_create_users.rb +0 -0
  1515. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/files/convert_to_timestamp_migrations/1273253850_create_artists.rb +0 -0
  1516. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/files/convert_to_timestamp_migrations/1273253852_create_albums.rb +0 -0
  1517. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/files/double_migration/001_create_sessions.rb +0 -0
  1518. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/files/double_migration/002_create_nodes.rb +0 -0
  1519. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/files/double_migration/003_3_create_users.rb +0 -0
  1520. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/files/duplicate_integer_migrations/001_create_alt_advanced.rb +0 -0
  1521. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/files/duplicate_integer_migrations/001_create_alt_basic.rb +0 -0
  1522. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/files/duplicate_timestamped_migrations/1273253849_create_sessions.rb +0 -0
  1523. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/files/duplicate_timestamped_migrations/1273253853_create_nodes.rb +0 -0
  1524. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/files/duplicate_timestamped_migrations/1273253853_create_users.rb +0 -0
  1525. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/files/empty_migration/001_create_sessions.rb +0 -0
  1526. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/files/empty_migration/002_create_nodes.rb +0 -0
  1527. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/files/empty_migration/003_3_create_users.rb +0 -0
  1528. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/files/integer_migrations/001_create_sessions.rb +0 -0
  1529. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/files/integer_migrations/002_create_nodes.rb +0 -0
  1530. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/files/integer_migrations/003_3_create_users.rb +0 -0
  1531. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/files/interleaved_timestamped_migrations/1273253849_create_sessions.rb +0 -0
  1532. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/files/interleaved_timestamped_migrations/1273253850_create_artists.rb +0 -0
  1533. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/files/interleaved_timestamped_migrations/1273253851_create_nodes.rb +0 -0
  1534. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/files/interleaved_timestamped_migrations/1273253852_create_albums.rb +0 -0
  1535. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/files/interleaved_timestamped_migrations/1273253853_3_create_users.rb +0 -0
  1536. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/files/missing_integer_migrations/001_create_alt_basic.rb +0 -0
  1537. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/files/missing_integer_migrations/003_create_alt_advanced.rb +0 -0
  1538. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/files/missing_timestamped_migrations/1273253849_create_sessions.rb +0 -0
  1539. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/files/missing_timestamped_migrations/1273253853_3_create_users.rb +0 -0
  1540. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/files/reversible_migrations/001_reversible.rb +0 -0
  1541. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/files/reversible_migrations/002_reversible.rb +0 -0
  1542. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/files/reversible_migrations/003_reversible.rb +0 -0
  1543. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/files/reversible_migrations/004_reversible.rb +0 -0
  1544. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/files/reversible_migrations/005_reversible.rb +0 -0
  1545. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/files/reversible_migrations/006_reversible.rb +0 -0
  1546. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/files/reversible_migrations/007_reversible.rb +0 -0
  1547. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/files/timestamped_migrations/1273253849_create_sessions.rb +0 -0
  1548. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/files/timestamped_migrations/1273253851_create_nodes.rb +0 -0
  1549. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/files/timestamped_migrations/1273253853_3_create_users.rb +0 -0
  1550. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/files/transaction_specified_migrations/001_create_alt_basic.rb +0 -0
  1551. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/files/transaction_specified_migrations/002_create_basic.rb +0 -0
  1552. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/files/transaction_unspecified_migrations/001_create_alt_basic.rb +0 -0
  1553. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/files/transaction_unspecified_migrations/002_create_basic.rb +0 -0
  1554. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/files/uppercase_timestamped_migrations/1273253849_CREATE_SESSIONS.RB +0 -0
  1555. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/files/uppercase_timestamped_migrations/1273253851_CREATE_NODES.RB +0 -0
  1556. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/files/uppercase_timestamped_migrations/1273253853_3_CREATE_USERS.RB +0 -0
  1557. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/guards_helper.rb +0 -0
  1558. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/integration/associations_test.rb +0 -0
  1559. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/integration/database_test.rb +0 -0
  1560. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/integration/dataset_test.rb +0 -0
  1561. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/integration/eager_loader_test.rb +0 -0
  1562. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/integration/migrator_test.rb +0 -0
  1563. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/integration/model_test.rb +0 -0
  1564. data/vendor/bundle/gems/sequel-4.37.0/spec/integration/plugin_test.rb +2297 -0
  1565. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/integration/prepared_statement_test.rb +0 -0
  1566. data/vendor/bundle/gems/sequel-4.37.0/spec/integration/schema_test.rb +815 -0
  1567. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/integration/spec_helper.rb +0 -0
  1568. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/integration/timezone_test.rb +0 -0
  1569. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/integration/transaction_test.rb +0 -0
  1570. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/integration/type_test.rb +0 -0
  1571. data/vendor/bundle/gems/sequel-4.37.0/spec/model/association_reflection_spec.rb +565 -0
  1572. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/model/associations_spec.rb +0 -0
  1573. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/model/base_spec.rb +0 -0
  1574. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/model/class_dataset_methods_spec.rb +0 -0
  1575. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/model/dataset_methods_spec.rb +0 -0
  1576. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/model/eager_loading_spec.rb +0 -0
  1577. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/model/hooks_spec.rb +0 -0
  1578. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/model/inflector_spec.rb +0 -0
  1579. data/vendor/bundle/gems/sequel-4.37.0/spec/model/model_spec.rb +1097 -0
  1580. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/model/plugins_spec.rb +0 -0
  1581. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/model/record_spec.rb +0 -0
  1582. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/model/spec_helper.rb +0 -0
  1583. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/model/validations_spec.rb +0 -0
  1584. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/model_no_assoc_spec.rb +0 -0
  1585. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/model_spec.rb +0 -0
  1586. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/plugin_spec.rb +0 -0
  1587. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/sequel_coverage.rb +0 -0
  1588. data/vendor/bundle/gems/{sequel-4.35.0 → sequel-4.37.0}/spec/spec_config.rb +0 -0
  1589. data/vendor/bundle/gems/sprockets-3.7.0/CHANGELOG.md +288 -0
  1590. data/vendor/bundle/gems/{sprockets-3.6.2 → sprockets-3.7.0}/LICENSE +0 -0
  1591. data/vendor/bundle/gems/{sprockets-3.6.2 → sprockets-3.7.0}/README.md +0 -0
  1592. data/vendor/bundle/gems/{sprockets-3.6.2 → sprockets-3.7.0}/bin/sprockets +0 -0
  1593. data/vendor/bundle/gems/{sprockets-3.6.2 → sprockets-3.7.0}/lib/rake/sprocketstask.rb +0 -0
  1594. data/vendor/bundle/gems/{sprockets-3.6.2 → sprockets-3.7.0}/lib/sprockets/asset.rb +0 -0
  1595. data/vendor/bundle/gems/{sprockets-3.6.2 → sprockets-3.7.0}/lib/sprockets/autoload/closure.rb +0 -0
  1596. data/vendor/bundle/gems/{sprockets-3.6.2 → sprockets-3.7.0}/lib/sprockets/autoload/coffee_script.rb +0 -0
  1597. data/vendor/bundle/gems/{sprockets-3.6.2 → sprockets-3.7.0}/lib/sprockets/autoload/eco.rb +0 -0
  1598. data/vendor/bundle/gems/{sprockets-3.6.2 → sprockets-3.7.0}/lib/sprockets/autoload/ejs.rb +0 -0
  1599. data/vendor/bundle/gems/{sprockets-3.6.2 → sprockets-3.7.0}/lib/sprockets/autoload/sass.rb +0 -0
  1600. data/vendor/bundle/gems/{sprockets-3.6.2 → sprockets-3.7.0}/lib/sprockets/autoload/uglifier.rb +0 -0
  1601. data/vendor/bundle/gems/{sprockets-3.6.2 → sprockets-3.7.0}/lib/sprockets/autoload/yui.rb +0 -0
  1602. data/vendor/bundle/gems/{sprockets-3.6.2 → sprockets-3.7.0}/lib/sprockets/autoload.rb +0 -0
  1603. data/vendor/bundle/gems/{sprockets-3.6.2 → sprockets-3.7.0}/lib/sprockets/base.rb +0 -0
  1604. data/vendor/bundle/gems/{sprockets-3.6.2 → sprockets-3.7.0}/lib/sprockets/bower.rb +0 -0
  1605. data/vendor/bundle/gems/{sprockets-3.6.2 → sprockets-3.7.0}/lib/sprockets/bundle.rb +0 -0
  1606. data/vendor/bundle/gems/{sprockets-3.6.2 → sprockets-3.7.0}/lib/sprockets/cache/file_store.rb +0 -0
  1607. data/vendor/bundle/gems/{sprockets-3.6.2 → sprockets-3.7.0}/lib/sprockets/cache/memory_store.rb +0 -0
  1608. data/vendor/bundle/gems/{sprockets-3.6.2 → sprockets-3.7.0}/lib/sprockets/cache/null_store.rb +0 -0
  1609. data/vendor/bundle/gems/{sprockets-3.6.2 → sprockets-3.7.0}/lib/sprockets/cache.rb +0 -0
  1610. data/vendor/bundle/gems/{sprockets-3.6.2 → sprockets-3.7.0}/lib/sprockets/cached_environment.rb +0 -0
  1611. data/vendor/bundle/gems/{sprockets-3.6.2 → sprockets-3.7.0}/lib/sprockets/closure_compressor.rb +0 -0
  1612. data/vendor/bundle/gems/{sprockets-3.6.2 → sprockets-3.7.0}/lib/sprockets/coffee_script_processor.rb +0 -0
  1613. data/vendor/bundle/gems/sprockets-3.7.0/lib/sprockets/coffee_script_template.rb +17 -0
  1614. data/vendor/bundle/gems/{sprockets-3.6.2 → sprockets-3.7.0}/lib/sprockets/compressing.rb +0 -0
  1615. data/vendor/bundle/gems/{sprockets-3.6.2 → sprockets-3.7.0}/lib/sprockets/configuration.rb +0 -0
  1616. data/vendor/bundle/gems/{sprockets-3.6.2 → sprockets-3.7.0}/lib/sprockets/context.rb +0 -0
  1617. data/vendor/bundle/gems/{sprockets-3.6.2 → sprockets-3.7.0}/lib/sprockets/dependencies.rb +0 -0
  1618. data/vendor/bundle/gems/sprockets-3.7.0/lib/sprockets/deprecation.rb +90 -0
  1619. data/vendor/bundle/gems/{sprockets-3.6.2 → sprockets-3.7.0}/lib/sprockets/digest_utils.rb +0 -0
  1620. data/vendor/bundle/gems/{sprockets-3.6.2 → sprockets-3.7.0}/lib/sprockets/directive_processor.rb +0 -0
  1621. data/vendor/bundle/gems/{sprockets-3.6.2 → sprockets-3.7.0}/lib/sprockets/eco_processor.rb +0 -0
  1622. data/vendor/bundle/gems/sprockets-3.7.0/lib/sprockets/eco_template.rb +17 -0
  1623. data/vendor/bundle/gems/{sprockets-3.6.2 → sprockets-3.7.0}/lib/sprockets/ejs_processor.rb +0 -0
  1624. data/vendor/bundle/gems/sprockets-3.7.0/lib/sprockets/ejs_template.rb +17 -0
  1625. data/vendor/bundle/gems/{sprockets-3.6.2 → sprockets-3.7.0}/lib/sprockets/encoding_utils.rb +0 -0
  1626. data/vendor/bundle/gems/sprockets-3.7.0/lib/sprockets/engines.rb +92 -0
  1627. data/vendor/bundle/gems/{sprockets-3.6.2 → sprockets-3.7.0}/lib/sprockets/environment.rb +0 -0
  1628. data/vendor/bundle/gems/{sprockets-3.6.2 → sprockets-3.7.0}/lib/sprockets/erb_processor.rb +0 -0
  1629. data/vendor/bundle/gems/sprockets-3.7.0/lib/sprockets/erb_template.rb +11 -0
  1630. data/vendor/bundle/gems/{sprockets-3.6.2 → sprockets-3.7.0}/lib/sprockets/errors.rb +0 -0
  1631. data/vendor/bundle/gems/{sprockets-3.6.2 → sprockets-3.7.0}/lib/sprockets/file_reader.rb +0 -0
  1632. data/vendor/bundle/gems/{sprockets-3.6.2 → sprockets-3.7.0}/lib/sprockets/http_utils.rb +0 -0
  1633. data/vendor/bundle/gems/{sprockets-3.6.2 → sprockets-3.7.0}/lib/sprockets/jst_processor.rb +0 -0
  1634. data/vendor/bundle/gems/{sprockets-3.6.2 → sprockets-3.7.0}/lib/sprockets/legacy.rb +0 -0
  1635. data/vendor/bundle/gems/{sprockets-3.6.2 → sprockets-3.7.0}/lib/sprockets/legacy_proc_processor.rb +0 -0
  1636. data/vendor/bundle/gems/{sprockets-3.6.2 → sprockets-3.7.0}/lib/sprockets/legacy_tilt_processor.rb +0 -0
  1637. data/vendor/bundle/gems/{sprockets-3.6.2 → sprockets-3.7.0}/lib/sprockets/loader.rb +0 -0
  1638. data/vendor/bundle/gems/{sprockets-3.6.2 → sprockets-3.7.0}/lib/sprockets/manifest.rb +0 -0
  1639. data/vendor/bundle/gems/{sprockets-3.6.2 → sprockets-3.7.0}/lib/sprockets/manifest_utils.rb +0 -0
  1640. data/vendor/bundle/gems/{sprockets-3.6.2 → sprockets-3.7.0}/lib/sprockets/mime.rb +0 -0
  1641. data/vendor/bundle/gems/{sprockets-3.6.2 → sprockets-3.7.0}/lib/sprockets/path_dependency_utils.rb +0 -0
  1642. data/vendor/bundle/gems/{sprockets-3.6.2 → sprockets-3.7.0}/lib/sprockets/path_digest_utils.rb +0 -0
  1643. data/vendor/bundle/gems/sprockets-3.7.0/lib/sprockets/path_utils.rb +287 -0
  1644. data/vendor/bundle/gems/{sprockets-3.6.2 → sprockets-3.7.0}/lib/sprockets/paths.rb +0 -0
  1645. data/vendor/bundle/gems/sprockets-3.7.0/lib/sprockets/processing.rb +258 -0
  1646. data/vendor/bundle/gems/{sprockets-3.6.2 → sprockets-3.7.0}/lib/sprockets/processor_utils.rb +0 -0
  1647. data/vendor/bundle/gems/sprockets-3.7.0/lib/sprockets/resolve.rb +211 -0
  1648. data/vendor/bundle/gems/sprockets-3.7.0/lib/sprockets/sass_cache_store.rb +34 -0
  1649. data/vendor/bundle/gems/{sprockets-3.6.2 → sprockets-3.7.0}/lib/sprockets/sass_compressor.rb +0 -0
  1650. data/vendor/bundle/gems/{sprockets-3.6.2 → sprockets-3.7.0}/lib/sprockets/sass_functions.rb +0 -0
  1651. data/vendor/bundle/gems/{sprockets-3.6.2 → sprockets-3.7.0}/lib/sprockets/sass_importer.rb +0 -0
  1652. data/vendor/bundle/gems/{sprockets-3.6.2 → sprockets-3.7.0}/lib/sprockets/sass_processor.rb +0 -0
  1653. data/vendor/bundle/gems/sprockets-3.7.0/lib/sprockets/sass_template.rb +19 -0
  1654. data/vendor/bundle/gems/{sprockets-3.6.2 → sprockets-3.7.0}/lib/sprockets/server.rb +0 -0
  1655. data/vendor/bundle/gems/{sprockets-3.6.2 → sprockets-3.7.0}/lib/sprockets/transformers.rb +0 -0
  1656. data/vendor/bundle/gems/sprockets-3.7.0/lib/sprockets/uglifier_compressor.rb +55 -0
  1657. data/vendor/bundle/gems/{sprockets-3.6.2 → sprockets-3.7.0}/lib/sprockets/unloaded_asset.rb +0 -0
  1658. data/vendor/bundle/gems/{sprockets-3.6.2 → sprockets-3.7.0}/lib/sprockets/uri_tar.rb +0 -0
  1659. data/vendor/bundle/gems/{sprockets-3.6.2 → sprockets-3.7.0}/lib/sprockets/uri_utils.rb +0 -0
  1660. data/vendor/bundle/gems/{sprockets-3.6.2 → sprockets-3.7.0}/lib/sprockets/utils/gzip.rb +0 -0
  1661. data/vendor/bundle/gems/{sprockets-3.6.2 → sprockets-3.7.0}/lib/sprockets/utils.rb +0 -0
  1662. data/vendor/bundle/gems/sprockets-3.7.0/lib/sprockets/version.rb +3 -0
  1663. data/vendor/bundle/gems/{sprockets-3.6.2 → sprockets-3.7.0}/lib/sprockets/yui_compressor.rb +0 -0
  1664. data/vendor/bundle/gems/sprockets-3.7.0/lib/sprockets.rb +169 -0
  1665. data/vendor/bundle/gems/sqlite3-1.3.11/ext/sqlite3/Makefile +47 -24
  1666. data/vendor/bundle/gems/sqlite3-1.3.11/ext/sqlite3/backup.o +0 -0
  1667. data/vendor/bundle/gems/sqlite3-1.3.11/ext/sqlite3/database.o +0 -0
  1668. data/vendor/bundle/gems/sqlite3-1.3.11/ext/sqlite3/exception.o +0 -0
  1669. data/vendor/bundle/gems/sqlite3-1.3.11/ext/sqlite3/sqlite3.o +0 -0
  1670. data/vendor/bundle/gems/sqlite3-1.3.11/ext/sqlite3/sqlite3_native.so +0 -0
  1671. data/vendor/bundle/gems/sqlite3-1.3.11/ext/sqlite3/statement.o +0 -0
  1672. data/vendor/bundle/gems/sqlite3-1.3.11/lib/sqlite3/sqlite3_native.so +0 -0
  1673. data/vendor/bundle/gems/test-unit-3.2.1/COPYING +67 -0
  1674. data/vendor/bundle/gems/{test-unit-3.2.0 → test-unit-3.2.1}/GPL +0 -0
  1675. data/vendor/bundle/gems/{test-unit-3.2.0 → test-unit-3.2.1}/LGPL +0 -0
  1676. data/vendor/bundle/gems/{test-unit-3.2.0 → test-unit-3.2.1}/PSFL +0 -0
  1677. data/vendor/bundle/gems/test-unit-3.2.1/README.md +101 -0
  1678. data/vendor/bundle/gems/{test-unit-3.2.0 → test-unit-3.2.1}/Rakefile +0 -0
  1679. data/vendor/bundle/gems/{test-unit-3.2.0 → test-unit-3.2.1}/doc/text/how-to.md +0 -0
  1680. data/vendor/bundle/gems/test-unit-3.2.1/doc/text/news.md +1131 -0
  1681. data/vendor/bundle/gems/{test-unit-3.2.0 → test-unit-3.2.1}/lib/test/unit/assertion-failed-error.rb +0 -0
  1682. data/vendor/bundle/gems/{test-unit-3.2.0 → test-unit-3.2.1}/lib/test/unit/assertions.rb +0 -0
  1683. data/vendor/bundle/gems/{test-unit-3.2.0 → test-unit-3.2.1}/lib/test/unit/attribute-matcher.rb +0 -0
  1684. data/vendor/bundle/gems/{test-unit-3.2.0 → test-unit-3.2.1}/lib/test/unit/attribute.rb +0 -0
  1685. data/vendor/bundle/gems/{test-unit-3.2.0 → test-unit-3.2.1}/lib/test/unit/auto-runner-loader.rb +0 -0
  1686. data/vendor/bundle/gems/{test-unit-3.2.0 → test-unit-3.2.1}/lib/test/unit/autorunner.rb +0 -0
  1687. data/vendor/bundle/gems/{test-unit-3.2.0 → test-unit-3.2.1}/lib/test/unit/code-snippet-fetcher.rb +0 -0
  1688. data/vendor/bundle/gems/{test-unit-3.2.0 → test-unit-3.2.1}/lib/test/unit/collector/descendant.rb +0 -0
  1689. data/vendor/bundle/gems/{test-unit-3.2.0 → test-unit-3.2.1}/lib/test/unit/collector/dir.rb +0 -0
  1690. data/vendor/bundle/gems/{test-unit-3.2.0 → test-unit-3.2.1}/lib/test/unit/collector/load.rb +0 -0
  1691. data/vendor/bundle/gems/{test-unit-3.2.0 → test-unit-3.2.1}/lib/test/unit/collector/objectspace.rb +0 -0
  1692. data/vendor/bundle/gems/{test-unit-3.2.0 → test-unit-3.2.1}/lib/test/unit/collector/xml.rb +0 -0
  1693. data/vendor/bundle/gems/{test-unit-3.2.0 → test-unit-3.2.1}/lib/test/unit/collector.rb +0 -0
  1694. data/vendor/bundle/gems/{test-unit-3.2.0 → test-unit-3.2.1}/lib/test/unit/color-scheme.rb +0 -0
  1695. data/vendor/bundle/gems/{test-unit-3.2.0 → test-unit-3.2.1}/lib/test/unit/color.rb +0 -0
  1696. data/vendor/bundle/gems/{test-unit-3.2.0 → test-unit-3.2.1}/lib/test/unit/data.rb +0 -0
  1697. data/vendor/bundle/gems/test-unit-3.2.1/lib/test/unit/diff.rb +746 -0
  1698. data/vendor/bundle/gems/{test-unit-3.2.0 → test-unit-3.2.1}/lib/test/unit/error.rb +0 -0
  1699. data/vendor/bundle/gems/{test-unit-3.2.0 → test-unit-3.2.1}/lib/test/unit/exception-handler.rb +0 -0
  1700. data/vendor/bundle/gems/{test-unit-3.2.0 → test-unit-3.2.1}/lib/test/unit/failure.rb +0 -0
  1701. data/vendor/bundle/gems/{test-unit-3.2.0 → test-unit-3.2.1}/lib/test/unit/fault-location-detector.rb +0 -0
  1702. data/vendor/bundle/gems/{test-unit-3.2.0 → test-unit-3.2.1}/lib/test/unit/fixture.rb +0 -0
  1703. data/vendor/bundle/gems/{test-unit-3.2.0 → test-unit-3.2.1}/lib/test/unit/notification.rb +0 -0
  1704. data/vendor/bundle/gems/{test-unit-3.2.0 → test-unit-3.2.1}/lib/test/unit/omission.rb +0 -0
  1705. data/vendor/bundle/gems/{test-unit-3.2.0 → test-unit-3.2.1}/lib/test/unit/pending.rb +0 -0
  1706. data/vendor/bundle/gems/{test-unit-3.2.0 → test-unit-3.2.1}/lib/test/unit/priority.rb +0 -0
  1707. data/vendor/bundle/gems/{test-unit-3.2.0 → test-unit-3.2.1}/lib/test/unit/runner/console.rb +0 -0
  1708. data/vendor/bundle/gems/{test-unit-3.2.0 → test-unit-3.2.1}/lib/test/unit/runner/emacs.rb +0 -0
  1709. data/vendor/bundle/gems/{test-unit-3.2.0 → test-unit-3.2.1}/lib/test/unit/runner/xml.rb +0 -0
  1710. data/vendor/bundle/gems/{test-unit-3.2.0 → test-unit-3.2.1}/lib/test/unit/test-suite-creator.rb +0 -0
  1711. data/vendor/bundle/gems/test-unit-3.2.1/lib/test/unit/testcase.rb +825 -0
  1712. data/vendor/bundle/gems/{test-unit-3.2.0 → test-unit-3.2.1}/lib/test/unit/testresult.rb +0 -0
  1713. data/vendor/bundle/gems/{test-unit-3.2.0 → test-unit-3.2.1}/lib/test/unit/testsuite.rb +0 -0
  1714. data/vendor/bundle/gems/{test-unit-3.2.0 → test-unit-3.2.1}/lib/test/unit/ui/console/outputlevel.rb +0 -0
  1715. data/vendor/bundle/gems/{test-unit-3.2.0 → test-unit-3.2.1}/lib/test/unit/ui/console/testrunner.rb +0 -0
  1716. data/vendor/bundle/gems/{test-unit-3.2.0 → test-unit-3.2.1}/lib/test/unit/ui/emacs/testrunner.rb +0 -0
  1717. data/vendor/bundle/gems/{test-unit-3.2.0 → test-unit-3.2.1}/lib/test/unit/ui/testrunner.rb +0 -0
  1718. data/vendor/bundle/gems/{test-unit-3.2.0 → test-unit-3.2.1}/lib/test/unit/ui/testrunnermediator.rb +0 -0
  1719. data/vendor/bundle/gems/{test-unit-3.2.0 → test-unit-3.2.1}/lib/test/unit/ui/testrunnerutilities.rb +0 -0
  1720. data/vendor/bundle/gems/{test-unit-3.2.0 → test-unit-3.2.1}/lib/test/unit/ui/xml/testrunner.rb +0 -0
  1721. data/vendor/bundle/gems/{test-unit-3.2.0 → test-unit-3.2.1}/lib/test/unit/util/backtracefilter.rb +0 -0
  1722. data/vendor/bundle/gems/{test-unit-3.2.0 → test-unit-3.2.1}/lib/test/unit/util/method-owner-finder.rb +0 -0
  1723. data/vendor/bundle/gems/{test-unit-3.2.0 → test-unit-3.2.1}/lib/test/unit/util/observable.rb +0 -0
  1724. data/vendor/bundle/gems/{test-unit-3.2.0 → test-unit-3.2.1}/lib/test/unit/util/output.rb +0 -0
  1725. data/vendor/bundle/gems/{test-unit-3.2.0 → test-unit-3.2.1}/lib/test/unit/util/procwrapper.rb +0 -0
  1726. data/vendor/bundle/gems/test-unit-3.2.1/lib/test/unit/version.rb +5 -0
  1727. data/vendor/bundle/gems/{test-unit-3.2.0 → test-unit-3.2.1}/lib/test/unit.rb +0 -0
  1728. data/vendor/bundle/gems/{test-unit-3.2.0 → test-unit-3.2.1}/lib/test-unit.rb +0 -0
  1729. data/vendor/bundle/gems/{test-unit-3.2.0 → test-unit-3.2.1}/sample/adder.rb +0 -0
  1730. data/vendor/bundle/gems/{test-unit-3.2.0 → test-unit-3.2.1}/sample/subtracter.rb +0 -0
  1731. data/vendor/bundle/gems/{test-unit-3.2.0 → test-unit-3.2.1}/sample/test_adder.rb +0 -0
  1732. data/vendor/bundle/gems/{test-unit-3.2.0 → test-unit-3.2.1}/sample/test_subtracter.rb +0 -0
  1733. data/vendor/bundle/gems/{test-unit-3.2.0 → test-unit-3.2.1}/sample/test_user.rb +0 -0
  1734. data/vendor/bundle/gems/{test-unit-3.2.0 → test-unit-3.2.1}/test/collector/test-descendant.rb +0 -0
  1735. data/vendor/bundle/gems/{test-unit-3.2.0 → test-unit-3.2.1}/test/collector/test-load.rb +0 -0
  1736. data/vendor/bundle/gems/{test-unit-3.2.0 → test-unit-3.2.1}/test/collector/test_dir.rb +0 -0
  1737. data/vendor/bundle/gems/{test-unit-3.2.0 → test-unit-3.2.1}/test/collector/test_objectspace.rb +0 -0
  1738. data/vendor/bundle/gems/{test-unit-3.2.0 → test-unit-3.2.1}/test/fixtures/header-label.csv +0 -0
  1739. data/vendor/bundle/gems/{test-unit-3.2.0 → test-unit-3.2.1}/test/fixtures/header-label.tsv +0 -0
  1740. data/vendor/bundle/gems/{test-unit-3.2.0 → test-unit-3.2.1}/test/fixtures/header.csv +0 -0
  1741. data/vendor/bundle/gems/{test-unit-3.2.0 → test-unit-3.2.1}/test/fixtures/header.tsv +0 -0
  1742. data/vendor/bundle/gems/{test-unit-3.2.0 → test-unit-3.2.1}/test/fixtures/no-header.csv +0 -0
  1743. data/vendor/bundle/gems/{test-unit-3.2.0 → test-unit-3.2.1}/test/fixtures/no-header.tsv +0 -0
  1744. data/vendor/bundle/gems/{test-unit-3.2.0 → test-unit-3.2.1}/test/fixtures/plus.csv +0 -0
  1745. data/vendor/bundle/gems/{test-unit-3.2.0 → test-unit-3.2.1}/test/run-test.rb +0 -0
  1746. data/vendor/bundle/gems/{test-unit-3.2.0 → test-unit-3.2.1}/test/test-assertions.rb +0 -0
  1747. data/vendor/bundle/gems/{test-unit-3.2.0 → test-unit-3.2.1}/test/test-attribute-matcher.rb +0 -0
  1748. data/vendor/bundle/gems/{test-unit-3.2.0 → test-unit-3.2.1}/test/test-attribute.rb +0 -0
  1749. data/vendor/bundle/gems/{test-unit-3.2.0 → test-unit-3.2.1}/test/test-code-snippet.rb +0 -0
  1750. data/vendor/bundle/gems/{test-unit-3.2.0 → test-unit-3.2.1}/test/test-color-scheme.rb +0 -0
  1751. data/vendor/bundle/gems/{test-unit-3.2.0 → test-unit-3.2.1}/test/test-color.rb +0 -0
  1752. data/vendor/bundle/gems/{test-unit-3.2.0 → test-unit-3.2.1}/test/test-data.rb +0 -0
  1753. data/vendor/bundle/gems/{test-unit-3.2.0 → test-unit-3.2.1}/test/test-diff.rb +0 -0
  1754. data/vendor/bundle/gems/{test-unit-3.2.0 → test-unit-3.2.1}/test/test-emacs-runner.rb +0 -0
  1755. data/vendor/bundle/gems/{test-unit-3.2.0 → test-unit-3.2.1}/test/test-error.rb +0 -0
  1756. data/vendor/bundle/gems/{test-unit-3.2.0 → test-unit-3.2.1}/test/test-failure.rb +0 -0
  1757. data/vendor/bundle/gems/{test-unit-3.2.0 → test-unit-3.2.1}/test/test-fault-location-detector.rb +0 -0
  1758. data/vendor/bundle/gems/{test-unit-3.2.0 → test-unit-3.2.1}/test/test-fixture.rb +0 -0
  1759. data/vendor/bundle/gems/{test-unit-3.2.0 → test-unit-3.2.1}/test/test-notification.rb +0 -0
  1760. data/vendor/bundle/gems/{test-unit-3.2.0 → test-unit-3.2.1}/test/test-omission.rb +0 -0
  1761. data/vendor/bundle/gems/{test-unit-3.2.0 → test-unit-3.2.1}/test/test-pending.rb +0 -0
  1762. data/vendor/bundle/gems/{test-unit-3.2.0 → test-unit-3.2.1}/test/test-priority.rb +0 -0
  1763. data/vendor/bundle/gems/test-unit-3.2.1/test/test-test-case.rb +1188 -0
  1764. data/vendor/bundle/gems/{test-unit-3.2.0 → test-unit-3.2.1}/test/test-test-result.rb +0 -0
  1765. data/vendor/bundle/gems/{test-unit-3.2.0 → test-unit-3.2.1}/test/test-test-suite-creator.rb +0 -0
  1766. data/vendor/bundle/gems/{test-unit-3.2.0 → test-unit-3.2.1}/test/test-test-suite.rb +0 -0
  1767. data/vendor/bundle/gems/{test-unit-3.2.0 → test-unit-3.2.1}/test/testunit-test-util.rb +0 -0
  1768. data/vendor/bundle/gems/{test-unit-3.2.0 → test-unit-3.2.1}/test/ui/test_testrunmediator.rb +0 -0
  1769. data/vendor/bundle/gems/{test-unit-3.2.0 → test-unit-3.2.1}/test/util/test-method-owner-finder.rb +0 -0
  1770. data/vendor/bundle/gems/{test-unit-3.2.0 → test-unit-3.2.1}/test/util/test-output.rb +0 -0
  1771. data/vendor/bundle/gems/{test-unit-3.2.0 → test-unit-3.2.1}/test/util/test_backtracefilter.rb +0 -0
  1772. data/vendor/bundle/gems/{test-unit-3.2.0 → test-unit-3.2.1}/test/util/test_observable.rb +0 -0
  1773. data/vendor/bundle/gems/{test-unit-3.2.0 → test-unit-3.2.1}/test/util/test_procwrapper.rb +0 -0
  1774. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/COPYING +0 -0
  1775. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/Gemfile +0 -0
  1776. data/vendor/bundle/gems/tins-1.12.0/README.md +72 -0
  1777. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/Rakefile +0 -0
  1778. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/TODO +0 -0
  1779. data/vendor/bundle/gems/tins-1.12.0/VERSION +1 -0
  1780. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/examples/add_one.png +0 -0
  1781. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/examples/add_one.stm +0 -0
  1782. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/examples/bb3.png +0 -0
  1783. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/examples/bb3.stm +0 -0
  1784. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/examples/concatenate_compare.mtm +0 -0
  1785. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/examples/concatenate_compare.png +0 -0
  1786. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/examples/length_difference.mtm +0 -0
  1787. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/examples/length_difference.png +0 -0
  1788. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/examples/let.rb +0 -0
  1789. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/examples/mail.rb +0 -0
  1790. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/examples/minsky.rb +0 -0
  1791. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/examples/multiply.reg +0 -0
  1792. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/examples/null_pattern.rb +0 -0
  1793. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/examples/ones_difference-mtm.png +0 -0
  1794. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/examples/ones_difference-stm.png +0 -0
  1795. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/examples/ones_difference.mtm +0 -0
  1796. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/examples/ones_difference.stm +0 -0
  1797. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/examples/prefix-equals-suffix-reversed-with-infix.png +0 -0
  1798. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/examples/prefix-equals-suffix-reversed-with-infix.stm +0 -0
  1799. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/examples/recipe.rb +0 -0
  1800. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/examples/recipe2.rb +0 -0
  1801. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/examples/recipe_common.rb +0 -0
  1802. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/examples/subtract.reg +0 -0
  1803. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/examples/turing-graph.rb +0 -0
  1804. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/examples/turing.rb +0 -0
  1805. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/lib/dslkit/polite.rb +0 -0
  1806. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/lib/dslkit/rude.rb +0 -0
  1807. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/lib/dslkit.rb +0 -0
  1808. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/lib/spruz.rb +0 -0
  1809. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/lib/tins/alias.rb +0 -0
  1810. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/lib/tins/annotate.rb +0 -0
  1811. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/lib/tins/ask_and_send.rb +0 -0
  1812. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/lib/tins/attempt.rb +0 -0
  1813. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/lib/tins/bijection.rb +0 -0
  1814. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/lib/tins/case_predicate.rb +0 -0
  1815. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/lib/tins/complete.rb +0 -0
  1816. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/lib/tins/concern.rb +0 -0
  1817. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/lib/tins/count_by.rb +0 -0
  1818. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/lib/tins/date_dummy.rb +0 -0
  1819. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/lib/tins/date_time_dummy.rb +0 -0
  1820. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/lib/tins/deep_const_get.rb +0 -0
  1821. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/lib/tins/deep_dup.rb +0 -0
  1822. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/lib/tins/dslkit.rb +0 -0
  1823. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/lib/tins/duration.rb +0 -0
  1824. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/lib/tins/extract_last_argument_options.rb +0 -0
  1825. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/lib/tins/file_binary.rb +0 -0
  1826. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/lib/tins/find.rb +0 -0
  1827. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/lib/tins/generator.rb +0 -0
  1828. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/lib/tins/go.rb +0 -0
  1829. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/lib/tins/hash_symbolize_keys_recursive.rb +0 -0
  1830. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/lib/tins/hash_union.rb +0 -0
  1831. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/lib/tins/if_predicate.rb +0 -0
  1832. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/lib/tins/implement.rb +0 -0
  1833. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/lib/tins/limited.rb +0 -0
  1834. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/lib/tins/lines_file.rb +0 -0
  1835. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/lib/tins/memoize.rb +0 -0
  1836. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/lib/tins/method_description.rb +0 -0
  1837. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/lib/tins/minimize.rb +0 -0
  1838. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/lib/tins/module_group.rb +0 -0
  1839. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/lib/tins/named_set.rb +0 -0
  1840. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/lib/tins/null.rb +0 -0
  1841. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/lib/tins/once.rb +0 -0
  1842. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/lib/tins/p.rb +0 -0
  1843. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/lib/tins/partial_application.rb +0 -0
  1844. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/lib/tins/proc_compose.rb +0 -0
  1845. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/lib/tins/proc_prelude.rb +0 -0
  1846. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/lib/tins/range_plus.rb +0 -0
  1847. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/lib/tins/require_maybe.rb +0 -0
  1848. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/lib/tins/responding.rb +0 -0
  1849. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/lib/tins/secure_write.rb +0 -0
  1850. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/lib/tins/sexy_singleton.rb +0 -0
  1851. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/lib/tins/string_byte_order_mark.rb +0 -0
  1852. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/lib/tins/string_camelize.rb +0 -0
  1853. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/lib/tins/string_underscore.rb +0 -0
  1854. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/lib/tins/string_version.rb +0 -0
  1855. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/lib/tins/subhash.rb +0 -0
  1856. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/lib/tins/terminal.rb +0 -0
  1857. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/lib/tins/thread_local.rb +0 -0
  1858. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/lib/tins/time_dummy.rb +0 -0
  1859. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/lib/tins/to.rb +0 -0
  1860. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/lib/tins/to_proc.rb +0 -0
  1861. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/lib/tins/token.rb +0 -0
  1862. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/lib/tins/uniq_by.rb +0 -0
  1863. data/vendor/bundle/gems/tins-1.12.0/lib/tins/unit.rb +172 -0
  1864. data/vendor/bundle/gems/tins-1.12.0/lib/tins/version.rb +8 -0
  1865. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/lib/tins/write.rb +0 -0
  1866. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/lib/tins/xt/annotate.rb +0 -0
  1867. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/lib/tins/xt/ask_and_send.rb +0 -0
  1868. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/lib/tins/xt/attempt.rb +0 -0
  1869. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/lib/tins/xt/blank.rb +0 -0
  1870. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/lib/tins/xt/case_predicate.rb +0 -0
  1871. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/lib/tins/xt/complete.rb +0 -0
  1872. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/lib/tins/xt/concern.rb +0 -0
  1873. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/lib/tins/xt/count_by.rb +0 -0
  1874. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/lib/tins/xt/date_dummy.rb +0 -0
  1875. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/lib/tins/xt/date_time_dummy.rb +0 -0
  1876. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/lib/tins/xt/deep_const_get.rb +0 -0
  1877. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/lib/tins/xt/deep_dup.rb +0 -0
  1878. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/lib/tins/xt/dslkit.rb +0 -0
  1879. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/lib/tins/xt/extract_last_argument_options.rb +0 -0
  1880. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/lib/tins/xt/file_binary.rb +0 -0
  1881. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/lib/tins/xt/full.rb +0 -0
  1882. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/lib/tins/xt/hash_symbolize_keys_recursive.rb +0 -0
  1883. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/lib/tins/xt/hash_union.rb +0 -0
  1884. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/lib/tins/xt/if_predicate.rb +0 -0
  1885. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/lib/tins/xt/implement.rb +0 -0
  1886. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/lib/tins/xt/irb.rb +0 -0
  1887. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/lib/tins/xt/method_description.rb +0 -0
  1888. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/lib/tins/xt/named.rb +0 -0
  1889. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/lib/tins/xt/null.rb +0 -0
  1890. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/lib/tins/xt/p.rb +0 -0
  1891. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/lib/tins/xt/partial_application.rb +0 -0
  1892. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/lib/tins/xt/proc_compose.rb +0 -0
  1893. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/lib/tins/xt/proc_prelude.rb +0 -0
  1894. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/lib/tins/xt/range_plus.rb +0 -0
  1895. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/lib/tins/xt/require_maybe.rb +0 -0
  1896. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/lib/tins/xt/responding.rb +0 -0
  1897. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/lib/tins/xt/secure_write.rb +0 -0
  1898. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/lib/tins/xt/sexy_singleton.rb +0 -0
  1899. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/lib/tins/xt/string.rb +0 -0
  1900. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/lib/tins/xt/string_byte_order_mark.rb +0 -0
  1901. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/lib/tins/xt/string_camelize.rb +0 -0
  1902. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/lib/tins/xt/string_underscore.rb +0 -0
  1903. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/lib/tins/xt/string_version.rb +0 -0
  1904. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/lib/tins/xt/subhash.rb +0 -0
  1905. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/lib/tins/xt/time_dummy.rb +0 -0
  1906. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/lib/tins/xt/time_freezer.rb +0 -0
  1907. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/lib/tins/xt/to.rb +0 -0
  1908. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/lib/tins/xt/uniq_by.rb +0 -0
  1909. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/lib/tins/xt/write.rb +0 -0
  1910. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/lib/tins/xt.rb +0 -0
  1911. data/vendor/bundle/gems/tins-1.12.0/lib/tins.rb +58 -0
  1912. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/tests/annotate_test.rb +0 -0
  1913. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/tests/ask_and_send_test.rb +0 -0
  1914. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/tests/attempt_test.rb +0 -0
  1915. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/tests/bijection_test.rb +0 -0
  1916. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/tests/blank_full_test.rb +0 -0
  1917. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/tests/case_predicate_test.rb +0 -0
  1918. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/tests/concern_test.rb +0 -0
  1919. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/tests/count_by_test.rb +0 -0
  1920. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/tests/date_dummy_test.rb +0 -0
  1921. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/tests/date_time_dummy_test.rb +0 -0
  1922. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/tests/deep_const_get_test.rb +0 -0
  1923. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/tests/deep_dup_test.rb +0 -0
  1924. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/tests/delegate_test.rb +0 -0
  1925. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/tests/dslkit_test.rb +0 -0
  1926. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/tests/duaration_test.rb +0 -0
  1927. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/tests/dynamic_scope_test.rb +0 -0
  1928. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/tests/extract_last_argument_options_test.rb +0 -0
  1929. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/tests/file_binary_test.rb +0 -0
  1930. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/tests/find_test.rb +0 -0
  1931. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/tests/from_module_test.rb +0 -0
  1932. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/tests/generator_test.rb +0 -0
  1933. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/tests/go_test.rb +0 -0
  1934. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/tests/hash_symbolize_keys_recursive_test.rb +0 -0
  1935. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/tests/hash_union_test.rb +0 -0
  1936. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/tests/if_predicate_test.rb +0 -0
  1937. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/tests/implement_test.rb +0 -0
  1938. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/tests/limited_test.rb +0 -0
  1939. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/tests/lines_file_test.rb +0 -0
  1940. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/tests/memoize_test.rb +0 -0
  1941. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/tests/method_description_test.rb +0 -0
  1942. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/tests/minimize_test.rb +0 -0
  1943. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/tests/module_group_test.rb +0 -0
  1944. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/tests/named_set_test.rb +0 -0
  1945. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/tests/named_test.rb +0 -0
  1946. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/tests/null_test.rb +0 -0
  1947. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/tests/p_test.rb +0 -0
  1948. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/tests/partial_application_test.rb +0 -0
  1949. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/tests/proc_compose_test.rb +0 -0
  1950. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/tests/proc_prelude_test.rb +0 -0
  1951. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/tests/range_plus_test.rb +0 -0
  1952. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/tests/require_maybe_test.rb +0 -0
  1953. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/tests/responding_test.rb +0 -0
  1954. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/tests/rotate_test.rb +0 -0
  1955. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/tests/scope_test.rb +0 -0
  1956. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/tests/secure_write_test.rb +0 -0
  1957. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/tests/sexy_singleton_test.rb +0 -0
  1958. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/tests/string_byte_order_mark_test.rb +0 -0
  1959. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/tests/string_camelize_test.rb +0 -0
  1960. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/tests/string_underscore_test.rb +0 -0
  1961. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/tests/string_version_test.rb +0 -0
  1962. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/tests/subhash_test.rb +0 -0
  1963. data/vendor/bundle/gems/tins-1.12.0/tests/test_helper.rb +15 -0
  1964. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/tests/time_dummy_test.rb +0 -0
  1965. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/tests/time_freezer_test.rb +0 -0
  1966. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/tests/to_test.rb +0 -0
  1967. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/tests/token_test.rb +0 -0
  1968. data/vendor/bundle/gems/{tins-1.10.2 → tins-1.12.0}/tests/uniq_by_test.rb +0 -0
  1969. data/vendor/bundle/gems/tins-1.12.0/tests/unit_test.rb +57 -0
  1970. data/vendor/bundle/gems/tins-1.12.0/tins.gemspec +38 -0
  1971. data/vendor/bundle/gems/unf_ext-0.0.7.2/ext/unf_ext/Makefile +7 -7
  1972. data/vendor/bundle/gems/unf_ext-0.0.7.2/ext/unf_ext/unf.o +0 -0
  1973. data/vendor/bundle/gems/unf_ext-0.0.7.2/ext/unf_ext/unf_ext.so +0 -0
  1974. data/vendor/bundle/gems/unf_ext-0.0.7.2/lib/unf_ext.so +0 -0
  1975. data/vendor/bundle/specifications/addressable-2.4.0.gemspec +18 -18
  1976. data/vendor/bundle/specifications/capybara-2.8.0.gemspec +79 -0
  1977. data/vendor/bundle/specifications/concurrent-ruby-1.0.2.gemspec +14 -14
  1978. data/vendor/bundle/specifications/coveralls-0.7.12.gemspec +5 -2
  1979. data/vendor/bundle/specifications/diff-lcs-1.2.5.gemspec +6 -3
  1980. data/vendor/bundle/specifications/docile-1.1.5.gemspec +5 -2
  1981. data/vendor/bundle/specifications/domain_name-0.5.20160615.gemspec +31 -31
  1982. data/vendor/bundle/specifications/emot-0.0.4.gemspec +5 -2
  1983. data/vendor/bundle/specifications/faraday-0.9.2.gemspec +13 -13
  1984. data/vendor/bundle/specifications/fastimage-2.0.0.gemspec +30 -30
  1985. data/vendor/bundle/specifications/ffi-1.9.14.gemspec +49 -0
  1986. data/vendor/bundle/specifications/hikidoc-0.1.0.gemspec +5 -2
  1987. data/vendor/bundle/specifications/http-cookie-1.0.2.gemspec +6 -3
  1988. data/vendor/bundle/specifications/jasmine-2.4.0.gemspec +5 -2
  1989. data/vendor/bundle/specifications/jasmine-core-2.4.1.gemspec +5 -2
  1990. data/vendor/bundle/specifications/launchy-2.4.3.gemspec +6 -3
  1991. data/vendor/bundle/specifications/mail-2.6.4.gemspec +29 -29
  1992. data/vendor/bundle/specifications/mime-types-2.99.2.gemspec +60 -60
  1993. data/vendor/bundle/specifications/mini_portile2-2.1.0.gemspec +27 -27
  1994. data/vendor/bundle/specifications/multi_json-1.12.1.gemspec +15 -15
  1995. data/vendor/bundle/specifications/multipart-post-2.0.0.gemspec +13 -13
  1996. data/vendor/bundle/specifications/netrc-0.11.0.gemspec +5 -2
  1997. data/vendor/bundle/specifications/nokogiri-1.6.8.gemspec +59 -59
  1998. data/vendor/bundle/specifications/octokit-4.3.0.gemspec +18 -18
  1999. data/vendor/bundle/specifications/pit-0.0.7.gemspec +5 -2
  2000. data/vendor/bundle/specifications/pkg-config-1.1.7.gemspec +21 -21
  2001. data/vendor/bundle/specifications/power_assert-0.3.0.gemspec +23 -23
  2002. data/vendor/bundle/specifications/rack-1.6.4.gemspec +6 -3
  2003. data/vendor/bundle/specifications/rack-test-0.6.3.gemspec +6 -3
  2004. data/vendor/bundle/specifications/racksh-1.0.0.gemspec +5 -2
  2005. data/vendor/bundle/specifications/rake-11.2.2.gemspec +25 -25
  2006. data/vendor/bundle/specifications/rest-client-1.8.0.gemspec +6 -3
  2007. data/vendor/bundle/specifications/rspec-3.5.0.gemspec +42 -0
  2008. data/vendor/bundle/specifications/rspec-core-3.5.2.gemspec +62 -0
  2009. data/vendor/bundle/specifications/rspec-expectations-3.5.0.gemspec +50 -0
  2010. data/vendor/bundle/specifications/rspec-mocks-3.5.0.gemspec +50 -0
  2011. data/vendor/bundle/specifications/rspec-support-3.5.0.gemspec +41 -0
  2012. data/vendor/bundle/specifications/sawyer-0.7.0.gemspec +16 -16
  2013. data/vendor/bundle/specifications/selenium-webdriver-2.53.4.gemspec +36 -36
  2014. data/vendor/bundle/specifications/sequel-4.37.0.gemspec +52 -0
  2015. data/vendor/bundle/specifications/simplecov-0.9.2.gemspec +5 -2
  2016. data/vendor/bundle/specifications/simplecov-html-0.9.0.gemspec +5 -2
  2017. data/vendor/bundle/specifications/sprockets-3.7.0.gemspec +78 -0
  2018. data/vendor/bundle/specifications/sqlite3-1.3.11.gemspec +7 -3
  2019. data/vendor/bundle/specifications/term-ansicolor-1.3.2.gemspec +6 -3
  2020. data/vendor/bundle/specifications/test-unit-3.2.1.gemspec +47 -0
  2021. data/vendor/bundle/specifications/thor-0.19.1.gemspec +5 -2
  2022. data/vendor/bundle/specifications/tins-1.12.0.gemspec +39 -0
  2023. data/vendor/bundle/specifications/unf-0.1.4.gemspec +6 -3
  2024. data/vendor/bundle/specifications/websocket-1.2.3.gemspec +11 -11
  2025. data/vendor/bundle/specifications/xpath-2.0.0.gemspec +5 -2
  2026. metadata +2018 -1956
  2027. data/vendor/bundle/cache/bundler-1.12.5.gem +0 -0
  2028. data/vendor/bundle/cache/capybara-2.7.1.gem +0 -0
  2029. data/vendor/bundle/cache/ffi-1.9.10.gem +0 -0
  2030. data/vendor/bundle/cache/rspec-3.4.0.gem +0 -0
  2031. data/vendor/bundle/cache/rspec-core-3.4.4.gem +0 -0
  2032. data/vendor/bundle/cache/rspec-expectations-3.4.0.gem +0 -0
  2033. data/vendor/bundle/cache/rspec-mocks-3.4.1.gem +0 -0
  2034. data/vendor/bundle/cache/rspec-support-3.4.1.gem +0 -0
  2035. data/vendor/bundle/cache/sequel-4.35.0.gem +0 -0
  2036. data/vendor/bundle/cache/sprockets-3.6.2.gem +0 -0
  2037. data/vendor/bundle/cache/test-unit-3.2.0.gem +0 -0
  2038. data/vendor/bundle/cache/tins-1.10.2.gem +0 -0
  2039. data/vendor/bundle/extensions/x86_64-linux/2.2.0-static/bson-4.0.0/gem_make.out +0 -21
  2040. data/vendor/bundle/extensions/x86_64-linux/2.2.0-static/bson-4.0.0/native.so +0 -0
  2041. data/vendor/bundle/extensions/x86_64-linux/2.2.0-static/eventmachine-1.0.8/fastfilereaderext.so +0 -0
  2042. data/vendor/bundle/extensions/x86_64-linux/2.2.0-static/eventmachine-1.0.8/gem_make.out +0 -12
  2043. data/vendor/bundle/extensions/x86_64-linux/2.2.0-static/eventmachine-1.0.8/mkmf.log +0 -11
  2044. data/vendor/bundle/extensions/x86_64-linux/2.2.0-static/eventmachine-1.0.8/rubyeventmachine.so +0 -0
  2045. data/vendor/bundle/extensions/x86_64-linux/2.2.0-static/github-markdown-0.6.9/gem_make.out +0 -114
  2046. data/vendor/bundle/extensions/x86_64-linux/2.2.0-static/github-markdown-0.6.9/github/markdown.so +0 -0
  2047. data/vendor/bundle/extensions/x86_64-linux/2.2.0-static/json-1.8.3/gem.build_complete +0 -0
  2048. data/vendor/bundle/extensions/x86_64-linux/2.2.0-static/json-1.8.3/gem_make.out +0 -9
  2049. data/vendor/bundle/extensions/x86_64-linux/2.2.0-static/json-1.8.3/json/ext/generator.so +0 -0
  2050. data/vendor/bundle/extensions/x86_64-linux/2.2.0-static/json-1.8.3/json/ext/parser.so +0 -0
  2051. data/vendor/bundle/extensions/x86_64-linux/2.2.0-static/nokogiri-1.6.7.1/gem.build_complete +0 -0
  2052. data/vendor/bundle/extensions/x86_64-linux/2.2.0-static/nokogiri-1.6.7.1/gem_make.out +0 -302
  2053. data/vendor/bundle/extensions/x86_64-linux/2.2.0-static/nokogiri-1.6.7.1/mkmf.log +0 -569
  2054. data/vendor/bundle/extensions/x86_64-linux/2.2.0-static/nokogiri-1.6.7.1/nokogiri/nokogiri.so +0 -0
  2055. data/vendor/bundle/extensions/x86_64-linux/2.2.0-static/posix-spawn-0.3.11/gem.build_complete +0 -0
  2056. data/vendor/bundle/extensions/x86_64-linux/2.2.0-static/posix-spawn-0.3.11/gem_make.out +0 -18
  2057. data/vendor/bundle/extensions/x86_64-linux/2.2.0-static/posix-spawn-0.3.11/posix_spawn_ext.so +0 -0
  2058. data/vendor/bundle/extensions/x86_64-linux/2.2.0-static/redcarpet-3.3.4/gem.build_complete +0 -0
  2059. data/vendor/bundle/extensions/x86_64-linux/2.2.0-static/redcarpet-3.3.4/gem_make.out +0 -74
  2060. data/vendor/bundle/extensions/x86_64-linux/2.2.0-static/redcarpet-3.3.4/redcarpet.so +0 -0
  2061. data/vendor/bundle/extensions/x86_64-linux/2.2.0-static/thin-1.6.4/gem.build_complete +0 -0
  2062. data/vendor/bundle/extensions/x86_64-linux/2.2.0-static/thin-1.6.4/gem_make.out +0 -31
  2063. data/vendor/bundle/extensions/x86_64-linux/2.2.0-static/thin-1.6.4/mkmf.log +0 -37
  2064. data/vendor/bundle/extensions/x86_64-linux/2.2.0-static/thin-1.6.4/thin_parser.so +0 -0
  2065. data/vendor/bundle/extensions/x86_64-linux/2.2.0-static/yajl-ruby-1.2.1/gem.build_complete +0 -0
  2066. data/vendor/bundle/extensions/x86_64-linux/2.2.0-static/yajl-ruby-1.2.1/gem_make.out +0 -23
  2067. data/vendor/bundle/extensions/x86_64-linux/2.2.0-static/yajl-ruby-1.2.1/yajl/yajl.so +0 -0
  2068. data/vendor/bundle/extensions/x86_64-linux/2.3.0-static/bson-4.0.0/gem.build_complete +0 -0
  2069. data/vendor/bundle/extensions/x86_64-linux/2.3.0-static/bson-4.0.0/gem_make.out +0 -31
  2070. data/vendor/bundle/extensions/x86_64-linux/2.3.0-static/bson-4.0.0/native.so +0 -0
  2071. data/vendor/bundle/extensions/x86_64-linux/2.3.0-static/bson-4.0.4/gem.build_complete +0 -0
  2072. data/vendor/bundle/extensions/x86_64-linux/2.3.0-static/bson-4.0.4/gem_make.out +0 -25
  2073. data/vendor/bundle/extensions/x86_64-linux/2.3.0-static/bson-4.0.4/native.so +0 -0
  2074. data/vendor/bundle/extensions/x86_64-linux/2.3.0-static/bson-4.1.0/gem.build_complete +0 -0
  2075. data/vendor/bundle/extensions/x86_64-linux/2.3.0-static/bson-4.1.0/gem_make.out +0 -25
  2076. data/vendor/bundle/extensions/x86_64-linux/2.3.0-static/bson-4.1.0/native.so +0 -0
  2077. data/vendor/bundle/extensions/x86_64-linux/2.3.0-static/nokogiri-1.6.7.1/gem.build_complete +0 -0
  2078. data/vendor/bundle/extensions/x86_64-linux/2.3.0-static/nokogiri-1.6.7.1/gem_make.out +0 -324
  2079. data/vendor/bundle/extensions/x86_64-linux/2.3.0-static/nokogiri-1.6.7.1/mkmf.log +0 -505
  2080. data/vendor/bundle/extensions/x86_64-linux/2.3.0-static/nokogiri-1.6.7.1/nokogiri/nokogiri.so +0 -0
  2081. data/vendor/bundle/extensions/x86_64-linux/2.3.0-static/nokogiri-1.6.7.2/gem.build_complete +0 -0
  2082. data/vendor/bundle/extensions/x86_64-linux/2.3.0-static/nokogiri-1.6.7.2/gem_make.out +0 -316
  2083. data/vendor/bundle/extensions/x86_64-linux/2.3.0-static/nokogiri-1.6.7.2/mkmf.log +0 -505
  2084. data/vendor/bundle/extensions/x86_64-linux/2.3.0-static/nokogiri-1.6.7.2/nokogiri/nokogiri.so +0 -0
  2085. data/vendor/bundle/extensions/x86_64-linux/2.3.0-static/puma-2.15.3/gem.build_complete +0 -0
  2086. data/vendor/bundle/extensions/x86_64-linux/2.3.0-static/puma-2.15.3/gem_make.out +0 -95
  2087. data/vendor/bundle/extensions/x86_64-linux/2.3.0-static/puma-2.15.3/mkmf.log +0 -115
  2088. data/vendor/bundle/extensions/x86_64-linux/2.3.0-static/puma-2.15.3/puma/puma_http11.so +0 -0
  2089. data/vendor/bundle/extensions/x86_64-linux/2.3.0-static/puma-3.1.0/gem.build_complete +0 -0
  2090. data/vendor/bundle/extensions/x86_64-linux/2.3.0-static/puma-3.1.0/gem_make.out +0 -35
  2091. data/vendor/bundle/extensions/x86_64-linux/2.3.0-static/puma-3.1.0/mkmf.log +0 -115
  2092. data/vendor/bundle/extensions/x86_64-linux/2.3.0-static/puma-3.1.0/puma/puma_http11.so +0 -0
  2093. data/vendor/bundle/extensions/x86_64-linux/2.3.0-static/puma-3.4.0/gem.build_complete +0 -0
  2094. data/vendor/bundle/extensions/x86_64-linux/2.3.0-static/puma-3.4.0/gem_make.out +0 -35
  2095. data/vendor/bundle/extensions/x86_64-linux/2.3.0-static/puma-3.4.0/puma/puma_http11.so +0 -0
  2096. data/vendor/bundle/gems/capybara-2.7.1/History.md +0 -772
  2097. data/vendor/bundle/gems/capybara-2.7.1/README.md +0 -983
  2098. data/vendor/bundle/gems/capybara-2.7.1/lib/capybara/driver/base.rb +0 -143
  2099. data/vendor/bundle/gems/capybara-2.7.1/lib/capybara/driver/node.rb +0 -105
  2100. data/vendor/bundle/gems/capybara-2.7.1/lib/capybara/helpers.rb +0 -141
  2101. data/vendor/bundle/gems/capybara-2.7.1/lib/capybara/node/actions.rb +0 -167
  2102. data/vendor/bundle/gems/capybara-2.7.1/lib/capybara/node/base.rb +0 -125
  2103. data/vendor/bundle/gems/capybara-2.7.1/lib/capybara/node/element.rb +0 -339
  2104. data/vendor/bundle/gems/capybara-2.7.1/lib/capybara/node/finders.rb +0 -216
  2105. data/vendor/bundle/gems/capybara-2.7.1/lib/capybara/node/matchers.rb +0 -597
  2106. data/vendor/bundle/gems/capybara-2.7.1/lib/capybara/queries/selector_query.rb +0 -138
  2107. data/vendor/bundle/gems/capybara-2.7.1/lib/capybara/queries/text_query.rb +0 -48
  2108. data/vendor/bundle/gems/capybara-2.7.1/lib/capybara/rack_test/node.rb +0 -205
  2109. data/vendor/bundle/gems/capybara-2.7.1/lib/capybara/result.rb +0 -58
  2110. data/vendor/bundle/gems/capybara-2.7.1/lib/capybara/rspec/features.rb +0 -48
  2111. data/vendor/bundle/gems/capybara-2.7.1/lib/capybara/selector.rb +0 -379
  2112. data/vendor/bundle/gems/capybara-2.7.1/lib/capybara/selenium/driver.rb +0 -295
  2113. data/vendor/bundle/gems/capybara-2.7.1/lib/capybara/selenium/node.rb +0 -183
  2114. data/vendor/bundle/gems/capybara-2.7.1/lib/capybara/server.rb +0 -123
  2115. data/vendor/bundle/gems/capybara-2.7.1/lib/capybara/session.rb +0 -748
  2116. data/vendor/bundle/gems/capybara-2.7.1/lib/capybara/spec/session/all_spec.rb +0 -158
  2117. data/vendor/bundle/gems/capybara-2.7.1/lib/capybara/spec/session/assert_text.rb +0 -196
  2118. data/vendor/bundle/gems/capybara-2.7.1/lib/capybara/spec/session/check_spec.rb +0 -114
  2119. data/vendor/bundle/gems/capybara-2.7.1/lib/capybara/spec/session/choose_spec.rb +0 -69
  2120. data/vendor/bundle/gems/capybara-2.7.1/lib/capybara/spec/session/click_button_spec.rb +0 -449
  2121. data/vendor/bundle/gems/capybara-2.7.1/lib/capybara/spec/session/click_link_spec.rb +0 -182
  2122. data/vendor/bundle/gems/capybara-2.7.1/lib/capybara/spec/session/execute_script_spec.rb +0 -8
  2123. data/vendor/bundle/gems/capybara-2.7.1/lib/capybara/spec/session/find_button_spec.rb +0 -55
  2124. data/vendor/bundle/gems/capybara-2.7.1/lib/capybara/spec/session/find_field_spec.rb +0 -90
  2125. data/vendor/bundle/gems/capybara-2.7.1/lib/capybara/spec/session/find_link_spec.rb +0 -33
  2126. data/vendor/bundle/gems/capybara-2.7.1/lib/capybara/spec/session/find_spec.rb +0 -385
  2127. data/vendor/bundle/gems/capybara-2.7.1/lib/capybara/spec/session/first_spec.rb +0 -113
  2128. data/vendor/bundle/gems/capybara-2.7.1/lib/capybara/spec/session/has_field_spec.rb +0 -295
  2129. data/vendor/bundle/gems/capybara-2.7.1/lib/capybara/spec/session/has_text_spec.rb +0 -317
  2130. data/vendor/bundle/gems/capybara-2.7.1/lib/capybara/spec/session/node_spec.rb +0 -415
  2131. data/vendor/bundle/gems/capybara-2.7.1/lib/capybara/spec/session/reset_session_spec.rb +0 -107
  2132. data/vendor/bundle/gems/capybara-2.7.1/lib/capybara/spec/session/selectors_spec.rb +0 -35
  2133. data/vendor/bundle/gems/capybara-2.7.1/lib/capybara/spec/session/uncheck_spec.rb +0 -41
  2134. data/vendor/bundle/gems/capybara-2.7.1/lib/capybara/spec/session/window/switch_to_window_spec.rb +0 -123
  2135. data/vendor/bundle/gems/capybara-2.7.1/lib/capybara/spec/session/window/window_opened_by_spec.rb +0 -92
  2136. data/vendor/bundle/gems/capybara-2.7.1/lib/capybara/spec/session/window/window_spec.rb +0 -155
  2137. data/vendor/bundle/gems/capybara-2.7.1/lib/capybara/spec/session/within_frame_spec.rb +0 -63
  2138. data/vendor/bundle/gems/capybara-2.7.1/lib/capybara/spec/spec_helper.rb +0 -100
  2139. data/vendor/bundle/gems/capybara-2.7.1/lib/capybara/spec/views/form.erb +0 -501
  2140. data/vendor/bundle/gems/capybara-2.7.1/lib/capybara/spec/views/with_html.erb +0 -118
  2141. data/vendor/bundle/gems/capybara-2.7.1/lib/capybara/spec/views/with_unload_alert.erb +0 -12
  2142. data/vendor/bundle/gems/capybara-2.7.1/lib/capybara/spec/views/with_windows.erb +0 -48
  2143. data/vendor/bundle/gems/capybara-2.7.1/lib/capybara/version.rb +0 -4
  2144. data/vendor/bundle/gems/capybara-2.7.1/lib/capybara.rb +0 -500
  2145. data/vendor/bundle/gems/capybara-2.7.1/spec/capybara_spec.rb +0 -90
  2146. data/vendor/bundle/gems/capybara-2.7.1/spec/rack_test_spec.rb +0 -186
  2147. data/vendor/bundle/gems/capybara-2.7.1/spec/result_spec.rb +0 -66
  2148. data/vendor/bundle/gems/capybara-2.7.1/spec/rspec/features_spec.rb +0 -95
  2149. data/vendor/bundle/gems/capybara-2.7.1/spec/selenium_spec.rb +0 -151
  2150. data/vendor/bundle/gems/capybara-2.7.1/spec/server_spec.rb +0 -204
  2151. data/vendor/bundle/gems/ffi-1.9.10/LICENSE +0 -24
  2152. data/vendor/bundle/gems/ffi-1.9.10/Rakefile +0 -210
  2153. data/vendor/bundle/gems/ffi-1.9.10/ext/ffi_c/AbstractMemory.c +0 -1032
  2154. data/vendor/bundle/gems/ffi-1.9.10/ext/ffi_c/AbstractMemory.o +0 -0
  2155. data/vendor/bundle/gems/ffi-1.9.10/ext/ffi_c/ArrayType.o +0 -0
  2156. data/vendor/bundle/gems/ffi-1.9.10/ext/ffi_c/Buffer.c +0 -365
  2157. data/vendor/bundle/gems/ffi-1.9.10/ext/ffi_c/Buffer.o +0 -0
  2158. data/vendor/bundle/gems/ffi-1.9.10/ext/ffi_c/Call.c +0 -530
  2159. data/vendor/bundle/gems/ffi-1.9.10/ext/ffi_c/Call.h +0 -93
  2160. data/vendor/bundle/gems/ffi-1.9.10/ext/ffi_c/Call.o +0 -0
  2161. data/vendor/bundle/gems/ffi-1.9.10/ext/ffi_c/ClosurePool.o +0 -0
  2162. data/vendor/bundle/gems/ffi-1.9.10/ext/ffi_c/DataConverter.o +0 -0
  2163. data/vendor/bundle/gems/ffi-1.9.10/ext/ffi_c/DynamicLibrary.o +0 -0
  2164. data/vendor/bundle/gems/ffi-1.9.10/ext/ffi_c/Function.c +0 -1000
  2165. data/vendor/bundle/gems/ffi-1.9.10/ext/ffi_c/Function.o +0 -0
  2166. data/vendor/bundle/gems/ffi-1.9.10/ext/ffi_c/FunctionInfo.o +0 -0
  2167. data/vendor/bundle/gems/ffi-1.9.10/ext/ffi_c/LastError.o +0 -0
  2168. data/vendor/bundle/gems/ffi-1.9.10/ext/ffi_c/LongDouble.o +0 -0
  2169. data/vendor/bundle/gems/ffi-1.9.10/ext/ffi_c/Makefile +0 -237
  2170. data/vendor/bundle/gems/ffi-1.9.10/ext/ffi_c/MappedType.o +0 -0
  2171. data/vendor/bundle/gems/ffi-1.9.10/ext/ffi_c/MemoryPointer.o +0 -0
  2172. data/vendor/bundle/gems/ffi-1.9.10/ext/ffi_c/MethodHandle.c +0 -360
  2173. data/vendor/bundle/gems/ffi-1.9.10/ext/ffi_c/MethodHandle.o +0 -0
  2174. data/vendor/bundle/gems/ffi-1.9.10/ext/ffi_c/Platform.o +0 -0
  2175. data/vendor/bundle/gems/ffi-1.9.10/ext/ffi_c/Pointer.c +0 -508
  2176. data/vendor/bundle/gems/ffi-1.9.10/ext/ffi_c/Pointer.o +0 -0
  2177. data/vendor/bundle/gems/ffi-1.9.10/ext/ffi_c/Struct.o +0 -0
  2178. data/vendor/bundle/gems/ffi-1.9.10/ext/ffi_c/StructByReference.o +0 -0
  2179. data/vendor/bundle/gems/ffi-1.9.10/ext/ffi_c/StructByValue.o +0 -0
  2180. data/vendor/bundle/gems/ffi-1.9.10/ext/ffi_c/StructLayout.o +0 -0
  2181. data/vendor/bundle/gems/ffi-1.9.10/ext/ffi_c/Thread.o +0 -0
  2182. data/vendor/bundle/gems/ffi-1.9.10/ext/ffi_c/Type.o +0 -0
  2183. data/vendor/bundle/gems/ffi-1.9.10/ext/ffi_c/Types.o +0 -0
  2184. data/vendor/bundle/gems/ffi-1.9.10/ext/ffi_c/Variadic.c +0 -280
  2185. data/vendor/bundle/gems/ffi-1.9.10/ext/ffi_c/Variadic.o +0 -0
  2186. data/vendor/bundle/gems/ffi-1.9.10/ext/ffi_c/compat.h +0 -83
  2187. data/vendor/bundle/gems/ffi-1.9.10/ext/ffi_c/extconf.h +0 -12
  2188. data/vendor/bundle/gems/ffi-1.9.10/ext/ffi_c/ffi.o +0 -0
  2189. data/vendor/bundle/gems/ffi-1.9.10/ext/ffi_c/ffi_c.so +0 -0
  2190. data/vendor/bundle/gems/ffi-1.9.10/ext/ffi_c/libffi/src/mips/ffi.c +0 -1036
  2191. data/vendor/bundle/gems/ffi-1.9.10/ext/ffi_c/mkmf.log +0 -412
  2192. data/vendor/bundle/gems/ffi-1.9.10/ext/ffi_c/rbffi_endian.h +0 -59
  2193. data/vendor/bundle/gems/ffi-1.9.10/ffi.gemspec +0 -23
  2194. data/vendor/bundle/gems/ffi-1.9.10/lib/ffi/autopointer.rb +0 -194
  2195. data/vendor/bundle/gems/ffi-1.9.10/lib/ffi/enum.rb +0 -174
  2196. data/vendor/bundle/gems/ffi-1.9.10/lib/ffi/library.rb +0 -524
  2197. data/vendor/bundle/gems/ffi-1.9.10/lib/ffi/pointer.rb +0 -134
  2198. data/vendor/bundle/gems/ffi-1.9.10/lib/ffi/struct.rb +0 -373
  2199. data/vendor/bundle/gems/ffi-1.9.10/lib/ffi/tools/types_generator.rb +0 -135
  2200. data/vendor/bundle/gems/ffi-1.9.10/lib/ffi/types.rb +0 -190
  2201. data/vendor/bundle/gems/ffi-1.9.10/lib/ffi/version.rb +0 -4
  2202. data/vendor/bundle/gems/ffi-1.9.10/lib/ffi_c.so +0 -0
  2203. data/vendor/bundle/gems/ffi-1.9.10/libtest/FunctionTest.c +0 -70
  2204. data/vendor/bundle/gems/ffi-1.9.10/libtest/VariadicTest.c +0 -62
  2205. data/vendor/bundle/gems/ffi-1.9.10/spec/ffi/fixtures/ClosureTest.c +0 -190
  2206. data/vendor/bundle/gems/ffi-1.9.10/spec/ffi/fixtures/FunctionTest.c +0 -58
  2207. data/vendor/bundle/gems/ffi-1.9.10/spec/ffi/function_spec.rb +0 -92
  2208. data/vendor/bundle/gems/ffi-1.9.10/spec/ffi/library_spec.rb +0 -276
  2209. data/vendor/bundle/gems/ffi-1.9.10/spec/ffi/rbx/attach_function_spec.rb +0 -33
  2210. data/vendor/bundle/gems/ffi-1.9.10/spec/ffi/struct_spec.rb +0 -886
  2211. data/vendor/bundle/gems/ffi-1.9.10/spec/ffi/variadic_spec.rb +0 -113
  2212. data/vendor/bundle/gems/rspec-3.4.0/README.md +0 -39
  2213. data/vendor/bundle/gems/rspec-3.4.0/lib/rspec/version.rb +0 -5
  2214. data/vendor/bundle/gems/rspec-core-3.4.4/Changelog.md +0 -1972
  2215. data/vendor/bundle/gems/rspec-core-3.4.4/lib/rspec/core/backtrace_formatter.rb +0 -65
  2216. data/vendor/bundle/gems/rspec-core-3.4.4/lib/rspec/core/bisect/runner.rb +0 -139
  2217. data/vendor/bundle/gems/rspec-core-3.4.4/lib/rspec/core/bisect/server.rb +0 -61
  2218. data/vendor/bundle/gems/rspec-core-3.4.4/lib/rspec/core/configuration.rb +0 -1869
  2219. data/vendor/bundle/gems/rspec-core-3.4.4/lib/rspec/core/configuration_options.rb +0 -191
  2220. data/vendor/bundle/gems/rspec-core-3.4.4/lib/rspec/core/dsl.rb +0 -96
  2221. data/vendor/bundle/gems/rspec-core-3.4.4/lib/rspec/core/example.rb +0 -631
  2222. data/vendor/bundle/gems/rspec-core-3.4.4/lib/rspec/core/example_group.rb +0 -816
  2223. data/vendor/bundle/gems/rspec-core-3.4.4/lib/rspec/core/formatters/bisect_formatter.rb +0 -68
  2224. data/vendor/bundle/gems/rspec-core-3.4.4/lib/rspec/core/formatters/documentation_formatter.rb +0 -70
  2225. data/vendor/bundle/gems/rspec-core-3.4.4/lib/rspec/core/formatters/exception_presenter.rb +0 -482
  2226. data/vendor/bundle/gems/rspec-core-3.4.4/lib/rspec/core/formatters/helpers.rb +0 -109
  2227. data/vendor/bundle/gems/rspec-core-3.4.4/lib/rspec/core/formatters/html_formatter.rb +0 -151
  2228. data/vendor/bundle/gems/rspec-core-3.4.4/lib/rspec/core/hooks.rb +0 -638
  2229. data/vendor/bundle/gems/rspec-core-3.4.4/lib/rspec/core/metadata.rb +0 -498
  2230. data/vendor/bundle/gems/rspec-core-3.4.4/lib/rspec/core/metadata_filter.rb +0 -231
  2231. data/vendor/bundle/gems/rspec-core-3.4.4/lib/rspec/core/notifications.rb +0 -499
  2232. data/vendor/bundle/gems/rspec-core-3.4.4/lib/rspec/core/option_parser.rb +0 -319
  2233. data/vendor/bundle/gems/rspec-core-3.4.4/lib/rspec/core/project_initializer/spec/spec_helper.rb +0 -96
  2234. data/vendor/bundle/gems/rspec-core-3.4.4/lib/rspec/core/rake_task.rb +0 -167
  2235. data/vendor/bundle/gems/rspec-core-3.4.4/lib/rspec/core/runner.rb +0 -183
  2236. data/vendor/bundle/gems/rspec-core-3.4.4/lib/rspec/core/shared_example_group.rb +0 -212
  2237. data/vendor/bundle/gems/rspec-core-3.4.4/lib/rspec/core/source/token.rb +0 -86
  2238. data/vendor/bundle/gems/rspec-core-3.4.4/lib/rspec/core/source.rb +0 -76
  2239. data/vendor/bundle/gems/rspec-core-3.4.4/lib/rspec/core/version.rb +0 -9
  2240. data/vendor/bundle/gems/rspec-core-3.4.4/lib/rspec/core/world.rb +0 -213
  2241. data/vendor/bundle/gems/rspec-core-3.4.4/lib/rspec/core.rb +0 -181
  2242. data/vendor/bundle/gems/rspec-expectations-3.4.0/Changelog.md +0 -979
  2243. data/vendor/bundle/gems/rspec-expectations-3.4.0/lib/rspec/expectations/configuration.rb +0 -164
  2244. data/vendor/bundle/gems/rspec-expectations-3.4.0/lib/rspec/expectations/expectation_target.rb +0 -113
  2245. data/vendor/bundle/gems/rspec-expectations-3.4.0/lib/rspec/expectations/handler.rb +0 -170
  2246. data/vendor/bundle/gems/rspec-expectations-3.4.0/lib/rspec/expectations/minitest_integration.rb +0 -31
  2247. data/vendor/bundle/gems/rspec-expectations-3.4.0/lib/rspec/expectations/syntax.rb +0 -132
  2248. data/vendor/bundle/gems/rspec-expectations-3.4.0/lib/rspec/expectations/version.rb +0 -8
  2249. data/vendor/bundle/gems/rspec-expectations-3.4.0/lib/rspec/matchers/built_in/be.rb +0 -285
  2250. data/vendor/bundle/gems/rspec-expectations-3.4.0/lib/rspec/matchers/built_in/change.rb +0 -354
  2251. data/vendor/bundle/gems/rspec-expectations-3.4.0/lib/rspec/matchers/built_in/include.rb +0 -130
  2252. data/vendor/bundle/gems/rspec-expectations-3.4.0/lib/rspec/matchers/built_in/raise_error.rb +0 -228
  2253. data/vendor/bundle/gems/rspec-expectations-3.4.0/lib/rspec/matchers/built_in/respond_to.rb +0 -90
  2254. data/vendor/bundle/gems/rspec-expectations-3.4.0/lib/rspec/matchers/dsl.rb +0 -453
  2255. data/vendor/bundle/gems/rspec-expectations-3.4.0/lib/rspec/matchers/english_phrasing.rb +0 -42
  2256. data/vendor/bundle/gems/rspec-expectations-3.4.0/lib/rspec/matchers.rb +0 -1037
  2257. data/vendor/bundle/gems/rspec-mocks-3.4.1/Changelog.md +0 -991
  2258. data/vendor/bundle/gems/rspec-mocks-3.4.1/lib/rspec/mocks/any_instance/recorder.rb +0 -268
  2259. data/vendor/bundle/gems/rspec-mocks-3.4.1/lib/rspec/mocks/any_instance/stub_chain.rb +0 -46
  2260. data/vendor/bundle/gems/rspec-mocks-3.4.1/lib/rspec/mocks/any_instance/stub_chain_chain.rb +0 -27
  2261. data/vendor/bundle/gems/rspec-mocks-3.4.1/lib/rspec/mocks/error_generator.rb +0 -367
  2262. data/vendor/bundle/gems/rspec-mocks-3.4.1/lib/rspec/mocks/matchers/have_received.rb +0 -128
  2263. data/vendor/bundle/gems/rspec-mocks-3.4.1/lib/rspec/mocks/matchers/receive.rb +0 -130
  2264. data/vendor/bundle/gems/rspec-mocks-3.4.1/lib/rspec/mocks/matchers/receive_message_chain.rb +0 -80
  2265. data/vendor/bundle/gems/rspec-mocks-3.4.1/lib/rspec/mocks/matchers/receive_messages.rb +0 -75
  2266. data/vendor/bundle/gems/rspec-mocks-3.4.1/lib/rspec/mocks/message_expectation.rb +0 -717
  2267. data/vendor/bundle/gems/rspec-mocks-3.4.1/lib/rspec/mocks/method_reference.rb +0 -192
  2268. data/vendor/bundle/gems/rspec-mocks-3.4.1/lib/rspec/mocks/proxy.rb +0 -484
  2269. data/vendor/bundle/gems/rspec-mocks-3.4.1/lib/rspec/mocks/targets.rb +0 -97
  2270. data/vendor/bundle/gems/rspec-mocks-3.4.1/lib/rspec/mocks/version.rb +0 -9
  2271. data/vendor/bundle/gems/rspec-mocks-3.4.1/lib/rspec/mocks.rb +0 -126
  2272. data/vendor/bundle/gems/rspec-support-3.4.1/Changelog.md +0 -151
  2273. data/vendor/bundle/gems/rspec-support-3.4.1/README.md +0 -40
  2274. data/vendor/bundle/gems/rspec-support-3.4.1/lib/rspec/support/encoded_string.rb +0 -155
  2275. data/vendor/bundle/gems/rspec-support-3.4.1/lib/rspec/support/method_signature_verifier.rb +0 -290
  2276. data/vendor/bundle/gems/rspec-support-3.4.1/lib/rspec/support/object_formatter.rb +0 -108
  2277. data/vendor/bundle/gems/rspec-support-3.4.1/lib/rspec/support/spec/library_wide_checks.rb +0 -152
  2278. data/vendor/bundle/gems/rspec-support-3.4.1/lib/rspec/support/spec/shell_out.rb +0 -71
  2279. data/vendor/bundle/gems/rspec-support-3.4.1/lib/rspec/support/spec/with_isolated_directory.rb +0 -9
  2280. data/vendor/bundle/gems/rspec-support-3.4.1/lib/rspec/support/spec.rb +0 -81
  2281. data/vendor/bundle/gems/rspec-support-3.4.1/lib/rspec/support/version.rb +0 -7
  2282. data/vendor/bundle/gems/rspec-support-3.4.1/lib/rspec/support/version_checker.rb +0 -53
  2283. data/vendor/bundle/gems/sequel-4.35.0/CHANGELOG +0 -6264
  2284. data/vendor/bundle/gems/sequel-4.35.0/Rakefile +0 -164
  2285. data/vendor/bundle/gems/sequel-4.35.0/doc/association_basics.rdoc +0 -1810
  2286. data/vendor/bundle/gems/sequel-4.35.0/doc/migration.rdoc +0 -613
  2287. data/vendor/bundle/gems/sequel-4.35.0/doc/prepared_statements.rdoc +0 -139
  2288. data/vendor/bundle/gems/sequel-4.35.0/doc/release_notes/4.35.0.txt +0 -130
  2289. data/vendor/bundle/gems/sequel-4.35.0/doc/schema_modification.rdoc +0 -659
  2290. data/vendor/bundle/gems/sequel-4.35.0/lib/sequel/adapters/jdbc/h2.rb +0 -229
  2291. data/vendor/bundle/gems/sequel-4.35.0/lib/sequel/adapters/jdbc.rb +0 -817
  2292. data/vendor/bundle/gems/sequel-4.35.0/lib/sequel/adapters/mock.rb +0 -392
  2293. data/vendor/bundle/gems/sequel-4.35.0/lib/sequel/adapters/mysql.rb +0 -376
  2294. data/vendor/bundle/gems/sequel-4.35.0/lib/sequel/adapters/mysql2.rb +0 -206
  2295. data/vendor/bundle/gems/sequel-4.35.0/lib/sequel/adapters/oracle.rb +0 -418
  2296. data/vendor/bundle/gems/sequel-4.35.0/lib/sequel/adapters/postgres.rb +0 -879
  2297. data/vendor/bundle/gems/sequel-4.35.0/lib/sequel/adapters/shared/access.rb +0 -296
  2298. data/vendor/bundle/gems/sequel-4.35.0/lib/sequel/adapters/shared/mysql_prepared_statements.rb +0 -152
  2299. data/vendor/bundle/gems/sequel-4.35.0/lib/sequel/adapters/shared/oracle.rb +0 -560
  2300. data/vendor/bundle/gems/sequel-4.35.0/lib/sequel/adapters/shared/postgres.rb +0 -1770
  2301. data/vendor/bundle/gems/sequel-4.35.0/lib/sequel/adapters/shared/sqlite.rb +0 -761
  2302. data/vendor/bundle/gems/sequel-4.35.0/lib/sequel/adapters/swift.rb +0 -160
  2303. data/vendor/bundle/gems/sequel-4.35.0/lib/sequel/ast_transformer.rb +0 -202
  2304. data/vendor/bundle/gems/sequel-4.35.0/lib/sequel/connection_pool/sharded_single.rb +0 -110
  2305. data/vendor/bundle/gems/sequel-4.35.0/lib/sequel/connection_pool/sharded_threaded.rb +0 -337
  2306. data/vendor/bundle/gems/sequel-4.35.0/lib/sequel/connection_pool/single.rb +0 -52
  2307. data/vendor/bundle/gems/sequel-4.35.0/lib/sequel/connection_pool/threaded.rb +0 -282
  2308. data/vendor/bundle/gems/sequel-4.35.0/lib/sequel/connection_pool.rb +0 -119
  2309. data/vendor/bundle/gems/sequel-4.35.0/lib/sequel/database/schema_generator.rb +0 -556
  2310. data/vendor/bundle/gems/sequel-4.35.0/lib/sequel/database/schema_methods.rb +0 -1000
  2311. data/vendor/bundle/gems/sequel-4.35.0/lib/sequel/dataset/sql.rb +0 -1585
  2312. data/vendor/bundle/gems/sequel-4.35.0/lib/sequel/extensions/arbitrary_servers.rb +0 -114
  2313. data/vendor/bundle/gems/sequel-4.35.0/lib/sequel/extensions/connection_validator.rb +0 -114
  2314. data/vendor/bundle/gems/sequel-4.35.0/lib/sequel/extensions/constraint_validations.rb +0 -459
  2315. data/vendor/bundle/gems/sequel-4.35.0/lib/sequel/extensions/migration.rb +0 -756
  2316. data/vendor/bundle/gems/sequel-4.35.0/lib/sequel/model/associations.rb +0 -3290
  2317. data/vendor/bundle/gems/sequel-4.35.0/lib/sequel/model/base.rb +0 -2418
  2318. data/vendor/bundle/gems/sequel-4.35.0/lib/sequel/model.rb +0 -178
  2319. data/vendor/bundle/gems/sequel-4.35.0/lib/sequel/plugins/constraint_validations.rb +0 -231
  2320. data/vendor/bundle/gems/sequel-4.35.0/lib/sequel/plugins/validation_helpers.rb +0 -308
  2321. data/vendor/bundle/gems/sequel-4.35.0/lib/sequel/sql.rb +0 -1901
  2322. data/vendor/bundle/gems/sequel-4.35.0/lib/sequel/version.rb +0 -20
  2323. data/vendor/bundle/gems/sequel-4.35.0/spec/adapters/postgres_spec.rb +0 -3786
  2324. data/vendor/bundle/gems/sequel-4.35.0/spec/adapters/sqlite_spec.rb +0 -688
  2325. data/vendor/bundle/gems/sequel-4.35.0/spec/core/connection_pool_spec.rb +0 -1045
  2326. data/vendor/bundle/gems/sequel-4.35.0/spec/core/dataset_spec.rb +0 -5171
  2327. data/vendor/bundle/gems/sequel-4.35.0/spec/core/expression_filters_spec.rb +0 -1243
  2328. data/vendor/bundle/gems/sequel-4.35.0/spec/core/mock_adapter_spec.rb +0 -464
  2329. data/vendor/bundle/gems/sequel-4.35.0/spec/extensions/connection_validator_spec.rb +0 -120
  2330. data/vendor/bundle/gems/sequel-4.35.0/spec/extensions/constraint_validations_plugin_spec.rb +0 -274
  2331. data/vendor/bundle/gems/sequel-4.35.0/spec/extensions/constraint_validations_spec.rb +0 -325
  2332. data/vendor/bundle/gems/sequel-4.35.0/spec/extensions/migration_spec.rb +0 -728
  2333. data/vendor/bundle/gems/sequel-4.35.0/spec/extensions/pg_json_spec.rb +0 -218
  2334. data/vendor/bundle/gems/sequel-4.35.0/spec/extensions/validation_helpers_spec.rb +0 -552
  2335. data/vendor/bundle/gems/sequel-4.35.0/spec/integration/plugin_test.rb +0 -2262
  2336. data/vendor/bundle/gems/sequel-4.35.0/spec/integration/schema_test.rb +0 -815
  2337. data/vendor/bundle/gems/sequel-4.35.0/spec/model/association_reflection_spec.rb +0 -555
  2338. data/vendor/bundle/gems/sequel-4.35.0/spec/model/model_spec.rb +0 -1048
  2339. data/vendor/bundle/gems/sprockets-3.6.2/CHANGELOG.md +0 -277
  2340. data/vendor/bundle/gems/sprockets-3.6.2/lib/sprockets/coffee_script_template.rb +0 -6
  2341. data/vendor/bundle/gems/sprockets-3.6.2/lib/sprockets/eco_template.rb +0 -6
  2342. data/vendor/bundle/gems/sprockets-3.6.2/lib/sprockets/ejs_template.rb +0 -6
  2343. data/vendor/bundle/gems/sprockets-3.6.2/lib/sprockets/engines.rb +0 -81
  2344. data/vendor/bundle/gems/sprockets-3.6.2/lib/sprockets/erb_template.rb +0 -6
  2345. data/vendor/bundle/gems/sprockets-3.6.2/lib/sprockets/path_utils.rb +0 -284
  2346. data/vendor/bundle/gems/sprockets-3.6.2/lib/sprockets/processing.rb +0 -248
  2347. data/vendor/bundle/gems/sprockets-3.6.2/lib/sprockets/resolve.rb +0 -209
  2348. data/vendor/bundle/gems/sprockets-3.6.2/lib/sprockets/sass_cache_store.rb +0 -29
  2349. data/vendor/bundle/gems/sprockets-3.6.2/lib/sprockets/sass_template.rb +0 -7
  2350. data/vendor/bundle/gems/sprockets-3.6.2/lib/sprockets/uglifier_compressor.rb +0 -55
  2351. data/vendor/bundle/gems/sprockets-3.6.2/lib/sprockets/version.rb +0 -3
  2352. data/vendor/bundle/gems/sprockets-3.6.2/lib/sprockets.rb +0 -162
  2353. data/vendor/bundle/gems/sqlite3-1.3.11/ext/sqlite3/mkmf.log +0 -552
  2354. data/vendor/bundle/gems/test-unit-3.2.0/COPYING +0 -64
  2355. data/vendor/bundle/gems/test-unit-3.2.0/README.md +0 -101
  2356. data/vendor/bundle/gems/test-unit-3.2.0/doc/text/news.md +0 -1113
  2357. data/vendor/bundle/gems/test-unit-3.2.0/lib/test/unit/diff.rb +0 -746
  2358. data/vendor/bundle/gems/test-unit-3.2.0/lib/test/unit/testcase.rb +0 -811
  2359. data/vendor/bundle/gems/test-unit-3.2.0/lib/test/unit/version.rb +0 -5
  2360. data/vendor/bundle/gems/test-unit-3.2.0/test/test-test-case.rb +0 -1171
  2361. data/vendor/bundle/gems/tins-1.10.2/README.md +0 -70
  2362. data/vendor/bundle/gems/tins-1.10.2/VERSION +0 -1
  2363. data/vendor/bundle/gems/tins-1.10.2/lib/tins/version.rb +0 -8
  2364. data/vendor/bundle/gems/tins-1.10.2/lib/tins.rb +0 -57
  2365. data/vendor/bundle/gems/tins-1.10.2/tests/test_helper.rb +0 -11
  2366. data/vendor/bundle/gems/tins-1.10.2/tins.gemspec +0 -38
  2367. data/vendor/bundle/specifications/capybara-2.7.1.gemspec +0 -76
  2368. data/vendor/bundle/specifications/ffi-1.9.10.gemspec +0 -45
  2369. data/vendor/bundle/specifications/rspec-3.4.0.gemspec +0 -39
  2370. data/vendor/bundle/specifications/rspec-core-3.4.4.gemspec +0 -65
  2371. data/vendor/bundle/specifications/rspec-expectations-3.4.0.gemspec +0 -47
  2372. data/vendor/bundle/specifications/rspec-mocks-3.4.1.gemspec +0 -50
  2373. data/vendor/bundle/specifications/rspec-support-3.4.1.gemspec +0 -38
  2374. data/vendor/bundle/specifications/sequel-4.35.0.gemspec +0 -52
  2375. data/vendor/bundle/specifications/sprockets-3.6.2.gemspec +0 -78
  2376. data/vendor/bundle/specifications/test-unit-3.2.0.gemspec +0 -47
  2377. data/vendor/bundle/specifications/tins-1.10.2.gemspec +0 -39
@@ -0,0 +1,3292 @@
1
+ # frozen-string-literal: true
2
+
3
+ module Sequel
4
+ class Model
5
+ # Associations are used in order to specify relationships between model classes
6
+ # that reflect relations between tables in the database using foreign keys.
7
+ module Associations
8
+ # Map of association type symbols to association reflection classes.
9
+ ASSOCIATION_TYPES = {}
10
+
11
+ # Set an empty association reflection hash in the model
12
+ def self.apply(model)
13
+ model.instance_eval do
14
+ @association_reflections = {}
15
+ @autoreloading_associations = {}
16
+ @cache_associations = true
17
+ @default_association_options = {}
18
+ end
19
+ end
20
+
21
+ # AssociationReflection is a Hash subclass that keeps information on Sequel::Model associations. It
22
+ # provides methods to reduce internal code duplication. It should not
23
+ # be instantiated by the user.
24
+ class AssociationReflection < Hash
25
+ include Sequel::Inflections
26
+
27
+ # Name symbol for the _add internal association method
28
+ def _add_method
29
+ :"_add_#{singularize(self[:name])}"
30
+ end
31
+
32
+ # Name symbol for the _remove_all internal association method
33
+ def _remove_all_method
34
+ :"_remove_all_#{self[:name]}"
35
+ end
36
+
37
+ # Name symbol for the _remove internal association method
38
+ def _remove_method
39
+ :"_remove_#{singularize(self[:name])}"
40
+ end
41
+
42
+ # Name symbol for the _setter association method
43
+ def _setter_method
44
+ :"_#{self[:name]}="
45
+ end
46
+
47
+ # Name symbol for the add association method
48
+ def add_method
49
+ :"add_#{singularize(self[:name])}"
50
+ end
51
+
52
+ # Name symbol for association method, the same as the name of the association.
53
+ def association_method
54
+ self[:name]
55
+ end
56
+
57
+ # The class associated to the current model class via this association
58
+ def associated_class
59
+ cached_fetch(:class){constantize(self[:class_name])}
60
+ end
61
+
62
+ # The dataset associated via this association, with the non-instance specific
63
+ # changes already applied. This will be a joined dataset if the association
64
+ # requires joining tables.
65
+ def associated_dataset
66
+ cached_fetch(:_dataset){apply_dataset_changes(_associated_dataset)}
67
+ end
68
+
69
+ # Apply all non-instance specific changes to the given dataset and return it.
70
+ def apply_dataset_changes(ds)
71
+ ds.extend(AssociationDatasetMethods)
72
+ ds.association_reflection = self
73
+ self[:extend].each{|m| ds.extend(m)}
74
+ ds = ds.select(*select) if select
75
+ if c = self[:conditions]
76
+ ds = (c.is_a?(Array) && !Sequel.condition_specifier?(c)) ? ds.where(*c) : ds.where(c)
77
+ end
78
+ ds = ds.order(*self[:order]) if self[:order]
79
+ ds = ds.limit(*self[:limit]) if self[:limit]
80
+ ds = ds.limit(1) if limit_to_single_row?
81
+ ds = ds.eager(self[:eager]) if self[:eager]
82
+ ds = ds.distinct if self[:distinct]
83
+ ds
84
+ end
85
+
86
+ # Apply all non-instance specific changes and the eager_block option to the given
87
+ # dataset and return it.
88
+ def apply_eager_dataset_changes(ds)
89
+ ds = apply_dataset_changes(ds)
90
+ if block = self[:eager_block]
91
+ ds = block.call(ds)
92
+ end
93
+ ds
94
+ end
95
+
96
+ # Apply the eager graph limit strategy to the dataset to graph into the current dataset, or return
97
+ # the dataset unmodified if no SQL limit strategy is needed.
98
+ def apply_eager_graph_limit_strategy(strategy, ds)
99
+ case strategy
100
+ when :distinct_on
101
+ apply_distinct_on_eager_limit_strategy(ds.order_prepend(*self[:order]))
102
+ when :window_function
103
+ apply_window_function_eager_limit_strategy(ds.order_prepend(*self[:order])).select(*ds.columns)
104
+ else
105
+ ds
106
+ end
107
+ end
108
+
109
+ # Apply an eager limit strategy to the dataset, or return the dataset
110
+ # unmodified if it doesn't need an eager limit strategy.
111
+ def apply_eager_limit_strategy(ds, strategy=eager_limit_strategy, limit_and_offset=limit_and_offset())
112
+ case strategy
113
+ when :distinct_on
114
+ apply_distinct_on_eager_limit_strategy(ds)
115
+ when :window_function
116
+ apply_window_function_eager_limit_strategy(ds, limit_and_offset)
117
+ else
118
+ ds
119
+ end
120
+ end
121
+
122
+ # Use DISTINCT ON and ORDER BY clauses to limit the results to the first record with matching keys.
123
+ def apply_distinct_on_eager_limit_strategy(ds)
124
+ keys = predicate_key
125
+ ds.distinct(*keys).order_prepend(*keys)
126
+ end
127
+
128
+ # Use a window function to limit the results of the eager loading dataset.
129
+ def apply_window_function_eager_limit_strategy(ds, limit_and_offset=limit_and_offset())
130
+ rn = ds.row_number_column
131
+ limit, offset = limit_and_offset
132
+ ds = ds.unordered.select_append{|o| o.row_number{}.over(:partition=>predicate_key, :order=>ds.opts[:order]).as(rn)}.from_self
133
+ ds = if !returns_array?
134
+ ds.where(rn => offset ? offset+1 : 1)
135
+ elsif offset
136
+ offset += 1
137
+ if limit
138
+ ds.where(rn => (offset...(offset+limit)))
139
+ else
140
+ ds.where{SQL::Identifier.new(rn) >= offset}
141
+ end
142
+ else
143
+ ds.where{SQL::Identifier.new(rn) <= limit}
144
+ end
145
+ end
146
+
147
+ # If the ruby eager limit strategy is being used, slice the array using the slice
148
+ # range to return the object(s) at the correct offset/limit.
149
+ def apply_ruby_eager_limit_strategy(rows, limit_and_offset = limit_and_offset())
150
+ name = self[:name]
151
+ if returns_array?
152
+ range = slice_range(limit_and_offset)
153
+ rows.each{|o| o.associations[name] = o.associations[name][range] || []}
154
+ elsif sr = slice_range(limit_and_offset)
155
+ offset = sr.begin
156
+ rows.each{|o| o.associations[name] = o.associations[name][offset]}
157
+ end
158
+ end
159
+
160
+ # Whether the associations cache should use an array when storing the
161
+ # associated records during eager loading.
162
+ def assign_singular?
163
+ !returns_array?
164
+ end
165
+
166
+ # Whether this association can have associated objects, given the current
167
+ # object. Should be false if obj cannot have associated objects because
168
+ # the necessary key columns are NULL.
169
+ def can_have_associated_objects?(obj)
170
+ true
171
+ end
172
+
173
+ # Whether you are able to clone from the given association type to the current
174
+ # association type, true by default only if the types match.
175
+ def cloneable?(ref)
176
+ ref[:type] == self[:type]
177
+ end
178
+
179
+ # Name symbol for the dataset association method
180
+ def dataset_method
181
+ :"#{self[:name]}_dataset"
182
+ end
183
+
184
+ # Whether the dataset needs a primary key to function, true by default.
185
+ def dataset_need_primary_key?
186
+ true
187
+ end
188
+
189
+ # Return the symbol used for the row number column if the window function
190
+ # eager limit strategy is being used, or nil otherwise.
191
+ def delete_row_number_column(ds=associated_dataset)
192
+ if eager_limit_strategy == :window_function
193
+ ds.row_number_column
194
+ end
195
+ end
196
+
197
+ # Return an dataset that will load the appropriate associated objects for
198
+ # the given object using this association.
199
+ def association_dataset_for(object)
200
+ associated_dataset.where(predicate_keys.zip(predicate_key_values(object)))
201
+ end
202
+
203
+ ASSOCIATION_DATASET_PROC = proc{|r| r.association_dataset_for(self)}
204
+ # Proc used to create the association dataset method.
205
+ def association_dataset_proc
206
+ ASSOCIATION_DATASET_PROC
207
+ end
208
+
209
+ # The eager_graph limit strategy to use for this dataset
210
+ def eager_graph_limit_strategy(strategy)
211
+ if self[:limit] || !returns_array?
212
+ strategy = strategy[self[:name]] if strategy.is_a?(Hash)
213
+ case strategy
214
+ when true
215
+ true_eager_graph_limit_strategy
216
+ when Symbol
217
+ strategy
218
+ else
219
+ if returns_array? || offset
220
+ :ruby
221
+ end
222
+ end
223
+ end
224
+ end
225
+
226
+ # The eager limit strategy to use for this dataset.
227
+ def eager_limit_strategy
228
+ cached_fetch(:_eager_limit_strategy) do
229
+ if self[:limit] || !returns_array?
230
+ case s = cached_fetch(:eager_limit_strategy){default_eager_limit_strategy}
231
+ when true
232
+ true_eager_limit_strategy
233
+ else
234
+ s
235
+ end
236
+ end
237
+ end
238
+ end
239
+
240
+ # Eager load the associated objects using the hash of eager options,
241
+ # yielding each row to the block.
242
+ def eager_load_results(eo, &block)
243
+ rows = eo[:rows]
244
+ initialize_association_cache(rows) unless eo[:initialize_rows] == false
245
+ if eo[:id_map]
246
+ ids = eo[:id_map].keys
247
+ return ids if ids.empty?
248
+ end
249
+ strategy = eager_limit_strategy
250
+ cascade = eo[:associations]
251
+ eager_limit = nil
252
+
253
+ if eo[:eager_block] || eo[:loader] == false
254
+ ds = eager_loading_dataset(eo)
255
+
256
+ strategy = ds.opts[:eager_limit_strategy] || strategy
257
+
258
+ eager_limit =
259
+ if el = ds.opts[:eager_limit]
260
+ strategy ||= true_eager_graph_limit_strategy
261
+ if el.is_a?(Array)
262
+ el
263
+ else
264
+ [el, nil]
265
+ end
266
+ else
267
+ limit_and_offset
268
+ end
269
+
270
+ strategy = true_eager_graph_limit_strategy if strategy == :union
271
+ # Correlated subqueries are not supported for regular eager loading
272
+ strategy = :ruby if strategy == :correlated_subquery
273
+ objects = apply_eager_limit_strategy(ds, strategy, eager_limit).all
274
+ elsif strategy == :union
275
+ objects = []
276
+ ds = associated_dataset
277
+ loader = union_eager_loader
278
+ joiner = " UNION ALL "
279
+ ids.each_slice(subqueries_per_union).each do |slice|
280
+ objects.concat(ds.with_sql(slice.map{|k| loader.sql(*k)}.join(joiner)).to_a)
281
+ end
282
+ ds = ds.eager(cascade) if cascade
283
+ ds.send(:post_load, objects)
284
+ else
285
+ loader = placeholder_eager_loader
286
+ loader = loader.with_dataset{|dataset| dataset.eager(cascade)} if cascade
287
+ objects = loader.all(ids)
288
+ end
289
+
290
+ objects.each(&block)
291
+ if strategy == :ruby
292
+ apply_ruby_eager_limit_strategy(rows, eager_limit || limit_and_offset)
293
+ end
294
+ end
295
+
296
+ # The key to use for the key hash when eager loading
297
+ def eager_loader_key
298
+ self[:eager_loader_key]
299
+ end
300
+
301
+ # By default associations do not need to select a key in an associated table
302
+ # to eagerly load.
303
+ def eager_loading_use_associated_key?
304
+ false
305
+ end
306
+
307
+ # Alias of predicate_key, only for backwards compatibility.
308
+ def eager_loading_predicate_key
309
+ predicate_key
310
+ end
311
+
312
+ # Whether to eagerly graph a lazy dataset, true by default. If this
313
+ # is false, the association won't respect the :eager_graph option
314
+ # when loading the association for a single record.
315
+ def eager_graph_lazy_dataset?
316
+ true
317
+ end
318
+
319
+ # Whether additional conditions should be added when using the filter
320
+ # by associations support.
321
+ def filter_by_associations_add_conditions?
322
+ self[:conditions] || self[:eager_block] || self[:limit]
323
+ end
324
+
325
+ # The expression to use for the additional conditions to be added for
326
+ # the filter by association support, when the association itself is
327
+ # filtered. Works by using a subquery to test that the objects passed
328
+ # also meet the association filter criteria.
329
+ def filter_by_associations_conditions_expression(obj)
330
+ ds = filter_by_associations_conditions_dataset.where(filter_by_associations_conditions_subquery_conditions(obj))
331
+ {filter_by_associations_conditions_key=>ds}
332
+ end
333
+
334
+ # Whether to handle silent modification failure when adding/removing
335
+ # associated records, false by default.
336
+ def handle_silent_modification_failure?
337
+ false
338
+ end
339
+
340
+ # Initialize the associations cache for the current association for the given objects.
341
+ def initialize_association_cache(objects)
342
+ name = self[:name]
343
+ if assign_singular?
344
+ objects.each{|object| object.associations[name] = nil}
345
+ else
346
+ objects.each{|object| object.associations[name] = []}
347
+ end
348
+ end
349
+
350
+ # The limit and offset for this association (returned as a two element array).
351
+ def limit_and_offset
352
+ if (v = self[:limit]).is_a?(Array)
353
+ v
354
+ else
355
+ [v, nil]
356
+ end
357
+ end
358
+
359
+ # Whether the associated object needs a primary key to be added/removed,
360
+ # false by default.
361
+ def need_associated_primary_key?
362
+ false
363
+ end
364
+
365
+ # A placeholder literalizer that can be used to lazily load the association. If
366
+ # one can't be used, returns nil.
367
+ def placeholder_loader
368
+ if use_placeholder_loader?
369
+ cached_fetch(:placeholder_loader) do
370
+ Sequel::Dataset::PlaceholderLiteralizer.loader(associated_dataset) do |pl, ds|
371
+ ds.where(*predicate_keys.map{|k| SQL::BooleanExpression.new(:'=', k, pl.arg)})
372
+ end
373
+ end
374
+ end
375
+ end
376
+
377
+ # The keys to use for loading of the regular dataset, as an array.
378
+ def predicate_keys
379
+ cached_fetch(:predicate_keys){Array(predicate_key)}
380
+ end
381
+
382
+ # The values that predicate_keys should match for objects to be associated.
383
+ def predicate_key_values(object)
384
+ predicate_key_methods.map{|k| object.get_column_value(k)}
385
+ end
386
+
387
+ # Qualify +col+ with the given table name. If +col+ is an array of columns,
388
+ # return an array of qualified columns. Only qualifies Symbols and SQL::Identifier
389
+ # values, other values are not modified.
390
+ def qualify(table, col)
391
+ transform(col) do |k|
392
+ case k
393
+ when Symbol, SQL::Identifier
394
+ SQL::QualifiedIdentifier.new(table, k)
395
+ else
396
+ Sequel::Qualifier.new(self[:model].dataset, table).transform(k)
397
+ end
398
+ end
399
+ end
400
+
401
+ # Qualify col with the associated model's table name.
402
+ def qualify_assoc(col)
403
+ qualify(associated_class.table_name, col)
404
+ end
405
+
406
+ # Qualify col with the current model's table name.
407
+ def qualify_cur(col)
408
+ qualify(self[:model].table_name, col)
409
+ end
410
+
411
+ # Returns the reciprocal association variable, if one exists. The reciprocal
412
+ # association is the association in the associated class that is the opposite
413
+ # of the current association. For example, Album.many_to_one :artist and
414
+ # Artist.one_to_many :albums are reciprocal associations. This information is
415
+ # to populate reciprocal associations. For example, when you do this_artist.add_album(album)
416
+ # it sets album.artist to this_artist.
417
+ def reciprocal
418
+ cached_fetch(:reciprocal) do
419
+ possible_recips = []
420
+
421
+ associated_class.all_association_reflections.each do |assoc_reflect|
422
+ if reciprocal_association?(assoc_reflect)
423
+ possible_recips << assoc_reflect
424
+ end
425
+ end
426
+
427
+ if possible_recips.length == 1
428
+ cached_set(:reciprocal_type, possible_recips.first[:type]) if ambiguous_reciprocal_type?
429
+ possible_recips.first[:name]
430
+ end
431
+ end
432
+ end
433
+
434
+ # Whether the reciprocal of this association returns an array of objects instead of a single object,
435
+ # true by default.
436
+ def reciprocal_array?
437
+ true
438
+ end
439
+
440
+ # Name symbol for the remove_all_ association method
441
+ def remove_all_method
442
+ :"remove_all_#{self[:name]}"
443
+ end
444
+
445
+ # Whether associated objects need to be removed from the association before
446
+ # being destroyed in order to preserve referential integrity.
447
+ def remove_before_destroy?
448
+ true
449
+ end
450
+
451
+ # Name symbol for the remove_ association method
452
+ def remove_method
453
+ :"remove_#{singularize(self[:name])}"
454
+ end
455
+
456
+ # Whether to check that an object to be disassociated is already associated to this object, false by default.
457
+ def remove_should_check_existing?
458
+ false
459
+ end
460
+
461
+ # Whether this association returns an array of objects instead of a single object,
462
+ # true by default.
463
+ def returns_array?
464
+ true
465
+ end
466
+
467
+ # The columns to select when loading the association.
468
+ def select
469
+ self[:select]
470
+ end
471
+
472
+ # Whether to set the reciprocal association to self when loading associated
473
+ # records, false by default.
474
+ def set_reciprocal_to_self?
475
+ false
476
+ end
477
+
478
+ # Name symbol for the setter association method
479
+ def setter_method
480
+ :"#{self[:name]}="
481
+ end
482
+
483
+ # The range used for slicing when using the :ruby eager limit strategy.
484
+ def slice_range(limit_and_offset = limit_and_offset())
485
+ limit, offset = limit_and_offset
486
+ if limit || offset
487
+ (offset||0)..(limit ? (offset||0)+limit-1 : -1)
488
+ end
489
+ end
490
+
491
+ private
492
+
493
+ # On non-GVL rubies, assume the need to synchronize access. Store the key
494
+ # in a special sub-hash that always uses this method to synchronize access.
495
+ def cached_fetch(key)
496
+ fetch(key) do
497
+ return yield unless h = self[:cache]
498
+ Sequel.synchronize{return h[key] if h.has_key?(key)}
499
+ value = yield
500
+ Sequel.synchronize{h[key] = value}
501
+ end
502
+ end
503
+
504
+ # Cache the value at the given key, synchronizing access.
505
+ def cached_set(key, value)
506
+ return unless h = self[:cache]
507
+ Sequel.synchronize{h[key] = value}
508
+ end
509
+
510
+ # The base dataset used for the association, before any order/conditions
511
+ # options have been applied.
512
+ def _associated_dataset
513
+ associated_class.dataset.clone
514
+ end
515
+
516
+ # Whether for the reciprocal type for the given association can not be
517
+ # known in advantage, false by default.
518
+ def ambiguous_reciprocal_type?
519
+ false
520
+ end
521
+
522
+ # Apply a limit strategy to the given dataset so that filter by
523
+ # associations works with a limited dataset.
524
+ def apply_filter_by_associations_limit_strategy(ds)
525
+ case filter_by_associations_limit_strategy
526
+ when :distinct_on
527
+ apply_filter_by_associations_distinct_on_limit_strategy(ds)
528
+ when :window_function
529
+ apply_filter_by_associations_window_function_limit_strategy(ds)
530
+ else
531
+ ds
532
+ end
533
+ end
534
+
535
+ # Apply a distinct on eager limit strategy using IN with a subquery
536
+ # that uses DISTINCT ON to ensure only the first matching record for
537
+ # each key is included.
538
+ def apply_filter_by_associations_distinct_on_limit_strategy(ds)
539
+ k = filter_by_associations_limit_key
540
+ ds.where(k=>apply_distinct_on_eager_limit_strategy(associated_eager_dataset.select(*k)))
541
+ end
542
+
543
+ # Apply a distinct on eager limit strategy using IN with a subquery
544
+ # that uses a filter on the row_number window function to ensure
545
+ # that only rows inside the limit are returned.
546
+ def apply_filter_by_associations_window_function_limit_strategy(ds)
547
+ ds.where(filter_by_associations_limit_key=>apply_window_function_eager_limit_strategy(associated_eager_dataset.select(*filter_by_associations_limit_alias_key)).select(*filter_by_associations_limit_aliases))
548
+ end
549
+
550
+ # The associated_dataset with the eager_block callback already applied.
551
+ def associated_eager_dataset
552
+ cached_fetch(:associated_eager_dataset) do
553
+ ds = associated_dataset.unlimited
554
+ if block = self[:eager_block]
555
+ ds = block.call(ds)
556
+ end
557
+ ds
558
+ end
559
+ end
560
+
561
+ # The dataset to use for eager loading associated objects for multiple current objects,
562
+ # given the hash passed to the eager loader.
563
+ def eager_loading_dataset(eo=OPTS)
564
+ ds = eo[:dataset] || associated_eager_dataset
565
+ if id_map = eo[:id_map]
566
+ ds = ds.where(eager_loading_predicate_condition(id_map.keys))
567
+ end
568
+ if associations = eo[:associations]
569
+ ds = ds.eager(associations)
570
+ end
571
+ if block = eo[:eager_block]
572
+ ds = block.call(ds)
573
+ end
574
+ if eager_loading_use_associated_key?
575
+ ds = ds.select_append(*associated_key_array)
576
+ end
577
+ if self[:eager_graph]
578
+ raise(Error, "cannot eagerly load a #{self[:type]} association that uses :eager_graph") if eager_loading_use_associated_key?
579
+ ds = ds.eager_graph(self[:eager_graph])
580
+ end
581
+ ds
582
+ end
583
+
584
+ # The default eager limit strategy to use for this association
585
+ def default_eager_limit_strategy
586
+ self[:model].default_eager_limit_strategy || :ruby
587
+ end
588
+
589
+ # The predicate condition to use for the eager_loader.
590
+ def eager_loading_predicate_condition(keys)
591
+ {predicate_key=>keys}
592
+ end
593
+
594
+ # Add conditions to the dataset to not include NULL values for
595
+ # the associated keys, and select those keys.
596
+ def filter_by_associations_add_conditions_dataset_filter(ds)
597
+ k = filter_by_associations_conditions_associated_keys
598
+ ds.select(*k).where(Sequel.negate(k.zip([])))
599
+ end
600
+
601
+ # The conditions to add to the filter by associations conditions
602
+ # subquery to restrict it to to the object(s) that was used as the
603
+ # filter value.
604
+ def filter_by_associations_conditions_subquery_conditions(obj)
605
+ key = qualify(associated_class.table_name, associated_class.primary_key)
606
+ case obj
607
+ when Array
608
+ {key=>obj.map(&:pk)}
609
+ when Sequel::Dataset
610
+ {key=>obj.select(*Array(qualify(associated_class.table_name, associated_class.primary_key)))}
611
+ else
612
+ Array(key).zip(Array(obj.pk))
613
+ end
614
+ end
615
+
616
+ # The base dataset to use for the filter by associations conditions
617
+ # subquery, regardless of the objects that are passed in as filter
618
+ # values.
619
+ def filter_by_associations_conditions_dataset
620
+ cached_fetch(:filter_by_associations_conditions_dataset) do
621
+ ds = associated_eager_dataset.unordered
622
+ ds = filter_by_associations_add_conditions_dataset_filter(ds)
623
+ ds = apply_filter_by_associations_limit_strategy(ds)
624
+ ds
625
+ end
626
+ end
627
+
628
+ # The strategy to use to filter by a limited association
629
+ def filter_by_associations_limit_strategy
630
+ v = fetch(:filter_limit_strategy, self[:eager_limit_strategy])
631
+ if v || self[:limit] || !returns_array?
632
+ case v ||= self[:model].default_eager_limit_strategy
633
+ when :union, :ruby
634
+ # Can't use a union or ruby-based strategy for filtering by associations, switch to default eager graph limit
635
+ # strategy.
636
+ true_eager_graph_limit_strategy
637
+ when Symbol
638
+ v
639
+ when true
640
+ true_eager_graph_limit_strategy
641
+ end
642
+ end
643
+ end
644
+
645
+ # Whether to limit the associated dataset to a single row.
646
+ def limit_to_single_row?
647
+ !returns_array?
648
+ end
649
+
650
+ # Any offset to use for this association (or nil if there is no offset).
651
+ def offset
652
+ limit_and_offset.last
653
+ end
654
+
655
+ # A placeholder literalizer used to speed up eager loading.
656
+ def placeholder_eager_loader
657
+ cached_fetch(:placeholder_eager_loader) do
658
+ Sequel::Dataset::PlaceholderLiteralizer.loader(associated_dataset) do |pl, ds|
659
+ apply_eager_limit_strategy(eager_loading_dataset.where(predicate_key=>pl.arg), eager_limit_strategy)
660
+ end
661
+ end
662
+ end
663
+
664
+ # The reciprocal type as an array, should be overridden in reflection subclasses that
665
+ # have ambiguous reciprocal types.
666
+ def possible_reciprocal_types
667
+ [reciprocal_type]
668
+ end
669
+
670
+ # Whether the given association reflection is possible reciprocal
671
+ # association for the current association reflection.
672
+ def reciprocal_association?(assoc_reflect)
673
+ possible_reciprocal_types.include?(assoc_reflect[:type]) &&
674
+ (begin; assoc_reflect.associated_class; rescue NameError; end) == self[:model] &&
675
+ assoc_reflect[:conditions].nil? &&
676
+ assoc_reflect[:block].nil?
677
+ end
678
+
679
+ # The number of subqueries to use in each union query, used to eagerly load
680
+ # limited associations. Defaults to 40, the optimal number depends on the
681
+ # latency between the database and the application.
682
+ def subqueries_per_union
683
+ self[:subqueries_per_union] || 40
684
+ end
685
+
686
+ # If +s+ is an array, map +s+ over the block. Otherwise, just call the
687
+ # block with +s+.
688
+ def transform(s)
689
+ s.is_a?(Array) ? s.map(&Proc.new) : (yield s)
690
+ end
691
+
692
+ # What eager limit strategy should be used when true is given as the value,
693
+ # defaults to UNION as that is the fastest strategy if the appropriate keys are indexed.
694
+ def true_eager_limit_strategy
695
+ if self[:eager_graph] || (offset && !associated_dataset.supports_offsets_in_correlated_subqueries?)
696
+ # An SQL-based approach won't work if you are also eager graphing,
697
+ # so use a ruby based approach in that case.
698
+ :ruby
699
+ else
700
+ :union
701
+ end
702
+ end
703
+
704
+ # The eager_graph limit strategy used when true is given as the value, choosing the
705
+ # best strategy based on what the database supports.
706
+ def true_eager_graph_limit_strategy
707
+ if associated_class.dataset.supports_window_functions?
708
+ :window_function
709
+ else
710
+ :ruby
711
+ end
712
+ end
713
+
714
+ # A placeholder literalizer used to speed up the creation of union queries when eager
715
+ # loading a limited association.
716
+ def union_eager_loader
717
+ cached_fetch(:union_eager_loader) do
718
+ Sequel::Dataset::PlaceholderLiteralizer.loader(associated_dataset) do |pl, ds|
719
+ ds = self[:eager_block].call(ds) if self[:eager_block]
720
+ keys = predicate_keys
721
+ ds = ds.where(keys.map{pl.arg}.zip(keys))
722
+ if eager_loading_use_associated_key?
723
+ ds = ds.select_append(*associated_key_array)
724
+ end
725
+ ds.from_self
726
+ end
727
+ end
728
+ end
729
+
730
+ # Whether the placeholder loader can be used to load the association.
731
+ def use_placeholder_loader?
732
+ !self[:instance_specific] && !self[:eager_graph]
733
+ end
734
+ end
735
+
736
+ class ManyToOneAssociationReflection < AssociationReflection
737
+ ASSOCIATION_TYPES[:many_to_one] = self
738
+
739
+ # many_to_one associations can only have associated objects if none of
740
+ # the :keys options have a nil value.
741
+ def can_have_associated_objects?(obj)
742
+ !self[:keys].any?{|k| obj.get_column_value(k).nil?}
743
+ end
744
+
745
+ # Whether the dataset needs a primary key to function, false for many_to_one associations.
746
+ def dataset_need_primary_key?
747
+ false
748
+ end
749
+
750
+ # Default foreign key name symbol for foreign key in current model's table that points to
751
+ # the given association's table's primary key.
752
+ def default_key
753
+ :"#{self[:name]}_id"
754
+ end
755
+
756
+ # Whether to eagerly graph a lazy dataset, true for many_to_one associations
757
+ # only if the key is nil.
758
+ def eager_graph_lazy_dataset?
759
+ self[:key].nil?
760
+ end
761
+
762
+ # many_to_one associations don't need an eager_graph limit strategy
763
+ def eager_graph_limit_strategy(_)
764
+ nil
765
+ end
766
+
767
+ # many_to_one associations don't need an eager limit strategy
768
+ def eager_limit_strategy
769
+ nil
770
+ end
771
+
772
+ # many_to_one associations don't need a filter by associations limit strategy
773
+ def filter_by_associations_limit_strategy
774
+ nil
775
+ end
776
+
777
+ # The expression to use on the left hand side of the IN lookup when eager loading
778
+ def predicate_key
779
+ cached_fetch(:predicate_key){qualified_primary_key}
780
+ end
781
+
782
+ # The column(s) in the associated table that the key in the current table references (either a symbol or an array).
783
+ def primary_key
784
+ cached_fetch(:primary_key){associated_class.primary_key || raise(Error, "no primary key specified for #{associated_class.inspect}")}
785
+ end
786
+
787
+ # The columns in the associated table that the key in the current table references (always an array).
788
+ def primary_keys
789
+ cached_fetch(:primary_keys){Array(primary_key)}
790
+ end
791
+ alias associated_object_keys primary_keys
792
+
793
+ # The method symbol or array of method symbols to call on the associated object
794
+ # to get the value to use for the foreign keys.
795
+ def primary_key_method
796
+ cached_fetch(:primary_key_method){primary_key}
797
+ end
798
+
799
+ # The array of method symbols to call on the associated object
800
+ # to get the value to use for the foreign keys.
801
+ def primary_key_methods
802
+ cached_fetch(:primary_key_methods){Array(primary_key_method)}
803
+ end
804
+
805
+ # #primary_key qualified by the associated table
806
+ def qualified_primary_key
807
+ cached_fetch(:qualified_primary_key){self[:qualify] == false ? primary_key : qualify_assoc(primary_key)}
808
+ end
809
+
810
+ # True only if the reciprocal is a one_to_many association.
811
+ def reciprocal_array?
812
+ !set_reciprocal_to_self?
813
+ end
814
+
815
+ # Whether this association returns an array of objects instead of a single object,
816
+ # false for a many_to_one association.
817
+ def returns_array?
818
+ false
819
+ end
820
+
821
+ # True only if the reciprocal is a one_to_one association.
822
+ def set_reciprocal_to_self?
823
+ reciprocal
824
+ reciprocal_type == :one_to_one
825
+ end
826
+
827
+ private
828
+
829
+ # Reciprocals of many_to_one associations could be either one_to_many or one_to_one,
830
+ # and which is not known in advance.
831
+ def ambiguous_reciprocal_type?
832
+ true
833
+ end
834
+
835
+ def filter_by_associations_conditions_associated_keys
836
+ qualify(associated_class.table_name, primary_keys)
837
+ end
838
+
839
+ def filter_by_associations_conditions_key
840
+ qualify(self[:model].table_name, self[:key_column])
841
+ end
842
+
843
+ # many_to_one associations do not need to be limited to a single row if they
844
+ # explicitly do not have a key.
845
+ def limit_to_single_row?
846
+ super && self[:key]
847
+ end
848
+
849
+ def predicate_key_methods
850
+ self[:keys]
851
+ end
852
+
853
+ # The reciprocal type of a many_to_one association is either
854
+ # a one_to_many or a one_to_one association.
855
+ def possible_reciprocal_types
856
+ [:one_to_many, :one_to_one]
857
+ end
858
+
859
+ # Whether the given association reflection is possible reciprocal
860
+ def reciprocal_association?(assoc_reflect)
861
+ super && self[:keys] == assoc_reflect[:keys] && primary_key == assoc_reflect.primary_key
862
+ end
863
+
864
+ # The reciprocal type of a many_to_one association is either
865
+ # a one_to_many or a one_to_one association, look in the associated class
866
+ # to try to figure out which.
867
+ def reciprocal_type
868
+ cached_fetch(:reciprocal_type) do
869
+ possible_recips = []
870
+
871
+ associated_class.all_association_reflections.each do |assoc_reflect|
872
+ if reciprocal_association?(assoc_reflect)
873
+ possible_recips << assoc_reflect
874
+ end
875
+ end
876
+
877
+ if possible_recips.length == 1
878
+ possible_recips.first[:type]
879
+ else
880
+ possible_reciprocal_types
881
+ end
882
+ end
883
+ end
884
+ end
885
+
886
+ class OneToManyAssociationReflection < AssociationReflection
887
+ ASSOCIATION_TYPES[:one_to_many] = self
888
+
889
+ # Support a correlated subquery limit strategy when using eager_graph.
890
+ def apply_eager_graph_limit_strategy(strategy, ds)
891
+ case strategy
892
+ when :correlated_subquery
893
+ apply_correlated_subquery_limit_strategy(ds)
894
+ else
895
+ super
896
+ end
897
+ end
898
+
899
+ # The keys in the associated model's table related to this association
900
+ def associated_object_keys
901
+ self[:keys]
902
+ end
903
+
904
+ # one_to_many associations can only have associated objects if none of
905
+ # the :keys options have a nil value.
906
+ def can_have_associated_objects?(obj)
907
+ !self[:primary_keys].any?{|k| obj.get_column_value(k).nil?}
908
+ end
909
+
910
+ # one_to_many and one_to_one associations can be clones
911
+ def cloneable?(ref)
912
+ ref[:type] == :one_to_many || ref[:type] == :one_to_one
913
+ end
914
+
915
+ # Default foreign key name symbol for key in associated table that points to
916
+ # current table's primary key.
917
+ def default_key
918
+ :"#{underscore(demodulize(self[:model].name))}_id"
919
+ end
920
+
921
+ # Handle silent failure of add/remove methods if raise_on_save_failure is false.
922
+ def handle_silent_modification_failure?
923
+ self[:raise_on_save_failure] == false
924
+ end
925
+
926
+ # The hash key to use for the eager loading predicate (left side of IN (1, 2, 3))
927
+ def predicate_key
928
+ cached_fetch(:predicate_key){qualify_assoc(self[:key])}
929
+ end
930
+ alias qualified_key predicate_key
931
+
932
+ # The column in the current table that the key in the associated table references.
933
+ def primary_key
934
+ self[:primary_key]
935
+ end
936
+
937
+ # #primary_key qualified by the current table
938
+ def qualified_primary_key
939
+ cached_fetch(:qualified_primary_key){qualify_cur(primary_key)}
940
+ end
941
+
942
+ # Whether the reciprocal of this association returns an array of objects instead of a single object,
943
+ # false for a one_to_many association.
944
+ def reciprocal_array?
945
+ false
946
+ end
947
+
948
+ # Destroying one_to_many associated objects automatically deletes the foreign key.
949
+ def remove_before_destroy?
950
+ false
951
+ end
952
+
953
+ # The one_to_many association needs to check that an object to be removed already is associated.
954
+ def remove_should_check_existing?
955
+ true
956
+ end
957
+
958
+ # One to many associations set the reciprocal to self when loading associated records.
959
+ def set_reciprocal_to_self?
960
+ true
961
+ end
962
+
963
+ private
964
+
965
+ # Use a correlated subquery to limit the dataset. Note that this will not
966
+ # work correctly if the associated dataset uses qualified identifers in the WHERE clause,
967
+ # as they would reference the containing query instead of the subquery.
968
+ def apply_correlated_subquery_limit_strategy(ds)
969
+ table = ds.first_source_table
970
+ table_alias = ds.first_source_alias
971
+ primary_key = associated_class.primary_key
972
+ key = self[:key]
973
+ cs_alias = :t1
974
+ cs = associated_dataset.
975
+ from(Sequel.as(table, :t1)).
976
+ select(*qualify(cs_alias, primary_key)).
977
+ where(Array(qualify(cs_alias, key)).zip(Array(qualify(table_alias, key)))).
978
+ limit(*limit_and_offset)
979
+ ds.where(qualify(table_alias, primary_key)=>cs)
980
+ end
981
+
982
+ # Support correlated subquery strategy when filtering by limited associations.
983
+ def apply_filter_by_associations_limit_strategy(ds)
984
+ case filter_by_associations_limit_strategy
985
+ when :correlated_subquery
986
+ apply_correlated_subquery_limit_strategy(ds)
987
+ else
988
+ super
989
+ end
990
+ end
991
+
992
+ def filter_by_associations_conditions_associated_keys
993
+ qualify(associated_class.table_name, self[:keys])
994
+ end
995
+
996
+ def filter_by_associations_conditions_key
997
+ qualify(self[:model].table_name, self[:primary_key_column])
998
+ end
999
+
1000
+ def filter_by_associations_limit_alias_key
1001
+ Array(filter_by_associations_limit_key)
1002
+ end
1003
+
1004
+ def filter_by_associations_limit_aliases
1005
+ filter_by_associations_limit_alias_key.map(&:column)
1006
+ end
1007
+
1008
+ def filter_by_associations_limit_key
1009
+ qualify(associated_class.table_name, associated_class.primary_key)
1010
+ end
1011
+
1012
+ def predicate_key_methods
1013
+ self[:primary_keys]
1014
+ end
1015
+
1016
+ def reciprocal_association?(assoc_reflect)
1017
+ super && self[:keys] == assoc_reflect[:keys] && primary_key == assoc_reflect.primary_key
1018
+ end
1019
+
1020
+ # The reciprocal type of a one_to_many association is a many_to_one association.
1021
+ def reciprocal_type
1022
+ :many_to_one
1023
+ end
1024
+
1025
+ # Support automatic use of correlated subqueries if :ruby option is best available option,
1026
+ # MySQL is not being used, and either the associated class has a non-composite primary key
1027
+ # or the database supports multiple columns in IN.
1028
+ def true_eager_graph_limit_strategy
1029
+ r = super
1030
+ ds = associated_dataset
1031
+ if r == :ruby && ds.supports_limits_in_correlated_subqueries? && (Array(associated_class.primary_key).length == 1 || ds.supports_multiple_column_in?) && (!offset || ds.supports_offsets_in_correlated_subqueries?)
1032
+ :correlated_subquery
1033
+ else
1034
+ r
1035
+ end
1036
+ end
1037
+ end
1038
+
1039
+ # Methods that turn an association that returns multiple objects into an association that
1040
+ # returns a single object.
1041
+ module SingularAssociationReflection
1042
+ # Singular associations do not assign singular if they are using the ruby eager limit strategy
1043
+ # and have a slice range, since they need to store the array of associated objects in order to
1044
+ # pick the correct one with an offset.
1045
+ def assign_singular?
1046
+ super && (eager_limit_strategy != :ruby || !slice_range)
1047
+ end
1048
+
1049
+ # Add conditions when filtering by singular associations with orders, since the
1050
+ # underlying relationship is probably not one-to-one.
1051
+ def filter_by_associations_add_conditions?
1052
+ super || self[:order] || self[:eager_limit_strategy] || self[:filter_limit_strategy]
1053
+ end
1054
+
1055
+ # Make sure singular associations always have 1 as the limit
1056
+ def limit_and_offset
1057
+ r = super
1058
+ if r.first == 1
1059
+ r
1060
+ else
1061
+ [1, r[1]]
1062
+ end
1063
+ end
1064
+
1065
+ # Singular associations always return a single object, not an array.
1066
+ def returns_array?
1067
+ false
1068
+ end
1069
+
1070
+ private
1071
+
1072
+ # Only use a eager limit strategy by default if there is an offset or an order.
1073
+ def default_eager_limit_strategy
1074
+ super if self[:order] || offset
1075
+ end
1076
+
1077
+ # Use a strategy for filtering by associations if there is an order or an offset,
1078
+ # or a specific limiting strategy has been specified.
1079
+ def filter_by_associations_limit_strategy
1080
+ super if self[:order] || offset || self[:eager_limit_strategy] || self[:filter_limit_strategy]
1081
+ end
1082
+
1083
+ # Use the DISTINCT ON eager limit strategy for true if the database supports it.
1084
+ def true_eager_graph_limit_strategy
1085
+ if associated_class.dataset.supports_ordered_distinct_on? && !offset
1086
+ :distinct_on
1087
+ else
1088
+ super
1089
+ end
1090
+ end
1091
+ end
1092
+
1093
+ class OneToOneAssociationReflection < OneToManyAssociationReflection
1094
+ ASSOCIATION_TYPES[:one_to_one] = self
1095
+ include SingularAssociationReflection
1096
+ end
1097
+
1098
+ class ManyToManyAssociationReflection < AssociationReflection
1099
+ ASSOCIATION_TYPES[:many_to_many] = self
1100
+
1101
+ # The alias to use for the associated key when eagerly loading
1102
+ def associated_key_alias
1103
+ self[:left_key_alias]
1104
+ end
1105
+
1106
+ # Array of associated keys used when eagerly loading.
1107
+ def associated_key_array
1108
+ cached_fetch(:associated_key_array) do
1109
+ if self[:uses_left_composite_keys]
1110
+ associated_key_alias.zip(predicate_keys).map{|a, k| SQL::AliasedExpression.new(k, a)}
1111
+ else
1112
+ [SQL::AliasedExpression.new(predicate_key, associated_key_alias)]
1113
+ end
1114
+ end
1115
+ end
1116
+
1117
+ # The column to use for the associated key when eagerly loading
1118
+ def associated_key_column
1119
+ self[:left_key]
1120
+ end
1121
+
1122
+ # Alias of right_primary_keys
1123
+ def associated_object_keys
1124
+ right_primary_keys
1125
+ end
1126
+
1127
+ # many_to_many associations can only have associated objects if none of
1128
+ # the :left_primary_keys options have a nil value.
1129
+ def can_have_associated_objects?(obj)
1130
+ !self[:left_primary_keys].any?{|k| obj.get_column_value(k).nil?}
1131
+ end
1132
+
1133
+ # one_through_one and many_to_many associations can be clones
1134
+ def cloneable?(ref)
1135
+ ref[:type] == :many_to_many || ref[:type] == :one_through_one
1136
+ end
1137
+
1138
+ # The default associated key alias(es) to use when eager loading
1139
+ # associations via eager.
1140
+ def default_associated_key_alias
1141
+ self[:uses_left_composite_keys] ? (0...self[:left_keys].length).map{|i| :"x_foreign_key_#{i}_x"} : :x_foreign_key_x
1142
+ end
1143
+
1144
+ # The default eager loader used if the user doesn't override it. Extracted
1145
+ # to a method so the code can be shared with the many_through_many plugin.
1146
+ def default_eager_loader(eo)
1147
+ h = eo[:id_map]
1148
+ assign_singular = assign_singular?
1149
+ delete_rn = delete_row_number_column
1150
+ uses_lcks = self[:uses_left_composite_keys]
1151
+ left_key_alias = self[:left_key_alias]
1152
+ name = self[:name]
1153
+
1154
+ self[:model].eager_load_results(self, eo) do |assoc_record|
1155
+ assoc_record.values.delete(delete_rn) if delete_rn
1156
+ hash_key = if uses_lcks
1157
+ left_key_alias.map{|k| assoc_record.values.delete(k)}
1158
+ else
1159
+ assoc_record.values.delete(left_key_alias)
1160
+ end
1161
+ next unless objects = h[hash_key]
1162
+ if assign_singular
1163
+ objects.each do |object|
1164
+ object.associations[name] ||= assoc_record
1165
+ end
1166
+ else
1167
+ objects.each do |object|
1168
+ object.associations[name].push(assoc_record)
1169
+ end
1170
+ end
1171
+ end
1172
+ end
1173
+
1174
+ # Default name symbol for the join table.
1175
+ def default_join_table
1176
+ [self[:class_name], self[:model].name].map{|i| underscore(pluralize(demodulize(i)))}.sort.join('_').to_sym
1177
+ end
1178
+
1179
+ # Default foreign key name symbol for key in join table that points to
1180
+ # current table's primary key (or :left_primary_key column).
1181
+ def default_left_key
1182
+ :"#{underscore(demodulize(self[:model].name))}_id"
1183
+ end
1184
+
1185
+ # Default foreign key name symbol for foreign key in join table that points to
1186
+ # the association's table's primary key (or :right_primary_key column).
1187
+ def default_right_key
1188
+ :"#{singularize(self[:name])}_id"
1189
+ end
1190
+
1191
+ # The hash key to use for the eager loading predicate (left side of IN (1, 2, 3)).
1192
+ # The left key qualified by the join table.
1193
+ def predicate_key
1194
+ cached_fetch(:predicate_key){qualify(join_table_alias, self[:left_key])}
1195
+ end
1196
+ alias qualified_left_key predicate_key
1197
+
1198
+ # The right key qualified by the join table.
1199
+ def qualified_right_key
1200
+ cached_fetch(:qualified_right_key){qualify(join_table_alias, self[:right_key])}
1201
+ end
1202
+
1203
+ # many_to_many associations need to select a key in an associated table to eagerly load
1204
+ def eager_loading_use_associated_key?
1205
+ true
1206
+ end
1207
+
1208
+ # The source of the join table. This is the join table itself, unless it
1209
+ # is aliased, in which case it is the unaliased part.
1210
+ def join_table_source
1211
+ cached_fetch(:join_table_source){split_join_table_alias[0]}
1212
+ end
1213
+
1214
+ # The join table itself, unless it is aliased, in which case this
1215
+ # is the alias.
1216
+ def join_table_alias
1217
+ cached_fetch(:join_table_alias) do
1218
+ s, a = split_join_table_alias
1219
+ a || s
1220
+ end
1221
+ end
1222
+ alias associated_key_table join_table_alias
1223
+
1224
+ # Whether the associated object needs a primary key to be added/removed,
1225
+ # true for many_to_many associations.
1226
+ def need_associated_primary_key?
1227
+ true
1228
+ end
1229
+
1230
+ # #right_primary_key qualified by the associated table
1231
+ def qualified_right_primary_key
1232
+ cached_fetch(:qualified_right_primary_key){qualify_assoc(right_primary_key)}
1233
+ end
1234
+
1235
+ # The primary key column(s) to use in the associated table (can be symbol or array).
1236
+ def right_primary_key
1237
+ cached_fetch(:right_primary_key){associated_class.primary_key || raise(Error, "no primary key specified for #{associated_class.inspect}")}
1238
+ end
1239
+
1240
+ # The primary key columns to use in the associated table (always array).
1241
+ def right_primary_keys
1242
+ cached_fetch(:right_primary_keys){Array(right_primary_key)}
1243
+ end
1244
+
1245
+ # The method symbol or array of method symbols to call on the associated objects
1246
+ # to get the foreign key values for the join table.
1247
+ def right_primary_key_method
1248
+ cached_fetch(:right_primary_key_method){right_primary_key}
1249
+ end
1250
+
1251
+ # The array of method symbols to call on the associated objects
1252
+ # to get the foreign key values for the join table.
1253
+ def right_primary_key_methods
1254
+ cached_fetch(:right_primary_key_methods){Array(right_primary_key_method)}
1255
+ end
1256
+
1257
+ # The columns to select when loading the association, associated_class.table_name.* by default.
1258
+ def select
1259
+ cached_fetch(:select){default_select}
1260
+ end
1261
+
1262
+ private
1263
+
1264
+ def _associated_dataset
1265
+ super.inner_join(self[:join_table], self[:right_keys].zip(right_primary_keys), :qualify=>:deep)
1266
+ end
1267
+
1268
+ # The default selection for associations that require joins. These do not use the default
1269
+ # model selection unless all entries in the select are explicitly qualified identifiers, as
1270
+ # other it can include unqualified columns which would be made ambiguous by joining.
1271
+ def default_select
1272
+ if (sel = associated_class.dataset.opts[:select]) && sel.all?{|c| selection_is_qualified?(c)}
1273
+ sel
1274
+ else
1275
+ Sequel::SQL::ColumnAll.new(associated_class.table_name)
1276
+ end
1277
+ end
1278
+
1279
+ def filter_by_associations_conditions_associated_keys
1280
+ qualify(join_table_alias, self[:left_keys])
1281
+ end
1282
+
1283
+ def filter_by_associations_conditions_key
1284
+ qualify(self[:model].table_name, self[:left_primary_key_column])
1285
+ end
1286
+
1287
+ def filter_by_associations_limit_alias_key
1288
+ aliaz = 'a'
1289
+ filter_by_associations_limit_key.map{|c| c.as(Sequel.identifier(aliaz = aliaz.next))}
1290
+ end
1291
+
1292
+ def filter_by_associations_limit_aliases
1293
+ filter_by_associations_limit_alias_key.map(&:alias)
1294
+ end
1295
+
1296
+ def filter_by_associations_limit_key
1297
+ qualify(join_table_alias, self[:left_keys]) + Array(qualify(associated_class.table_name, associated_class.primary_key))
1298
+ end
1299
+
1300
+ def predicate_key_methods
1301
+ self[:left_primary_keys]
1302
+ end
1303
+
1304
+ def reciprocal_association?(assoc_reflect)
1305
+ super && assoc_reflect[:left_keys] == self[:right_keys] &&
1306
+ assoc_reflect[:right_keys] == self[:left_keys] &&
1307
+ assoc_reflect[:join_table] == self[:join_table] &&
1308
+ right_primary_keys == assoc_reflect[:left_primary_key_columns] &&
1309
+ self[:left_primary_key_columns] == assoc_reflect.right_primary_keys
1310
+ end
1311
+
1312
+ def reciprocal_type
1313
+ :many_to_many
1314
+ end
1315
+
1316
+ # Whether the given expression represents a qualified identifier. Used to determine if it is
1317
+ # OK to use directly when joining.
1318
+ def selection_is_qualified?(c)
1319
+ case c
1320
+ when Symbol
1321
+ Sequel.split_symbol(c)[0]
1322
+ when Sequel::SQL::QualifiedIdentifier
1323
+ true
1324
+ when Sequel::SQL::AliasedExpression
1325
+ selection_is_qualified?(c.expression)
1326
+ else
1327
+ false
1328
+ end
1329
+ end
1330
+
1331
+ # Split the join table into source and alias parts.
1332
+ def split_join_table_alias
1333
+ associated_class.dataset.split_alias(self[:join_table])
1334
+ end
1335
+ end
1336
+
1337
+ class OneThroughOneAssociationReflection < ManyToManyAssociationReflection
1338
+ ASSOCIATION_TYPES[:one_through_one] = self
1339
+ include SingularAssociationReflection
1340
+
1341
+ # one_through_one associations should not singularize the association name when
1342
+ # creating the foreign key.
1343
+ def default_right_key
1344
+ :"#{self[:name]}_id"
1345
+ end
1346
+
1347
+ # one_through_one associations have no reciprocals
1348
+ def reciprocal
1349
+ nil
1350
+ end
1351
+ end
1352
+
1353
+ # This module contains methods added to all association datasets
1354
+ module AssociationDatasetMethods
1355
+ # The model object that created the association dataset
1356
+ attr_accessor :model_object
1357
+
1358
+ # The association reflection related to the association dataset
1359
+ attr_accessor :association_reflection
1360
+ end
1361
+
1362
+ # Each kind of association adds a number of instance methods to the model class which
1363
+ # are specialized according to the association type and optional parameters
1364
+ # given in the definition. Example:
1365
+ #
1366
+ # class Project < Sequel::Model
1367
+ # many_to_one :portfolio
1368
+ # # or: one_to_one :portfolio
1369
+ # one_to_many :milestones
1370
+ # # or: many_to_many :milestones
1371
+ # end
1372
+ #
1373
+ # The project class now has the following instance methods:
1374
+ # portfolio :: Returns the associated portfolio.
1375
+ # portfolio=(obj) :: Sets the associated portfolio to the object,
1376
+ # but the change is not persisted until you save the record (for many_to_one associations).
1377
+ # portfolio_dataset :: Returns a dataset that would return the associated
1378
+ # portfolio, only useful in fairly specific circumstances.
1379
+ # milestones :: Returns an array of associated milestones
1380
+ # add_milestone(obj) :: Associates the passed milestone with this object.
1381
+ # remove_milestone(obj) :: Removes the association with the passed milestone.
1382
+ # remove_all_milestones :: Removes associations with all associated milestones.
1383
+ # milestones_dataset :: Returns a dataset that would return the associated
1384
+ # milestones, allowing for further filtering/limiting/etc.
1385
+ #
1386
+ # If you want to override the behavior of the add_/remove_/remove_all_/ methods
1387
+ # or the association setter method, use the :adder, :remover, :clearer, and/or :setter
1388
+ # options. These options override the default behavior.
1389
+ #
1390
+ # By default the classes for the associations are inferred from the association
1391
+ # name, so for example the Project#portfolio will return an instance of
1392
+ # Portfolio, and Project#milestones will return an array of Milestone
1393
+ # instances. You can use the :class option to change which class is used.
1394
+ #
1395
+ # Association definitions are also reflected by the class, e.g.:
1396
+ #
1397
+ # Project.associations
1398
+ # => [:portfolio, :milestones]
1399
+ # Project.association_reflection(:portfolio)
1400
+ # => {:type => :many_to_one, :name => :portfolio, ...}
1401
+ #
1402
+ # Associations should not have the same names as any of the columns in the
1403
+ # model's current table they reference. If you are dealing with an existing schema that
1404
+ # has a column named status, you can't name the association status, you'd
1405
+ # have to name it foo_status or something else. If you give an association the same name
1406
+ # as a column, you will probably end up with an association that doesn't work, or a SystemStackError.
1407
+ #
1408
+ # For a more in depth general overview, as well as a reference guide,
1409
+ # see the {Association Basics guide}[rdoc-ref:doc/association_basics.rdoc].
1410
+ # For examples of advanced usage, see the {Advanced Associations guide}[rdoc-ref:doc/advanced_associations.rdoc].
1411
+ module ClassMethods
1412
+ # All association reflections defined for this model (default: {}).
1413
+ attr_reader :association_reflections
1414
+
1415
+ # Hash with column symbol keys and arrays of many_to_one
1416
+ # association symbols that should be cleared when the column
1417
+ # value changes.
1418
+ attr_reader :autoreloading_associations
1419
+
1420
+ # Whether association metadata should be cached in the association reflection. If not cached, it will be computed
1421
+ # on demand. In general you only want to set this to false when using code reloading. When using code reloading,
1422
+ # setting this will make sure that if an associated class is removed or modified, this class will not hang on to
1423
+ # the previous class.
1424
+ attr_accessor :cache_associations
1425
+
1426
+ # The default options to use for all associations.
1427
+ attr_accessor :default_association_options
1428
+
1429
+ # The default :eager_limit_strategy option to use for limited or offset associations (default: true, causing Sequel
1430
+ # to use what it considers the most appropriate strategy).
1431
+ attr_accessor :default_eager_limit_strategy
1432
+
1433
+ # Array of all association reflections for this model class
1434
+ def all_association_reflections
1435
+ association_reflections.values
1436
+ end
1437
+
1438
+ # Associates a related model with the current model. The following types are
1439
+ # supported:
1440
+ #
1441
+ # :many_to_one :: Foreign key in current model's table points to
1442
+ # associated model's primary key. Each associated model object can
1443
+ # be associated with more than one current model objects. Each current
1444
+ # model object can be associated with only one associated model object.
1445
+ # :one_to_many :: Foreign key in associated model's table points to this
1446
+ # model's primary key. Each current model object can be associated with
1447
+ # more than one associated model objects. Each associated model object
1448
+ # can be associated with only one current model object.
1449
+ # :one_through_one :: Similar to many_to_many in terms of foreign keys, but only one object
1450
+ # is associated to the current object through the association.
1451
+ # Provides only getter methods, no setter or modification methods.
1452
+ # :one_to_one :: Similar to one_to_many in terms of foreign keys, but
1453
+ # only one object is associated to the current object through the
1454
+ # association. The methods created are similar to many_to_one, except
1455
+ # that the one_to_one setter method saves the passed object.
1456
+ # :many_to_many :: A join table is used that has a foreign key that points
1457
+ # to this model's primary key and a foreign key that points to the
1458
+ # associated model's primary key. Each current model object can be
1459
+ # associated with many associated model objects, and each associated
1460
+ # model object can be associated with many current model objects.
1461
+ #
1462
+ # The following options can be supplied:
1463
+ # === Multiple Types
1464
+ # :adder :: Proc used to define the private _add_* method for doing the database work
1465
+ # to associate the given object to the current object (*_to_many assocations).
1466
+ # :after_add :: Symbol, Proc, or array of both/either specifying a callback to call
1467
+ # after a new item is added to the association.
1468
+ # :after_load :: Symbol, Proc, or array of both/either specifying a callback to call
1469
+ # after the associated record(s) have been retrieved from the database.
1470
+ # :after_remove :: Symbol, Proc, or array of both/either specifying a callback to call
1471
+ # after an item is removed from the association.
1472
+ # :after_set :: Symbol, Proc, or array of both/either specifying a callback to call
1473
+ # after an item is set using the association setter method.
1474
+ # :allow_eager :: If set to false, you cannot load the association eagerly
1475
+ # via eager or eager_graph
1476
+ # :before_add :: Symbol, Proc, or array of both/either specifying a callback to call
1477
+ # before a new item is added to the association.
1478
+ # :before_remove :: Symbol, Proc, or array of both/either specifying a callback to call
1479
+ # before an item is removed from the association.
1480
+ # :before_set :: Symbol, Proc, or array of both/either specifying a callback to call
1481
+ # before an item is set using the association setter method.
1482
+ # :cartesian_product_number :: the number of joins completed by this association that could cause more
1483
+ # than one row for each row in the current table (default: 0 for
1484
+ # many_to_one, one_to_one, and one_through_one associations, 1
1485
+ # for one_to_many and many_to_many associations).
1486
+ # :class :: The associated class or its name as a string or symbol. If not
1487
+ # given, uses the association's name, which is camelized (and
1488
+ # singularized unless the type is :many_to_one, :one_to_one, or one_through_one). If this is specified
1489
+ # as a string or symbol, you must specify the full class name (e.g. "::SomeModule::MyModel").
1490
+ # :class_namespace :: If :class is given as a string or symbol, sets the default namespace in which to look for
1491
+ # the class. <tt>:class=>'Foo', :class_namespace=>'Bar'</tt> looks for <tt>::Bar::Foo</tt>.)
1492
+ # :clearer :: Proc used to define the private _remove_all_* method for doing the database work
1493
+ # to remove all objects associated to the current object (*_to_many assocations).
1494
+ # :clone :: Merge the current options and block into the options and block used in defining
1495
+ # the given association. Can be used to DRY up a bunch of similar associations that
1496
+ # all share the same options such as :class and :key, while changing the order and block used.
1497
+ # :conditions :: The conditions to use to filter the association, can be any argument passed to where.
1498
+ # :dataset :: A proc that is instance_execed to get the base dataset to use (before the other
1499
+ # options are applied). If the proc accepts an argument, it is passed the related
1500
+ # association reflection.
1501
+ # :distinct :: Use the DISTINCT clause when selecting associating object, both when
1502
+ # lazy loading and eager loading via .eager (but not when using .eager_graph).
1503
+ # :eager :: The associations to eagerly load via +eager+ when loading the associated object(s).
1504
+ # :eager_block :: If given, use the block instead of the default block when
1505
+ # eagerly loading. To not use a block when eager loading (when one is used normally),
1506
+ # set to nil.
1507
+ # :eager_graph :: The associations to eagerly load via +eager_graph+ when loading the associated object(s).
1508
+ # many_to_many associations with this option cannot be eagerly loaded via +eager+.
1509
+ # :eager_grapher :: A proc to use to implement eager loading via +eager_graph+, overriding the default.
1510
+ # Takes an options hash with at least the entries :self (the receiver of the eager_graph call),
1511
+ # :table_alias (the alias to use for table to graph into the association), and :implicit_qualifier
1512
+ # (the alias that was used for the current table).
1513
+ # Should return a copy of the dataset with the association graphed into it.
1514
+ # :eager_limit_strategy :: Determines the strategy used for enforcing limits and offsets when eager loading
1515
+ # associations via the +eager+ method.
1516
+ # :eager_loader :: A proc to use to implement eager loading, overriding the default. Takes a single hash argument,
1517
+ # with at least the keys: :rows, which is an array of current model instances, :associations,
1518
+ # which is a hash of dependent associations, :self, which is the dataset doing the eager loading,
1519
+ # :eager_block, which is a dynamic callback that should be called with the dataset, and :id_map,
1520
+ # which is a mapping of key values to arrays of current model instances. In the proc, the
1521
+ # associated records should be queried from the database and the associations cache for each
1522
+ # record should be populated.
1523
+ # :eager_loader_key :: A symbol for the key column to use to populate the key_hash
1524
+ # for the eager loader. Can be set to nil to not populate the key_hash.
1525
+ # :extend :: A module or array of modules to extend the dataset with.
1526
+ # :filter_limit_strategy :: Determines the strategy used for enforcing limits and offsets when filtering by
1527
+ # limited associations. Possible options are :window_function, :distinct_on, or
1528
+ # :correlated_subquery depending on association type and database type.
1529
+ # :graph_alias_base :: The base name to use for the table alias when eager graphing. Defaults to the name
1530
+ # of the association. If the alias name has already been used in the query, Sequel will create
1531
+ # a unique alias by appending a numeric suffix (e.g. alias_0, alias_1, ...) until the alias is
1532
+ # unique.
1533
+ # :graph_block :: The block to pass to join_table when eagerly loading
1534
+ # the association via +eager_graph+.
1535
+ # :graph_conditions :: The additional conditions to use on the SQL join when eagerly loading
1536
+ # the association via +eager_graph+. Should be a hash or an array of two element arrays. If not
1537
+ # specified, the :conditions option is used if it is a hash or array of two element arrays.
1538
+ # :graph_join_type :: The type of SQL join to use when eagerly loading the association via
1539
+ # eager_graph. Defaults to :left_outer.
1540
+ # :graph_only_conditions :: The conditions to use on the SQL join when eagerly loading
1541
+ # the association via +eager_graph+, instead of the default conditions specified by the
1542
+ # foreign/primary keys. This option causes the :graph_conditions option to be ignored.
1543
+ # :graph_order :: Over the order to use when using eager_graph, instead of the default order. This should be used
1544
+ # in the case where :order contains an identifier qualified by the table's name, which may not match
1545
+ # the alias used when eager graphing. By setting this to the unqualified identifier, it will be
1546
+ # automatically qualified when using eager_graph.
1547
+ # :graph_select :: A column or array of columns to select from the associated table
1548
+ # when eagerly loading the association via +eager_graph+. Defaults to all
1549
+ # columns in the associated table.
1550
+ # :limit :: Limit the number of records to the provided value. Use
1551
+ # an array with two elements for the value to specify a
1552
+ # limit (first element) and an offset (second element).
1553
+ # :methods_module :: The module that methods the association creates will be placed into. Defaults
1554
+ # to the module containing the model's columns.
1555
+ # :order :: the column(s) by which to order the association dataset. Can be a
1556
+ # singular column symbol or an array of column symbols.
1557
+ # :order_eager_graph :: Whether to add the association's order to the graphed dataset's order when graphing
1558
+ # via +eager_graph+. Defaults to true, so set to false to disable.
1559
+ # :read_only :: Do not add a setter method (for many_to_one or one_to_one associations),
1560
+ # or add_/remove_/remove_all_ methods (for one_to_many and many_to_many associations). Always
1561
+ # true for one_through_one associations.
1562
+ # :reciprocal :: the symbol name of the reciprocal association,
1563
+ # if it exists. By default, Sequel will try to determine it by looking at the
1564
+ # associated model's assocations for a association that matches
1565
+ # the current association's key(s). Set to nil to not use a reciprocal.
1566
+ # :remover :: Proc used to define the private _remove_* method for doing the database work
1567
+ # to remove the association between the given object and the current object (*_to_many assocations).
1568
+ # :select :: the columns to select. Defaults to the associated class's table_name.* in an association
1569
+ # that uses joins, which means it doesn't include the attributes from the
1570
+ # join table. If you want to include the join table attributes, you can
1571
+ # use this option, but beware that the join table attributes can clash with
1572
+ # attributes from the model table, so you should alias any attributes that have
1573
+ # the same name in both the join table and the associated table.
1574
+ # :setter :: Proc used to define the private _*= method for doing the work to setup the assocation
1575
+ # between the given object and the current object (*_to_one associations).
1576
+ # :subqueries_per_union :: The number of subqueries to use in each UNION query, for eager
1577
+ # loading limited associations using the default :union strategy.
1578
+ # :validate :: Set to false to not validate when implicitly saving any associated object.
1579
+ # === :many_to_one
1580
+ # :key :: foreign key in current model's table that references
1581
+ # associated model's primary key, as a symbol. Defaults to :"#{name}_id". Can use an
1582
+ # array of symbols for a composite key association.
1583
+ # :key_column :: Similar to, and usually identical to, :key, but :key refers to the model method
1584
+ # to call, where :key_column refers to the underlying column. Should only be
1585
+ # used if the model method differs from the foreign key column, in conjunction
1586
+ # with defining a model alias method for the key column.
1587
+ # :primary_key :: column in the associated table that :key option references, as a symbol.
1588
+ # Defaults to the primary key of the associated table. Can use an
1589
+ # array of symbols for a composite key association.
1590
+ # :primary_key_method :: the method symbol or array of method symbols to call on the associated
1591
+ # object to get the foreign key values. Defaults to :primary_key option.
1592
+ # :qualify :: Whether to use qualifier primary keys when loading the association. The default
1593
+ # is true, so you must set to false to not qualify. Qualification rarely causes
1594
+ # problems, but it's necessary to disable in some cases, such as when you are doing
1595
+ # a JOIN USING operation on the column on Oracle.
1596
+ # === :one_to_many and :one_to_one
1597
+ # :key :: foreign key in associated model's table that references
1598
+ # current model's primary key, as a symbol. Defaults to
1599
+ # :"#{self.name.underscore}_id". Can use an
1600
+ # array of symbols for a composite key association.
1601
+ # :key_method :: the method symbol or array of method symbols to call on the associated
1602
+ # object to get the foreign key values. Defaults to :key option.
1603
+ # :primary_key :: column in the current table that :key option references, as a symbol.
1604
+ # Defaults to primary key of the current table. Can use an
1605
+ # array of symbols for a composite key association.
1606
+ # :primary_key_column :: Similar to, and usually identical to, :primary_key, but :primary_key refers
1607
+ # to the model method call, where :primary_key_column refers to the underlying column.
1608
+ # Should only be used if the model method differs from the primary key column, in
1609
+ # conjunction with defining a model alias method for the primary key column.
1610
+ # :raise_on_save_failure :: Do not raise exceptions for hook or validation failures when saving associated
1611
+ # objects in the add/remove methods (return nil instead) [one_to_many only].
1612
+ # === :many_to_many and :one_through_one
1613
+ # :graph_join_table_block :: The block to pass to +join_table+ for
1614
+ # the join table when eagerly loading the association via +eager_graph+.
1615
+ # :graph_join_table_conditions :: The additional conditions to use on the SQL join for
1616
+ # the join table when eagerly loading the association via +eager_graph+.
1617
+ # Should be a hash or an array of two element arrays.
1618
+ # :graph_join_table_join_type :: The type of SQL join to use for the join table when eagerly
1619
+ # loading the association via +eager_graph+. Defaults to the
1620
+ # :graph_join_type option or :left_outer.
1621
+ # :graph_join_table_only_conditions :: The conditions to use on the SQL join for the join
1622
+ # table when eagerly loading the association via +eager_graph+,
1623
+ # instead of the default conditions specified by the
1624
+ # foreign/primary keys. This option causes the
1625
+ # :graph_join_table_conditions option to be ignored.
1626
+ # :join_table :: name of table that includes the foreign keys to both
1627
+ # the current model and the associated model, as a symbol. Defaults to the name
1628
+ # of current model and name of associated model, pluralized,
1629
+ # underscored, sorted, and joined with '_'.
1630
+ # :join_table_block :: proc that can be used to modify the dataset used in the add/remove/remove_all
1631
+ # methods. Should accept a dataset argument and return a modified dataset if present.
1632
+ # :left_key :: foreign key in join table that points to current model's
1633
+ # primary key, as a symbol. Defaults to :"#{self.name.underscore}_id".
1634
+ # Can use an array of symbols for a composite key association.
1635
+ # :left_primary_key :: column in current table that :left_key points to, as a symbol.
1636
+ # Defaults to primary key of current table. Can use an
1637
+ # array of symbols for a composite key association.
1638
+ # :left_primary_key_column :: Similar to, and usually identical to, :left_primary_key, but :left_primary_key refers to
1639
+ # the model method to call, where :left_primary_key_column refers to the underlying column. Should only
1640
+ # be used if the model method differs from the left primary key column, in conjunction
1641
+ # with defining a model alias method for the left primary key column.
1642
+ # :right_key :: foreign key in join table that points to associated
1643
+ # model's primary key, as a symbol. Defaults to :"#{name.to_s.singularize}_id".
1644
+ # Can use an array of symbols for a composite key association.
1645
+ # :right_primary_key :: column in associated table that :right_key points to, as a symbol.
1646
+ # Defaults to primary key of the associated table. Can use an
1647
+ # array of symbols for a composite key association.
1648
+ # :right_primary_key_method :: the method symbol or array of method symbols to call on the associated
1649
+ # object to get the foreign key values for the join table.
1650
+ # Defaults to :right_primary_key option.
1651
+ # :uniq :: Adds a after_load callback that makes the array of objects unique.
1652
+ def associate(type, name, opts = OPTS, &block)
1653
+ raise(Error, 'invalid association type') unless assoc_class = ASSOCIATION_TYPES[type]
1654
+ raise(Error, 'Model.associate name argument must be a symbol') unless name.is_a?(Symbol)
1655
+
1656
+ # dup early so we don't modify opts
1657
+ orig_opts = opts.dup
1658
+
1659
+ if opts[:clone]
1660
+ cloned_assoc = association_reflection(opts[:clone])
1661
+ orig_opts = cloned_assoc[:orig_opts].merge(orig_opts)
1662
+ end
1663
+
1664
+ opts = default_association_options.merge(orig_opts).merge(:type => type, :name => name, :cache=>({} if cache_associations), :model => self)
1665
+ opts[:block] = block if block
1666
+ if !opts.has_key?(:instance_specific) && (block || orig_opts[:block] || orig_opts[:dataset])
1667
+ # It's possible the association is instance specific, in that it depends on
1668
+ # values other than the foreign key value. This needs to be checked for
1669
+ # in certain places to disable optimizations.
1670
+ opts[:instance_specific] = true
1671
+ end
1672
+ opts = assoc_class.new.merge!(opts)
1673
+
1674
+ if opts[:clone] && !opts.cloneable?(cloned_assoc)
1675
+ raise(Error, "cannot clone an association to an association of different type (association #{name} with type #{type} cloning #{opts[:clone]} with type #{cloned_assoc[:type]})")
1676
+ end
1677
+
1678
+ opts[:eager_block] = opts[:block] unless opts.include?(:eager_block)
1679
+ if !opts.has_key?(:predicate_key) && opts.has_key?(:eager_loading_predicate_key)
1680
+ opts[:predicate_key] = opts[:eager_loading_predicate_key]
1681
+ end
1682
+ opts[:graph_join_type] ||= :left_outer
1683
+ opts[:order_eager_graph] = true unless opts.include?(:order_eager_graph)
1684
+ conds = opts[:conditions]
1685
+ opts[:graph_alias_base] ||= name
1686
+ opts[:graph_conditions] = conds if !opts.include?(:graph_conditions) and Sequel.condition_specifier?(conds)
1687
+ opts[:graph_conditions] = opts.fetch(:graph_conditions, []).to_a
1688
+ opts[:graph_select] = Array(opts[:graph_select]) if opts[:graph_select]
1689
+ [:before_add, :before_remove, :after_add, :after_remove, :after_load, :before_set, :after_set, :extend].each do |cb_type|
1690
+ opts[cb_type] = Array(opts[cb_type])
1691
+ end
1692
+ late_binding_class_option(opts, opts.returns_array? ? singularize(name) : name)
1693
+
1694
+ # Remove :class entry if it exists and is nil, to work with cached_fetch
1695
+ opts.delete(:class) unless opts[:class]
1696
+
1697
+ send(:"def_#{type}", opts)
1698
+ def_association_instance_methods(opts)
1699
+
1700
+ orig_opts.delete(:clone)
1701
+ orig_opts.merge!(:class_name=>opts[:class_name], :class=>opts[:class], :block=>opts[:block])
1702
+ opts[:orig_opts] = orig_opts
1703
+ # don't add to association_reflections until we are sure there are no errors
1704
+ association_reflections[name] = opts
1705
+ end
1706
+
1707
+ # The association reflection hash for the association of the given name.
1708
+ def association_reflection(name)
1709
+ association_reflections[name]
1710
+ end
1711
+
1712
+ # Array of association name symbols
1713
+ def associations
1714
+ association_reflections.keys
1715
+ end
1716
+
1717
+ # Eager load the association with the given eager loader options.
1718
+ def eager_load_results(opts, eo, &block)
1719
+ opts.eager_load_results(eo, &block)
1720
+ end
1721
+
1722
+ # Shortcut for adding a many_to_many association, see #associate
1723
+ def many_to_many(name, opts=OPTS, &block)
1724
+ associate(:many_to_many, name, opts, &block)
1725
+ end
1726
+
1727
+ # Shortcut for adding a many_to_one association, see #associate
1728
+ def many_to_one(name, opts=OPTS, &block)
1729
+ associate(:many_to_one, name, opts, &block)
1730
+ end
1731
+
1732
+ # Shortcut for adding a one_through_one association, see #associate.
1733
+ def one_through_one(name, opts=OPTS, &block)
1734
+ associate(:one_through_one, name, opts, &block)
1735
+ end
1736
+
1737
+ # Shortcut for adding a one_to_many association, see #associate
1738
+ def one_to_many(name, opts=OPTS, &block)
1739
+ associate(:one_to_many, name, opts, &block)
1740
+ end
1741
+
1742
+ # Shortcut for adding a one_to_one association, see #associate.
1743
+ def one_to_one(name, opts=OPTS, &block)
1744
+ associate(:one_to_one, name, opts, &block)
1745
+ end
1746
+
1747
+ Plugins.inherited_instance_variables(self, :@association_reflections=>:dup, :@autoreloading_associations=>:hash_dup, :@default_association_options=>:dup, :@cache_associations=>nil, :@default_eager_limit_strategy=>nil)
1748
+ Plugins.def_dataset_methods(self, [:eager, :eager_graph, :eager_graph_with_options, :association_join, :association_full_join, :association_inner_join, :association_left_join, :association_right_join])
1749
+
1750
+ private
1751
+
1752
+ # The module to use for the association's methods. Defaults to
1753
+ # the overridable_methods_module.
1754
+ def association_module(opts=OPTS)
1755
+ opts.fetch(:methods_module, overridable_methods_module)
1756
+ end
1757
+
1758
+ # Add a method to the module included in the class, so the method
1759
+ # can be easily overridden in the class itself while allowing for
1760
+ # super to be called.
1761
+ def association_module_def(name, opts=OPTS, &block)
1762
+ association_module(opts).module_eval{define_method(name, &block)}
1763
+ end
1764
+
1765
+ # Add a private method to the module included in the class.
1766
+ def association_module_private_def(name, opts=OPTS, &block)
1767
+ association_module_def(name, opts, &block)
1768
+ association_module(opts).send(:private, name)
1769
+ end
1770
+
1771
+ # Adds the association method to the association methods module.
1772
+ def def_association_method(opts)
1773
+ association_module_def(opts.association_method, opts){|*dynamic_opts, &block| load_associated_objects(opts, dynamic_opts[0], &block)}
1774
+ end
1775
+
1776
+ # Define all of the association instance methods for this association.
1777
+ def def_association_instance_methods(opts)
1778
+ association_module_def(opts.dataset_method, opts){_dataset(opts)}
1779
+ def_association_method(opts)
1780
+
1781
+ return if opts[:read_only]
1782
+
1783
+ if opts[:setter] && opts[:_setter]
1784
+ # This is backwards due to backwards compatibility
1785
+ association_module_private_def(opts._setter_method, opts, &opts[:setter])
1786
+ association_module_def(opts.setter_method, opts, &opts[:_setter])
1787
+ end
1788
+
1789
+ if adder = opts[:adder]
1790
+ association_module_private_def(opts._add_method, opts, &adder)
1791
+ association_module_def(opts.add_method, opts){|o,*args| add_associated_object(opts, o, *args)}
1792
+ end
1793
+
1794
+ if remover = opts[:remover]
1795
+ association_module_private_def(opts._remove_method, opts, &remover)
1796
+ association_module_def(opts.remove_method, opts){|o,*args| remove_associated_object(opts, o, *args)}
1797
+ end
1798
+
1799
+ if clearer = opts[:clearer]
1800
+ association_module_private_def(opts._remove_all_method, opts, &clearer)
1801
+ association_module_def(opts.remove_all_method, opts){|*args| remove_all_associated_objects(opts, *args)}
1802
+ end
1803
+ end
1804
+
1805
+ # Configures many_to_many and one_through_one association reflection and adds the related association methods
1806
+ def def_many_to_many(opts)
1807
+ one_through_one = opts[:type] == :one_through_one
1808
+ left = (opts[:left_key] ||= opts.default_left_key)
1809
+ lcks = opts[:left_keys] = Array(left)
1810
+ right = (opts[:right_key] ||= opts.default_right_key)
1811
+ rcks = opts[:right_keys] = Array(right)
1812
+ left_pk = (opts[:left_primary_key] ||= self.primary_key)
1813
+ opts[:eager_loader_key] = left_pk unless opts.has_key?(:eager_loader_key)
1814
+ lcpks = opts[:left_primary_keys] = Array(left_pk)
1815
+ lpkc = opts[:left_primary_key_column] ||= left_pk
1816
+ lpkcs = opts[:left_primary_key_columns] ||= Array(lpkc)
1817
+ raise(Error, "mismatched number of left keys: #{lcks.inspect} vs #{lcpks.inspect}") unless lcks.length == lcpks.length
1818
+ if opts[:right_primary_key]
1819
+ rcpks = Array(opts[:right_primary_key])
1820
+ raise(Error, "mismatched number of right keys: #{rcks.inspect} vs #{rcpks.inspect}") unless rcks.length == rcpks.length
1821
+ end
1822
+ opts[:uses_left_composite_keys] = lcks.length > 1
1823
+ opts[:uses_right_composite_keys] = rcks.length > 1
1824
+ opts[:cartesian_product_number] ||= one_through_one ? 0 : 1
1825
+ join_table = (opts[:join_table] ||= opts.default_join_table)
1826
+ opts[:left_key_alias] ||= opts.default_associated_key_alias
1827
+ opts[:graph_join_table_join_type] ||= opts[:graph_join_type]
1828
+ opts[:after_load].unshift(:array_uniq!) if opts[:uniq]
1829
+ opts[:dataset] ||= opts.association_dataset_proc
1830
+ opts[:eager_loader] ||= opts.method(:default_eager_loader)
1831
+
1832
+ join_type = opts[:graph_join_type]
1833
+ select = opts[:graph_select]
1834
+ use_only_conditions = opts.include?(:graph_only_conditions)
1835
+ only_conditions = opts[:graph_only_conditions]
1836
+ conditions = opts[:graph_conditions]
1837
+ graph_block = opts[:graph_block]
1838
+ graph_jt_conds = opts[:graph_join_table_conditions] = opts.fetch(:graph_join_table_conditions, []).to_a
1839
+ use_jt_only_conditions = opts.include?(:graph_join_table_only_conditions)
1840
+ jt_only_conditions = opts[:graph_join_table_only_conditions]
1841
+ jt_join_type = opts[:graph_join_table_join_type]
1842
+ jt_graph_block = opts[:graph_join_table_block]
1843
+ opts[:eager_grapher] ||= proc do |eo|
1844
+ ds = eo[:self]
1845
+ egls = eo[:limit_strategy]
1846
+ if egls && egls != :ruby
1847
+ associated_key_array = opts.associated_key_array
1848
+ orig_egds = egds = eager_graph_dataset(opts, eo)
1849
+ egds = egds.
1850
+ inner_join(join_table, rcks.zip(opts.right_primary_keys) + graph_jt_conds, :qualify=>:deep).
1851
+ select_all(egds.first_source).
1852
+ select_append(*associated_key_array)
1853
+ egds = opts.apply_eager_graph_limit_strategy(egls, egds)
1854
+ ds.graph(egds, associated_key_array.map(&:alias).zip(lpkcs) + conditions, :qualify=>:deep, :table_alias=>eo[:table_alias], :implicit_qualifier=>eo[:implicit_qualifier], :join_type=>eo[:join_type]||join_type, :from_self_alias=>eo[:from_self_alias], :join_only=>eo[:join_only], :select=>select||orig_egds.columns, &graph_block)
1855
+ else
1856
+ ds = ds.graph(join_table, use_jt_only_conditions ? jt_only_conditions : lcks.zip(lpkcs) + graph_jt_conds, :select=>false, :table_alias=>ds.unused_table_alias(join_table, [eo[:table_alias]]), :join_type=>eo[:join_type]||jt_join_type, :join_only=>eo[:join_only], :implicit_qualifier=>eo[:implicit_qualifier], :qualify=>:deep, :from_self_alias=>eo[:from_self_alias], &jt_graph_block)
1857
+ ds.graph(eager_graph_dataset(opts, eo), use_only_conditions ? only_conditions : opts.right_primary_keys.zip(rcks) + conditions, :select=>select, :table_alias=>eo[:table_alias], :qualify=>:deep, :join_type=>eo[:join_type]||join_type, :join_only=>eo[:join_only], &graph_block)
1858
+ end
1859
+ end
1860
+
1861
+ return if opts[:read_only]
1862
+
1863
+ if one_through_one
1864
+ opts[:setter] ||= proc do |o|
1865
+ h = {}
1866
+ lh = lcks.zip(lcpks.map{|k| get_column_value(k)})
1867
+ jtds = _join_table_dataset(opts).where(lh)
1868
+
1869
+ checked_transaction do
1870
+ current = jtds.first
1871
+
1872
+ if o
1873
+ new_values = []
1874
+ rcks.zip(opts.right_primary_key_methods).each{|k, pk| new_values << (h[k] = o.get_column_value(pk))}
1875
+ end
1876
+
1877
+ if current
1878
+ current_values = rcks.map{|k| current[k]}
1879
+ jtds = jtds.where(rcks.zip(current_values))
1880
+ if o
1881
+ if current_values != new_values
1882
+ jtds.update(h)
1883
+ end
1884
+ else
1885
+ jtds.delete
1886
+ end
1887
+ elsif o
1888
+ lh.each{|k,v| h[k] = v}
1889
+ jtds.insert(h)
1890
+ end
1891
+ end
1892
+ end
1893
+ opts[:_setter] = proc{|o| set_one_through_one_associated_object(opts, o)}
1894
+ else
1895
+ opts[:adder] ||= proc do |o|
1896
+ h = {}
1897
+ lcks.zip(lcpks).each{|k, pk| h[k] = get_column_value(pk)}
1898
+ rcks.zip(opts.right_primary_key_methods).each{|k, pk| h[k] = o.get_column_value(pk)}
1899
+ _join_table_dataset(opts).insert(h)
1900
+ end
1901
+
1902
+ opts[:remover] ||= proc do |o|
1903
+ _join_table_dataset(opts).where(lcks.zip(lcpks.map{|k| get_column_value(k)}) + rcks.zip(opts.right_primary_key_methods.map{|k| o.get_column_value(k)})).delete
1904
+ end
1905
+
1906
+ opts[:clearer] ||= proc do
1907
+ _join_table_dataset(opts).where(lcks.zip(lcpks.map{|k| get_column_value(k)})).delete
1908
+ end
1909
+ end
1910
+ end
1911
+
1912
+ # Configures many_to_one association reflection and adds the related association methods
1913
+ def def_many_to_one(opts)
1914
+ name = opts[:name]
1915
+ opts[:key] = opts.default_key unless opts.has_key?(:key)
1916
+ key = opts[:key]
1917
+ opts[:eager_loader_key] = key unless opts.has_key?(:eager_loader_key)
1918
+ cks = opts[:graph_keys] = opts[:keys] = Array(key)
1919
+ opts[:key_column] ||= key
1920
+ opts[:graph_keys] = opts[:key_columns] = Array(opts[:key_column])
1921
+ opts[:qualified_key] = opts.qualify_cur(key)
1922
+ if opts[:primary_key]
1923
+ cpks = Array(opts[:primary_key])
1924
+ raise(Error, "mismatched number of keys: #{cks.inspect} vs #{cpks.inspect}") unless cks.length == cpks.length
1925
+ end
1926
+ uses_cks = opts[:uses_composite_keys] = cks.length > 1
1927
+ opts[:cartesian_product_number] ||= 0
1928
+
1929
+ if !opts.has_key?(:many_to_one_pk_lookup) &&
1930
+ (opts[:dataset] || opts[:conditions] || opts[:block] || opts[:select] ||
1931
+ (opts.has_key?(:key) && opts[:key] == nil))
1932
+ opts[:many_to_one_pk_lookup] = false
1933
+ end
1934
+ auto_assocs = @autoreloading_associations
1935
+ cks.each do |k|
1936
+ (auto_assocs[k] ||= []) << name
1937
+ end
1938
+
1939
+ opts[:dataset] ||= opts.association_dataset_proc
1940
+ opts[:eager_loader] ||= proc do |eo|
1941
+ h = eo[:id_map]
1942
+ pk_meths = opts.primary_key_methods
1943
+
1944
+ eager_load_results(opts, eo) do |assoc_record|
1945
+ hash_key = uses_cks ? pk_meths.map{|k| assoc_record.get_column_value(k)} : assoc_record.get_column_value(opts.primary_key_method)
1946
+ if objects = h[hash_key]
1947
+ objects.each{|object| object.associations[name] = assoc_record}
1948
+ end
1949
+ end
1950
+ end
1951
+
1952
+ join_type = opts[:graph_join_type]
1953
+ select = opts[:graph_select]
1954
+ use_only_conditions = opts.include?(:graph_only_conditions)
1955
+ only_conditions = opts[:graph_only_conditions]
1956
+ conditions = opts[:graph_conditions]
1957
+ graph_block = opts[:graph_block]
1958
+ graph_cks = opts[:graph_keys]
1959
+ opts[:eager_grapher] ||= proc do |eo|
1960
+ ds = eo[:self]
1961
+ ds.graph(eager_graph_dataset(opts, eo), use_only_conditions ? only_conditions : opts.primary_keys.zip(graph_cks) + conditions, Hash[eo].merge!(:select=>select, :join_type=>eo[:join_type]||join_type, :qualify=>:deep, :from_self_alias=>eo[:from_self_alias]), &graph_block)
1962
+ end
1963
+
1964
+ return if opts[:read_only]
1965
+
1966
+ opts[:setter] ||= proc{|o| cks.zip(opts.primary_key_methods).each{|k, pk| set_column_value(:"#{k}=", (o.get_column_value(pk) if o))}}
1967
+ opts[:_setter] = proc{|o| set_associated_object(opts, o)}
1968
+ end
1969
+
1970
+ # Configures one_to_many and one_to_one association reflections and adds the related association methods
1971
+ def def_one_to_many(opts)
1972
+ one_to_one = opts[:type] == :one_to_one
1973
+ name = opts[:name]
1974
+ key = (opts[:key] ||= opts.default_key)
1975
+ km = opts[:key_method] ||= opts[:key]
1976
+ cks = opts[:keys] = Array(key)
1977
+ opts[:key_methods] = Array(opts[:key_method])
1978
+ primary_key = (opts[:primary_key] ||= self.primary_key)
1979
+ opts[:eager_loader_key] = primary_key unless opts.has_key?(:eager_loader_key)
1980
+ cpks = opts[:primary_keys] = Array(primary_key)
1981
+ pkc = opts[:primary_key_column] ||= primary_key
1982
+ pkcs = opts[:primary_key_columns] ||= Array(pkc)
1983
+ raise(Error, "mismatched number of keys: #{cks.inspect} vs #{cpks.inspect}") unless cks.length == cpks.length
1984
+ uses_cks = opts[:uses_composite_keys] = cks.length > 1
1985
+ opts[:dataset] ||= opts.association_dataset_proc
1986
+ opts[:eager_loader] ||= proc do |eo|
1987
+ h = eo[:id_map]
1988
+ reciprocal = opts.reciprocal
1989
+ assign_singular = opts.assign_singular?
1990
+ delete_rn = opts.delete_row_number_column
1991
+
1992
+ eager_load_results(opts, eo) do |assoc_record|
1993
+ assoc_record.values.delete(delete_rn) if delete_rn
1994
+ hash_key = uses_cks ? km.map{|k| assoc_record.get_column_value(k)} : assoc_record.get_column_value(km)
1995
+ next unless objects = h[hash_key]
1996
+ if assign_singular
1997
+ objects.each do |object|
1998
+ unless object.associations[name]
1999
+ object.associations[name] = assoc_record
2000
+ assoc_record.associations[reciprocal] = object if reciprocal
2001
+ end
2002
+ end
2003
+ else
2004
+ objects.each do |object|
2005
+ object.associations[name].push(assoc_record)
2006
+ assoc_record.associations[reciprocal] = object if reciprocal
2007
+ end
2008
+ end
2009
+ end
2010
+ end
2011
+
2012
+ join_type = opts[:graph_join_type]
2013
+ select = opts[:graph_select]
2014
+ use_only_conditions = opts.include?(:graph_only_conditions)
2015
+ only_conditions = opts[:graph_only_conditions]
2016
+ conditions = opts[:graph_conditions]
2017
+ opts[:cartesian_product_number] ||= one_to_one ? 0 : 1
2018
+ graph_block = opts[:graph_block]
2019
+ opts[:eager_grapher] ||= proc do |eo|
2020
+ ds = eo[:self]
2021
+ ds = ds.graph(opts.apply_eager_graph_limit_strategy(eo[:limit_strategy], eager_graph_dataset(opts, eo)), use_only_conditions ? only_conditions : cks.zip(pkcs) + conditions, Hash[eo].merge!(:select=>select, :join_type=>eo[:join_type]||join_type, :qualify=>:deep, :from_self_alias=>eo[:from_self_alias]), &graph_block)
2022
+ # We only load reciprocals for one_to_many associations, as other reciprocals don't make sense
2023
+ ds.opts[:eager_graph][:reciprocals][eo[:table_alias]] = opts.reciprocal
2024
+ ds
2025
+ end
2026
+
2027
+ return if opts[:read_only]
2028
+
2029
+ save_opts = {:validate=>opts[:validate]}
2030
+ ck_nil_hash ={}
2031
+ cks.each{|k| ck_nil_hash[k] = nil}
2032
+
2033
+ if one_to_one
2034
+ opts[:setter] ||= proc do |o|
2035
+ up_ds = _apply_association_options(opts, opts.associated_dataset.where(cks.zip(cpks.map{|k| get_column_value(k)})))
2036
+ if o
2037
+ up_ds = up_ds.exclude(o.pk_hash) unless o.new?
2038
+ cks.zip(cpks).each{|k, pk| o.set_column_value(:"#{k}=", get_column_value(pk))}
2039
+ end
2040
+ checked_transaction do
2041
+ up_ds.update(ck_nil_hash)
2042
+ o.save(save_opts) || raise(Sequel::Error, "invalid associated object, cannot save") if o
2043
+ end
2044
+ end
2045
+ opts[:_setter] = proc{|o| set_one_to_one_associated_object(opts, o)}
2046
+ else
2047
+ save_opts[:raise_on_failure] = opts[:raise_on_save_failure] != false
2048
+
2049
+ opts[:adder] ||= proc do |o|
2050
+ cks.zip(cpks).each{|k, pk| o.set_column_value(:"#{k}=", get_column_value(pk))}
2051
+ o.save(save_opts)
2052
+ end
2053
+
2054
+ opts[:remover] ||= proc do |o|
2055
+ cks.each{|k| o.set_column_value(:"#{k}=", nil)}
2056
+ o.save(save_opts)
2057
+ end
2058
+
2059
+ opts[:clearer] ||= proc do
2060
+ _apply_association_options(opts, opts.associated_dataset.where(cks.zip(cpks.map{|k| get_column_value(k)}))).update(ck_nil_hash)
2061
+ end
2062
+ end
2063
+ end
2064
+
2065
+ # Alias of def_many_to_many, since they share pretty much the same code.
2066
+ def def_one_through_one(opts)
2067
+ def_many_to_many(opts)
2068
+ end
2069
+
2070
+ # Alias of def_one_to_many, since they share pretty much the same code.
2071
+ def def_one_to_one(opts)
2072
+ def_one_to_many(opts)
2073
+ end
2074
+
2075
+ # Return dataset to graph into given the association reflection, applying the :callback option if set.
2076
+ def eager_graph_dataset(opts, eager_options)
2077
+ ds = opts.associated_class.dataset
2078
+ if cb = eager_options[:callback]
2079
+ ds = cb.call(ds)
2080
+ end
2081
+ ds
2082
+ end
2083
+
2084
+ # If not caching associations, reload the database schema by default,
2085
+ # ignoring any cached values.
2086
+ def reload_db_schema?
2087
+ !@cache_associations
2088
+ end
2089
+ end
2090
+
2091
+ # Instance methods used to implement the associations support.
2092
+ module InstanceMethods
2093
+ # The currently cached associations. A hash with the keys being the
2094
+ # association name symbols and the values being the associated object
2095
+ # or nil (many_to_one), or the array of associated objects (*_to_many).
2096
+ def associations
2097
+ @associations ||= {}
2098
+ end
2099
+
2100
+ # Freeze the associations cache when freezing the object. Note that
2101
+ # retrieving associations after freezing will still work in most cases,
2102
+ # but the associations will not be cached in the association cache.
2103
+ def freeze
2104
+ associations.freeze
2105
+ super
2106
+ end
2107
+
2108
+ private
2109
+
2110
+ # Apply the association options such as :order and :limit to the given dataset, returning a modified dataset.
2111
+ def _apply_association_options(opts, ds)
2112
+ unless ds.kind_of?(AssociationDatasetMethods)
2113
+ ds = opts.apply_dataset_changes(ds)
2114
+ end
2115
+ ds.model_object = self
2116
+ ds = ds.eager_graph(opts[:eager_graph]) if opts[:eager_graph] && opts.eager_graph_lazy_dataset?
2117
+ ds = instance_exec(ds, &opts[:block]) if opts[:block]
2118
+ ds
2119
+ end
2120
+
2121
+ # Return a dataset for the association after applying any dynamic callback.
2122
+ def _associated_dataset(opts, dynamic_opts)
2123
+ ds = send(opts.dataset_method)
2124
+ if callback = dynamic_opts[:callback]
2125
+ ds = callback.call(ds)
2126
+ end
2127
+ ds
2128
+ end
2129
+
2130
+ # A placeholder literalizer that can be used to load the association, or nil to not use one.
2131
+ def _associated_object_loader(opts, dynamic_opts)
2132
+ if !dynamic_opts[:callback] && (loader = opts.placeholder_loader)
2133
+ loader
2134
+ end
2135
+ end
2136
+
2137
+ # Return an association dataset for the given association reflection
2138
+ def _dataset(opts)
2139
+ raise(Sequel::Error, "model object #{inspect} does not have a primary key") if opts.dataset_need_primary_key? && !pk
2140
+ ds = if opts[:dataset].arity == 1
2141
+ instance_exec(opts, &opts[:dataset])
2142
+ else
2143
+ instance_exec(&opts[:dataset])
2144
+ end
2145
+ _apply_association_options(opts, ds)
2146
+ end
2147
+
2148
+ # Dataset for the join table of the given many to many association reflection
2149
+ def _join_table_dataset(opts)
2150
+ ds = model.db.from(opts.join_table_source)
2151
+ opts[:join_table_block] ? opts[:join_table_block].call(ds) : ds
2152
+ end
2153
+
2154
+ # Return the associated single object for the given association reflection and dynamic options
2155
+ # (or nil if no associated object).
2156
+ def _load_associated_object(opts, dynamic_opts)
2157
+ _load_associated_object_array(opts, dynamic_opts).first
2158
+ end
2159
+
2160
+ # Return the associated single object using a primary key lookup on the associated class.
2161
+ def _load_associated_object_via_primary_key(opts)
2162
+ opts.associated_class.send(:primary_key_lookup, ((fk = opts[:key]).is_a?(Array) ? fk.map{|c| get_column_value(c)} : get_column_value(fk)))
2163
+ end
2164
+
2165
+ # Load the associated objects for the given association reflection and dynamic options
2166
+ # as an array.
2167
+ def _load_associated_object_array(opts, dynamic_opts)
2168
+ if loader = _associated_object_loader(opts, dynamic_opts)
2169
+ loader.all(*opts.predicate_key_values(self))
2170
+ else
2171
+ _associated_dataset(opts, dynamic_opts).all
2172
+ end
2173
+ end
2174
+
2175
+ # Return the associated objects from the dataset, without association callbacks, reciprocals, and caching.
2176
+ # Still apply the dynamic callback if present.
2177
+ def _load_associated_objects(opts, dynamic_opts=OPTS)
2178
+ if opts.can_have_associated_objects?(self)
2179
+ if opts.returns_array?
2180
+ _load_associated_object_array(opts, dynamic_opts)
2181
+ elsif load_with_primary_key_lookup?(opts, dynamic_opts)
2182
+ _load_associated_object_via_primary_key(opts)
2183
+ else
2184
+ _load_associated_object(opts, dynamic_opts)
2185
+ end
2186
+ elsif opts.returns_array?
2187
+ []
2188
+ end
2189
+ end
2190
+
2191
+ # Clear the associations cache when refreshing
2192
+ def _refresh_set_values(hash)
2193
+ @associations.clear if @associations
2194
+ super
2195
+ end
2196
+
2197
+ # Add the given associated object to the given association
2198
+ def add_associated_object(opts, o, *args)
2199
+ o = make_add_associated_object(opts, o)
2200
+ raise(Sequel::Error, "model object #{inspect} does not have a primary key") if opts.dataset_need_primary_key? && !pk
2201
+ ensure_associated_primary_key(opts, o, *args)
2202
+ return if run_association_callbacks(opts, :before_add, o) == false
2203
+ return if !send(opts._add_method, o, *args) && opts.handle_silent_modification_failure?
2204
+ if array = associations[opts[:name]] and !array.include?(o)
2205
+ array.push(o)
2206
+ end
2207
+ add_reciprocal_object(opts, o)
2208
+ run_association_callbacks(opts, :after_add, o)
2209
+ o
2210
+ end
2211
+
2212
+ # Add/Set the current object to/as the given object's reciprocal association.
2213
+ def add_reciprocal_object(opts, o)
2214
+ return if o.frozen?
2215
+ return unless reciprocal = opts.reciprocal
2216
+ if opts.reciprocal_array?
2217
+ if array = o.associations[reciprocal] and !array.include?(self)
2218
+ array.push(self)
2219
+ end
2220
+ else
2221
+ o.associations[reciprocal] = self
2222
+ end
2223
+ end
2224
+
2225
+ # Call uniq! on the given array. This is used by the :uniq option,
2226
+ # and is an actual method for memory reasons.
2227
+ def array_uniq!(a)
2228
+ a.uniq!
2229
+ end
2230
+
2231
+ # If a foreign key column value changes, clear the related
2232
+ # cached associations.
2233
+ def change_column_value(column, value)
2234
+ if assocs = model.autoreloading_associations[column]
2235
+ assocs.each{|a| associations.delete(a)}
2236
+ end
2237
+ super
2238
+ end
2239
+
2240
+ # Save the associated object if the associated object needs a primary key
2241
+ # and the associated object is new and does not have one. Raise an error if
2242
+ # the object still does not have a primary key
2243
+ def ensure_associated_primary_key(opts, o, *args)
2244
+ if opts.need_associated_primary_key?
2245
+ o.save(:validate=>opts[:validate]) if o.new?
2246
+ raise(Sequel::Error, "associated object #{o.inspect} does not have a primary key") unless o.pk
2247
+ end
2248
+ end
2249
+
2250
+ # Duplicate the associations hash when duplicating the object.
2251
+ def initialize_copy(other)
2252
+ super
2253
+ @associations = Hash[@associations] if @associations
2254
+ self
2255
+ end
2256
+
2257
+ # Handle parsing of options when loading associations. For historical
2258
+ # reasons, you can pass true/false/nil or a callable argument to
2259
+ # associations. That will be going away in Sequel 5, but we'll still
2260
+ # support it until then.
2261
+ def load_association_objects_options(dynamic_opts, &block)
2262
+ dynamic_opts = case dynamic_opts
2263
+ when true, false, nil
2264
+ {:reload=>dynamic_opts}
2265
+ when Hash
2266
+ Hash[dynamic_opts]
2267
+ else
2268
+ if dynamic_opts.respond_to?(:call)
2269
+ {:callback=>dynamic_opts}
2270
+ else
2271
+ {:reload=>true}
2272
+ end
2273
+ end
2274
+
2275
+ if block_given?
2276
+ dynamic_opts[:callback] = block
2277
+ end
2278
+
2279
+ dynamic_opts
2280
+ end
2281
+
2282
+ # Load the associated objects using the dataset, handling callbacks, reciprocals, and caching.
2283
+ def load_associated_objects(opts, dynamic_opts=nil, &block)
2284
+ dynamic_opts = load_association_objects_options(dynamic_opts, &block)
2285
+ name = opts[:name]
2286
+ if associations.include?(name) && !dynamic_opts[:callback] && !dynamic_opts[:reload]
2287
+ associations[name]
2288
+ else
2289
+ objs = _load_associated_objects(opts, dynamic_opts)
2290
+ if opts.set_reciprocal_to_self?
2291
+ if opts.returns_array?
2292
+ objs.each{|o| add_reciprocal_object(opts, o)}
2293
+ elsif objs
2294
+ add_reciprocal_object(opts, objs)
2295
+ end
2296
+ end
2297
+
2298
+ # If the current object is frozen, you can't update the associations
2299
+ # cache. This can cause issues for after_load procs that expect
2300
+ # the objects to be already cached in the associations, but
2301
+ # unfortunately that case cannot be handled.
2302
+ associations[name] = objs unless frozen?
2303
+ run_association_callbacks(opts, :after_load, objs)
2304
+ frozen? ? objs : associations[name]
2305
+ end
2306
+ end
2307
+
2308
+ # Whether to use a simple primary key lookup on the associated class when loading.
2309
+ def load_with_primary_key_lookup?(opts, dynamic_opts)
2310
+ opts[:type] == :many_to_one &&
2311
+ !dynamic_opts[:callback] &&
2312
+ opts.send(:cached_fetch, :many_to_one_pk_lookup){opts.primary_key == opts.associated_class.primary_key}
2313
+ end
2314
+
2315
+ # Convert the input of the add_* association method into an associated object. For
2316
+ # hashes, this creates a new object using the hash. For integers, strings, and arrays,
2317
+ # assume the value specifies a primary key, and lookup an existing object with that primary key.
2318
+ # Otherwise, if the object is not already an instance of the class, raise an exception.
2319
+ def make_add_associated_object(opts, o)
2320
+ klass = opts.associated_class
2321
+
2322
+ case o
2323
+ when Hash
2324
+ klass.new(o)
2325
+ when Integer, String, Array
2326
+ klass.with_pk!(o)
2327
+ when klass
2328
+ o
2329
+ else
2330
+ raise(Sequel::Error, "associated object #{o.inspect} not of correct type #{klass}")
2331
+ end
2332
+ end
2333
+
2334
+ # Remove all associated objects from the given association
2335
+ def remove_all_associated_objects(opts, *args)
2336
+ raise(Sequel::Error, "model object #{inspect} does not have a primary key") if opts.dataset_need_primary_key? && !pk
2337
+ send(opts._remove_all_method, *args)
2338
+ ret = associations[opts[:name]].each{|o| remove_reciprocal_object(opts, o)} if associations.include?(opts[:name])
2339
+ associations[opts[:name]] = []
2340
+ ret
2341
+ end
2342
+
2343
+ # Remove the given associated object from the given association
2344
+ def remove_associated_object(opts, o, *args)
2345
+ klass = opts.associated_class
2346
+ if o.is_a?(Integer) || o.is_a?(String) || o.is_a?(Array)
2347
+ o = remove_check_existing_object_from_pk(opts, o, *args)
2348
+ elsif !o.is_a?(klass)
2349
+ raise(Sequel::Error, "associated object #{o.inspect} not of correct type #{klass}")
2350
+ elsif opts.remove_should_check_existing? && send(opts.dataset_method).where(o.pk_hash).empty?
2351
+ raise(Sequel::Error, "associated object #{o.inspect} is not currently associated to #{inspect}")
2352
+ end
2353
+ raise(Sequel::Error, "model object #{inspect} does not have a primary key") if opts.dataset_need_primary_key? && !pk
2354
+ raise(Sequel::Error, "associated object #{o.inspect} does not have a primary key") if opts.need_associated_primary_key? && !o.pk
2355
+ return if run_association_callbacks(opts, :before_remove, o) == false
2356
+ return if !send(opts._remove_method, o, *args) && opts.handle_silent_modification_failure?
2357
+ associations[opts[:name]].delete_if{|x| o === x} if associations.include?(opts[:name])
2358
+ remove_reciprocal_object(opts, o)
2359
+ run_association_callbacks(opts, :after_remove, o)
2360
+ o
2361
+ end
2362
+
2363
+ # Check that the object from the associated table specified by the primary key
2364
+ # is currently associated to the receiver. If it is associated, return the object, otherwise
2365
+ # raise an error.
2366
+ def remove_check_existing_object_from_pk(opts, o, *args)
2367
+ key = o
2368
+ pkh = opts.associated_class.qualified_primary_key_hash(key)
2369
+ raise(Sequel::Error, "no object with key(s) #{key.inspect} is currently associated to #{inspect}") unless o = send(opts.dataset_method).first(pkh)
2370
+ o
2371
+ end
2372
+
2373
+ # Remove/unset the current object from/as the given object's reciprocal association.
2374
+ def remove_reciprocal_object(opts, o)
2375
+ return unless reciprocal = opts.reciprocal
2376
+ if opts.reciprocal_array?
2377
+ if array = o.associations[reciprocal]
2378
+ array.delete_if{|x| self === x}
2379
+ end
2380
+ else
2381
+ o.associations[reciprocal] = nil
2382
+ end
2383
+ end
2384
+
2385
+ # Run the callback for the association with the object.
2386
+ def run_association_callbacks(reflection, callback_type, object)
2387
+ # The reason we automatically set raise_error for singular associations is that
2388
+ # assignment in ruby always returns the argument instead of the result of the
2389
+ # method, so we can't return nil to signal that the association callback prevented
2390
+ # the modification
2391
+ raise_error = raise_on_save_failure || !reflection.returns_array?
2392
+ stop_on_false = [:before_add, :before_remove, :before_set].include?(callback_type)
2393
+ reflection[callback_type].each do |cb|
2394
+ res = case cb
2395
+ when Symbol
2396
+ send(cb, object)
2397
+ when Proc
2398
+ cb.call(self, object)
2399
+ else
2400
+ raise Error, "callbacks should either be Procs or Symbols"
2401
+ end
2402
+
2403
+ if res == false and stop_on_false
2404
+ raise(HookFailed, "Unable to modify association for #{inspect}: one of the #{callback_type} hooks returned false")
2405
+ end
2406
+ end
2407
+ rescue HookFailed
2408
+ return false unless raise_error
2409
+ raise
2410
+ end
2411
+
2412
+ # Set the given object as the associated object for the given *_to_one association reflection
2413
+ def _set_associated_object(opts, o)
2414
+ a = associations[opts[:name]]
2415
+ return if a && a == o && !set_associated_object_if_same?
2416
+ run_association_callbacks(opts, :before_set, o)
2417
+ remove_reciprocal_object(opts, a) if a
2418
+ send(opts._setter_method, o)
2419
+ associations[opts[:name]] = o
2420
+ add_reciprocal_object(opts, o) if o
2421
+ run_association_callbacks(opts, :after_set, o)
2422
+ o
2423
+ end
2424
+
2425
+ # Whether run the associated object setter code if passed the same object as the one already
2426
+ # cached in the association. Usually not set (so nil), can be set on a per-object basis
2427
+ # if necessary.
2428
+ def set_associated_object_if_same?
2429
+ @set_associated_object_if_same
2430
+ end
2431
+
2432
+ # Set the given object as the associated object for the given many_to_one association reflection
2433
+ def set_associated_object(opts, o)
2434
+ raise(Error, "associated object #{o.inspect} does not have a primary key") if o && !o.pk
2435
+ _set_associated_object(opts, o)
2436
+ end
2437
+
2438
+ # Set the given object as the associated object for the given one_through_one association reflection
2439
+ def set_one_through_one_associated_object(opts, o)
2440
+ raise(Error, "object #{inspect} does not have a primary key") unless pk
2441
+ raise(Error, "associated object #{o.inspect} does not have a primary key") if o && !o.pk
2442
+ _set_associated_object(opts, o)
2443
+ end
2444
+
2445
+ # Set the given object as the associated object for the given one_to_one association reflection
2446
+ def set_one_to_one_associated_object(opts, o)
2447
+ raise(Error, "object #{inspect} does not have a primary key") unless pk
2448
+ _set_associated_object(opts, o)
2449
+ end
2450
+ end
2451
+
2452
+ # Eager loading makes it so that you can load all associated records for a
2453
+ # set of objects in a single query, instead of a separate query for each object.
2454
+ #
2455
+ # Two separate implementations are provided. +eager+ should be used most of the
2456
+ # time, as it loads associated records using one query per association. However,
2457
+ # it does not allow you the ability to filter or order based on columns in associated tables. +eager_graph+ loads
2458
+ # all records in a single query using JOINs, allowing you to filter or order based on columns in associated
2459
+ # tables. However, +eager_graph+ is usually slower than +eager+, especially if multiple
2460
+ # one_to_many or many_to_many associations are joined.
2461
+ #
2462
+ # You can cascade the eager loading (loading associations on associated objects)
2463
+ # with no limit to the depth of the cascades. You do this by passing a hash to +eager+ or +eager_graph+
2464
+ # with the keys being associations of the current model and values being
2465
+ # associations of the model associated with the current model via the key.
2466
+ #
2467
+ # The arguments can be symbols or hashes with symbol keys (for cascaded
2468
+ # eager loading). Examples:
2469
+ #
2470
+ # Album.eager(:artist).all
2471
+ # Album.eager_graph(:artist).all
2472
+ # Album.eager(:artist, :genre).all
2473
+ # Album.eager_graph(:artist, :genre).all
2474
+ # Album.eager(:artist).eager(:genre).all
2475
+ # Album.eager_graph(:artist).eager(:genre).all
2476
+ # Artist.eager(:albums=>:tracks).all
2477
+ # Artist.eager_graph(:albums=>:tracks).all
2478
+ # Artist.eager(:albums=>{:tracks=>:genre}).all
2479
+ # Artist.eager_graph(:albums=>{:tracks=>:genre}).all
2480
+ #
2481
+ # You can also pass a callback as a hash value in order to customize the dataset being
2482
+ # eager loaded at query time, analogous to the way the :eager_block association option
2483
+ # allows you to customize it at association definition time. For example,
2484
+ # if you wanted artists with their albums since 1990:
2485
+ #
2486
+ # Artist.eager(:albums => proc{|ds| ds.where{year > 1990}})
2487
+ #
2488
+ # Or if you needed albums and their artist's name only, using a single query:
2489
+ #
2490
+ # Albums.eager_graph(:artist => proc{|ds| ds.select(:name)})
2491
+ #
2492
+ # To cascade eager loading while using a callback, you substitute the cascaded
2493
+ # associations with a single entry hash that has the proc callback as the key and
2494
+ # the cascaded associations as the value. This will load artists with their albums
2495
+ # since 1990, and also the tracks on those albums and the genre for those tracks:
2496
+ #
2497
+ # Artist.eager(:albums => {proc{|ds| ds.where{year > 1990}}=>{:tracks => :genre}})
2498
+ module DatasetMethods
2499
+ Sequel::Dataset.def_mutation_method(:eager, :eager_graph, :module=>self)
2500
+
2501
+ %w'inner left right full'.each do |type|
2502
+ class_eval <<END, __FILE__, __LINE__+1
2503
+ def association_#{type}_join(*associations)
2504
+ _association_join(:#{type}, associations)
2505
+ end
2506
+ END
2507
+ end
2508
+
2509
+ # Adds one or more INNER JOINs to the existing dataset using the keys and conditions
2510
+ # specified by the given association. The following methods also exist for specifying
2511
+ # a different type of JOIN:
2512
+ #
2513
+ # association_full_join :: FULL JOIN
2514
+ # association_inner_join :: INNER JOIN
2515
+ # association_left_join :: LEFT JOIN
2516
+ # association_right_join :: RIGHT JOIN
2517
+ def association_join(*associations)
2518
+ association_inner_join(*associations)
2519
+ end
2520
+
2521
+ # If the expression is in the form <tt>x = y</tt> where +y+ is a <tt>Sequel::Model</tt>
2522
+ # instance, array of <tt>Sequel::Model</tt> instances, or a <tt>Sequel::Model</tt> dataset,
2523
+ # assume +x+ is an association symbol and look up the association reflection
2524
+ # via the dataset's model. From there, return the appropriate SQL based on the type of
2525
+ # association and the values of the foreign/primary keys of +y+. For most association
2526
+ # types, this is a simple transformation, but for +many_to_many+ associations this
2527
+ # creates a subquery to the join table.
2528
+ def complex_expression_sql_append(sql, op, args)
2529
+ r = args.at(1)
2530
+ if (((op == :'=' || op == :'!=') and r.is_a?(Sequel::Model)) ||
2531
+ (multiple = ((op == :IN || op == :'NOT IN') and ((is_ds = r.is_a?(Sequel::Dataset)) or r.all?{|x| x.is_a?(Sequel::Model)}))))
2532
+ l = args.at(0)
2533
+ if ar = model.association_reflections[l]
2534
+ if multiple
2535
+ klass = ar.associated_class
2536
+ if is_ds
2537
+ if r.respond_to?(:model)
2538
+ unless r.model <= klass
2539
+ # A dataset for a different model class, could be a valid regular query
2540
+ return super
2541
+ end
2542
+ else
2543
+ # Not a model dataset, could be a valid regular query
2544
+ return super
2545
+ end
2546
+ else
2547
+ unless r.all?{|x| x.is_a?(klass)}
2548
+ raise Sequel::Error, "invalid association class for one object for association #{l.inspect} used in dataset filter for model #{model.inspect}, expected class #{klass.inspect}"
2549
+ end
2550
+ end
2551
+ elsif !r.is_a?(ar.associated_class)
2552
+ raise Sequel::Error, "invalid association class #{r.class.inspect} for association #{l.inspect} used in dataset filter for model #{model.inspect}, expected class #{ar.associated_class.inspect}"
2553
+ end
2554
+
2555
+ if exp = association_filter_expression(op, ar, r)
2556
+ literal_append(sql, exp)
2557
+ else
2558
+ raise Sequel::Error, "invalid association type #{ar[:type].inspect} for association #{l.inspect} used in dataset filter for model #{model.inspect}"
2559
+ end
2560
+ elsif multiple && (is_ds || r.empty?)
2561
+ # Not a query designed for this support, could be a valid regular query
2562
+ super
2563
+ else
2564
+ raise Sequel::Error, "invalid association #{l.inspect} used in dataset filter for model #{model.inspect}"
2565
+ end
2566
+ else
2567
+ super
2568
+ end
2569
+ end
2570
+
2571
+ # The preferred eager loading method. Loads all associated records using one
2572
+ # query for each association.
2573
+ #
2574
+ # The basic idea for how it works is that the dataset is first loaded normally.
2575
+ # Then it goes through all associations that have been specified via +eager+.
2576
+ # It loads each of those associations separately, then associates them back
2577
+ # to the original dataset via primary/foreign keys. Due to the necessity of
2578
+ # all objects being present, you need to use +all+ to use eager loading, as it
2579
+ # can't work with +each+.
2580
+ #
2581
+ # This implementation avoids the complexity of extracting an object graph out
2582
+ # of a single dataset, by building the object graph out of multiple datasets,
2583
+ # one for each association. By using a separate dataset for each association,
2584
+ # it avoids problems such as aliasing conflicts and creating cartesian product
2585
+ # result sets if multiple one_to_many or many_to_many eager associations are requested.
2586
+ #
2587
+ # One limitation of using this method is that you cannot filter the dataset
2588
+ # based on values of columns in an associated table, since the associations are loaded
2589
+ # in separate queries. To do that you need to load all associations in the
2590
+ # same query, and extract an object graph from the results of that query. If you
2591
+ # need to filter based on columns in associated tables, look at +eager_graph+
2592
+ # or join the tables you need to filter on manually.
2593
+ #
2594
+ # Each association's order, if defined, is respected.
2595
+ # If the association uses a block or has an :eager_block argument, it is used.
2596
+ def eager(*associations)
2597
+ opts = @opts[:eager]
2598
+ association_opts = eager_options_for_associations(associations)
2599
+ opts = opts ? Hash[opts].merge!(association_opts) : association_opts
2600
+ clone(:eager=>opts)
2601
+ end
2602
+
2603
+ # The secondary eager loading method. Loads all associations in a single query. This
2604
+ # method should only be used if you need to filter or order based on columns in associated tables.
2605
+ #
2606
+ # This method uses <tt>Dataset#graph</tt> to create appropriate aliases for columns in all the
2607
+ # tables. Then it uses the graph's metadata to build the associations from the single hash, and
2608
+ # finally replaces the array of hashes with an array model objects inside all.
2609
+ #
2610
+ # Be very careful when using this with multiple one_to_many or many_to_many associations, as you can
2611
+ # create large cartesian products. If you must graph multiple one_to_many and many_to_many associations,
2612
+ # make sure your filters are narrow if you have a large database.
2613
+ #
2614
+ # Each association's order, if defined, is respected. +eager_graph+ probably
2615
+ # won't work correctly on a limited dataset, unless you are
2616
+ # only graphing many_to_one, one_to_one, and one_through_one associations.
2617
+ #
2618
+ # Does not use the block defined for the association, since it does a single query for
2619
+ # all objects. You can use the :graph_* association options to modify the SQL query.
2620
+ #
2621
+ # Like +eager+, you need to call +all+ on the dataset for the eager loading to work. If you just
2622
+ # call +each+, it will yield plain hashes, each containing all columns from all the tables.
2623
+ def eager_graph(*associations)
2624
+ eager_graph_with_options(associations)
2625
+ end
2626
+
2627
+ # Run eager_graph with some options specific to just this call. Unlike eager_graph, this takes
2628
+ # the associations as a single argument instead of multiple arguments.
2629
+ #
2630
+ # Options:
2631
+ #
2632
+ # :join_type :: Override the join type specified in the association
2633
+ # :limit_strategy :: Use a strategy for handling limits on associations.
2634
+ # Appropriate :limit_strategy values are:
2635
+ # true :: Pick the most appropriate based on what the database supports
2636
+ # :distinct_on :: Force use of DISTINCT ON stategy (*_one associations only)
2637
+ # :correlated_subquery :: Force use of correlated subquery strategy (one_to_* associations only)
2638
+ # :window_function :: Force use of window function strategy
2639
+ # :ruby :: Don't modify the SQL, implement limits/offsets with array slicing
2640
+ #
2641
+ # This can also be a hash with association name symbol keys and one of the above values,
2642
+ # to use different strategies per association.
2643
+ #
2644
+ # The default is the :ruby strategy. Choosing a different strategy can make your code
2645
+ # significantly slower in some cases (perhaps even the majority of cases), so you should
2646
+ # only use this if you have benchmarked that it is faster for your use cases.
2647
+ def eager_graph_with_options(associations, opts=OPTS)
2648
+ associations = [associations] unless associations.is_a?(Array)
2649
+ if eg = @opts[:eager_graph]
2650
+ eg = eg.dup
2651
+ [:requirements, :reflections, :reciprocals, :limits].each{|k| eg[k] = eg[k].dup}
2652
+ eg[:local] = opts
2653
+ ds = clone(:eager_graph=>eg)
2654
+ ds.eager_graph_associations(ds, model, ds.opts[:eager_graph][:master], [], *associations)
2655
+ else
2656
+ # Each of the following have a symbol key for the table alias, with the following values:
2657
+ # :reciprocals :: the reciprocal value to use for this association
2658
+ # :reflections :: AssociationReflection instance related to this association
2659
+ # :requirements :: array of requirements for this association
2660
+ # :limits :: Any limit/offset array slicing that need to be handled in ruby land after loading
2661
+ opts = {:requirements=>{}, :master=>alias_symbol(first_source), :reflections=>{}, :reciprocals=>{}, :limits=>{}, :local=>opts, :cartesian_product_number=>0, :row_proc=>row_proc}
2662
+ ds = clone(:eager_graph=>opts)
2663
+ ds.eager_graph_associations(ds, model, ds.opts[:eager_graph][:master], [], *associations).naked
2664
+ end
2665
+ end
2666
+
2667
+ # If the dataset is being eagerly loaded, default to calling all
2668
+ # instead of each.
2669
+ def to_hash(key_column=nil, value_column=nil, opts=OPTS)
2670
+ if (@opts[:eager_graph] || @opts[:eager]) && !opts.has_key?(:all)
2671
+ opts = Hash[opts]
2672
+ opts[:all] = true
2673
+ end
2674
+ super
2675
+ end
2676
+
2677
+ # If the dataset is being eagerly loaded, default to calling all
2678
+ # instead of each.
2679
+ def to_hash_groups(key_column, value_column=nil, opts=OPTS)
2680
+ if (@opts[:eager_graph] || @opts[:eager]) && !opts.has_key?(:all)
2681
+ opts = Hash[opts]
2682
+ opts[:all] = true
2683
+ end
2684
+ super
2685
+ end
2686
+
2687
+ # Do not attempt to split the result set into associations,
2688
+ # just return results as simple objects. This is useful if you
2689
+ # want to use eager_graph as a shortcut to have all of the joins
2690
+ # and aliasing set up, but want to do something else with the dataset.
2691
+ def ungraphed
2692
+ ds = super.clone(:eager_graph=>nil)
2693
+ if (eg = @opts[:eager_graph]) && (rp = eg[:row_proc])
2694
+ ds.row_proc = rp
2695
+ end
2696
+ ds
2697
+ end
2698
+
2699
+ protected
2700
+
2701
+ # Call graph on the association with the correct arguments,
2702
+ # update the eager_graph data structure, and recurse into
2703
+ # eager_graph_associations if there are any passed in associations
2704
+ # (which would be dependencies of the current association)
2705
+ #
2706
+ # Arguments:
2707
+ # ds :: Current dataset
2708
+ # model :: Current Model
2709
+ # ta :: table_alias used for the parent association
2710
+ # requirements :: an array, used as a stack for requirements
2711
+ # r :: association reflection for the current association, or an SQL::AliasedExpression
2712
+ # with the reflection as the expression and the alias base as the aliaz.
2713
+ # *associations :: any associations dependent on this one
2714
+ def eager_graph_association(ds, model, ta, requirements, r, *associations)
2715
+ if r.is_a?(SQL::AliasedExpression)
2716
+ alias_base = r.alias
2717
+ r = r.expression
2718
+ else
2719
+ alias_base = r[:graph_alias_base]
2720
+ end
2721
+ assoc_table_alias = ds.unused_table_alias(alias_base)
2722
+ loader = r[:eager_grapher]
2723
+ if !associations.empty?
2724
+ if associations.first.respond_to?(:call)
2725
+ callback = associations.first
2726
+ associations = {}
2727
+ elsif associations.length == 1 && (assocs = associations.first).is_a?(Hash) && assocs.length == 1 && (pr_assoc = assocs.to_a.first) && pr_assoc.first.respond_to?(:call)
2728
+ callback, assoc = pr_assoc
2729
+ associations = assoc.is_a?(Array) ? assoc : [assoc]
2730
+ end
2731
+ end
2732
+ local_opts = ds.opts[:eager_graph][:local]
2733
+ limit_strategy = r.eager_graph_limit_strategy(local_opts[:limit_strategy])
2734
+ ds = loader.call(:self=>ds, :table_alias=>assoc_table_alias, :implicit_qualifier=>(ta == ds.opts[:eager_graph][:master]) ? first_source : qualifier_from_alias_symbol(ta, first_source), :callback=>callback, :join_type=>local_opts[:join_type], :join_only=>local_opts[:join_only], :limit_strategy=>limit_strategy, :from_self_alias=>ds.opts[:eager_graph][:master])
2735
+ if r[:order_eager_graph] && (order = r.fetch(:graph_order, r[:order]))
2736
+ ds = ds.order_more(*qualified_expression(order, assoc_table_alias))
2737
+ end
2738
+ eager_graph = ds.opts[:eager_graph]
2739
+ eager_graph[:requirements][assoc_table_alias] = requirements.dup
2740
+ eager_graph[:reflections][assoc_table_alias] = r
2741
+ if limit_strategy == :ruby
2742
+ eager_graph[:limits][assoc_table_alias] = r.limit_and_offset
2743
+ end
2744
+ eager_graph[:cartesian_product_number] += r[:cartesian_product_number] || 2
2745
+ ds = ds.eager_graph_associations(ds, r.associated_class, assoc_table_alias, requirements + [assoc_table_alias], *associations) unless associations.empty?
2746
+ ds
2747
+ end
2748
+
2749
+ # Check the associations are valid for the given model.
2750
+ # Call eager_graph_association on each association.
2751
+ #
2752
+ # Arguments:
2753
+ # ds :: Current dataset
2754
+ # model :: Current Model
2755
+ # ta :: table_alias used for the parent association
2756
+ # requirements :: an array, used as a stack for requirements
2757
+ # *associations :: the associations to add to the graph
2758
+ def eager_graph_associations(ds, model, ta, requirements, *associations)
2759
+ return ds if associations.empty?
2760
+ associations.flatten.each do |association|
2761
+ ds = case association
2762
+ when Symbol, SQL::AliasedExpression
2763
+ ds.eager_graph_association(ds, model, ta, requirements, eager_graph_check_association(model, association))
2764
+ when Hash
2765
+ association.each do |assoc, assoc_assocs|
2766
+ ds = ds.eager_graph_association(ds, model, ta, requirements, eager_graph_check_association(model, assoc), assoc_assocs)
2767
+ end
2768
+ ds
2769
+ else
2770
+ raise(Sequel::Error, 'Associations must be in the form of a symbol or hash')
2771
+ end
2772
+ end
2773
+ ds
2774
+ end
2775
+
2776
+ # Replace the array of plain hashes with an array of model objects will all eager_graphed
2777
+ # associations set in the associations cache for each object.
2778
+ def eager_graph_build_associations(hashes)
2779
+ hashes.replace(EagerGraphLoader.new(self).load(hashes))
2780
+ end
2781
+
2782
+ private
2783
+
2784
+ # Return a new dataset with JOINs of the given type added, using the tables and
2785
+ # conditions specified by the associations.
2786
+ def _association_join(type, associations)
2787
+ clone(:join=>clone(:graph_from_self=>false).eager_graph_with_options(associations, :join_type=>type, :join_only=>true).opts[:join])
2788
+ end
2789
+
2790
+ # If the association has conditions itself, then it requires additional filters be
2791
+ # added to the current dataset to ensure that the passed in object would also be
2792
+ # included by the association's conditions.
2793
+ def add_association_filter_conditions(ref, obj, expr)
2794
+ if expr != SQL::Constants::FALSE && ref.filter_by_associations_add_conditions?
2795
+ Sequel.expr(ref.filter_by_associations_conditions_expression(obj))
2796
+ else
2797
+ expr
2798
+ end
2799
+ end
2800
+
2801
+ # Process the array of associations arguments (Symbols, Arrays, and Hashes),
2802
+ # and return a hash of options suitable for cascading.
2803
+ def eager_options_for_associations(associations)
2804
+ opts = {}
2805
+ associations.flatten.each do |association|
2806
+ case association
2807
+ when Symbol
2808
+ check_association(model, association)
2809
+ opts[association] = nil
2810
+ when Hash
2811
+ association.keys.each{|assoc| check_association(model, assoc)}
2812
+ opts.merge!(association)
2813
+ else
2814
+ raise(Sequel::Error, 'Associations must be in the form of a symbol or hash')
2815
+ end
2816
+ end
2817
+ opts
2818
+ end
2819
+
2820
+ # Return an expression for filtering by the given association reflection and associated object.
2821
+ def association_filter_expression(op, ref, obj)
2822
+ meth = :"#{ref[:type]}_association_filter_expression"
2823
+ send(meth, op, ref, obj) if respond_to?(meth, true)
2824
+ end
2825
+
2826
+ # Handle inversion for association filters by returning an inverted expression,
2827
+ # plus also handling cases where the referenced columns are NULL.
2828
+ def association_filter_handle_inversion(op, exp, cols)
2829
+ if op == :'!=' || op == :'NOT IN'
2830
+ if exp == SQL::Constants::FALSE
2831
+ ~exp
2832
+ else
2833
+ ~exp | Sequel::SQL::BooleanExpression.from_value_pairs(cols.zip([]), :OR)
2834
+ end
2835
+ else
2836
+ exp
2837
+ end
2838
+ end
2839
+
2840
+ # Return an expression for making sure that the given keys match the value of
2841
+ # the given methods for either the single object given or for any of the objects
2842
+ # given if +obj+ is an array.
2843
+ def association_filter_key_expression(keys, meths, obj)
2844
+ vals = if obj.is_a?(Sequel::Dataset)
2845
+ {(keys.length == 1 ? keys.first : keys)=>obj.select(*meths).exclude(Sequel::SQL::BooleanExpression.from_value_pairs(meths.zip([]), :OR))}
2846
+ else
2847
+ vals = Array(obj).reject{|o| !meths.all?{|m| o.get_column_value(m)}}
2848
+ return SQL::Constants::FALSE if vals.empty?
2849
+ if obj.is_a?(Array)
2850
+ if keys.length == 1
2851
+ meth = meths.first
2852
+ {keys.first=>vals.map{|o| o.get_column_value(meth)}}
2853
+ else
2854
+ {keys=>vals.map{|o| meths.map{|m| o.get_column_value(m)}}}
2855
+ end
2856
+ else
2857
+ keys.zip(meths.map{|k| obj.get_column_value(k)})
2858
+ end
2859
+ end
2860
+ SQL::BooleanExpression.from_value_pairs(vals)
2861
+ end
2862
+
2863
+ # Make sure the association is valid for this model, and return the related AssociationReflection.
2864
+ def check_association(model, association)
2865
+ raise(Sequel::UndefinedAssociation, "Invalid association #{association} for #{model.name}") unless reflection = model.association_reflection(association)
2866
+ raise(Sequel::Error, "Eager loading is not allowed for #{model.name} association #{association}") if reflection[:allow_eager] == false
2867
+ reflection
2868
+ end
2869
+
2870
+ # Allow associations that are eagerly graphed to be specified as an SQL::AliasedExpression, for
2871
+ # per-call determining of the alias base.
2872
+ def eager_graph_check_association(model, association)
2873
+ if association.is_a?(SQL::AliasedExpression)
2874
+ SQL::AliasedExpression.new(check_association(model, association.expression), association.alias)
2875
+ else
2876
+ check_association(model, association)
2877
+ end
2878
+ end
2879
+
2880
+ # Eagerly load all specified associations
2881
+ def eager_load(a, eager_assoc=@opts[:eager])
2882
+ return if a.empty?
2883
+ # Key is foreign/primary key name symbol
2884
+ # Value is hash with keys being foreign/primary key values (generally integers)
2885
+ # and values being an array of current model objects with that
2886
+ # specific foreign/primary key
2887
+ key_hash = {}
2888
+ # Reflections for all associations to eager load
2889
+ reflections = eager_assoc.keys.collect{|assoc| model.association_reflection(assoc) || (raise Sequel::UndefinedAssociation, "Model: #{self}, Association: #{assoc}")}
2890
+
2891
+ # Populate the key_hash entry for each association being eagerly loaded
2892
+ reflections.each do |r|
2893
+ if key = r.eager_loader_key
2894
+ # key_hash for this key has already been populated,
2895
+ # skip populating again so that duplicate values
2896
+ # aren't added.
2897
+ unless id_map = key_hash[key]
2898
+ id_map = key_hash[key] = Hash.new{|h,k| h[k] = []}
2899
+
2900
+ # Supporting both single (Symbol) and composite (Array) keys.
2901
+ a.each do |rec|
2902
+ case key
2903
+ when Array
2904
+ if (k = key.map{|k2| rec.get_column_value(k2)}) && k.all?
2905
+ id_map[k] << rec
2906
+ end
2907
+ when Symbol
2908
+ if k = rec.get_column_value(key)
2909
+ id_map[k] << rec
2910
+ end
2911
+ else
2912
+ raise Error, "unhandled eager_loader_key #{key.inspect} for association #{r[:name]}"
2913
+ end
2914
+ end
2915
+ end
2916
+ else
2917
+ id_map = nil
2918
+ end
2919
+
2920
+ loader = r[:eager_loader]
2921
+ associations = eager_assoc[r[:name]]
2922
+ if associations.respond_to?(:call)
2923
+ eager_block = associations
2924
+ associations = {}
2925
+ elsif associations.is_a?(Hash) && associations.length == 1 && (pr_assoc = associations.to_a.first) && pr_assoc.first.respond_to?(:call)
2926
+ eager_block, associations = pr_assoc
2927
+ end
2928
+ loader.call(:key_hash=>key_hash, :rows=>a, :associations=>associations, :self=>self, :eager_block=>eager_block, :id_map=>id_map)
2929
+ a.each{|object| object.send(:run_association_callbacks, r, :after_load, object.associations[r[:name]])} unless r[:after_load].empty?
2930
+ end
2931
+ end
2932
+
2933
+ # Return a subquery expression for filering by a many_to_many association
2934
+ def many_to_many_association_filter_expression(op, ref, obj)
2935
+ lpks, lks, rks = ref.values_at(:left_primary_key_columns, :left_keys, :right_keys)
2936
+ jt = ref.join_table_alias
2937
+ lpks = lpks.first if lpks.length == 1
2938
+ lpks = ref.qualify(model.table_name, lpks)
2939
+
2940
+ meths = if obj.is_a?(Sequel::Dataset)
2941
+ ref.qualify(obj.model.table_name, ref.right_primary_keys)
2942
+ else
2943
+ ref.right_primary_key_methods
2944
+ end
2945
+
2946
+ expr = association_filter_key_expression(ref.qualify(jt, rks), meths, obj)
2947
+ unless expr == SQL::Constants::FALSE
2948
+ expr = SQL::BooleanExpression.from_value_pairs(lpks=>model.db.from(ref[:join_table]).select(*ref.qualify(jt, lks)).where(expr).exclude(SQL::BooleanExpression.from_value_pairs(ref.qualify(jt, lks).zip([]), :OR)))
2949
+ expr = add_association_filter_conditions(ref, obj, expr)
2950
+ end
2951
+
2952
+ association_filter_handle_inversion(op, expr, Array(lpks))
2953
+ end
2954
+ alias one_through_one_association_filter_expression many_to_many_association_filter_expression
2955
+
2956
+ # Return a simple equality expression for filering by a many_to_one association
2957
+ def many_to_one_association_filter_expression(op, ref, obj)
2958
+ keys = ref.qualify(model.table_name, ref[:key_columns])
2959
+ meths = if obj.is_a?(Sequel::Dataset)
2960
+ ref.qualify(obj.model.table_name, ref.primary_keys)
2961
+ else
2962
+ ref.primary_key_methods
2963
+ end
2964
+
2965
+ expr = association_filter_key_expression(keys, meths, obj)
2966
+ expr = add_association_filter_conditions(ref, obj, expr)
2967
+ association_filter_handle_inversion(op, expr, keys)
2968
+ end
2969
+
2970
+ # Return a simple equality expression for filering by a one_to_* association
2971
+ def one_to_many_association_filter_expression(op, ref, obj)
2972
+ keys = ref.qualify(model.table_name, ref[:primary_key_columns])
2973
+ meths = if obj.is_a?(Sequel::Dataset)
2974
+ ref.qualify(obj.model.table_name, ref[:keys])
2975
+ else
2976
+ ref[:key_methods]
2977
+ end
2978
+
2979
+ expr = association_filter_key_expression(keys, meths, obj)
2980
+ expr = add_association_filter_conditions(ref, obj, expr)
2981
+ association_filter_handle_inversion(op, expr, keys)
2982
+ end
2983
+ alias one_to_one_association_filter_expression one_to_many_association_filter_expression
2984
+
2985
+ # Build associations from the graph if #eager_graph was used,
2986
+ # and/or load other associations if #eager was used.
2987
+ def post_load(all_records)
2988
+ eager_graph_build_associations(all_records) if @opts[:eager_graph]
2989
+ eager_load(all_records) if @opts[:eager] && (row_proc || @opts[:eager_graph])
2990
+ super
2991
+ end
2992
+ end
2993
+
2994
+ # This class is the internal implementation of eager_graph. It is responsible for taking an array of plain
2995
+ # hashes and returning an array of model objects with all eager_graphed associations already set in the
2996
+ # association cache.
2997
+ class EagerGraphLoader
2998
+ # Hash with table alias symbol keys and after_load hook values
2999
+ attr_reader :after_load_map
3000
+
3001
+ # Hash with table alias symbol keys and association name values
3002
+ attr_reader :alias_map
3003
+
3004
+ # Hash with table alias symbol keys and subhash values mapping column_alias symbols to the
3005
+ # symbol of the real name of the column
3006
+ attr_reader :column_maps
3007
+
3008
+ # Recursive hash with table alias symbol keys mapping to hashes with dependent table alias symbol keys.
3009
+ attr_reader :dependency_map
3010
+
3011
+ # Hash with table alias symbol keys and [limit, offset] values
3012
+ attr_reader :limit_map
3013
+
3014
+ # Hash with table alias symbol keys and callable values used to create model instances
3015
+ # The table alias symbol for the primary model
3016
+ attr_reader :master
3017
+
3018
+ # Hash with table alias symbol keys and primary key symbol values (or arrays of primary key symbols for
3019
+ # composite key tables)
3020
+ attr_reader :primary_keys
3021
+
3022
+ # Hash with table alias symbol keys and reciprocal association symbol values,
3023
+ # used for setting reciprocals for one_to_many associations.
3024
+ attr_reader :reciprocal_map
3025
+
3026
+ # Hash with table alias symbol keys and subhash values mapping primary key symbols (or array of symbols)
3027
+ # to model instances. Used so that only a single model instance is created for each object.
3028
+ attr_reader :records_map
3029
+
3030
+ # Hash with table alias symbol keys and AssociationReflection values
3031
+ attr_reader :reflection_map
3032
+
3033
+ # Hash with table alias symbol keys and callable values used to create model instances
3034
+ attr_reader :row_procs
3035
+
3036
+ # Hash with table alias symbol keys and true/false values, where true means the
3037
+ # association represented by the table alias uses an array of values instead of
3038
+ # a single value (i.e. true => *_many, false => *_to_one).
3039
+ attr_reader :type_map
3040
+
3041
+ # Initialize all of the data structures used during loading.
3042
+ def initialize(dataset)
3043
+ opts = dataset.opts
3044
+ eager_graph = opts[:eager_graph]
3045
+ @master = eager_graph[:master]
3046
+ requirements = eager_graph[:requirements]
3047
+ reflection_map = @reflection_map = eager_graph[:reflections]
3048
+ reciprocal_map = @reciprocal_map = eager_graph[:reciprocals]
3049
+ limit_map = @limit_map = eager_graph[:limits]
3050
+ @unique = eager_graph[:cartesian_product_number] > 1
3051
+
3052
+ alias_map = @alias_map = {}
3053
+ type_map = @type_map = {}
3054
+ after_load_map = @after_load_map = {}
3055
+ reflection_map.each do |k, v|
3056
+ alias_map[k] = v[:name]
3057
+ after_load_map[k] = v[:after_load] unless v[:after_load].empty?
3058
+ type_map[k] = if v.returns_array?
3059
+ true
3060
+ elsif (limit_and_offset = limit_map[k]) && !limit_and_offset.last.nil?
3061
+ :offset
3062
+ end
3063
+ end
3064
+
3065
+ # Make dependency map hash out of requirements array for each association.
3066
+ # This builds a tree of dependencies that will be used for recursion
3067
+ # to ensure that all parts of the object graph are loaded into the
3068
+ # appropriate subordinate association.
3069
+ @dependency_map = {}
3070
+ # Sort the associations by requirements length, so that
3071
+ # requirements are added to the dependency hash before their
3072
+ # dependencies.
3073
+ requirements.sort_by{|a| a[1].length}.each do |ta, deps|
3074
+ if deps.empty?
3075
+ dependency_map[ta] = {}
3076
+ else
3077
+ deps = deps.dup
3078
+ hash = dependency_map[deps.shift]
3079
+ deps.each do |dep|
3080
+ hash = hash[dep]
3081
+ end
3082
+ hash[ta] = {}
3083
+ end
3084
+ end
3085
+
3086
+ # This mapping is used to make sure that duplicate entries in the
3087
+ # result set are mapped to a single record. For example, using a
3088
+ # single one_to_many association with 10 associated records,
3089
+ # the main object column values appear in the object graph 10 times.
3090
+ # We map by primary key, if available, or by the object's entire values,
3091
+ # if not. The mapping must be per table, so create sub maps for each table
3092
+ # alias.
3093
+ records_map = {@master=>{}}
3094
+ alias_map.keys.each{|ta| records_map[ta] = {}}
3095
+ @records_map = records_map
3096
+
3097
+ datasets = opts[:graph][:table_aliases].to_a.reject{|ta,ds| ds.nil?}
3098
+ column_aliases = opts[:graph_aliases] || opts[:graph][:column_aliases]
3099
+ primary_keys = {}
3100
+ column_maps = {}
3101
+ models = {}
3102
+ row_procs = {}
3103
+ datasets.each do |ta, ds|
3104
+ models[ta] = ds.model
3105
+ primary_keys[ta] = []
3106
+ column_maps[ta] = {}
3107
+ row_procs[ta] = ds.row_proc
3108
+ end
3109
+ column_aliases.each do |col_alias, tc|
3110
+ ta, column = tc
3111
+ column_maps[ta][col_alias] = column
3112
+ end
3113
+ column_maps.each do |ta, h|
3114
+ pk = models[ta].primary_key
3115
+ if pk.is_a?(Array)
3116
+ primary_keys[ta] = []
3117
+ h.select{|ca, c| primary_keys[ta] << ca if pk.include?(c)}
3118
+ else
3119
+ h.select{|ca, c| primary_keys[ta] = ca if pk == c}
3120
+ end
3121
+ end
3122
+ @column_maps = column_maps
3123
+ @primary_keys = primary_keys
3124
+ @row_procs = row_procs
3125
+
3126
+ # For performance, create two special maps for the master table,
3127
+ # so you can skip a hash lookup.
3128
+ @master_column_map = column_maps[master]
3129
+ @master_primary_keys = primary_keys[master]
3130
+
3131
+ # Add a special hash mapping table alias symbols to 5 element arrays that just
3132
+ # contain the data in other data structures for that table alias. This is
3133
+ # used for performance, to get all values in one hash lookup instead of
3134
+ # separate hash lookups for each data structure.
3135
+ ta_map = {}
3136
+ alias_map.keys.each do |ta|
3137
+ ta_map[ta] = [records_map[ta], row_procs[ta], alias_map[ta], type_map[ta], reciprocal_map[ta]]
3138
+ end
3139
+ @ta_map = ta_map
3140
+ end
3141
+
3142
+ # Return an array of primary model instances with the associations cache prepopulated
3143
+ # for all model objects (both primary and associated).
3144
+ def load(hashes)
3145
+ master = master()
3146
+
3147
+ # Assign to local variables for speed increase
3148
+ rp = row_procs[master]
3149
+ rm = records_map[master]
3150
+ dm = dependency_map
3151
+
3152
+ # This will hold the final record set that we will be replacing the object graph with.
3153
+ records = []
3154
+
3155
+ hashes.each do |h|
3156
+ unless key = master_pk(h)
3157
+ key = hkey(master_hfor(h))
3158
+ end
3159
+ unless primary_record = rm[key]
3160
+ primary_record = rm[key] = rp.call(master_hfor(h))
3161
+ # Only add it to the list of records to return if it is a new record
3162
+ records.push(primary_record)
3163
+ end
3164
+ # Build all associations for the current object and it's dependencies
3165
+ _load(dm, primary_record, h)
3166
+ end
3167
+
3168
+ # Remove duplicate records from all associations if this graph could possibly be a cartesian product
3169
+ # Run after_load procs if there are any
3170
+ post_process(records, dm) if @unique || !after_load_map.empty? || !limit_map.empty?
3171
+
3172
+ records
3173
+ end
3174
+
3175
+ private
3176
+
3177
+ # Recursive method that creates associated model objects and associates them to the current model object.
3178
+ def _load(dependency_map, current, h)
3179
+ dependency_map.each do |ta, deps|
3180
+ unless key = pk(ta, h)
3181
+ ta_h = hfor(ta, h)
3182
+ unless ta_h.values.any?
3183
+ assoc_name = alias_map[ta]
3184
+ unless (assoc = current.associations).has_key?(assoc_name)
3185
+ assoc[assoc_name] = type_map[ta] ? [] : nil
3186
+ end
3187
+ next
3188
+ end
3189
+ key = hkey(ta_h)
3190
+ end
3191
+ rm, rp, assoc_name, tm, rcm = @ta_map[ta]
3192
+ unless rec = rm[key]
3193
+ rec = rm[key] = rp.call(hfor(ta, h))
3194
+ end
3195
+
3196
+ if tm
3197
+ unless (assoc = current.associations).has_key?(assoc_name)
3198
+ assoc[assoc_name] = []
3199
+ end
3200
+ assoc[assoc_name].push(rec)
3201
+ rec.associations[rcm] = current if rcm
3202
+ else
3203
+ current.associations[assoc_name] ||= rec
3204
+ end
3205
+ # Recurse into dependencies of the current object
3206
+ _load(deps, rec, h) unless deps.empty?
3207
+ end
3208
+ end
3209
+
3210
+ # Return the subhash for the specific table alias +ta+ by parsing the values out of the main hash +h+
3211
+ def hfor(ta, h)
3212
+ out = {}
3213
+ @column_maps[ta].each{|ca, c| out[c] = h[ca]}
3214
+ out
3215
+ end
3216
+
3217
+ # Return a suitable hash key for any subhash +h+, which is an array of values by column order.
3218
+ # This is only used if the primary key cannot be used.
3219
+ def hkey(h)
3220
+ h.sort_by{|x| x[0].to_s}
3221
+ end
3222
+
3223
+ # Return the subhash for the master table by parsing the values out of the main hash +h+
3224
+ def master_hfor(h)
3225
+ out = {}
3226
+ @master_column_map.each{|ca, c| out[c] = h[ca]}
3227
+ out
3228
+ end
3229
+
3230
+ # Return a primary key value for the master table by parsing it out of the main hash +h+.
3231
+ def master_pk(h)
3232
+ x = @master_primary_keys
3233
+ if x.is_a?(Array)
3234
+ unless x == []
3235
+ x = x.map{|ca| h[ca]}
3236
+ x if x.all?
3237
+ end
3238
+ else
3239
+ h[x]
3240
+ end
3241
+ end
3242
+
3243
+ # Return a primary key value for the given table alias by parsing it out of the main hash +h+.
3244
+ def pk(ta, h)
3245
+ x = primary_keys[ta]
3246
+ if x.is_a?(Array)
3247
+ unless x == []
3248
+ x = x.map{|ca| h[ca]}
3249
+ x if x.all?
3250
+ end
3251
+ else
3252
+ h[x]
3253
+ end
3254
+ end
3255
+
3256
+ # If the result set is the result of a cartesian product, then it is possible that
3257
+ # there are multiple records for each association when there should only be one.
3258
+ # In that case, for each object in all associations loaded via +eager_graph+, run
3259
+ # uniq! on the association to make sure no duplicate records show up.
3260
+ # Note that this can cause legitimate duplicate records to be removed.
3261
+ def post_process(records, dependency_map)
3262
+ records.each do |record|
3263
+ dependency_map.each do |ta, deps|
3264
+ assoc_name = alias_map[ta]
3265
+ list = record.send(assoc_name)
3266
+ rec_list = if type_map[ta]
3267
+ list.uniq!
3268
+ if lo = limit_map[ta]
3269
+ limit, offset = lo
3270
+ offset ||= 0
3271
+ if type_map[ta] == :offset
3272
+ [record.associations[assoc_name] = list[offset]]
3273
+ else
3274
+ list.replace(list[(offset)..(limit ? (offset)+limit-1 : -1)] || [])
3275
+ end
3276
+ else
3277
+ list
3278
+ end
3279
+ elsif list
3280
+ [list]
3281
+ else
3282
+ []
3283
+ end
3284
+ record.send(:run_association_callbacks, reflection_map[ta], :after_load, list) if after_load_map[ta]
3285
+ post_process(rec_list, deps) if !rec_list.empty? && !deps.empty?
3286
+ end
3287
+ end
3288
+ end
3289
+ end
3290
+ end
3291
+ end
3292
+ end