antfarm 0.3.0

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 (1690) hide show
  1. data/CHANGELOG +20 -0
  2. data/LICENSE +504 -0
  3. data/README +183 -0
  4. data/bin/antfarm +137 -0
  5. data/config/boot.rb +43 -0
  6. data/config/environment.rb +29 -0
  7. data/db/migrate/001_create_nodes.rb +33 -0
  8. data/db/migrate/002_create_layer2_interfaces.rb +33 -0
  9. data/db/migrate/003_create_layer3_interfaces.rb +34 -0
  10. data/db/migrate/004_create_layer3_networks.rb +32 -0
  11. data/db/migrate/005_create_ethernet_interfaces.rb +31 -0
  12. data/db/migrate/006_create_ip_interfaces.rb +31 -0
  13. data/db/migrate/007_create_ip_networks.rb +33 -0
  14. data/db/migrate/008_create_private_networks.rb +31 -0
  15. data/db/migrate/009_create_traffic.rb +35 -0
  16. data/db/schema.rb +84 -0
  17. data/lib/antfarm.jar +0 -0
  18. data/lib/antfarm.rb +242 -0
  19. data/lib/antfarm/ethernet_interface.rb +91 -0
  20. data/lib/antfarm/ip_interface.rb +177 -0
  21. data/lib/antfarm/ip_network.rb +109 -0
  22. data/lib/antfarm/layer2_interface.rb +98 -0
  23. data/lib/antfarm/layer3_interface.rb +140 -0
  24. data/lib/antfarm/layer3_network.rb +126 -0
  25. data/lib/antfarm/node.rb +78 -0
  26. data/lib/antfarm/private_network.rb +34 -0
  27. data/lib/antfarm/traffic.rb +32 -0
  28. data/lib/dbmanage.rb +135 -0
  29. data/lib/init/initializer.rb +107 -0
  30. data/lib/scparse.rb +332 -0
  31. data/lib/scripts/cisco/parse-arp.rb +66 -0
  32. data/lib/scripts/cisco/parse-ip-ifaces.rb +116 -0
  33. data/lib/scripts/cisco/parse-network-objects.rb +80 -0
  34. data/lib/scripts/cisco/parse-pix-config.rb +263 -0
  35. data/lib/scripts/cisco/parse-routes.rb +84 -0
  36. data/lib/scripts/load-host.rb +51 -0
  37. data/lib/scripts/load-network.rb +51 -0
  38. data/lib/scripts/load-route.rb +79 -0
  39. data/lib/scripts/load-router-nomac.rb +60 -0
  40. data/lib/scripts/load-router.rb +59 -0
  41. data/lib/scripts/nmap/parse-xml-results.rb +240 -0
  42. data/lib/scripts/pcap/parse-pcap-file.rb +64 -0
  43. data/lib/scripts/route.rb +89 -0
  44. data/lib/scripts/tethereal/load-arp.rb +67 -0
  45. data/lib/scripts/tethereal/load-ip.rb +65 -0
  46. data/lib/scripts/viz/display-networks.rb +97 -0
  47. data/lib/scripts/viz/dump-graphml.rb +219 -0
  48. data/lib/scripts/viz/dump-graphviz.rb +136 -0
  49. data/log/antfarm.log +0 -0
  50. data/rails/app/controllers/application.rb +10 -0
  51. data/rails/app/controllers/ethernet_interfaces_controller.rb +4 -0
  52. data/rails/app/controllers/ip_interfaces_controller.rb +4 -0
  53. data/rails/app/controllers/ip_networks_controller.rb +4 -0
  54. data/rails/app/controllers/layer2_interfaces_controller.rb +6 -0
  55. data/rails/app/controllers/layer3_interfaces_controller.rb +6 -0
  56. data/rails/app/controllers/layer3_networks_controller.rb +4 -0
  57. data/rails/app/controllers/nodes_controller.rb +9 -0
  58. data/rails/app/controllers/private_networks_controller.rb +4 -0
  59. data/rails/app/controllers/traffic_controller.rb +4 -0
  60. data/rails/app/helpers/application_helper.rb +3 -0
  61. data/rails/app/helpers/ethernet_interfaces_helper.rb +2 -0
  62. data/rails/app/helpers/ip_interfaces_helper.rb +2 -0
  63. data/rails/app/helpers/ip_networks_helper.rb +2 -0
  64. data/rails/app/helpers/layer2_interfaces_helper.rb +2 -0
  65. data/rails/app/helpers/layer3_interfaces_helper.rb +5 -0
  66. data/rails/app/helpers/layer3_networks_helper.rb +2 -0
  67. data/rails/app/helpers/nodes_helper.rb +2 -0
  68. data/rails/app/helpers/private_networks_helper.rb +2 -0
  69. data/rails/app/helpers/traffic_helper.rb +2 -0
  70. data/rails/app/views/layouts/ethernet_interfaces.html.erb +15 -0
  71. data/rails/app/views/layouts/ip_interfaces.html.erb +15 -0
  72. data/rails/app/views/layouts/ip_networks.html.erb +15 -0
  73. data/rails/app/views/layouts/layer2_interfaces.html.erb +15 -0
  74. data/rails/app/views/layouts/layer3_interfaces.html.erb +15 -0
  75. data/rails/app/views/layouts/layer3_networks.html.erb +15 -0
  76. data/rails/app/views/layouts/nodes.html.erb +15 -0
  77. data/rails/app/views/layouts/private_networks.html.erb +15 -0
  78. data/rails/app/views/layouts/traffic.html.erb +15 -0
  79. data/rails/config/boot.rb +145 -0
  80. data/rails/config/environment.rb +62 -0
  81. data/rails/config/environments/development.rb +17 -0
  82. data/rails/config/initializers/inflections.rb +10 -0
  83. data/rails/config/initializers/mime_types.rb +5 -0
  84. data/rails/config/routes.rb +36 -0
  85. data/rails/public/000-index.html +277 -0
  86. data/rails/public/404.html +30 -0
  87. data/rails/public/422.html +30 -0
  88. data/rails/public/500.html +30 -0
  89. data/rails/public/blank.html +33 -0
  90. data/rails/public/dispatch.cgi +10 -0
  91. data/rails/public/dispatch.fcgi +24 -0
  92. data/rails/public/dispatch.rb +10 -0
  93. data/rails/public/favicon.ico +0 -0
  94. data/rails/public/images/active_scaffold/DO_NOT_EDIT +2 -0
  95. data/rails/public/images/active_scaffold/default/add.gif +0 -0
  96. data/rails/public/images/active_scaffold/default/arrow_down.gif +0 -0
  97. data/rails/public/images/active_scaffold/default/arrow_up.gif +0 -0
  98. data/rails/public/images/active_scaffold/default/close.gif +0 -0
  99. data/rails/public/images/active_scaffold/default/cross.png +0 -0
  100. data/rails/public/images/active_scaffold/default/indicator-small.gif +0 -0
  101. data/rails/public/images/active_scaffold/default/indicator.gif +0 -0
  102. data/rails/public/images/active_scaffold/default/magnifier.png +0 -0
  103. data/rails/public/images/rails.png +0 -0
  104. data/rails/public/javascripts/active_scaffold/DO_NOT_EDIT +2 -0
  105. data/rails/public/javascripts/active_scaffold/default/active_scaffold.js +418 -0
  106. data/rails/public/javascripts/active_scaffold/default/dhtml_history.js +942 -0
  107. data/rails/public/javascripts/active_scaffold/default/form_enhancements.js +89 -0
  108. data/rails/public/javascripts/active_scaffold/default/rico_corner.js +370 -0
  109. data/rails/public/javascripts/application.js +2 -0
  110. data/rails/public/javascripts/controls.js +963 -0
  111. data/rails/public/javascripts/dragdrop.js +972 -0
  112. data/rails/public/javascripts/effects.js +1120 -0
  113. data/rails/public/javascripts/prototype.js +4225 -0
  114. data/rails/public/robots.txt +5 -0
  115. data/rails/public/stylesheets/active_scaffold/DO_NOT_EDIT +2 -0
  116. data/rails/public/stylesheets/active_scaffold/default/stylesheet-ie.css +35 -0
  117. data/rails/public/stylesheets/active_scaffold/default/stylesheet.css +770 -0
  118. data/rails/script/server +3 -0
  119. data/rails/vendor/plugins/active_scaffold/CHANGELOG +151 -0
  120. data/rails/vendor/plugins/active_scaffold/MIT-LICENSE +20 -0
  121. data/rails/vendor/plugins/active_scaffold/README +19 -0
  122. data/rails/vendor/plugins/active_scaffold/Rakefile +24 -0
  123. data/rails/vendor/plugins/active_scaffold/environment.rb +83 -0
  124. data/rails/vendor/plugins/active_scaffold/frontends/default/images/add.gif +0 -0
  125. data/rails/vendor/plugins/active_scaffold/frontends/default/images/arrow_down.gif +0 -0
  126. data/rails/vendor/plugins/active_scaffold/frontends/default/images/arrow_up.gif +0 -0
  127. data/rails/vendor/plugins/active_scaffold/frontends/default/images/close.gif +0 -0
  128. data/rails/vendor/plugins/active_scaffold/frontends/default/images/cross.png +0 -0
  129. data/rails/vendor/plugins/active_scaffold/frontends/default/images/indicator-small.gif +0 -0
  130. data/rails/vendor/plugins/active_scaffold/frontends/default/images/indicator.gif +0 -0
  131. data/rails/vendor/plugins/active_scaffold/frontends/default/images/magnifier.png +0 -0
  132. data/rails/vendor/plugins/active_scaffold/frontends/default/javascripts/active_scaffold.js +418 -0
  133. data/rails/vendor/plugins/active_scaffold/frontends/default/javascripts/dhtml_history.js +942 -0
  134. data/rails/vendor/plugins/active_scaffold/frontends/default/javascripts/form_enhancements.js +89 -0
  135. data/rails/vendor/plugins/active_scaffold/frontends/default/javascripts/rico_corner.js +370 -0
  136. data/rails/vendor/plugins/active_scaffold/frontends/default/stylesheets/stylesheet-ie.css +35 -0
  137. data/rails/vendor/plugins/active_scaffold/frontends/default/stylesheets/stylesheet.css +770 -0
  138. data/rails/vendor/plugins/active_scaffold/frontends/default/views/_add_existing_form.rhtml +40 -0
  139. data/rails/vendor/plugins/active_scaffold/frontends/default/views/_create_form.rhtml +45 -0
  140. data/rails/vendor/plugins/active_scaffold/frontends/default/views/_field_search.rhtml +55 -0
  141. data/rails/vendor/plugins/active_scaffold/frontends/default/views/_form.rhtml +18 -0
  142. data/rails/vendor/plugins/active_scaffold/frontends/default/views/_form_association.rhtml +44 -0
  143. data/rails/vendor/plugins/active_scaffold/frontends/default/views/_form_association_footer.rhtml +42 -0
  144. data/rails/vendor/plugins/active_scaffold/frontends/default/views/_form_association_header.rhtml +10 -0
  145. data/rails/vendor/plugins/active_scaffold/frontends/default/views/_form_association_record.rhtml +22 -0
  146. data/rails/vendor/plugins/active_scaffold/frontends/default/views/_form_attribute.rhtml +12 -0
  147. data/rails/vendor/plugins/active_scaffold/frontends/default/views/_form_hidden_attribute.rhtml +1 -0
  148. data/rails/vendor/plugins/active_scaffold/frontends/default/views/_form_messages.rhtml +5 -0
  149. data/rails/vendor/plugins/active_scaffold/frontends/default/views/_list.rhtml +34 -0
  150. data/rails/vendor/plugins/active_scaffold/frontends/default/views/_list_actions.rhtml +13 -0
  151. data/rails/vendor/plugins/active_scaffold/frontends/default/views/_list_calculations.rhtml +22 -0
  152. data/rails/vendor/plugins/active_scaffold/frontends/default/views/_list_column_headings.rhtml +32 -0
  153. data/rails/vendor/plugins/active_scaffold/frontends/default/views/_list_header.rhtml +12 -0
  154. data/rails/vendor/plugins/active_scaffold/frontends/default/views/_list_inline_adapter.rhtml +9 -0
  155. data/rails/vendor/plugins/active_scaffold/frontends/default/views/_list_pagination_links.rhtml +30 -0
  156. data/rails/vendor/plugins/active_scaffold/frontends/default/views/_list_record.rhtml +31 -0
  157. data/rails/vendor/plugins/active_scaffold/frontends/default/views/_live_search.rhtml +25 -0
  158. data/rails/vendor/plugins/active_scaffold/frontends/default/views/_messages.rhtml +10 -0
  159. data/rails/vendor/plugins/active_scaffold/frontends/default/views/_nested.rhtml +44 -0
  160. data/rails/vendor/plugins/active_scaffold/frontends/default/views/_search.rhtml +21 -0
  161. data/rails/vendor/plugins/active_scaffold/frontends/default/views/_show.rhtml +8 -0
  162. data/rails/vendor/plugins/active_scaffold/frontends/default/views/_show_columns.rhtml +11 -0
  163. data/rails/vendor/plugins/active_scaffold/frontends/default/views/_update_form.rhtml +49 -0
  164. data/rails/vendor/plugins/active_scaffold/frontends/default/views/add_existing.rjs +16 -0
  165. data/rails/vendor/plugins/active_scaffold/frontends/default/views/add_existing_form.rhtml +5 -0
  166. data/rails/vendor/plugins/active_scaffold/frontends/default/views/create.rjs +19 -0
  167. data/rails/vendor/plugins/active_scaffold/frontends/default/views/create_form.rhtml +5 -0
  168. data/rails/vendor/plugins/active_scaffold/frontends/default/views/delete.rhtml +13 -0
  169. data/rails/vendor/plugins/active_scaffold/frontends/default/views/destroy.rjs +9 -0
  170. data/rails/vendor/plugins/active_scaffold/frontends/default/views/edit_associated.rjs +15 -0
  171. data/rails/vendor/plugins/active_scaffold/frontends/default/views/field_search.rhtml +5 -0
  172. data/rails/vendor/plugins/active_scaffold/frontends/default/views/form_messages.rjs +1 -0
  173. data/rails/vendor/plugins/active_scaffold/frontends/default/views/list.rhtml +25 -0
  174. data/rails/vendor/plugins/active_scaffold/frontends/default/views/search.rhtml +5 -0
  175. data/rails/vendor/plugins/active_scaffold/frontends/default/views/show.rhtml +5 -0
  176. data/rails/vendor/plugins/active_scaffold/frontends/default/views/update.rjs +10 -0
  177. data/rails/vendor/plugins/active_scaffold/frontends/default/views/update_column.rjs +12 -0
  178. data/rails/vendor/plugins/active_scaffold/frontends/default/views/update_form.rhtml +5 -0
  179. data/rails/vendor/plugins/active_scaffold/init.rb +16 -0
  180. data/rails/vendor/plugins/active_scaffold/install.rb +40 -0
  181. data/rails/vendor/plugins/active_scaffold/install_assets.rb +36 -0
  182. data/rails/vendor/plugins/active_scaffold/lib/actions/core.rb +87 -0
  183. data/rails/vendor/plugins/active_scaffold/lib/actions/create.rb +98 -0
  184. data/rails/vendor/plugins/active_scaffold/lib/actions/delete.rb +46 -0
  185. data/rails/vendor/plugins/active_scaffold/lib/actions/field_search.rb +51 -0
  186. data/rails/vendor/plugins/active_scaffold/lib/actions/list.rb +75 -0
  187. data/rails/vendor/plugins/active_scaffold/lib/actions/live_search.rb +44 -0
  188. data/rails/vendor/plugins/active_scaffold/lib/actions/nested.rb +211 -0
  189. data/rails/vendor/plugins/active_scaffold/lib/actions/search.rb +38 -0
  190. data/rails/vendor/plugins/active_scaffold/lib/actions/show.rb +34 -0
  191. data/rails/vendor/plugins/active_scaffold/lib/actions/subform.rb +17 -0
  192. data/rails/vendor/plugins/active_scaffold/lib/actions/update.rb +112 -0
  193. data/rails/vendor/plugins/active_scaffold/lib/active_record_permissions.rb +127 -0
  194. data/rails/vendor/plugins/active_scaffold/lib/active_scaffold.rb +141 -0
  195. data/rails/vendor/plugins/active_scaffold/lib/attribute_params.rb +184 -0
  196. data/rails/vendor/plugins/active_scaffold/lib/bridges/bridge.rb +52 -0
  197. data/rails/vendor/plugins/active_scaffold/lib/bridges/calendar_date_select/bridge.rb +11 -0
  198. data/rails/vendor/plugins/active_scaffold/lib/bridges/calendar_date_select/lib/as_cds_bridge.rb +46 -0
  199. data/rails/vendor/plugins/active_scaffold/lib/bridges/file_column/bridge.rb +12 -0
  200. data/rails/vendor/plugins/active_scaffold/lib/bridges/file_column/lib/as_file_column_bridge.rb +48 -0
  201. data/rails/vendor/plugins/active_scaffold/lib/bridges/file_column/lib/file_column_helpers.rb +51 -0
  202. data/rails/vendor/plugins/active_scaffold/lib/bridges/file_column/lib/form_ui.rb +32 -0
  203. data/rails/vendor/plugins/active_scaffold/lib/bridges/file_column/lib/list_ui.rb +26 -0
  204. data/rails/vendor/plugins/active_scaffold/lib/bridges/file_column/test/functional/file_column_keep_test.rb +43 -0
  205. data/rails/vendor/plugins/active_scaffold/lib/bridges/file_column/test/mock_model.rb +9 -0
  206. data/rails/vendor/plugins/active_scaffold/lib/bridges/file_column/test/test_helper.rb +15 -0
  207. data/rails/vendor/plugins/active_scaffold/lib/config/base.rb +37 -0
  208. data/rails/vendor/plugins/active_scaffold/lib/config/core.rb +203 -0
  209. data/rails/vendor/plugins/active_scaffold/lib/config/create.rb +34 -0
  210. data/rails/vendor/plugins/active_scaffold/lib/config/delete.rb +25 -0
  211. data/rails/vendor/plugins/active_scaffold/lib/config/field_search.rb +53 -0
  212. data/rails/vendor/plugins/active_scaffold/lib/config/form.rb +49 -0
  213. data/rails/vendor/plugins/active_scaffold/lib/config/list.rb +100 -0
  214. data/rails/vendor/plugins/active_scaffold/lib/config/live_search.rb +52 -0
  215. data/rails/vendor/plugins/active_scaffold/lib/config/nested.rb +30 -0
  216. data/rails/vendor/plugins/active_scaffold/lib/config/search.rb +52 -0
  217. data/rails/vendor/plugins/active_scaffold/lib/config/show.rb +39 -0
  218. data/rails/vendor/plugins/active_scaffold/lib/config/subform.rb +33 -0
  219. data/rails/vendor/plugins/active_scaffold/lib/config/update.rb +24 -0
  220. data/rails/vendor/plugins/active_scaffold/lib/configurable.rb +29 -0
  221. data/rails/vendor/plugins/active_scaffold/lib/constraints.rb +174 -0
  222. data/rails/vendor/plugins/active_scaffold/lib/data_structures/action_columns.rb +92 -0
  223. data/rails/vendor/plugins/active_scaffold/lib/data_structures/action_link.rb +133 -0
  224. data/rails/vendor/plugins/active_scaffold/lib/data_structures/action_links.rb +49 -0
  225. data/rails/vendor/plugins/active_scaffold/lib/data_structures/actions.rb +45 -0
  226. data/rails/vendor/plugins/active_scaffold/lib/data_structures/column.rb +247 -0
  227. data/rails/vendor/plugins/active_scaffold/lib/data_structures/columns.rb +62 -0
  228. data/rails/vendor/plugins/active_scaffold/lib/data_structures/error_message.rb +24 -0
  229. data/rails/vendor/plugins/active_scaffold/lib/data_structures/set.rb +61 -0
  230. data/rails/vendor/plugins/active_scaffold/lib/data_structures/sorting.rb +89 -0
  231. data/rails/vendor/plugins/active_scaffold/lib/dhtml_confirm.rb +54 -0
  232. data/rails/vendor/plugins/active_scaffold/lib/exceptions.rb +7 -0
  233. data/rails/vendor/plugins/active_scaffold/lib/extensions/action_controller_rendering.rb +33 -0
  234. data/rails/vendor/plugins/active_scaffold/lib/extensions/action_view_rendering.rb +94 -0
  235. data/rails/vendor/plugins/active_scaffold/lib/extensions/array.rb +7 -0
  236. data/rails/vendor/plugins/active_scaffold/lib/extensions/component_response_with_namespacing.rb +17 -0
  237. data/rails/vendor/plugins/active_scaffold/lib/extensions/error_messages.rb +65 -0
  238. data/rails/vendor/plugins/active_scaffold/lib/extensions/generic_view_paths.rb +62 -0
  239. data/rails/vendor/plugins/active_scaffold/lib/extensions/hashes_in_url_for.rb +61 -0
  240. data/rails/vendor/plugins/active_scaffold/lib/extensions/json_mime_type.rb +28 -0
  241. data/rails/vendor/plugins/active_scaffold/lib/extensions/localize.rb +5 -0
  242. data/rails/vendor/plugins/active_scaffold/lib/extensions/name_option_for_datetime.rb +33 -0
  243. data/rails/vendor/plugins/active_scaffold/lib/extensions/nil_id_in_url_params.rb +7 -0
  244. data/rails/vendor/plugins/active_scaffold/lib/extensions/resources.rb +26 -0
  245. data/rails/vendor/plugins/active_scaffold/lib/extensions/reverse_associations.rb +56 -0
  246. data/rails/vendor/plugins/active_scaffold/lib/extensions/to_label.rb +8 -0
  247. data/rails/vendor/plugins/active_scaffold/lib/extensions/unsaved_associated.rb +61 -0
  248. data/rails/vendor/plugins/active_scaffold/lib/extensions/unsaved_record.rb +20 -0
  249. data/rails/vendor/plugins/active_scaffold/lib/finder.rb +149 -0
  250. data/rails/vendor/plugins/active_scaffold/lib/helpers/association_helpers.rb +40 -0
  251. data/rails/vendor/plugins/active_scaffold/lib/helpers/controller_helpers.rb +7 -0
  252. data/rails/vendor/plugins/active_scaffold/lib/helpers/form_column_helpers.rb +251 -0
  253. data/rails/vendor/plugins/active_scaffold/lib/helpers/id_helpers.rb +119 -0
  254. data/rails/vendor/plugins/active_scaffold/lib/helpers/list_column_helpers.rb +187 -0
  255. data/rails/vendor/plugins/active_scaffold/lib/helpers/pagination_helpers.rb +37 -0
  256. data/rails/vendor/plugins/active_scaffold/lib/helpers/usa_state.rb +46 -0
  257. data/rails/vendor/plugins/active_scaffold/lib/helpers/view_helpers.rb +205 -0
  258. data/rails/vendor/plugins/active_scaffold/lib/paginator.rb +136 -0
  259. data/rails/vendor/plugins/active_scaffold/lib/responds_to_parent.rb +68 -0
  260. data/rails/vendor/plugins/active_scaffold/public/blank.html +33 -0
  261. data/rails/vendor/plugins/active_scaffold/test/bridges/bridge_test.rb +47 -0
  262. data/rails/vendor/plugins/active_scaffold/test/config/update_test.rb +17 -0
  263. data/rails/vendor/plugins/active_scaffold/test/const_mocker.rb +36 -0
  264. data/rails/vendor/plugins/active_scaffold/test/data_structures/action_columns_test.rb +119 -0
  265. data/rails/vendor/plugins/active_scaffold/test/data_structures/action_link_test.rb +78 -0
  266. data/rails/vendor/plugins/active_scaffold/test/data_structures/action_links_test.rb +63 -0
  267. data/rails/vendor/plugins/active_scaffold/test/data_structures/actions_test.rb +25 -0
  268. data/rails/vendor/plugins/active_scaffold/test/data_structures/association_column_test.rb +41 -0
  269. data/rails/vendor/plugins/active_scaffold/test/data_structures/column_test.rb +161 -0
  270. data/rails/vendor/plugins/active_scaffold/test/data_structures/columns_test.rb +69 -0
  271. data/rails/vendor/plugins/active_scaffold/test/data_structures/error_message_test.rb +28 -0
  272. data/rails/vendor/plugins/active_scaffold/test/data_structures/set_test.rb +86 -0
  273. data/rails/vendor/plugins/active_scaffold/test/data_structures/sorting_test.rb +96 -0
  274. data/rails/vendor/plugins/active_scaffold/test/data_structures/standard_column_test.rb +34 -0
  275. data/rails/vendor/plugins/active_scaffold/test/data_structures/virtual_column_test.rb +34 -0
  276. data/rails/vendor/plugins/active_scaffold/test/extensions/active_record_test.rb +45 -0
  277. data/rails/vendor/plugins/active_scaffold/test/extensions/array.rb +12 -0
  278. data/rails/vendor/plugins/active_scaffold/test/misc/active_record_permissions.rb +154 -0
  279. data/rails/vendor/plugins/active_scaffold/test/misc/configurable_test.rb +96 -0
  280. data/rails/vendor/plugins/active_scaffold/test/misc/constraints_test.rb +175 -0
  281. data/rails/vendor/plugins/active_scaffold/test/misc/finder_test.rb +70 -0
  282. data/rails/vendor/plugins/active_scaffold/test/misc/lang_test.rb +12 -0
  283. data/rails/vendor/plugins/active_scaffold/test/model_stub.rb +39 -0
  284. data/rails/vendor/plugins/active_scaffold/test/run_all.rb +8 -0
  285. data/rails/vendor/plugins/active_scaffold/test/test_helper.rb +13 -0
  286. data/rails/vendor/plugins/active_scaffold/uninstall.rb +12 -0
  287. data/rails/vendor/rails/actionmailer/CHANGELOG +336 -0
  288. data/rails/vendor/rails/actionmailer/MIT-LICENSE +21 -0
  289. data/rails/vendor/rails/actionmailer/README +149 -0
  290. data/rails/vendor/rails/actionmailer/Rakefile +97 -0
  291. data/rails/vendor/rails/actionmailer/install.rb +30 -0
  292. data/rails/vendor/rails/actionmailer/lib/action_mailer.rb +52 -0
  293. data/rails/vendor/rails/actionmailer/lib/action_mailer/adv_attr_accessor.rb +30 -0
  294. data/rails/vendor/rails/actionmailer/lib/action_mailer/base.rb +646 -0
  295. data/rails/vendor/rails/actionmailer/lib/action_mailer/helpers.rb +111 -0
  296. data/rails/vendor/rails/actionmailer/lib/action_mailer/mail_helper.rb +19 -0
  297. data/rails/vendor/rails/actionmailer/lib/action_mailer/part.rb +110 -0
  298. data/rails/vendor/rails/actionmailer/lib/action_mailer/part_container.rb +51 -0
  299. data/rails/vendor/rails/actionmailer/lib/action_mailer/quoting.rb +61 -0
  300. data/rails/vendor/rails/actionmailer/lib/action_mailer/test_case.rb +64 -0
  301. data/rails/vendor/rails/actionmailer/lib/action_mailer/test_helper.rb +67 -0
  302. data/rails/vendor/rails/actionmailer/lib/action_mailer/utils.rb +8 -0
  303. data/rails/vendor/rails/actionmailer/lib/action_mailer/vendor.rb +14 -0
  304. data/rails/vendor/rails/actionmailer/lib/action_mailer/vendor/text-format-0.6.3/text/format.rb +1466 -0
  305. data/rails/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.3/tmail.rb +5 -0
  306. data/rails/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.3/tmail/address.rb +426 -0
  307. data/rails/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.3/tmail/attachments.rb +46 -0
  308. data/rails/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.3/tmail/base64.rb +46 -0
  309. data/rails/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.3/tmail/compat.rb +41 -0
  310. data/rails/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.3/tmail/config.rb +67 -0
  311. data/rails/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.3/tmail/core_extensions.rb +63 -0
  312. data/rails/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.3/tmail/encode.rb +581 -0
  313. data/rails/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.3/tmail/header.rb +960 -0
  314. data/rails/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.3/tmail/index.rb +9 -0
  315. data/rails/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.3/tmail/interface.rb +1130 -0
  316. data/rails/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.3/tmail/loader.rb +3 -0
  317. data/rails/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.3/tmail/mail.rb +578 -0
  318. data/rails/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.3/tmail/mailbox.rb +495 -0
  319. data/rails/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.3/tmail/main.rb +6 -0
  320. data/rails/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.3/tmail/mbox.rb +3 -0
  321. data/rails/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.3/tmail/net.rb +248 -0
  322. data/rails/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.3/tmail/obsolete.rb +132 -0
  323. data/rails/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.3/tmail/parser.rb +1476 -0
  324. data/rails/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.3/tmail/port.rb +379 -0
  325. data/rails/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.3/tmail/quoting.rb +118 -0
  326. data/rails/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.3/tmail/require_arch.rb +58 -0
  327. data/rails/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.3/tmail/scanner.rb +49 -0
  328. data/rails/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.3/tmail/scanner_r.rb +261 -0
  329. data/rails/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.3/tmail/stringio.rb +280 -0
  330. data/rails/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.3/tmail/utils.rb +337 -0
  331. data/rails/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.3/tmail/version.rb +39 -0
  332. data/rails/vendor/rails/actionmailer/lib/action_mailer/version.rb +9 -0
  333. data/rails/vendor/rails/actionmailer/lib/actionmailer.rb +1 -0
  334. data/rails/vendor/rails/actionmailer/test/abstract_unit.rb +49 -0
  335. data/rails/vendor/rails/actionmailer/test/delivery_method_test.rb +51 -0
  336. data/rails/vendor/rails/actionmailer/test/fixtures/first_mailer/share.erb +1 -0
  337. data/rails/vendor/rails/actionmailer/test/fixtures/helper_mailer/use_example_helper.erb +1 -0
  338. data/rails/vendor/rails/actionmailer/test/fixtures/helper_mailer/use_helper.erb +1 -0
  339. data/rails/vendor/rails/actionmailer/test/fixtures/helper_mailer/use_helper_method.erb +1 -0
  340. data/rails/vendor/rails/actionmailer/test/fixtures/helper_mailer/use_mail_helper.erb +5 -0
  341. data/rails/vendor/rails/actionmailer/test/fixtures/helpers/example_helper.rb +5 -0
  342. data/rails/vendor/rails/actionmailer/test/fixtures/path.with.dots/funky_path_mailer/multipart_with_template_path_with_dots.erb +1 -0
  343. data/rails/vendor/rails/actionmailer/test/fixtures/raw_email +14 -0
  344. data/rails/vendor/rails/actionmailer/test/fixtures/raw_email10 +20 -0
  345. data/rails/vendor/rails/actionmailer/test/fixtures/raw_email12 +32 -0
  346. data/rails/vendor/rails/actionmailer/test/fixtures/raw_email13 +29 -0
  347. data/rails/vendor/rails/actionmailer/test/fixtures/raw_email2 +114 -0
  348. data/rails/vendor/rails/actionmailer/test/fixtures/raw_email3 +70 -0
  349. data/rails/vendor/rails/actionmailer/test/fixtures/raw_email4 +59 -0
  350. data/rails/vendor/rails/actionmailer/test/fixtures/raw_email5 +19 -0
  351. data/rails/vendor/rails/actionmailer/test/fixtures/raw_email6 +20 -0
  352. data/rails/vendor/rails/actionmailer/test/fixtures/raw_email7 +66 -0
  353. data/rails/vendor/rails/actionmailer/test/fixtures/raw_email8 +47 -0
  354. data/rails/vendor/rails/actionmailer/test/fixtures/raw_email9 +28 -0
  355. data/rails/vendor/rails/actionmailer/test/fixtures/raw_email_quoted_with_0d0a +14 -0
  356. data/rails/vendor/rails/actionmailer/test/fixtures/raw_email_with_invalid_characters_in_content_type +104 -0
  357. data/rails/vendor/rails/actionmailer/test/fixtures/raw_email_with_nested_attachment +100 -0
  358. data/rails/vendor/rails/actionmailer/test/fixtures/raw_email_with_partially_quoted_subject +14 -0
  359. data/rails/vendor/rails/actionmailer/test/fixtures/second_mailer/share.erb +1 -0
  360. data/rails/vendor/rails/actionmailer/test/fixtures/templates/signed_up.erb +3 -0
  361. data/rails/vendor/rails/actionmailer/test/fixtures/test_mailer/_subtemplate.text.plain.erb +1 -0
  362. data/rails/vendor/rails/actionmailer/test/fixtures/test_mailer/custom_templating_extension.text.html.haml +6 -0
  363. data/rails/vendor/rails/actionmailer/test/fixtures/test_mailer/custom_templating_extension.text.plain.haml +6 -0
  364. data/rails/vendor/rails/actionmailer/test/fixtures/test_mailer/implicitly_multipart_example.ignored.erb +1 -0
  365. data/rails/vendor/rails/actionmailer/test/fixtures/test_mailer/implicitly_multipart_example.text.html.erb +10 -0
  366. data/rails/vendor/rails/actionmailer/test/fixtures/test_mailer/implicitly_multipart_example.text.plain.erb +2 -0
  367. data/rails/vendor/rails/actionmailer/test/fixtures/test_mailer/implicitly_multipart_example.text.yaml.erb +1 -0
  368. data/rails/vendor/rails/actionmailer/test/fixtures/test_mailer/included_subtemplate.text.plain.erb +1 -0
  369. data/rails/vendor/rails/actionmailer/test/fixtures/test_mailer/rxml_template.builder +2 -0
  370. data/rails/vendor/rails/actionmailer/test/fixtures/test_mailer/rxml_template.rxml +2 -0
  371. data/rails/vendor/rails/actionmailer/test/fixtures/test_mailer/signed_up.erb +3 -0
  372. data/rails/vendor/rails/actionmailer/test/fixtures/test_mailer/signed_up_with_url.erb +5 -0
  373. data/rails/vendor/rails/actionmailer/test/mail_helper_test.rb +95 -0
  374. data/rails/vendor/rails/actionmailer/test/mail_render_test.rb +122 -0
  375. data/rails/vendor/rails/actionmailer/test/mail_service_test.rb +979 -0
  376. data/rails/vendor/rails/actionmailer/test/quoting_test.rb +98 -0
  377. data/rails/vendor/rails/actionmailer/test/test_helper_test.rb +129 -0
  378. data/rails/vendor/rails/actionmailer/test/tmail_test.rb +22 -0
  379. data/rails/vendor/rails/actionmailer/test/url_test.rb +76 -0
  380. data/rails/vendor/rails/actionpack/CHANGELOG +4798 -0
  381. data/rails/vendor/rails/actionpack/MIT-LICENSE +21 -0
  382. data/rails/vendor/rails/actionpack/README +469 -0
  383. data/rails/vendor/rails/actionpack/RUNNING_UNIT_TESTS +24 -0
  384. data/rails/vendor/rails/actionpack/Rakefile +154 -0
  385. data/rails/vendor/rails/actionpack/install.rb +30 -0
  386. data/rails/vendor/rails/actionpack/lib/action_controller.rb +79 -0
  387. data/rails/vendor/rails/actionpack/lib/action_controller/assertions.rb +69 -0
  388. data/rails/vendor/rails/actionpack/lib/action_controller/assertions/dom_assertions.rb +39 -0
  389. data/rails/vendor/rails/actionpack/lib/action_controller/assertions/model_assertions.rb +20 -0
  390. data/rails/vendor/rails/actionpack/lib/action_controller/assertions/response_assertions.rb +172 -0
  391. data/rails/vendor/rails/actionpack/lib/action_controller/assertions/routing_assertions.rb +146 -0
  392. data/rails/vendor/rails/actionpack/lib/action_controller/assertions/selector_assertions.rb +643 -0
  393. data/rails/vendor/rails/actionpack/lib/action_controller/assertions/tag_assertions.rb +130 -0
  394. data/rails/vendor/rails/actionpack/lib/action_controller/base.rb +1270 -0
  395. data/rails/vendor/rails/actionpack/lib/action_controller/benchmarking.rb +94 -0
  396. data/rails/vendor/rails/actionpack/lib/action_controller/caching.rb +72 -0
  397. data/rails/vendor/rails/actionpack/lib/action_controller/caching/actions.rb +144 -0
  398. data/rails/vendor/rails/actionpack/lib/action_controller/caching/fragments.rb +138 -0
  399. data/rails/vendor/rails/actionpack/lib/action_controller/caching/pages.rb +154 -0
  400. data/rails/vendor/rails/actionpack/lib/action_controller/caching/sql_cache.rb +18 -0
  401. data/rails/vendor/rails/actionpack/lib/action_controller/caching/sweeping.rb +97 -0
  402. data/rails/vendor/rails/actionpack/lib/action_controller/cgi_ext.rb +16 -0
  403. data/rails/vendor/rails/actionpack/lib/action_controller/cgi_ext/cookie.rb +110 -0
  404. data/rails/vendor/rails/actionpack/lib/action_controller/cgi_ext/query_extension.rb +22 -0
  405. data/rails/vendor/rails/actionpack/lib/action_controller/cgi_ext/session.rb +73 -0
  406. data/rails/vendor/rails/actionpack/lib/action_controller/cgi_ext/stdinput.rb +24 -0
  407. data/rails/vendor/rails/actionpack/lib/action_controller/cgi_process.rb +223 -0
  408. data/rails/vendor/rails/actionpack/lib/action_controller/components.rb +166 -0
  409. data/rails/vendor/rails/actionpack/lib/action_controller/cookies.rb +96 -0
  410. data/rails/vendor/rails/actionpack/lib/action_controller/dispatcher.rb +162 -0
  411. data/rails/vendor/rails/actionpack/lib/action_controller/filters.rb +643 -0
  412. data/rails/vendor/rails/actionpack/lib/action_controller/flash.rb +172 -0
  413. data/rails/vendor/rails/actionpack/lib/action_controller/headers.rb +31 -0
  414. data/rails/vendor/rails/actionpack/lib/action_controller/helpers.rb +221 -0
  415. data/rails/vendor/rails/actionpack/lib/action_controller/http_authentication.rb +124 -0
  416. data/rails/vendor/rails/actionpack/lib/action_controller/integration.rb +634 -0
  417. data/rails/vendor/rails/actionpack/lib/action_controller/layout.rb +310 -0
  418. data/rails/vendor/rails/actionpack/lib/action_controller/mime_responds.rb +174 -0
  419. data/rails/vendor/rails/actionpack/lib/action_controller/mime_type.rb +182 -0
  420. data/rails/vendor/rails/actionpack/lib/action_controller/mime_types.rb +20 -0
  421. data/rails/vendor/rails/actionpack/lib/action_controller/polymorphic_routes.rb +178 -0
  422. data/rails/vendor/rails/actionpack/lib/action_controller/record_identifier.rb +97 -0
  423. data/rails/vendor/rails/actionpack/lib/action_controller/request.rb +761 -0
  424. data/rails/vendor/rails/actionpack/lib/action_controller/request_forgery_protection.rb +140 -0
  425. data/rails/vendor/rails/actionpack/lib/action_controller/request_profiler.rb +169 -0
  426. data/rails/vendor/rails/actionpack/lib/action_controller/rescue.rb +258 -0
  427. data/rails/vendor/rails/actionpack/lib/action_controller/resources.rb +572 -0
  428. data/rails/vendor/rails/actionpack/lib/action_controller/response.rb +76 -0
  429. data/rails/vendor/rails/actionpack/lib/action_controller/routing.rb +383 -0
  430. data/rails/vendor/rails/actionpack/lib/action_controller/routing/builder.rb +204 -0
  431. data/rails/vendor/rails/actionpack/lib/action_controller/routing/optimisations.rb +120 -0
  432. data/rails/vendor/rails/actionpack/lib/action_controller/routing/recognition_optimisation.rb +158 -0
  433. data/rails/vendor/rails/actionpack/lib/action_controller/routing/route.rb +240 -0
  434. data/rails/vendor/rails/actionpack/lib/action_controller/routing/route_set.rb +435 -0
  435. data/rails/vendor/rails/actionpack/lib/action_controller/routing/routing_ext.rb +46 -0
  436. data/rails/vendor/rails/actionpack/lib/action_controller/routing/segments.rb +283 -0
  437. data/rails/vendor/rails/actionpack/lib/action_controller/session/active_record_store.rb +340 -0
  438. data/rails/vendor/rails/actionpack/lib/action_controller/session/cookie_store.rb +166 -0
  439. data/rails/vendor/rails/actionpack/lib/action_controller/session/drb_server.rb +32 -0
  440. data/rails/vendor/rails/actionpack/lib/action_controller/session/drb_store.rb +35 -0
  441. data/rails/vendor/rails/actionpack/lib/action_controller/session/mem_cache_store.rb +98 -0
  442. data/rails/vendor/rails/actionpack/lib/action_controller/session_management.rb +158 -0
  443. data/rails/vendor/rails/actionpack/lib/action_controller/status_codes.rb +88 -0
  444. data/rails/vendor/rails/actionpack/lib/action_controller/streaming.rb +155 -0
  445. data/rails/vendor/rails/actionpack/lib/action_controller/templates/rescues/_request_and_response.erb +24 -0
  446. data/rails/vendor/rails/actionpack/lib/action_controller/templates/rescues/_trace.erb +26 -0
  447. data/rails/vendor/rails/actionpack/lib/action_controller/templates/rescues/diagnostics.erb +11 -0
  448. data/rails/vendor/rails/actionpack/lib/action_controller/templates/rescues/layout.erb +29 -0
  449. data/rails/vendor/rails/actionpack/lib/action_controller/templates/rescues/missing_template.erb +2 -0
  450. data/rails/vendor/rails/actionpack/lib/action_controller/templates/rescues/routing_error.erb +10 -0
  451. data/rails/vendor/rails/actionpack/lib/action_controller/templates/rescues/template_error.erb +21 -0
  452. data/rails/vendor/rails/actionpack/lib/action_controller/templates/rescues/unknown_action.erb +2 -0
  453. data/rails/vendor/rails/actionpack/lib/action_controller/test_case.rb +83 -0
  454. data/rails/vendor/rails/actionpack/lib/action_controller/test_process.rb +524 -0
  455. data/rails/vendor/rails/actionpack/lib/action_controller/url_rewriter.rb +142 -0
  456. data/rails/vendor/rails/actionpack/lib/action_controller/vendor/html-scanner/html/document.rb +68 -0
  457. data/rails/vendor/rails/actionpack/lib/action_controller/vendor/html-scanner/html/node.rb +530 -0
  458. data/rails/vendor/rails/actionpack/lib/action_controller/vendor/html-scanner/html/sanitizer.rb +173 -0
  459. data/rails/vendor/rails/actionpack/lib/action_controller/vendor/html-scanner/html/selector.rb +828 -0
  460. data/rails/vendor/rails/actionpack/lib/action_controller/vendor/html-scanner/html/tokenizer.rb +105 -0
  461. data/rails/vendor/rails/actionpack/lib/action_controller/vendor/html-scanner/html/version.rb +11 -0
  462. data/rails/vendor/rails/actionpack/lib/action_controller/verification.rb +130 -0
  463. data/rails/vendor/rails/actionpack/lib/action_pack.rb +24 -0
  464. data/rails/vendor/rails/actionpack/lib/action_pack/version.rb +9 -0
  465. data/rails/vendor/rails/actionpack/lib/action_view.rb +45 -0
  466. data/rails/vendor/rails/actionpack/lib/action_view/base.rb +343 -0
  467. data/rails/vendor/rails/actionpack/lib/action_view/helpers/active_record_helper.rb +276 -0
  468. data/rails/vendor/rails/actionpack/lib/action_view/helpers/asset_tag_helper.rb +611 -0
  469. data/rails/vendor/rails/actionpack/lib/action_view/helpers/atom_feed_helper.rb +143 -0
  470. data/rails/vendor/rails/actionpack/lib/action_view/helpers/benchmark_helper.rb +33 -0
  471. data/rails/vendor/rails/actionpack/lib/action_view/helpers/cache_helper.rb +40 -0
  472. data/rails/vendor/rails/actionpack/lib/action_view/helpers/capture_helper.rb +161 -0
  473. data/rails/vendor/rails/actionpack/lib/action_view/helpers/date_helper.rb +711 -0
  474. data/rails/vendor/rails/actionpack/lib/action_view/helpers/debug_helper.rb +31 -0
  475. data/rails/vendor/rails/actionpack/lib/action_view/helpers/form_helper.rb +763 -0
  476. data/rails/vendor/rails/actionpack/lib/action_view/helpers/form_options_helper.rb +457 -0
  477. data/rails/vendor/rails/actionpack/lib/action_view/helpers/form_tag_helper.rb +459 -0
  478. data/rails/vendor/rails/actionpack/lib/action_view/helpers/javascript_helper.rb +217 -0
  479. data/rails/vendor/rails/actionpack/lib/action_view/helpers/javascripts/controls.js +963 -0
  480. data/rails/vendor/rails/actionpack/lib/action_view/helpers/javascripts/dragdrop.js +972 -0
  481. data/rails/vendor/rails/actionpack/lib/action_view/helpers/javascripts/effects.js +1120 -0
  482. data/rails/vendor/rails/actionpack/lib/action_view/helpers/javascripts/prototype.js +4225 -0
  483. data/rails/vendor/rails/actionpack/lib/action_view/helpers/number_helper.rb +186 -0
  484. data/rails/vendor/rails/actionpack/lib/action_view/helpers/prototype_helper.rb +1300 -0
  485. data/rails/vendor/rails/actionpack/lib/action_view/helpers/record_identification_helper.rb +20 -0
  486. data/rails/vendor/rails/actionpack/lib/action_view/helpers/record_tag_helper.rb +59 -0
  487. data/rails/vendor/rails/actionpack/lib/action_view/helpers/sanitize_helper.rb +229 -0
  488. data/rails/vendor/rails/actionpack/lib/action_view/helpers/scriptaculous_helper.rb +225 -0
  489. data/rails/vendor/rails/actionpack/lib/action_view/helpers/tag_helper.rb +133 -0
  490. data/rails/vendor/rails/actionpack/lib/action_view/helpers/text_helper.rb +507 -0
  491. data/rails/vendor/rails/actionpack/lib/action_view/helpers/url_helper.rb +575 -0
  492. data/rails/vendor/rails/actionpack/lib/action_view/inline_template.rb +20 -0
  493. data/rails/vendor/rails/actionpack/lib/action_view/partial_template.rb +70 -0
  494. data/rails/vendor/rails/actionpack/lib/action_view/partials.rb +158 -0
  495. data/rails/vendor/rails/actionpack/lib/action_view/template.rb +127 -0
  496. data/rails/vendor/rails/actionpack/lib/action_view/template_error.rb +110 -0
  497. data/rails/vendor/rails/actionpack/lib/action_view/template_finder.rb +177 -0
  498. data/rails/vendor/rails/actionpack/lib/action_view/template_handler.rb +34 -0
  499. data/rails/vendor/rails/actionpack/lib/action_view/template_handlers/builder.rb +27 -0
  500. data/rails/vendor/rails/actionpack/lib/action_view/template_handlers/compilable.rb +128 -0
  501. data/rails/vendor/rails/actionpack/lib/action_view/template_handlers/erb.rb +56 -0
  502. data/rails/vendor/rails/actionpack/lib/action_view/template_handlers/rjs.rb +27 -0
  503. data/rails/vendor/rails/actionpack/lib/action_view/test_case.rb +58 -0
  504. data/rails/vendor/rails/actionpack/lib/actionpack.rb +1 -0
  505. data/rails/vendor/rails/actionpack/test/abstract_unit.rb +36 -0
  506. data/rails/vendor/rails/actionpack/test/active_record_unit.rb +105 -0
  507. data/rails/vendor/rails/actionpack/test/activerecord/active_record_store_test.rb +141 -0
  508. data/rails/vendor/rails/actionpack/test/activerecord/render_partial_with_record_identification_test.rb +191 -0
  509. data/rails/vendor/rails/actionpack/test/adv_attr_test.rb +20 -0
  510. data/rails/vendor/rails/actionpack/test/controller/action_pack_assertions_test.rb +524 -0
  511. data/rails/vendor/rails/actionpack/test/controller/addresses_render_test.rb +43 -0
  512. data/rails/vendor/rails/actionpack/test/controller/assert_select_test.rb +689 -0
  513. data/rails/vendor/rails/actionpack/test/controller/base_test.rb +183 -0
  514. data/rails/vendor/rails/actionpack/test/controller/benchmark_test.rb +32 -0
  515. data/rails/vendor/rails/actionpack/test/controller/caching_test.rb +610 -0
  516. data/rails/vendor/rails/actionpack/test/controller/capture_test.rb +89 -0
  517. data/rails/vendor/rails/actionpack/test/controller/cgi_test.rb +116 -0
  518. data/rails/vendor/rails/actionpack/test/controller/components_test.rb +140 -0
  519. data/rails/vendor/rails/actionpack/test/controller/content_type_test.rb +139 -0
  520. data/rails/vendor/rails/actionpack/test/controller/controller_fixtures/app/controllers/admin/user_controller.rb +0 -0
  521. data/rails/vendor/rails/actionpack/test/controller/controller_fixtures/app/controllers/user_controller.rb +0 -0
  522. data/rails/vendor/rails/actionpack/test/controller/controller_fixtures/vendor/plugins/bad_plugin/lib/plugin_controller.rb +0 -0
  523. data/rails/vendor/rails/actionpack/test/controller/cookie_test.rb +146 -0
  524. data/rails/vendor/rails/actionpack/test/controller/custom_handler_test.rb +45 -0
  525. data/rails/vendor/rails/actionpack/test/controller/deprecation/deprecated_base_methods_test.rb +37 -0
  526. data/rails/vendor/rails/actionpack/test/controller/dispatcher_test.rb +105 -0
  527. data/rails/vendor/rails/actionpack/test/controller/fake_controllers.rb +33 -0
  528. data/rails/vendor/rails/actionpack/test/controller/fake_models.rb +11 -0
  529. data/rails/vendor/rails/actionpack/test/controller/filter_params_test.rb +49 -0
  530. data/rails/vendor/rails/actionpack/test/controller/filters_test.rb +881 -0
  531. data/rails/vendor/rails/actionpack/test/controller/flash_test.rb +146 -0
  532. data/rails/vendor/rails/actionpack/test/controller/header_test.rb +14 -0
  533. data/rails/vendor/rails/actionpack/test/controller/helper_test.rb +210 -0
  534. data/rails/vendor/rails/actionpack/test/controller/html-scanner/document_test.rb +123 -0
  535. data/rails/vendor/rails/actionpack/test/controller/html-scanner/node_test.rb +68 -0
  536. data/rails/vendor/rails/actionpack/test/controller/html-scanner/sanitizer_test.rb +259 -0
  537. data/rails/vendor/rails/actionpack/test/controller/html-scanner/tag_node_test.rb +238 -0
  538. data/rails/vendor/rails/actionpack/test/controller/html-scanner/text_node_test.rb +50 -0
  539. data/rails/vendor/rails/actionpack/test/controller/html-scanner/tokenizer_test.rb +131 -0
  540. data/rails/vendor/rails/actionpack/test/controller/http_authentication_test.rb +54 -0
  541. data/rails/vendor/rails/actionpack/test/controller/integration_test.rb +252 -0
  542. data/rails/vendor/rails/actionpack/test/controller/integration_upload_test.rb +43 -0
  543. data/rails/vendor/rails/actionpack/test/controller/layout_test.rb +259 -0
  544. data/rails/vendor/rails/actionpack/test/controller/mime_responds_test.rb +538 -0
  545. data/rails/vendor/rails/actionpack/test/controller/mime_type_test.rb +84 -0
  546. data/rails/vendor/rails/actionpack/test/controller/new_render_test.rb +926 -0
  547. data/rails/vendor/rails/actionpack/test/controller/polymorphic_routes_test.rb +141 -0
  548. data/rails/vendor/rails/actionpack/test/controller/record_identifier_test.rb +139 -0
  549. data/rails/vendor/rails/actionpack/test/controller/redirect_test.rb +289 -0
  550. data/rails/vendor/rails/actionpack/test/controller/render_test.rb +527 -0
  551. data/rails/vendor/rails/actionpack/test/controller/request_forgery_protection_test.rb +313 -0
  552. data/rails/vendor/rails/actionpack/test/controller/request_test.rb +922 -0
  553. data/rails/vendor/rails/actionpack/test/controller/rescue_test.rb +517 -0
  554. data/rails/vendor/rails/actionpack/test/controller/resources_test.rb +875 -0
  555. data/rails/vendor/rails/actionpack/test/controller/routing_test.rb +2415 -0
  556. data/rails/vendor/rails/actionpack/test/controller/selector_test.rb +628 -0
  557. data/rails/vendor/rails/actionpack/test/controller/send_file_test.rb +138 -0
  558. data/rails/vendor/rails/actionpack/test/controller/session/cookie_store_test.rb +258 -0
  559. data/rails/vendor/rails/actionpack/test/controller/session/mem_cache_store_test.rb +181 -0
  560. data/rails/vendor/rails/actionpack/test/controller/session_fixation_test.rb +89 -0
  561. data/rails/vendor/rails/actionpack/test/controller/session_management_test.rb +178 -0
  562. data/rails/vendor/rails/actionpack/test/controller/test_test.rb +686 -0
  563. data/rails/vendor/rails/actionpack/test/controller/url_rewriter_test.rb +310 -0
  564. data/rails/vendor/rails/actionpack/test/controller/verification_test.rb +253 -0
  565. data/rails/vendor/rails/actionpack/test/controller/view_paths_test.rb +140 -0
  566. data/rails/vendor/rails/actionpack/test/controller/webservice_test.rb +229 -0
  567. data/rails/vendor/rails/actionpack/test/fixtures/addresses/list.erb +1 -0
  568. data/rails/vendor/rails/actionpack/test/fixtures/bad_customers/_bad_customer.html.erb +1 -0
  569. data/rails/vendor/rails/actionpack/test/fixtures/companies.yml +24 -0
  570. data/rails/vendor/rails/actionpack/test/fixtures/company.rb +10 -0
  571. data/rails/vendor/rails/actionpack/test/fixtures/content_type/render_default_content_types_for_respond_to.rhtml +1 -0
  572. data/rails/vendor/rails/actionpack/test/fixtures/content_type/render_default_for_rhtml.rhtml +1 -0
  573. data/rails/vendor/rails/actionpack/test/fixtures/content_type/render_default_for_rjs.rjs +1 -0
  574. data/rails/vendor/rails/actionpack/test/fixtures/content_type/render_default_for_rxml.rxml +1 -0
  575. data/rails/vendor/rails/actionpack/test/fixtures/customers/_customer.html.erb +1 -0
  576. data/rails/vendor/rails/actionpack/test/fixtures/db_definitions/sqlite.sql +49 -0
  577. data/rails/vendor/rails/actionpack/test/fixtures/developer.rb +9 -0
  578. data/rails/vendor/rails/actionpack/test/fixtures/developers.yml +21 -0
  579. data/rails/vendor/rails/actionpack/test/fixtures/developers_projects.yml +13 -0
  580. data/rails/vendor/rails/actionpack/test/fixtures/fun/games/hello_world.erb +1 -0
  581. data/rails/vendor/rails/actionpack/test/fixtures/functional_caching/_partial.erb +3 -0
  582. data/rails/vendor/rails/actionpack/test/fixtures/functional_caching/fragment_cached.html.erb +2 -0
  583. data/rails/vendor/rails/actionpack/test/fixtures/functional_caching/html_fragment_cached_with_partial.html.erb +1 -0
  584. data/rails/vendor/rails/actionpack/test/fixtures/functional_caching/js_fragment_cached_with_partial.js.rjs +1 -0
  585. data/rails/vendor/rails/actionpack/test/fixtures/good_customers/_good_customer.html.erb +1 -0
  586. data/rails/vendor/rails/actionpack/test/fixtures/helpers/abc_helper.rb +5 -0
  587. data/rails/vendor/rails/actionpack/test/fixtures/helpers/fun/games_helper.rb +3 -0
  588. data/rails/vendor/rails/actionpack/test/fixtures/helpers/fun/pdf_helper.rb +3 -0
  589. data/rails/vendor/rails/actionpack/test/fixtures/layout_tests/alt/hello.rhtml +1 -0
  590. data/rails/vendor/rails/actionpack/test/fixtures/layout_tests/layouts/controller_name_space/nested.rhtml +1 -0
  591. data/rails/vendor/rails/actionpack/test/fixtures/layout_tests/layouts/item.rhtml +1 -0
  592. data/rails/vendor/rails/actionpack/test/fixtures/layout_tests/layouts/layout_test.rhtml +1 -0
  593. data/rails/vendor/rails/actionpack/test/fixtures/layout_tests/layouts/multiple_extensions.html.erb +1 -0
  594. data/rails/vendor/rails/actionpack/test/fixtures/layout_tests/layouts/third_party_template_library.mab +1 -0
  595. data/rails/vendor/rails/actionpack/test/fixtures/layout_tests/views/hello.rhtml +1 -0
  596. data/rails/vendor/rails/actionpack/test/fixtures/layouts/block_with_layout.erb +3 -0
  597. data/rails/vendor/rails/actionpack/test/fixtures/layouts/builder.builder +3 -0
  598. data/rails/vendor/rails/actionpack/test/fixtures/layouts/partial_with_layout.erb +3 -0
  599. data/rails/vendor/rails/actionpack/test/fixtures/layouts/standard.erb +1 -0
  600. data/rails/vendor/rails/actionpack/test/fixtures/layouts/talk_from_action.erb +2 -0
  601. data/rails/vendor/rails/actionpack/test/fixtures/layouts/yield.erb +2 -0
  602. data/rails/vendor/rails/actionpack/test/fixtures/mascot.rb +3 -0
  603. data/rails/vendor/rails/actionpack/test/fixtures/mascots.yml +4 -0
  604. data/rails/vendor/rails/actionpack/test/fixtures/mascots/_mascot.html.erb +1 -0
  605. data/rails/vendor/rails/actionpack/test/fixtures/multipart/binary_file +0 -0
  606. data/rails/vendor/rails/actionpack/test/fixtures/multipart/boundary_problem_file +10 -0
  607. data/rails/vendor/rails/actionpack/test/fixtures/multipart/bracketed_param +5 -0
  608. data/rails/vendor/rails/actionpack/test/fixtures/multipart/large_text_file +10 -0
  609. data/rails/vendor/rails/actionpack/test/fixtures/multipart/mixed_files +0 -0
  610. data/rails/vendor/rails/actionpack/test/fixtures/multipart/mona_lisa.jpg +0 -0
  611. data/rails/vendor/rails/actionpack/test/fixtures/multipart/single_parameter +5 -0
  612. data/rails/vendor/rails/actionpack/test/fixtures/multipart/text_file +10 -0
  613. data/rails/vendor/rails/actionpack/test/fixtures/override/test/hello_world.erb +1 -0
  614. data/rails/vendor/rails/actionpack/test/fixtures/override2/layouts/test/sub.erb +1 -0
  615. data/rails/vendor/rails/actionpack/test/fixtures/post_test/layouts/post.html.erb +1 -0
  616. data/rails/vendor/rails/actionpack/test/fixtures/post_test/layouts/super_post.iphone.erb +1 -0
  617. data/rails/vendor/rails/actionpack/test/fixtures/post_test/post/index.html.erb +1 -0
  618. data/rails/vendor/rails/actionpack/test/fixtures/post_test/post/index.iphone.erb +1 -0
  619. data/rails/vendor/rails/actionpack/test/fixtures/post_test/super_post/index.html.erb +1 -0
  620. data/rails/vendor/rails/actionpack/test/fixtures/post_test/super_post/index.iphone.erb +1 -0
  621. data/rails/vendor/rails/actionpack/test/fixtures/project.rb +3 -0
  622. data/rails/vendor/rails/actionpack/test/fixtures/projects.yml +7 -0
  623. data/rails/vendor/rails/actionpack/test/fixtures/public/404.html +1 -0
  624. data/rails/vendor/rails/actionpack/test/fixtures/public/500.html +1 -0
  625. data/rails/vendor/rails/actionpack/test/fixtures/public/images/rails.png +0 -0
  626. data/rails/vendor/rails/actionpack/test/fixtures/public/javascripts/application.js +1 -0
  627. data/rails/vendor/rails/actionpack/test/fixtures/public/javascripts/bank.js +1 -0
  628. data/rails/vendor/rails/actionpack/test/fixtures/public/javascripts/controls.js +1 -0
  629. data/rails/vendor/rails/actionpack/test/fixtures/public/javascripts/dragdrop.js +1 -0
  630. data/rails/vendor/rails/actionpack/test/fixtures/public/javascripts/effects.js +1 -0
  631. data/rails/vendor/rails/actionpack/test/fixtures/public/javascripts/prototype.js +1 -0
  632. data/rails/vendor/rails/actionpack/test/fixtures/public/javascripts/robber.js +1 -0
  633. data/rails/vendor/rails/actionpack/test/fixtures/public/javascripts/version.1.0.js +1 -0
  634. data/rails/vendor/rails/actionpack/test/fixtures/public/stylesheets/bank.css +1 -0
  635. data/rails/vendor/rails/actionpack/test/fixtures/public/stylesheets/robber.css +1 -0
  636. data/rails/vendor/rails/actionpack/test/fixtures/public/stylesheets/version.1.0.css +1 -0
  637. data/rails/vendor/rails/actionpack/test/fixtures/replies.yml +15 -0
  638. data/rails/vendor/rails/actionpack/test/fixtures/reply.rb +7 -0
  639. data/rails/vendor/rails/actionpack/test/fixtures/respond_to/all_types_with_layout.html.erb +1 -0
  640. data/rails/vendor/rails/actionpack/test/fixtures/respond_to/all_types_with_layout.js.rjs +1 -0
  641. data/rails/vendor/rails/actionpack/test/fixtures/respond_to/custom_constant_handling_without_block.mobile.erb +1 -0
  642. data/rails/vendor/rails/actionpack/test/fixtures/respond_to/iphone_with_html_response_type.html.erb +1 -0
  643. data/rails/vendor/rails/actionpack/test/fixtures/respond_to/iphone_with_html_response_type.iphone.erb +1 -0
  644. data/rails/vendor/rails/actionpack/test/fixtures/respond_to/layouts/missing.html.erb +1 -0
  645. data/rails/vendor/rails/actionpack/test/fixtures/respond_to/layouts/standard.html.erb +1 -0
  646. data/rails/vendor/rails/actionpack/test/fixtures/respond_to/layouts/standard.iphone.erb +1 -0
  647. data/rails/vendor/rails/actionpack/test/fixtures/respond_to/using_defaults.html.erb +1 -0
  648. data/rails/vendor/rails/actionpack/test/fixtures/respond_to/using_defaults.js.rjs +1 -0
  649. data/rails/vendor/rails/actionpack/test/fixtures/respond_to/using_defaults.xml.builder +1 -0
  650. data/rails/vendor/rails/actionpack/test/fixtures/respond_to/using_defaults_with_type_list.html.erb +1 -0
  651. data/rails/vendor/rails/actionpack/test/fixtures/respond_to/using_defaults_with_type_list.js.rjs +1 -0
  652. data/rails/vendor/rails/actionpack/test/fixtures/respond_to/using_defaults_with_type_list.xml.builder +1 -0
  653. data/rails/vendor/rails/actionpack/test/fixtures/scope/test/modgreet.erb +1 -0
  654. data/rails/vendor/rails/actionpack/test/fixtures/shared.html.erb +1 -0
  655. data/rails/vendor/rails/actionpack/test/fixtures/symlink_parent/symlinked_layout.erb +5 -0
  656. data/rails/vendor/rails/actionpack/test/fixtures/test/_customer.erb +1 -0
  657. data/rails/vendor/rails/actionpack/test/fixtures/test/_customer_counter.erb +1 -0
  658. data/rails/vendor/rails/actionpack/test/fixtures/test/_customer_greeting.erb +1 -0
  659. data/rails/vendor/rails/actionpack/test/fixtures/test/_form.erb +1 -0
  660. data/rails/vendor/rails/actionpack/test/fixtures/test/_hash_greeting.erb +1 -0
  661. data/rails/vendor/rails/actionpack/test/fixtures/test/_hash_object.erb +2 -0
  662. data/rails/vendor/rails/actionpack/test/fixtures/test/_hello.builder +1 -0
  663. data/rails/vendor/rails/actionpack/test/fixtures/test/_labelling_form.erb +1 -0
  664. data/rails/vendor/rails/actionpack/test/fixtures/test/_layout_for_partial.html.erb +3 -0
  665. data/rails/vendor/rails/actionpack/test/fixtures/test/_partial.erb +1 -0
  666. data/rails/vendor/rails/actionpack/test/fixtures/test/_partial.html.erb +1 -0
  667. data/rails/vendor/rails/actionpack/test/fixtures/test/_partial.js.erb +1 -0
  668. data/rails/vendor/rails/actionpack/test/fixtures/test/_partial_for_use_in_layout.html.erb +1 -0
  669. data/rails/vendor/rails/actionpack/test/fixtures/test/_partial_only.erb +1 -0
  670. data/rails/vendor/rails/actionpack/test/fixtures/test/_person.erb +2 -0
  671. data/rails/vendor/rails/actionpack/test/fixtures/test/_raise.html.erb +1 -0
  672. data/rails/vendor/rails/actionpack/test/fixtures/test/action_talk_to_layout.erb +2 -0
  673. data/rails/vendor/rails/actionpack/test/fixtures/test/block_content_for.erb +2 -0
  674. data/rails/vendor/rails/actionpack/test/fixtures/test/calling_partial_with_layout.html.erb +1 -0
  675. data/rails/vendor/rails/actionpack/test/fixtures/test/capturing.erb +4 -0
  676. data/rails/vendor/rails/actionpack/test/fixtures/test/content_for.erb +2 -0
  677. data/rails/vendor/rails/actionpack/test/fixtures/test/content_for_concatenated.erb +3 -0
  678. data/rails/vendor/rails/actionpack/test/fixtures/test/content_for_with_parameter.erb +2 -0
  679. data/rails/vendor/rails/actionpack/test/fixtures/test/delete_with_js.rjs +2 -0
  680. data/rails/vendor/rails/actionpack/test/fixtures/test/dot.directory/render_file_with_ivar.erb +1 -0
  681. data/rails/vendor/rails/actionpack/test/fixtures/test/enum_rjs_test.rjs +6 -0
  682. data/rails/vendor/rails/actionpack/test/fixtures/test/erb_content_for.erb +2 -0
  683. data/rails/vendor/rails/actionpack/test/fixtures/test/formatted_html_erb.html.erb +1 -0
  684. data/rails/vendor/rails/actionpack/test/fixtures/test/formatted_xml_erb.builder +1 -0
  685. data/rails/vendor/rails/actionpack/test/fixtures/test/formatted_xml_erb.html.erb +1 -0
  686. data/rails/vendor/rails/actionpack/test/fixtures/test/formatted_xml_erb.xml.erb +1 -0
  687. data/rails/vendor/rails/actionpack/test/fixtures/test/greeting.erb +1 -0
  688. data/rails/vendor/rails/actionpack/test/fixtures/test/greeting.js.rjs +1 -0
  689. data/rails/vendor/rails/actionpack/test/fixtures/test/hello.builder +4 -0
  690. data/rails/vendor/rails/actionpack/test/fixtures/test/hello_world.erb +1 -0
  691. data/rails/vendor/rails/actionpack/test/fixtures/test/hello_world_container.builder +3 -0
  692. data/rails/vendor/rails/actionpack/test/fixtures/test/hello_world_from_rxml.builder +4 -0
  693. data/rails/vendor/rails/actionpack/test/fixtures/test/hello_world_with_layout_false.erb +1 -0
  694. data/rails/vendor/rails/actionpack/test/fixtures/test/hello_xml_world.builder +11 -0
  695. data/rails/vendor/rails/actionpack/test/fixtures/test/list.erb +1 -0
  696. data/rails/vendor/rails/actionpack/test/fixtures/test/non_erb_block_content_for.builder +4 -0
  697. data/rails/vendor/rails/actionpack/test/fixtures/test/potential_conflicts.erb +4 -0
  698. data/rails/vendor/rails/actionpack/test/fixtures/test/render_file_with_ivar.erb +1 -0
  699. data/rails/vendor/rails/actionpack/test/fixtures/test/render_file_with_locals.erb +1 -0
  700. data/rails/vendor/rails/actionpack/test/fixtures/test/render_to_string_test.erb +1 -0
  701. data/rails/vendor/rails/actionpack/test/fixtures/test/update_element_with_capture.erb +9 -0
  702. data/rails/vendor/rails/actionpack/test/fixtures/test/using_layout_around_block.html.erb +1 -0
  703. data/rails/vendor/rails/actionpack/test/fixtures/topic.rb +3 -0
  704. data/rails/vendor/rails/actionpack/test/fixtures/topics.yml +22 -0
  705. data/rails/vendor/rails/actionpack/test/fixtures/topics/_topic.html.erb +1 -0
  706. data/rails/vendor/rails/actionpack/test/template/active_record_helper_test.rb +268 -0
  707. data/rails/vendor/rails/actionpack/test/template/asset_tag_helper_test.rb +525 -0
  708. data/rails/vendor/rails/actionpack/test/template/atom_feed_helper_test.rb +179 -0
  709. data/rails/vendor/rails/actionpack/test/template/benchmark_helper_test.rb +60 -0
  710. data/rails/vendor/rails/actionpack/test/template/date_helper_test.rb +1740 -0
  711. data/rails/vendor/rails/actionpack/test/template/erb_util_test.rb +24 -0
  712. data/rails/vendor/rails/actionpack/test/template/form_helper_test.rb +918 -0
  713. data/rails/vendor/rails/actionpack/test/template/form_options_helper_test.rb +1336 -0
  714. data/rails/vendor/rails/actionpack/test/template/form_tag_helper_test.rb +259 -0
  715. data/rails/vendor/rails/actionpack/test/template/javascript_helper_test.rb +109 -0
  716. data/rails/vendor/rails/actionpack/test/template/number_helper_test.rb +97 -0
  717. data/rails/vendor/rails/actionpack/test/template/prototype_helper_test.rb +614 -0
  718. data/rails/vendor/rails/actionpack/test/template/record_tag_helper_test.rb +54 -0
  719. data/rails/vendor/rails/actionpack/test/template/sanitize_helper_test.rb +48 -0
  720. data/rails/vendor/rails/actionpack/test/template/scriptaculous_helper_test.rb +90 -0
  721. data/rails/vendor/rails/actionpack/test/template/tag_helper_test.rb +77 -0
  722. data/rails/vendor/rails/actionpack/test/template/template_finder_test.rb +73 -0
  723. data/rails/vendor/rails/actionpack/test/template/template_object_test.rb +95 -0
  724. data/rails/vendor/rails/actionpack/test/template/test_test.rb +56 -0
  725. data/rails/vendor/rails/actionpack/test/template/text_helper_test.rb +366 -0
  726. data/rails/vendor/rails/actionpack/test/template/url_helper_test.rb +534 -0
  727. data/rails/vendor/rails/actionpack/test/testing_sandbox.rb +15 -0
  728. data/rails/vendor/rails/activemodel/CHANGES +12 -0
  729. data/rails/vendor/rails/activemodel/README +21 -0
  730. data/rails/vendor/rails/activemodel/Rakefile +16 -0
  731. data/rails/vendor/rails/activemodel/lib/active_model.rb +17 -0
  732. data/rails/vendor/rails/activemodel/lib/active_model/base.rb +4 -0
  733. data/rails/vendor/rails/activemodel/lib/active_model/callbacks.rb +5 -0
  734. data/rails/vendor/rails/activemodel/lib/active_model/deprecated_error_methods.rb +38 -0
  735. data/rails/vendor/rails/activemodel/lib/active_model/errors.rb +80 -0
  736. data/rails/vendor/rails/activemodel/lib/active_model/observing.rb +100 -0
  737. data/rails/vendor/rails/activemodel/lib/active_model/validations.rb +124 -0
  738. data/rails/vendor/rails/activemodel/lib/active_model/validations/acceptance.rb +45 -0
  739. data/rails/vendor/rails/activemodel/lib/active_model/validations/associated.rb +46 -0
  740. data/rails/vendor/rails/activemodel/lib/active_model/validations/confirmation.rb +44 -0
  741. data/rails/vendor/rails/activemodel/lib/active_model/validations/exclusion.rb +37 -0
  742. data/rails/vendor/rails/activemodel/lib/active_model/validations/format.rb +39 -0
  743. data/rails/vendor/rails/activemodel/lib/active_model/validations/inclusion.rb +37 -0
  744. data/rails/vendor/rails/activemodel/lib/active_model/validations/length.rb +95 -0
  745. data/rails/vendor/rails/activemodel/lib/active_model/validations/numericality.rb +80 -0
  746. data/rails/vendor/rails/activemodel/lib/active_model/validations/presence.rb +42 -0
  747. data/rails/vendor/rails/activemodel/lib/active_model/validations/uniqueness.rb +104 -0
  748. data/rails/vendor/rails/activemodel/spec/observing_spec.rb +120 -0
  749. data/rails/vendor/rails/activemodel/spec/spec_helper.rb +17 -0
  750. data/rails/vendor/rails/activerecord/CHANGELOG +5719 -0
  751. data/rails/vendor/rails/activerecord/MIT-LICENSE +20 -0
  752. data/rails/vendor/rails/activerecord/README +351 -0
  753. data/rails/vendor/rails/activerecord/RUNNING_UNIT_TESTS +36 -0
  754. data/rails/vendor/rails/activerecord/Rakefile +247 -0
  755. data/rails/vendor/rails/activerecord/examples/associations.png +0 -0
  756. data/rails/vendor/rails/activerecord/install.rb +30 -0
  757. data/rails/vendor/rails/activerecord/lib/active_record.rb +82 -0
  758. data/rails/vendor/rails/activerecord/lib/active_record/aggregations.rb +189 -0
  759. data/rails/vendor/rails/activerecord/lib/active_record/association_preload.rb +277 -0
  760. data/rails/vendor/rails/activerecord/lib/active_record/associations.rb +1994 -0
  761. data/rails/vendor/rails/activerecord/lib/active_record/associations/association_collection.rb +365 -0
  762. data/rails/vendor/rails/activerecord/lib/active_record/associations/association_proxy.rb +224 -0
  763. data/rails/vendor/rails/activerecord/lib/active_record/associations/belongs_to_association.rb +58 -0
  764. data/rails/vendor/rails/activerecord/lib/active_record/associations/belongs_to_polymorphic_association.rb +49 -0
  765. data/rails/vendor/rails/activerecord/lib/active_record/associations/has_and_belongs_to_many_association.rb +112 -0
  766. data/rails/vendor/rails/activerecord/lib/active_record/associations/has_many_association.rb +109 -0
  767. data/rails/vendor/rails/activerecord/lib/active_record/associations/has_many_through_association.rb +254 -0
  768. data/rails/vendor/rails/activerecord/lib/active_record/associations/has_one_association.rb +98 -0
  769. data/rails/vendor/rails/activerecord/lib/active_record/associations/has_one_through_association.rb +28 -0
  770. data/rails/vendor/rails/activerecord/lib/active_record/attribute_methods.rb +379 -0
  771. data/rails/vendor/rails/activerecord/lib/active_record/base.rb +2726 -0
  772. data/rails/vendor/rails/activerecord/lib/active_record/calculations.rb +275 -0
  773. data/rails/vendor/rails/activerecord/lib/active_record/callbacks.rb +312 -0
  774. data/rails/vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/connection_specification.rb +309 -0
  775. data/rails/vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/database_statements.rb +176 -0
  776. data/rails/vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/query_cache.rb +93 -0
  777. data/rails/vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/quoting.rb +69 -0
  778. data/rails/vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/schema_definitions.rb +661 -0
  779. data/rails/vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/schema_statements.rb +421 -0
  780. data/rails/vendor/rails/activerecord/lib/active_record/connection_adapters/abstract_adapter.rb +169 -0
  781. data/rails/vendor/rails/activerecord/lib/active_record/connection_adapters/mysql_adapter.rb +530 -0
  782. data/rails/vendor/rails/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb +948 -0
  783. data/rails/vendor/rails/activerecord/lib/active_record/connection_adapters/sqlite3_adapter.rb +34 -0
  784. data/rails/vendor/rails/activerecord/lib/active_record/connection_adapters/sqlite_adapter.rb +406 -0
  785. data/rails/vendor/rails/activerecord/lib/active_record/dirty.rb +158 -0
  786. data/rails/vendor/rails/activerecord/lib/active_record/fixtures.rb +997 -0
  787. data/rails/vendor/rails/activerecord/lib/active_record/locking/optimistic.rb +147 -0
  788. data/rails/vendor/rails/activerecord/lib/active_record/locking/pessimistic.rb +77 -0
  789. data/rails/vendor/rails/activerecord/lib/active_record/migration.rb +496 -0
  790. data/rails/vendor/rails/activerecord/lib/active_record/named_scope.rb +163 -0
  791. data/rails/vendor/rails/activerecord/lib/active_record/observer.rb +195 -0
  792. data/rails/vendor/rails/activerecord/lib/active_record/query_cache.rb +21 -0
  793. data/rails/vendor/rails/activerecord/lib/active_record/reflection.rb +239 -0
  794. data/rails/vendor/rails/activerecord/lib/active_record/schema.rb +51 -0
  795. data/rails/vendor/rails/activerecord/lib/active_record/schema_dumper.rb +171 -0
  796. data/rails/vendor/rails/activerecord/lib/active_record/serialization.rb +98 -0
  797. data/rails/vendor/rails/activerecord/lib/active_record/serializers/json_serializer.rb +80 -0
  798. data/rails/vendor/rails/activerecord/lib/active_record/serializers/xml_serializer.rb +338 -0
  799. data/rails/vendor/rails/activerecord/lib/active_record/test_case.rb +36 -0
  800. data/rails/vendor/rails/activerecord/lib/active_record/timestamp.rb +41 -0
  801. data/rails/vendor/rails/activerecord/lib/active_record/transactions.rb +130 -0
  802. data/rails/vendor/rails/activerecord/lib/active_record/validations.rb +961 -0
  803. data/rails/vendor/rails/activerecord/lib/active_record/vendor/db2.rb +362 -0
  804. data/rails/vendor/rails/activerecord/lib/active_record/vendor/mysql.rb +1214 -0
  805. data/rails/vendor/rails/activerecord/lib/active_record/version.rb +9 -0
  806. data/rails/vendor/rails/activerecord/lib/activerecord.rb +1 -0
  807. data/rails/vendor/rails/activerecord/test/assets/example.log +1 -0
  808. data/rails/vendor/rails/activerecord/test/assets/flowers.jpg +0 -0
  809. data/rails/vendor/rails/activerecord/test/cases/aaa_create_tables_test.rb +24 -0
  810. data/rails/vendor/rails/activerecord/test/cases/active_schema_test_mysql.rb +95 -0
  811. data/rails/vendor/rails/activerecord/test/cases/active_schema_test_postgresql.rb +24 -0
  812. data/rails/vendor/rails/activerecord/test/cases/adapter_test.rb +127 -0
  813. data/rails/vendor/rails/activerecord/test/cases/adapter_test_sqlserver.rb +95 -0
  814. data/rails/vendor/rails/activerecord/test/cases/aggregations_test.rb +128 -0
  815. data/rails/vendor/rails/activerecord/test/cases/ar_schema_test.rb +33 -0
  816. data/rails/vendor/rails/activerecord/test/cases/associations/belongs_to_associations_test.rb +412 -0
  817. data/rails/vendor/rails/activerecord/test/cases/associations/callbacks_test.rb +161 -0
  818. data/rails/vendor/rails/activerecord/test/cases/associations/cascaded_eager_loading_test.rb +111 -0
  819. data/rails/vendor/rails/activerecord/test/cases/associations/eager_load_nested_include_test.rb +83 -0
  820. data/rails/vendor/rails/activerecord/test/cases/associations/eager_singularization_test.rb +145 -0
  821. data/rails/vendor/rails/activerecord/test/cases/associations/eager_test.rb +612 -0
  822. data/rails/vendor/rails/activerecord/test/cases/associations/extension_test.rb +47 -0
  823. data/rails/vendor/rails/activerecord/test/cases/associations/has_and_belongs_to_many_associations_test.rb +684 -0
  824. data/rails/vendor/rails/activerecord/test/cases/associations/has_many_associations_test.rb +932 -0
  825. data/rails/vendor/rails/activerecord/test/cases/associations/has_many_through_associations_test.rb +190 -0
  826. data/rails/vendor/rails/activerecord/test/cases/associations/has_one_associations_test.rb +323 -0
  827. data/rails/vendor/rails/activerecord/test/cases/associations/has_one_through_associations_test.rb +74 -0
  828. data/rails/vendor/rails/activerecord/test/cases/associations/inner_join_association_test.rb +88 -0
  829. data/rails/vendor/rails/activerecord/test/cases/associations/join_model_test.rb +707 -0
  830. data/rails/vendor/rails/activerecord/test/cases/associations_test.rb +262 -0
  831. data/rails/vendor/rails/activerecord/test/cases/attribute_methods_test.rb +238 -0
  832. data/rails/vendor/rails/activerecord/test/cases/base_test.rb +1974 -0
  833. data/rails/vendor/rails/activerecord/test/cases/binary_test.rb +34 -0
  834. data/rails/vendor/rails/activerecord/test/cases/calculations_test.rb +271 -0
  835. data/rails/vendor/rails/activerecord/test/cases/callbacks_test.rb +400 -0
  836. data/rails/vendor/rails/activerecord/test/cases/class_inheritable_attributes_test.rb +32 -0
  837. data/rails/vendor/rails/activerecord/test/cases/column_alias_test.rb +17 -0
  838. data/rails/vendor/rails/activerecord/test/cases/connection_test_firebird.rb +8 -0
  839. data/rails/vendor/rails/activerecord/test/cases/connection_test_mysql.rb +30 -0
  840. data/rails/vendor/rails/activerecord/test/cases/copy_table_test_sqlite.rb +69 -0
  841. data/rails/vendor/rails/activerecord/test/cases/datatype_test_postgresql.rb +203 -0
  842. data/rails/vendor/rails/activerecord/test/cases/date_time_test.rb +37 -0
  843. data/rails/vendor/rails/activerecord/test/cases/default_test_firebird.rb +16 -0
  844. data/rails/vendor/rails/activerecord/test/cases/defaults_test.rb +69 -0
  845. data/rails/vendor/rails/activerecord/test/cases/deprecated_finder_test.rb +30 -0
  846. data/rails/vendor/rails/activerecord/test/cases/dirty_test.rb +163 -0
  847. data/rails/vendor/rails/activerecord/test/cases/finder_respond_to_test.rb +76 -0
  848. data/rails/vendor/rails/activerecord/test/cases/finder_test.rb +883 -0
  849. data/rails/vendor/rails/activerecord/test/cases/fixtures_test.rb +626 -0
  850. data/rails/vendor/rails/activerecord/test/cases/helper.rb +47 -0
  851. data/rails/vendor/rails/activerecord/test/cases/inheritance_test.rb +255 -0
  852. data/rails/vendor/rails/activerecord/test/cases/invalid_date_test.rb +24 -0
  853. data/rails/vendor/rails/activerecord/test/cases/json_serialization_test.rb +205 -0
  854. data/rails/vendor/rails/activerecord/test/cases/lifecycle_test.rb +140 -0
  855. data/rails/vendor/rails/activerecord/test/cases/locking_test.rb +289 -0
  856. data/rails/vendor/rails/activerecord/test/cases/method_scoping_test.rb +452 -0
  857. data/rails/vendor/rails/activerecord/test/cases/migration_test.rb +1319 -0
  858. data/rails/vendor/rails/activerecord/test/cases/migration_test_firebird.rb +124 -0
  859. data/rails/vendor/rails/activerecord/test/cases/mixin_test.rb +96 -0
  860. data/rails/vendor/rails/activerecord/test/cases/modules_test.rb +39 -0
  861. data/rails/vendor/rails/activerecord/test/cases/multiple_db_test.rb +60 -0
  862. data/rails/vendor/rails/activerecord/test/cases/named_scope_test.rb +157 -0
  863. data/rails/vendor/rails/activerecord/test/cases/pk_test.rb +101 -0
  864. data/rails/vendor/rails/activerecord/test/cases/query_cache_test.rb +126 -0
  865. data/rails/vendor/rails/activerecord/test/cases/readonly_test.rb +107 -0
  866. data/rails/vendor/rails/activerecord/test/cases/reflection_test.rb +176 -0
  867. data/rails/vendor/rails/activerecord/test/cases/reserved_word_test_mysql.rb +176 -0
  868. data/rails/vendor/rails/activerecord/test/cases/schema_authorization_test_postgresql.rb +75 -0
  869. data/rails/vendor/rails/activerecord/test/cases/schema_dumper_test.rb +138 -0
  870. data/rails/vendor/rails/activerecord/test/cases/schema_test_postgresql.rb +102 -0
  871. data/rails/vendor/rails/activerecord/test/cases/serialization_test.rb +47 -0
  872. data/rails/vendor/rails/activerecord/test/cases/synonym_test_oracle.rb +17 -0
  873. data/rails/vendor/rails/activerecord/test/cases/table_name_test_sqlserver.rb +23 -0
  874. data/rails/vendor/rails/activerecord/test/cases/threaded_connections_test.rb +48 -0
  875. data/rails/vendor/rails/activerecord/test/cases/transactions_test.rb +307 -0
  876. data/rails/vendor/rails/activerecord/test/cases/unconnected_test.rb +32 -0
  877. data/rails/vendor/rails/activerecord/test/cases/validations_test.rb +1509 -0
  878. data/rails/vendor/rails/activerecord/test/cases/xml_serialization_test.rb +202 -0
  879. data/rails/vendor/rails/activerecord/test/config.rb +5 -0
  880. data/rails/vendor/rails/activerecord/test/connections/native_db2/connection.rb +25 -0
  881. data/rails/vendor/rails/activerecord/test/connections/native_firebird/connection.rb +26 -0
  882. data/rails/vendor/rails/activerecord/test/connections/native_frontbase/connection.rb +27 -0
  883. data/rails/vendor/rails/activerecord/test/connections/native_mysql/connection.rb +27 -0
  884. data/rails/vendor/rails/activerecord/test/connections/native_openbase/connection.rb +21 -0
  885. data/rails/vendor/rails/activerecord/test/connections/native_oracle/connection.rb +27 -0
  886. data/rails/vendor/rails/activerecord/test/connections/native_postgresql/connection.rb +21 -0
  887. data/rails/vendor/rails/activerecord/test/connections/native_sqlite/connection.rb +25 -0
  888. data/rails/vendor/rails/activerecord/test/connections/native_sqlite3/connection.rb +25 -0
  889. data/rails/vendor/rails/activerecord/test/connections/native_sqlite3/in_memory_connection.rb +18 -0
  890. data/rails/vendor/rails/activerecord/test/connections/native_sybase/connection.rb +23 -0
  891. data/rails/vendor/rails/activerecord/test/fixtures/accounts.yml +28 -0
  892. data/rails/vendor/rails/activerecord/test/fixtures/all/developers.yml +0 -0
  893. data/rails/vendor/rails/activerecord/test/fixtures/all/people.csv +0 -0
  894. data/rails/vendor/rails/activerecord/test/fixtures/all/tasks.yml +0 -0
  895. data/rails/vendor/rails/activerecord/test/fixtures/author_addresses.yml +5 -0
  896. data/rails/vendor/rails/activerecord/test/fixtures/author_favorites.yml +4 -0
  897. data/rails/vendor/rails/activerecord/test/fixtures/authors.yml +9 -0
  898. data/rails/vendor/rails/activerecord/test/fixtures/binaries.yml +132 -0
  899. data/rails/vendor/rails/activerecord/test/fixtures/books.yml +7 -0
  900. data/rails/vendor/rails/activerecord/test/fixtures/categories.yml +14 -0
  901. data/rails/vendor/rails/activerecord/test/fixtures/categories/special_categories.yml +9 -0
  902. data/rails/vendor/rails/activerecord/test/fixtures/categories/subsubdir/arbitrary_filename.yml +4 -0
  903. data/rails/vendor/rails/activerecord/test/fixtures/categories_ordered.yml +7 -0
  904. data/rails/vendor/rails/activerecord/test/fixtures/categories_posts.yml +23 -0
  905. data/rails/vendor/rails/activerecord/test/fixtures/categorizations.yml +17 -0
  906. data/rails/vendor/rails/activerecord/test/fixtures/clubs.yml +6 -0
  907. data/rails/vendor/rails/activerecord/test/fixtures/comments.yml +59 -0
  908. data/rails/vendor/rails/activerecord/test/fixtures/companies.yml +55 -0
  909. data/rails/vendor/rails/activerecord/test/fixtures/computers.yml +4 -0
  910. data/rails/vendor/rails/activerecord/test/fixtures/courses.yml +7 -0
  911. data/rails/vendor/rails/activerecord/test/fixtures/customers.yml +17 -0
  912. data/rails/vendor/rails/activerecord/test/fixtures/developers.yml +21 -0
  913. data/rails/vendor/rails/activerecord/test/fixtures/developers_projects.yml +17 -0
  914. data/rails/vendor/rails/activerecord/test/fixtures/edges.yml +6 -0
  915. data/rails/vendor/rails/activerecord/test/fixtures/entrants.yml +14 -0
  916. data/rails/vendor/rails/activerecord/test/fixtures/fk_test_has_fk.yml +3 -0
  917. data/rails/vendor/rails/activerecord/test/fixtures/fk_test_has_pk.yml +2 -0
  918. data/rails/vendor/rails/activerecord/test/fixtures/funny_jokes.yml +10 -0
  919. data/rails/vendor/rails/activerecord/test/fixtures/items.yml +4 -0
  920. data/rails/vendor/rails/activerecord/test/fixtures/jobs.yml +7 -0
  921. data/rails/vendor/rails/activerecord/test/fixtures/legacy_things.yml +3 -0
  922. data/rails/vendor/rails/activerecord/test/fixtures/mateys.yml +4 -0
  923. data/rails/vendor/rails/activerecord/test/fixtures/members.yml +4 -0
  924. data/rails/vendor/rails/activerecord/test/fixtures/memberships.yml +20 -0
  925. data/rails/vendor/rails/activerecord/test/fixtures/minimalistics.yml +2 -0
  926. data/rails/vendor/rails/activerecord/test/fixtures/mixed_case_monkeys.yml +6 -0
  927. data/rails/vendor/rails/activerecord/test/fixtures/mixins.yml +29 -0
  928. data/rails/vendor/rails/activerecord/test/fixtures/movies.yml +7 -0
  929. data/rails/vendor/rails/activerecord/test/fixtures/naked/csv/accounts.csv +1 -0
  930. data/rails/vendor/rails/activerecord/test/fixtures/naked/yml/accounts.yml +1 -0
  931. data/rails/vendor/rails/activerecord/test/fixtures/naked/yml/companies.yml +1 -0
  932. data/rails/vendor/rails/activerecord/test/fixtures/naked/yml/courses.yml +1 -0
  933. data/rails/vendor/rails/activerecord/test/fixtures/owners.yml +7 -0
  934. data/rails/vendor/rails/activerecord/test/fixtures/parrots.yml +27 -0
  935. data/rails/vendor/rails/activerecord/test/fixtures/parrots_pirates.yml +7 -0
  936. data/rails/vendor/rails/activerecord/test/fixtures/people.yml +6 -0
  937. data/rails/vendor/rails/activerecord/test/fixtures/pets.yml +14 -0
  938. data/rails/vendor/rails/activerecord/test/fixtures/pirates.yml +9 -0
  939. data/rails/vendor/rails/activerecord/test/fixtures/posts.yml +49 -0
  940. data/rails/vendor/rails/activerecord/test/fixtures/price_estimates.yml +7 -0
  941. data/rails/vendor/rails/activerecord/test/fixtures/projects.yml +7 -0
  942. data/rails/vendor/rails/activerecord/test/fixtures/readers.yml +9 -0
  943. data/rails/vendor/rails/activerecord/test/fixtures/references.yml +17 -0
  944. data/rails/vendor/rails/activerecord/test/fixtures/reserved_words/distinct.yml +5 -0
  945. data/rails/vendor/rails/activerecord/test/fixtures/reserved_words/distincts_selects.yml +11 -0
  946. data/rails/vendor/rails/activerecord/test/fixtures/reserved_words/group.yml +14 -0
  947. data/rails/vendor/rails/activerecord/test/fixtures/reserved_words/select.yml +8 -0
  948. data/rails/vendor/rails/activerecord/test/fixtures/reserved_words/values.yml +7 -0
  949. data/rails/vendor/rails/activerecord/test/fixtures/ships.yml +5 -0
  950. data/rails/vendor/rails/activerecord/test/fixtures/sponsors.yml +9 -0
  951. data/rails/vendor/rails/activerecord/test/fixtures/subscribers.yml +7 -0
  952. data/rails/vendor/rails/activerecord/test/fixtures/subscriptions.yml +12 -0
  953. data/rails/vendor/rails/activerecord/test/fixtures/taggings.yml +28 -0
  954. data/rails/vendor/rails/activerecord/test/fixtures/tags.yml +7 -0
  955. data/rails/vendor/rails/activerecord/test/fixtures/tasks.yml +7 -0
  956. data/rails/vendor/rails/activerecord/test/fixtures/topics.yml +42 -0
  957. data/rails/vendor/rails/activerecord/test/fixtures/treasures.yml +10 -0
  958. data/rails/vendor/rails/activerecord/test/fixtures/vertices.yml +4 -0
  959. data/rails/vendor/rails/activerecord/test/fixtures/warehouse-things.yml +3 -0
  960. data/rails/vendor/rails/activerecord/test/migrations/decimal/1_give_me_big_numbers.rb +15 -0
  961. data/rails/vendor/rails/activerecord/test/migrations/duplicate/1_people_have_last_names.rb +9 -0
  962. data/rails/vendor/rails/activerecord/test/migrations/duplicate/2_we_need_reminders.rb +12 -0
  963. data/rails/vendor/rails/activerecord/test/migrations/duplicate/3_foo.rb +7 -0
  964. data/rails/vendor/rails/activerecord/test/migrations/duplicate/3_innocent_jointable.rb +12 -0
  965. data/rails/vendor/rails/activerecord/test/migrations/duplicate_names/20080507052938_chunky.rb +7 -0
  966. data/rails/vendor/rails/activerecord/test/migrations/duplicate_names/20080507053028_chunky.rb +7 -0
  967. data/rails/vendor/rails/activerecord/test/migrations/interleaved/pass_1/3_innocent_jointable.rb +12 -0
  968. data/rails/vendor/rails/activerecord/test/migrations/interleaved/pass_2/1_people_have_last_names.rb +9 -0
  969. data/rails/vendor/rails/activerecord/test/migrations/interleaved/pass_2/3_innocent_jointable.rb +12 -0
  970. data/rails/vendor/rails/activerecord/test/migrations/interleaved/pass_3/1_people_have_last_names.rb +9 -0
  971. data/rails/vendor/rails/activerecord/test/migrations/interleaved/pass_3/2_i_raise_on_down.rb +8 -0
  972. data/rails/vendor/rails/activerecord/test/migrations/interleaved/pass_3/3_innocent_jointable.rb +12 -0
  973. data/rails/vendor/rails/activerecord/test/migrations/missing/1000_people_have_middle_names.rb +9 -0
  974. data/rails/vendor/rails/activerecord/test/migrations/missing/1_people_have_last_names.rb +9 -0
  975. data/rails/vendor/rails/activerecord/test/migrations/missing/3_we_need_reminders.rb +12 -0
  976. data/rails/vendor/rails/activerecord/test/migrations/missing/4_innocent_jointable.rb +12 -0
  977. data/rails/vendor/rails/activerecord/test/migrations/valid/1_people_have_last_names.rb +9 -0
  978. data/rails/vendor/rails/activerecord/test/migrations/valid/2_we_need_reminders.rb +12 -0
  979. data/rails/vendor/rails/activerecord/test/migrations/valid/3_innocent_jointable.rb +12 -0
  980. data/rails/vendor/rails/activerecord/test/models/author.rb +133 -0
  981. data/rails/vendor/rails/activerecord/test/models/auto_id.rb +4 -0
  982. data/rails/vendor/rails/activerecord/test/models/binary.rb +2 -0
  983. data/rails/vendor/rails/activerecord/test/models/book.rb +4 -0
  984. data/rails/vendor/rails/activerecord/test/models/categorization.rb +5 -0
  985. data/rails/vendor/rails/activerecord/test/models/category.rb +29 -0
  986. data/rails/vendor/rails/activerecord/test/models/citation.rb +6 -0
  987. data/rails/vendor/rails/activerecord/test/models/club.rb +7 -0
  988. data/rails/vendor/rails/activerecord/test/models/column_name.rb +3 -0
  989. data/rails/vendor/rails/activerecord/test/models/comment.rb +25 -0
  990. data/rails/vendor/rails/activerecord/test/models/company.rb +123 -0
  991. data/rails/vendor/rails/activerecord/test/models/company_in_module.rb +61 -0
  992. data/rails/vendor/rails/activerecord/test/models/computer.rb +3 -0
  993. data/rails/vendor/rails/activerecord/test/models/contact.rb +16 -0
  994. data/rails/vendor/rails/activerecord/test/models/course.rb +3 -0
  995. data/rails/vendor/rails/activerecord/test/models/customer.rb +55 -0
  996. data/rails/vendor/rails/activerecord/test/models/default.rb +2 -0
  997. data/rails/vendor/rails/activerecord/test/models/developer.rb +76 -0
  998. data/rails/vendor/rails/activerecord/test/models/edge.rb +5 -0
  999. data/rails/vendor/rails/activerecord/test/models/entrant.rb +3 -0
  1000. data/rails/vendor/rails/activerecord/test/models/guid.rb +2 -0
  1001. data/rails/vendor/rails/activerecord/test/models/item.rb +7 -0
  1002. data/rails/vendor/rails/activerecord/test/models/job.rb +5 -0
  1003. data/rails/vendor/rails/activerecord/test/models/joke.rb +3 -0
  1004. data/rails/vendor/rails/activerecord/test/models/keyboard.rb +3 -0
  1005. data/rails/vendor/rails/activerecord/test/models/legacy_thing.rb +3 -0
  1006. data/rails/vendor/rails/activerecord/test/models/matey.rb +4 -0
  1007. data/rails/vendor/rails/activerecord/test/models/member.rb +9 -0
  1008. data/rails/vendor/rails/activerecord/test/models/membership.rb +9 -0
  1009. data/rails/vendor/rails/activerecord/test/models/minimalistic.rb +2 -0
  1010. data/rails/vendor/rails/activerecord/test/models/mixed_case_monkey.rb +3 -0
  1011. data/rails/vendor/rails/activerecord/test/models/movie.rb +5 -0
  1012. data/rails/vendor/rails/activerecord/test/models/order.rb +4 -0
  1013. data/rails/vendor/rails/activerecord/test/models/owner.rb +4 -0
  1014. data/rails/vendor/rails/activerecord/test/models/parrot.rb +13 -0
  1015. data/rails/vendor/rails/activerecord/test/models/person.rb +10 -0
  1016. data/rails/vendor/rails/activerecord/test/models/pet.rb +4 -0
  1017. data/rails/vendor/rails/activerecord/test/models/pirate.rb +9 -0
  1018. data/rails/vendor/rails/activerecord/test/models/post.rb +80 -0
  1019. data/rails/vendor/rails/activerecord/test/models/price_estimate.rb +3 -0
  1020. data/rails/vendor/rails/activerecord/test/models/project.rb +29 -0
  1021. data/rails/vendor/rails/activerecord/test/models/reader.rb +4 -0
  1022. data/rails/vendor/rails/activerecord/test/models/reference.rb +4 -0
  1023. data/rails/vendor/rails/activerecord/test/models/reply.rb +39 -0
  1024. data/rails/vendor/rails/activerecord/test/models/ship.rb +3 -0
  1025. data/rails/vendor/rails/activerecord/test/models/sponsor.rb +4 -0
  1026. data/rails/vendor/rails/activerecord/test/models/subject.rb +4 -0
  1027. data/rails/vendor/rails/activerecord/test/models/subscriber.rb +8 -0
  1028. data/rails/vendor/rails/activerecord/test/models/subscription.rb +4 -0
  1029. data/rails/vendor/rails/activerecord/test/models/tag.rb +7 -0
  1030. data/rails/vendor/rails/activerecord/test/models/tagging.rb +10 -0
  1031. data/rails/vendor/rails/activerecord/test/models/task.rb +3 -0
  1032. data/rails/vendor/rails/activerecord/test/models/topic.rb +65 -0
  1033. data/rails/vendor/rails/activerecord/test/models/treasure.rb +6 -0
  1034. data/rails/vendor/rails/activerecord/test/models/vertex.rb +9 -0
  1035. data/rails/vendor/rails/activerecord/test/models/warehouse_thing.rb +5 -0
  1036. data/rails/vendor/rails/activerecord/test/schema/mysql_specific_schema.rb +12 -0
  1037. data/rails/vendor/rails/activerecord/test/schema/postgresql_specific_schema.rb +103 -0
  1038. data/rails/vendor/rails/activerecord/test/schema/schema.rb +421 -0
  1039. data/rails/vendor/rails/activerecord/test/schema/schema2.rb +6 -0
  1040. data/rails/vendor/rails/activerecord/test/schema/sqlite_specific_schema.rb +25 -0
  1041. data/rails/vendor/rails/activerecord/test/schema/sqlserver_specific_schema.rb +5 -0
  1042. data/rails/vendor/rails/activeresource/CHANGELOG +246 -0
  1043. data/rails/vendor/rails/activeresource/MIT-LICENSE +20 -0
  1044. data/rails/vendor/rails/activeresource/README +165 -0
  1045. data/rails/vendor/rails/activeresource/Rakefile +135 -0
  1046. data/rails/vendor/rails/activeresource/lib/active_resource.rb +47 -0
  1047. data/rails/vendor/rails/activeresource/lib/active_resource/base.rb +1014 -0
  1048. data/rails/vendor/rails/activeresource/lib/active_resource/connection.rb +207 -0
  1049. data/rails/vendor/rails/activeresource/lib/active_resource/custom_methods.rb +119 -0
  1050. data/rails/vendor/rails/activeresource/lib/active_resource/formats.rb +14 -0
  1051. data/rails/vendor/rails/activeresource/lib/active_resource/formats/json_format.rb +23 -0
  1052. data/rails/vendor/rails/activeresource/lib/active_resource/formats/xml_format.rb +34 -0
  1053. data/rails/vendor/rails/activeresource/lib/active_resource/http_mock.rb +217 -0
  1054. data/rails/vendor/rails/activeresource/lib/active_resource/validations.rb +288 -0
  1055. data/rails/vendor/rails/activeresource/lib/active_resource/version.rb +9 -0
  1056. data/rails/vendor/rails/activeresource/lib/activeresource.rb +1 -0
  1057. data/rails/vendor/rails/activeresource/test/abstract_unit.rb +22 -0
  1058. data/rails/vendor/rails/activeresource/test/authorization_test.rb +122 -0
  1059. data/rails/vendor/rails/activeresource/test/base/custom_methods_test.rb +99 -0
  1060. data/rails/vendor/rails/activeresource/test/base/equality_test.rb +43 -0
  1061. data/rails/vendor/rails/activeresource/test/base/load_test.rb +146 -0
  1062. data/rails/vendor/rails/activeresource/test/base_errors_test.rb +48 -0
  1063. data/rails/vendor/rails/activeresource/test/base_test.rb +791 -0
  1064. data/rails/vendor/rails/activeresource/test/connection_test.rb +190 -0
  1065. data/rails/vendor/rails/activeresource/test/fixtures/beast.rb +14 -0
  1066. data/rails/vendor/rails/activeresource/test/fixtures/person.rb +3 -0
  1067. data/rails/vendor/rails/activeresource/test/fixtures/street_address.rb +4 -0
  1068. data/rails/vendor/rails/activeresource/test/format_test.rb +83 -0
  1069. data/rails/vendor/rails/activeresource/test/setter_trap.rb +27 -0
  1070. data/rails/vendor/rails/activesupport/CHANGELOG +1181 -0
  1071. data/rails/vendor/rails/activesupport/MIT-LICENSE +20 -0
  1072. data/rails/vendor/rails/activesupport/README +43 -0
  1073. data/rails/vendor/rails/activesupport/Rakefile +175 -0
  1074. data/rails/vendor/rails/activesupport/install.rb +30 -0
  1075. data/rails/vendor/rails/activesupport/lib/active_support.rb +55 -0
  1076. data/rails/vendor/rails/activesupport/lib/active_support/base64.rb +22 -0
  1077. data/rails/vendor/rails/activesupport/lib/active_support/basic_object.rb +24 -0
  1078. data/rails/vendor/rails/activesupport/lib/active_support/buffered_logger.rb +121 -0
  1079. data/rails/vendor/rails/activesupport/lib/active_support/cache.rb +145 -0
  1080. data/rails/vendor/rails/activesupport/lib/active_support/cache/compressed_mem_cache_store.rb +15 -0
  1081. data/rails/vendor/rails/activesupport/lib/active_support/cache/drb_store.rb +15 -0
  1082. data/rails/vendor/rails/activesupport/lib/active_support/cache/file_store.rb +70 -0
  1083. data/rails/vendor/rails/activesupport/lib/active_support/cache/mem_cache_store.rb +100 -0
  1084. data/rails/vendor/rails/activesupport/lib/active_support/cache/memory_store.rb +38 -0
  1085. data/rails/vendor/rails/activesupport/lib/active_support/callbacks.rb +275 -0
  1086. data/rails/vendor/rails/activesupport/lib/active_support/clean_logger.rb +127 -0
  1087. data/rails/vendor/rails/activesupport/lib/active_support/core_ext.rb +4 -0
  1088. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/array.rb +13 -0
  1089. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/array/access.rb +26 -0
  1090. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/array/conversions.rb +178 -0
  1091. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/array/extract_options.rb +20 -0
  1092. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/array/grouping.rb +63 -0
  1093. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/array/random_access.rb +12 -0
  1094. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/base64.rb +4 -0
  1095. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/base64/encoding.rb +13 -0
  1096. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/benchmark.rb +12 -0
  1097. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/bigdecimal.rb +6 -0
  1098. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/bigdecimal/conversions.rb +41 -0
  1099. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/blank.rb +53 -0
  1100. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/cgi.rb +5 -0
  1101. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/cgi/escape_skipping_slashes.rb +14 -0
  1102. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/class.rb +4 -0
  1103. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/class/attribute_accessors.rb +54 -0
  1104. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/class/delegating_attributes.rb +46 -0
  1105. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/class/inheritable_attributes.rb +140 -0
  1106. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/class/removal.rb +50 -0
  1107. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/date.rb +10 -0
  1108. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/date/behavior.rb +13 -0
  1109. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/date/calculations.rb +215 -0
  1110. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/date/conversions.rb +107 -0
  1111. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/date_time.rb +12 -0
  1112. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/date_time/calculations.rb +112 -0
  1113. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/date_time/conversions.rb +96 -0
  1114. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/duplicable.rb +37 -0
  1115. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/enumerable.rb +69 -0
  1116. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/exception.rb +41 -0
  1117. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/file.rb +21 -0
  1118. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/float.rb +5 -0
  1119. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/float/rounding.rb +24 -0
  1120. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/hash.rb +13 -0
  1121. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/hash/conversions.rb +259 -0
  1122. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/hash/diff.rb +19 -0
  1123. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/hash/except.rb +24 -0
  1124. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/hash/indifferent_access.rb +137 -0
  1125. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/hash/keys.rb +52 -0
  1126. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/hash/reverse_merge.rb +28 -0
  1127. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/hash/slice.rb +28 -0
  1128. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/integer.rb +7 -0
  1129. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/integer/even_odd.rb +29 -0
  1130. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/integer/inflections.rb +20 -0
  1131. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/kernel.rb +5 -0
  1132. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/kernel/agnostics.rb +11 -0
  1133. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/kernel/daemonizing.rb +7 -0
  1134. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/kernel/debugger.rb +13 -0
  1135. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/kernel/reporting.rb +59 -0
  1136. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/kernel/requires.rb +24 -0
  1137. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/load_error.rb +38 -0
  1138. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/logger.rb +16 -0
  1139. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/module.rb +8 -0
  1140. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/module/aliasing.rb +70 -0
  1141. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/module/attr_accessor_with_default.rb +31 -0
  1142. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/module/attr_internal.rb +32 -0
  1143. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/module/attribute_accessors.rb +58 -0
  1144. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/module/delegation.rb +64 -0
  1145. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/module/inclusion.rb +30 -0
  1146. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/module/introspection.rb +75 -0
  1147. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/module/loading.rb +23 -0
  1148. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/name_error.rb +17 -0
  1149. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/numeric.rb +9 -0
  1150. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/numeric/bytes.rb +44 -0
  1151. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/numeric/conversions.rb +19 -0
  1152. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/numeric/time.rb +91 -0
  1153. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/object.rb +4 -0
  1154. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/object/conversions.rb +14 -0
  1155. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/object/extending.rb +58 -0
  1156. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/object/instance_variables.rb +74 -0
  1157. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/object/misc.rb +59 -0
  1158. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/pathname.rb +7 -0
  1159. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/pathname/clean_within.rb +14 -0
  1160. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/proc.rb +12 -0
  1161. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/process.rb +1 -0
  1162. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/process/daemon.rb +25 -0
  1163. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/range.rb +11 -0
  1164. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/range/blockless_step.rb +32 -0
  1165. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/range/conversions.rb +27 -0
  1166. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/range/include_range.rb +30 -0
  1167. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/range/overlaps.rb +15 -0
  1168. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/string.rb +18 -0
  1169. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/string/access.rb +82 -0
  1170. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/string/conversions.rb +28 -0
  1171. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/string/filters.rb +26 -0
  1172. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/string/inflections.rb +148 -0
  1173. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/string/iterators.rb +21 -0
  1174. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/string/starts_ends_with.rb +35 -0
  1175. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/string/unicode.rb +68 -0
  1176. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/string/xchar.rb +11 -0
  1177. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/symbol.rb +14 -0
  1178. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/test.rb +1 -0
  1179. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/test/unit/assertions.rb +64 -0
  1180. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/time.rb +21 -0
  1181. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/time/behavior.rb +13 -0
  1182. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/time/calculations.rb +276 -0
  1183. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/time/conversions.rb +89 -0
  1184. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/time/zones.rb +86 -0
  1185. data/rails/vendor/rails/activesupport/lib/active_support/dependencies.rb +552 -0
  1186. data/rails/vendor/rails/activesupport/lib/active_support/deprecation.rb +205 -0
  1187. data/rails/vendor/rails/activesupport/lib/active_support/duration.rb +96 -0
  1188. data/rails/vendor/rails/activesupport/lib/active_support/gzip.rb +25 -0
  1189. data/rails/vendor/rails/activesupport/lib/active_support/inflections.rb +53 -0
  1190. data/rails/vendor/rails/activesupport/lib/active_support/inflector.rb +308 -0
  1191. data/rails/vendor/rails/activesupport/lib/active_support/json.rb +23 -0
  1192. data/rails/vendor/rails/activesupport/lib/active_support/json/decoding.rb +63 -0
  1193. data/rails/vendor/rails/activesupport/lib/active_support/json/encoders/date.rb +14 -0
  1194. data/rails/vendor/rails/activesupport/lib/active_support/json/encoders/date_time.rb +14 -0
  1195. data/rails/vendor/rails/activesupport/lib/active_support/json/encoders/enumerable.rb +12 -0
  1196. data/rails/vendor/rails/activesupport/lib/active_support/json/encoders/false_class.rb +5 -0
  1197. data/rails/vendor/rails/activesupport/lib/active_support/json/encoders/hash.rb +47 -0
  1198. data/rails/vendor/rails/activesupport/lib/active_support/json/encoders/nil_class.rb +5 -0
  1199. data/rails/vendor/rails/activesupport/lib/active_support/json/encoders/numeric.rb +5 -0
  1200. data/rails/vendor/rails/activesupport/lib/active_support/json/encoders/object.rb +6 -0
  1201. data/rails/vendor/rails/activesupport/lib/active_support/json/encoders/regexp.rb +5 -0
  1202. data/rails/vendor/rails/activesupport/lib/active_support/json/encoders/string.rb +36 -0
  1203. data/rails/vendor/rails/activesupport/lib/active_support/json/encoders/symbol.rb +5 -0
  1204. data/rails/vendor/rails/activesupport/lib/active_support/json/encoders/time.rb +14 -0
  1205. data/rails/vendor/rails/activesupport/lib/active_support/json/encoders/true_class.rb +5 -0
  1206. data/rails/vendor/rails/activesupport/lib/active_support/json/encoding.rb +37 -0
  1207. data/rails/vendor/rails/activesupport/lib/active_support/json/variable.rb +10 -0
  1208. data/rails/vendor/rails/activesupport/lib/active_support/multibyte.rb +9 -0
  1209. data/rails/vendor/rails/activesupport/lib/active_support/multibyte/chars.rb +137 -0
  1210. data/rails/vendor/rails/activesupport/lib/active_support/multibyte/generators/generate_tables.rb +149 -0
  1211. data/rails/vendor/rails/activesupport/lib/active_support/multibyte/handlers/passthru_handler.rb +9 -0
  1212. data/rails/vendor/rails/activesupport/lib/active_support/multibyte/handlers/utf8_handler.rb +564 -0
  1213. data/rails/vendor/rails/activesupport/lib/active_support/multibyte/handlers/utf8_handler_proc.rb +43 -0
  1214. data/rails/vendor/rails/activesupport/lib/active_support/option_merger.rb +25 -0
  1215. data/rails/vendor/rails/activesupport/lib/active_support/ordered_hash.rb +43 -0
  1216. data/rails/vendor/rails/activesupport/lib/active_support/ordered_options.rb +17 -0
  1217. data/rails/vendor/rails/activesupport/lib/active_support/test_case.rb +13 -0
  1218. data/rails/vendor/rails/activesupport/lib/active_support/testing/default.rb +9 -0
  1219. data/rails/vendor/rails/activesupport/lib/active_support/testing/setup_and_teardown.rb +93 -0
  1220. data/rails/vendor/rails/activesupport/lib/active_support/time_with_zone.rb +283 -0
  1221. data/rails/vendor/rails/activesupport/lib/active_support/values/time_zone.rb +394 -0
  1222. data/rails/vendor/rails/activesupport/lib/active_support/values/unicode_tables.dat +0 -0
  1223. data/rails/vendor/rails/activesupport/lib/active_support/vendor.rb +26 -0
  1224. data/rails/vendor/rails/activesupport/lib/active_support/vendor/builder-2.1.2/blankslate.rb +113 -0
  1225. data/rails/vendor/rails/activesupport/lib/active_support/vendor/builder-2.1.2/builder.rb +13 -0
  1226. data/rails/vendor/rails/activesupport/lib/active_support/vendor/builder-2.1.2/builder/blankslate.rb +20 -0
  1227. data/rails/vendor/rails/activesupport/lib/active_support/vendor/builder-2.1.2/builder/css.rb +250 -0
  1228. data/rails/vendor/rails/activesupport/lib/active_support/vendor/builder-2.1.2/builder/xchar.rb +115 -0
  1229. data/rails/vendor/rails/activesupport/lib/active_support/vendor/builder-2.1.2/builder/xmlbase.rb +139 -0
  1230. data/rails/vendor/rails/activesupport/lib/active_support/vendor/builder-2.1.2/builder/xmlevents.rb +63 -0
  1231. data/rails/vendor/rails/activesupport/lib/active_support/vendor/builder-2.1.2/builder/xmlmarkup.rb +328 -0
  1232. data/rails/vendor/rails/activesupport/lib/active_support/vendor/memcache-client-1.5.0/memcache.rb +849 -0
  1233. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo.rb +33 -0
  1234. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/data_timezone.rb +47 -0
  1235. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/data_timezone_info.rb +226 -0
  1236. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Africa/Algiers.rb +55 -0
  1237. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Africa/Cairo.rb +219 -0
  1238. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Africa/Casablanca.rb +38 -0
  1239. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Africa/Harare.rb +18 -0
  1240. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Africa/Johannesburg.rb +25 -0
  1241. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Africa/Monrovia.rb +22 -0
  1242. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Africa/Nairobi.rb +23 -0
  1243. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/Argentina/Buenos_Aires.rb +166 -0
  1244. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/Argentina/San_Juan.rb +170 -0
  1245. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/Bogota.rb +23 -0
  1246. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/Caracas.rb +23 -0
  1247. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/Chicago.rb +283 -0
  1248. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/Chihuahua.rb +136 -0
  1249. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/Denver.rb +204 -0
  1250. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/Godthab.rb +161 -0
  1251. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/Guatemala.rb +27 -0
  1252. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/Halifax.rb +274 -0
  1253. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/Indiana/Indianapolis.rb +149 -0
  1254. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/Juneau.rb +194 -0
  1255. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/La_Paz.rb +22 -0
  1256. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/Lima.rb +35 -0
  1257. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/Los_Angeles.rb +232 -0
  1258. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/Mazatlan.rb +139 -0
  1259. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/Mexico_City.rb +144 -0
  1260. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/Monterrey.rb +131 -0
  1261. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/New_York.rb +282 -0
  1262. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/Phoenix.rb +30 -0
  1263. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/Regina.rb +74 -0
  1264. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/Santiago.rb +205 -0
  1265. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/St_Johns.rb +288 -0
  1266. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/Tijuana.rb +196 -0
  1267. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Almaty.rb +67 -0
  1268. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Baghdad.rb +73 -0
  1269. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Baku.rb +161 -0
  1270. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Bangkok.rb +20 -0
  1271. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Chongqing.rb +33 -0
  1272. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Dhaka.rb +27 -0
  1273. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Hong_Kong.rb +87 -0
  1274. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Irkutsk.rb +165 -0
  1275. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Jakarta.rb +30 -0
  1276. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Jerusalem.rb +163 -0
  1277. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Kabul.rb +20 -0
  1278. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Kamchatka.rb +163 -0
  1279. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Karachi.rb +28 -0
  1280. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Katmandu.rb +20 -0
  1281. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Kolkata.rb +25 -0
  1282. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Krasnoyarsk.rb +163 -0
  1283. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Kuala_Lumpur.rb +31 -0
  1284. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Kuwait.rb +18 -0
  1285. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Magadan.rb +163 -0
  1286. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Muscat.rb +18 -0
  1287. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Novosibirsk.rb +164 -0
  1288. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Rangoon.rb +24 -0
  1289. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Riyadh.rb +18 -0
  1290. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Seoul.rb +34 -0
  1291. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Shanghai.rb +35 -0
  1292. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Singapore.rb +33 -0
  1293. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Taipei.rb +59 -0
  1294. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Tashkent.rb +47 -0
  1295. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Tbilisi.rb +78 -0
  1296. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Tehran.rb +121 -0
  1297. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Tokyo.rb +30 -0
  1298. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Ulaanbaatar.rb +65 -0
  1299. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Urumqi.rb +33 -0
  1300. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Vladivostok.rb +164 -0
  1301. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Yakutsk.rb +163 -0
  1302. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Yekaterinburg.rb +165 -0
  1303. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Yerevan.rb +165 -0
  1304. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Atlantic/Azores.rb +270 -0
  1305. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Atlantic/Cape_Verde.rb +23 -0
  1306. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Atlantic/South_Georgia.rb +18 -0
  1307. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Australia/Adelaide.rb +187 -0
  1308. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Australia/Brisbane.rb +35 -0
  1309. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Australia/Darwin.rb +29 -0
  1310. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Australia/Hobart.rb +193 -0
  1311. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Australia/Melbourne.rb +185 -0
  1312. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Australia/Perth.rb +37 -0
  1313. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Australia/Sydney.rb +185 -0
  1314. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Etc/UTC.rb +16 -0
  1315. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Amsterdam.rb +228 -0
  1316. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Athens.rb +185 -0
  1317. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Belgrade.rb +163 -0
  1318. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Berlin.rb +188 -0
  1319. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Bratislava.rb +13 -0
  1320. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Brussels.rb +232 -0
  1321. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Bucharest.rb +181 -0
  1322. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Budapest.rb +197 -0
  1323. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Copenhagen.rb +179 -0
  1324. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Dublin.rb +276 -0
  1325. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Helsinki.rb +163 -0
  1326. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Istanbul.rb +218 -0
  1327. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Kiev.rb +168 -0
  1328. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Lisbon.rb +268 -0
  1329. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Ljubljana.rb +13 -0
  1330. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/London.rb +288 -0
  1331. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Madrid.rb +211 -0
  1332. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Minsk.rb +170 -0
  1333. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Moscow.rb +181 -0
  1334. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Paris.rb +232 -0
  1335. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Prague.rb +187 -0
  1336. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Riga.rb +176 -0
  1337. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Rome.rb +215 -0
  1338. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Sarajevo.rb +13 -0
  1339. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Skopje.rb +13 -0
  1340. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Sofia.rb +173 -0
  1341. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Stockholm.rb +165 -0
  1342. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Tallinn.rb +172 -0
  1343. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Vienna.rb +183 -0
  1344. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Vilnius.rb +170 -0
  1345. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Warsaw.rb +212 -0
  1346. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Zagreb.rb +13 -0
  1347. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Pacific/Auckland.rb +202 -0
  1348. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Pacific/Fiji.rb +23 -0
  1349. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Pacific/Guam.rb +22 -0
  1350. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Pacific/Honolulu.rb +28 -0
  1351. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Pacific/Majuro.rb +20 -0
  1352. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Pacific/Midway.rb +25 -0
  1353. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Pacific/Noumea.rb +25 -0
  1354. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Pacific/Pago_Pago.rb +26 -0
  1355. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Pacific/Port_Moresby.rb +20 -0
  1356. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Pacific/Tongatapu.rb +27 -0
  1357. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/info_timezone.rb +52 -0
  1358. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/linked_timezone.rb +51 -0
  1359. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/linked_timezone_info.rb +44 -0
  1360. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/offset_rationals.rb +95 -0
  1361. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/time_or_datetime.rb +292 -0
  1362. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/timezone.rb +508 -0
  1363. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/timezone_definition.rb +56 -0
  1364. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/timezone_info.rb +40 -0
  1365. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/timezone_offset_info.rb +94 -0
  1366. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/timezone_period.rb +198 -0
  1367. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/timezone_transition_info.rb +138 -0
  1368. data/rails/vendor/rails/activesupport/lib/active_support/vendor/xml-simple-1.0.11/xmlsimple.rb +1021 -0
  1369. data/rails/vendor/rails/activesupport/lib/active_support/version.rb +9 -0
  1370. data/rails/vendor/rails/activesupport/lib/active_support/whiny_nil.rb +58 -0
  1371. data/rails/vendor/rails/activesupport/lib/activesupport.rb +1 -0
  1372. data/rails/vendor/rails/activesupport/test/abstract_unit.rb +24 -0
  1373. data/rails/vendor/rails/activesupport/test/autoloading_fixtures/a/b.rb +2 -0
  1374. data/rails/vendor/rails/activesupport/test/autoloading_fixtures/a/c/d.rb +2 -0
  1375. data/rails/vendor/rails/activesupport/test/autoloading_fixtures/a/c/e/f.rb +2 -0
  1376. data/rails/vendor/rails/activesupport/test/autoloading_fixtures/application.rb +1 -0
  1377. data/rails/vendor/rails/activesupport/test/autoloading_fixtures/class_folder.rb +3 -0
  1378. data/rails/vendor/rails/activesupport/test/autoloading_fixtures/class_folder/class_folder_subclass.rb +3 -0
  1379. data/rails/vendor/rails/activesupport/test/autoloading_fixtures/class_folder/inline_class.rb +2 -0
  1380. data/rails/vendor/rails/activesupport/test/autoloading_fixtures/class_folder/nested_class.rb +7 -0
  1381. data/rails/vendor/rails/activesupport/test/autoloading_fixtures/conflict.rb +1 -0
  1382. data/rails/vendor/rails/activesupport/test/autoloading_fixtures/counting_loader.rb +5 -0
  1383. data/rails/vendor/rails/activesupport/test/autoloading_fixtures/cross_site_dependency.rb +2 -0
  1384. data/rails/vendor/rails/activesupport/test/autoloading_fixtures/e.rb +2 -0
  1385. data/rails/vendor/rails/activesupport/test/autoloading_fixtures/module_folder/inline_class.rb +2 -0
  1386. data/rails/vendor/rails/activesupport/test/autoloading_fixtures/module_folder/nested_class.rb +4 -0
  1387. data/rails/vendor/rails/activesupport/test/autoloading_fixtures/module_folder/nested_sibling.rb +2 -0
  1388. data/rails/vendor/rails/activesupport/test/autoloading_fixtures/module_with_custom_const_missing/a/b.rb +1 -0
  1389. data/rails/vendor/rails/activesupport/test/autoloading_fixtures/multiple_constant_file.rb +2 -0
  1390. data/rails/vendor/rails/activesupport/test/autoloading_fixtures/raises_name_error.rb +3 -0
  1391. data/rails/vendor/rails/activesupport/test/autoloading_fixtures/raises_no_method_error.rb +3 -0
  1392. data/rails/vendor/rails/activesupport/test/buffered_logger_test.rb +118 -0
  1393. data/rails/vendor/rails/activesupport/test/caching_test.rb +66 -0
  1394. data/rails/vendor/rails/activesupport/test/callbacks_test.rb +148 -0
  1395. data/rails/vendor/rails/activesupport/test/clean_logger_test.rb +57 -0
  1396. data/rails/vendor/rails/activesupport/test/core_ext/array_ext_test.rb +250 -0
  1397. data/rails/vendor/rails/activesupport/test/core_ext/base64_ext_test.rb +8 -0
  1398. data/rails/vendor/rails/activesupport/test/core_ext/bigdecimal.rb +9 -0
  1399. data/rails/vendor/rails/activesupport/test/core_ext/blank_test.rb +19 -0
  1400. data/rails/vendor/rails/activesupport/test/core_ext/cgi_ext_test.rb +14 -0
  1401. data/rails/vendor/rails/activesupport/test/core_ext/class/attribute_accessor_test.rb +31 -0
  1402. data/rails/vendor/rails/activesupport/test/core_ext/class/class_inheritable_attributes_test.rb +224 -0
  1403. data/rails/vendor/rails/activesupport/test/core_ext/class/delegating_attributes_test.rb +115 -0
  1404. data/rails/vendor/rails/activesupport/test/core_ext/class_test.rb +46 -0
  1405. data/rails/vendor/rails/activesupport/test/core_ext/date_ext_test.rb +242 -0
  1406. data/rails/vendor/rails/activesupport/test/core_ext/date_time_ext_test.rb +288 -0
  1407. data/rails/vendor/rails/activesupport/test/core_ext/duplicable_test.rb +22 -0
  1408. data/rails/vendor/rails/activesupport/test/core_ext/duration_test.rb +74 -0
  1409. data/rails/vendor/rails/activesupport/test/core_ext/enumerable_test.rb +66 -0
  1410. data/rails/vendor/rails/activesupport/test/core_ext/exception_test.rb +68 -0
  1411. data/rails/vendor/rails/activesupport/test/core_ext/file_test.rb +29 -0
  1412. data/rails/vendor/rails/activesupport/test/core_ext/float_ext_test.rb +25 -0
  1413. data/rails/vendor/rails/activesupport/test/core_ext/hash_ext_test.rb +815 -0
  1414. data/rails/vendor/rails/activesupport/test/core_ext/integer_ext_test.rb +37 -0
  1415. data/rails/vendor/rails/activesupport/test/core_ext/kernel_test.rb +43 -0
  1416. data/rails/vendor/rails/activesupport/test/core_ext/load_error_test.rb +16 -0
  1417. data/rails/vendor/rails/activesupport/test/core_ext/module/attr_accessor_with_default_test.rb +30 -0
  1418. data/rails/vendor/rails/activesupport/test/core_ext/module/attr_internal_test.rb +52 -0
  1419. data/rails/vendor/rails/activesupport/test/core_ext/module/attribute_accessor_test.rb +33 -0
  1420. data/rails/vendor/rails/activesupport/test/core_ext/module/attribute_aliasing_test.rb +58 -0
  1421. data/rails/vendor/rails/activesupport/test/core_ext/module_test.rb +293 -0
  1422. data/rails/vendor/rails/activesupport/test/core_ext/name_error_test.rb +24 -0
  1423. data/rails/vendor/rails/activesupport/test/core_ext/numeric_ext_test.rb +162 -0
  1424. data/rails/vendor/rails/activesupport/test/core_ext/object_and_class_ext_test.rb +246 -0
  1425. data/rails/vendor/rails/activesupport/test/core_ext/pathname_test.rb +9 -0
  1426. data/rails/vendor/rails/activesupport/test/core_ext/proc_test.rb +11 -0
  1427. data/rails/vendor/rails/activesupport/test/core_ext/range_ext_test.rb +63 -0
  1428. data/rails/vendor/rails/activesupport/test/core_ext/string_ext_test.rb +199 -0
  1429. data/rails/vendor/rails/activesupport/test/core_ext/symbol_test.rb +9 -0
  1430. data/rails/vendor/rails/activesupport/test/core_ext/time_ext_test.rb +622 -0
  1431. data/rails/vendor/rails/activesupport/test/core_ext/time_with_zone_test.rb +676 -0
  1432. data/rails/vendor/rails/activesupport/test/dependencies/check_warnings.rb +2 -0
  1433. data/rails/vendor/rails/activesupport/test/dependencies/conflict.rb +1 -0
  1434. data/rails/vendor/rails/activesupport/test/dependencies/cross_site_depender.rb +3 -0
  1435. data/rails/vendor/rails/activesupport/test/dependencies/mutual_one.rb +4 -0
  1436. data/rails/vendor/rails/activesupport/test/dependencies/mutual_two.rb +4 -0
  1437. data/rails/vendor/rails/activesupport/test/dependencies/raises_exception.rb +3 -0
  1438. data/rails/vendor/rails/activesupport/test/dependencies/requires_nonexistent0.rb +1 -0
  1439. data/rails/vendor/rails/activesupport/test/dependencies/requires_nonexistent1.rb +1 -0
  1440. data/rails/vendor/rails/activesupport/test/dependencies/service_one.rb +5 -0
  1441. data/rails/vendor/rails/activesupport/test/dependencies/service_two.rb +2 -0
  1442. data/rails/vendor/rails/activesupport/test/dependencies_test.rb +765 -0
  1443. data/rails/vendor/rails/activesupport/test/deprecation_test.rb +151 -0
  1444. data/rails/vendor/rails/activesupport/test/inflector_test.rb +242 -0
  1445. data/rails/vendor/rails/activesupport/test/inflector_test_cases.rb +211 -0
  1446. data/rails/vendor/rails/activesupport/test/json/decoding_test.rb +41 -0
  1447. data/rails/vendor/rails/activesupport/test/json/encoding_test.rb +140 -0
  1448. data/rails/vendor/rails/activesupport/test/multibyte_chars_test.rb +182 -0
  1449. data/rails/vendor/rails/activesupport/test/multibyte_conformance.rb +146 -0
  1450. data/rails/vendor/rails/activesupport/test/multibyte_handler_test.rb +372 -0
  1451. data/rails/vendor/rails/activesupport/test/option_merger_test.rb +50 -0
  1452. data/rails/vendor/rails/activesupport/test/ordered_hash_test.rb +45 -0
  1453. data/rails/vendor/rails/activesupport/test/ordered_options_test.rb +53 -0
  1454. data/rails/vendor/rails/activesupport/test/test_test.rb +120 -0
  1455. data/rails/vendor/rails/activesupport/test/time_zone_test.rb +288 -0
  1456. data/rails/vendor/rails/activesupport/test/whiny_nil_test.rb +38 -0
  1457. data/rails/vendor/rails/railties/CHANGELOG +2027 -0
  1458. data/rails/vendor/rails/railties/MIT-LICENSE +20 -0
  1459. data/rails/vendor/rails/railties/README +256 -0
  1460. data/rails/vendor/rails/railties/Rakefile +349 -0
  1461. data/rails/vendor/rails/railties/bin/about +3 -0
  1462. data/rails/vendor/rails/railties/bin/console +3 -0
  1463. data/rails/vendor/rails/railties/bin/dbconsole +3 -0
  1464. data/rails/vendor/rails/railties/bin/destroy +3 -0
  1465. data/rails/vendor/rails/railties/bin/generate +3 -0
  1466. data/rails/vendor/rails/railties/bin/performance/benchmarker +3 -0
  1467. data/rails/vendor/rails/railties/bin/performance/profiler +3 -0
  1468. data/rails/vendor/rails/railties/bin/performance/request +3 -0
  1469. data/rails/vendor/rails/railties/bin/plugin +3 -0
  1470. data/rails/vendor/rails/railties/bin/process/inspector +3 -0
  1471. data/rails/vendor/rails/railties/bin/process/reaper +3 -0
  1472. data/rails/vendor/rails/railties/bin/process/spawner +3 -0
  1473. data/rails/vendor/rails/railties/bin/rails +19 -0
  1474. data/rails/vendor/rails/railties/bin/runner +3 -0
  1475. data/rails/vendor/rails/railties/bin/server +3 -0
  1476. data/rails/vendor/rails/railties/builtin/rails_info/rails/info.rb +125 -0
  1477. data/rails/vendor/rails/railties/builtin/rails_info/rails/info_controller.rb +9 -0
  1478. data/rails/vendor/rails/railties/builtin/rails_info/rails/info_helper.rb +2 -0
  1479. data/rails/vendor/rails/railties/builtin/rails_info/rails_info_controller.rb +2 -0
  1480. data/rails/vendor/rails/railties/configs/apache.conf +40 -0
  1481. data/rails/vendor/rails/railties/configs/databases/frontbase.yml +28 -0
  1482. data/rails/vendor/rails/railties/configs/databases/mysql.yml +54 -0
  1483. data/rails/vendor/rails/railties/configs/databases/oracle.yml +39 -0
  1484. data/rails/vendor/rails/railties/configs/databases/postgresql.yml +48 -0
  1485. data/rails/vendor/rails/railties/configs/databases/sqlite2.yml +16 -0
  1486. data/rails/vendor/rails/railties/configs/databases/sqlite3.yml +19 -0
  1487. data/rails/vendor/rails/railties/configs/empty.log +0 -0
  1488. data/rails/vendor/rails/railties/configs/initializers/inflections.rb +10 -0
  1489. data/rails/vendor/rails/railties/configs/initializers/mime_types.rb +5 -0
  1490. data/rails/vendor/rails/railties/configs/initializers/new_rails_defaults.rb +15 -0
  1491. data/rails/vendor/rails/railties/configs/lighttpd.conf +54 -0
  1492. data/rails/vendor/rails/railties/configs/routes.rb +41 -0
  1493. data/rails/vendor/rails/railties/dispatches/dispatch.fcgi +24 -0
  1494. data/rails/vendor/rails/railties/dispatches/dispatch.rb +10 -0
  1495. data/rails/vendor/rails/railties/dispatches/gateway.cgi +97 -0
  1496. data/rails/vendor/rails/railties/doc/README_FOR_APP +2 -0
  1497. data/rails/vendor/rails/railties/environments/boot.rb +109 -0
  1498. data/rails/vendor/rails/railties/environments/development.rb +17 -0
  1499. data/rails/vendor/rails/railties/environments/environment.rb +67 -0
  1500. data/rails/vendor/rails/railties/environments/production.rb +22 -0
  1501. data/rails/vendor/rails/railties/environments/test.rb +22 -0
  1502. data/rails/vendor/rails/railties/fresh_rakefile +10 -0
  1503. data/rails/vendor/rails/railties/helpers/application.rb +15 -0
  1504. data/rails/vendor/rails/railties/helpers/application_helper.rb +3 -0
  1505. data/rails/vendor/rails/railties/helpers/test_helper.rb +38 -0
  1506. data/rails/vendor/rails/railties/html/404.html +30 -0
  1507. data/rails/vendor/rails/railties/html/422.html +30 -0
  1508. data/rails/vendor/rails/railties/html/500.html +30 -0
  1509. data/rails/vendor/rails/railties/html/favicon.ico +0 -0
  1510. data/rails/vendor/rails/railties/html/images/rails.png +0 -0
  1511. data/rails/vendor/rails/railties/html/index.html +274 -0
  1512. data/rails/vendor/rails/railties/html/javascripts/application.js +2 -0
  1513. data/rails/vendor/rails/railties/html/javascripts/controls.js +963 -0
  1514. data/rails/vendor/rails/railties/html/javascripts/dragdrop.js +972 -0
  1515. data/rails/vendor/rails/railties/html/javascripts/effects.js +1120 -0
  1516. data/rails/vendor/rails/railties/html/javascripts/prototype.js +4225 -0
  1517. data/rails/vendor/rails/railties/html/robots.txt +5 -0
  1518. data/rails/vendor/rails/railties/lib/code_statistics.rb +107 -0
  1519. data/rails/vendor/rails/railties/lib/commands.rb +17 -0
  1520. data/rails/vendor/rails/railties/lib/commands/about.rb +2 -0
  1521. data/rails/vendor/rails/railties/lib/commands/console.rb +32 -0
  1522. data/rails/vendor/rails/railties/lib/commands/dbconsole.rb +65 -0
  1523. data/rails/vendor/rails/railties/lib/commands/destroy.rb +6 -0
  1524. data/rails/vendor/rails/railties/lib/commands/generate.rb +6 -0
  1525. data/rails/vendor/rails/railties/lib/commands/ncgi/listener +86 -0
  1526. data/rails/vendor/rails/railties/lib/commands/ncgi/tracker +69 -0
  1527. data/rails/vendor/rails/railties/lib/commands/performance/benchmarker.rb +24 -0
  1528. data/rails/vendor/rails/railties/lib/commands/performance/profiler.rb +50 -0
  1529. data/rails/vendor/rails/railties/lib/commands/performance/request.rb +6 -0
  1530. data/rails/vendor/rails/railties/lib/commands/plugin.rb +950 -0
  1531. data/rails/vendor/rails/railties/lib/commands/process/inspector.rb +68 -0
  1532. data/rails/vendor/rails/railties/lib/commands/process/reaper.rb +149 -0
  1533. data/rails/vendor/rails/railties/lib/commands/process/spawner.rb +219 -0
  1534. data/rails/vendor/rails/railties/lib/commands/process/spinner.rb +57 -0
  1535. data/rails/vendor/rails/railties/lib/commands/runner.rb +48 -0
  1536. data/rails/vendor/rails/railties/lib/commands/server.rb +39 -0
  1537. data/rails/vendor/rails/railties/lib/commands/servers/base.rb +31 -0
  1538. data/rails/vendor/rails/railties/lib/commands/servers/lighttpd.rb +94 -0
  1539. data/rails/vendor/rails/railties/lib/commands/servers/mongrel.rb +69 -0
  1540. data/rails/vendor/rails/railties/lib/commands/servers/new_mongrel.rb +16 -0
  1541. data/rails/vendor/rails/railties/lib/commands/servers/webrick.rb +66 -0
  1542. data/rails/vendor/rails/railties/lib/commands/update.rb +4 -0
  1543. data/rails/vendor/rails/railties/lib/console_app.rb +30 -0
  1544. data/rails/vendor/rails/railties/lib/console_sandbox.rb +6 -0
  1545. data/rails/vendor/rails/railties/lib/console_with_helpers.rb +26 -0
  1546. data/rails/vendor/rails/railties/lib/dispatcher.rb +24 -0
  1547. data/rails/vendor/rails/railties/lib/fcgi_handler.rb +239 -0
  1548. data/rails/vendor/rails/railties/lib/initializer.rb +900 -0
  1549. data/rails/vendor/rails/railties/lib/rails/gem_builder.rb +21 -0
  1550. data/rails/vendor/rails/railties/lib/rails/gem_dependency.rb +124 -0
  1551. data/rails/vendor/rails/railties/lib/rails/mongrel_server/commands.rb +342 -0
  1552. data/rails/vendor/rails/railties/lib/rails/mongrel_server/handler.rb +55 -0
  1553. data/rails/vendor/rails/railties/lib/rails/plugin.rb +115 -0
  1554. data/rails/vendor/rails/railties/lib/rails/plugin/loader.rb +152 -0
  1555. data/rails/vendor/rails/railties/lib/rails/plugin/locator.rb +99 -0
  1556. data/rails/vendor/rails/railties/lib/rails/version.rb +9 -0
  1557. data/rails/vendor/rails/railties/lib/rails_generator.rb +43 -0
  1558. data/rails/vendor/rails/railties/lib/rails_generator/base.rb +263 -0
  1559. data/rails/vendor/rails/railties/lib/rails_generator/commands.rb +607 -0
  1560. data/rails/vendor/rails/railties/lib/rails_generator/generated_attribute.rb +42 -0
  1561. data/rails/vendor/rails/railties/lib/rails_generator/generators/applications/app/USAGE +9 -0
  1562. data/rails/vendor/rails/railties/lib/rails_generator/generators/applications/app/app_generator.rb +178 -0
  1563. data/rails/vendor/rails/railties/lib/rails_generator/generators/components/controller/USAGE +29 -0
  1564. data/rails/vendor/rails/railties/lib/rails_generator/generators/components/controller/controller_generator.rb +37 -0
  1565. data/rails/vendor/rails/railties/lib/rails_generator/generators/components/controller/templates/controller.rb +7 -0
  1566. data/rails/vendor/rails/railties/lib/rails_generator/generators/components/controller/templates/functional_test.rb +8 -0
  1567. data/rails/vendor/rails/railties/lib/rails_generator/generators/components/controller/templates/helper.rb +2 -0
  1568. data/rails/vendor/rails/railties/lib/rails_generator/generators/components/controller/templates/view.html.erb +2 -0
  1569. data/rails/vendor/rails/railties/lib/rails_generator/generators/components/integration_test/USAGE +8 -0
  1570. data/rails/vendor/rails/railties/lib/rails_generator/generators/components/integration_test/integration_test_generator.rb +16 -0
  1571. data/rails/vendor/rails/railties/lib/rails_generator/generators/components/integration_test/templates/integration_test.rb +10 -0
  1572. data/rails/vendor/rails/railties/lib/rails_generator/generators/components/mailer/USAGE +16 -0
  1573. data/rails/vendor/rails/railties/lib/rails_generator/generators/components/mailer/mailer_generator.rb +30 -0
  1574. data/rails/vendor/rails/railties/lib/rails_generator/generators/components/mailer/templates/fixture.erb +3 -0
  1575. data/rails/vendor/rails/railties/lib/rails_generator/generators/components/mailer/templates/fixture.rhtml +0 -0
  1576. data/rails/vendor/rails/railties/lib/rails_generator/generators/components/mailer/templates/mailer.rb +15 -0
  1577. data/rails/vendor/rails/railties/lib/rails_generator/generators/components/mailer/templates/unit_test.rb +21 -0
  1578. data/rails/vendor/rails/railties/lib/rails_generator/generators/components/mailer/templates/view.erb +3 -0
  1579. data/rails/vendor/rails/railties/lib/rails_generator/generators/components/mailer/templates/view.rhtml +0 -0
  1580. data/rails/vendor/rails/railties/lib/rails_generator/generators/components/migration/USAGE +29 -0
  1581. data/rails/vendor/rails/railties/lib/rails_generator/generators/components/migration/migration_generator.rb +20 -0
  1582. data/rails/vendor/rails/railties/lib/rails_generator/generators/components/migration/templates/migration.rb +11 -0
  1583. data/rails/vendor/rails/railties/lib/rails_generator/generators/components/model/USAGE +27 -0
  1584. data/rails/vendor/rails/railties/lib/rails_generator/generators/components/model/model_generator.rb +45 -0
  1585. data/rails/vendor/rails/railties/lib/rails_generator/generators/components/model/templates/fixtures.yml +19 -0
  1586. data/rails/vendor/rails/railties/lib/rails_generator/generators/components/model/templates/migration.rb +16 -0
  1587. data/rails/vendor/rails/railties/lib/rails_generator/generators/components/model/templates/model.rb +2 -0
  1588. data/rails/vendor/rails/railties/lib/rails_generator/generators/components/model/templates/unit_test.rb +8 -0
  1589. data/rails/vendor/rails/railties/lib/rails_generator/generators/components/observer/USAGE +13 -0
  1590. data/rails/vendor/rails/railties/lib/rails_generator/generators/components/observer/observer_generator.rb +16 -0
  1591. data/rails/vendor/rails/railties/lib/rails_generator/generators/components/observer/templates/observer.rb +2 -0
  1592. data/rails/vendor/rails/railties/lib/rails_generator/generators/components/observer/templates/unit_test.rb +8 -0
  1593. data/rails/vendor/rails/railties/lib/rails_generator/generators/components/plugin/USAGE +25 -0
  1594. data/rails/vendor/rails/railties/lib/rails_generator/generators/components/plugin/plugin_generator.rb +39 -0
  1595. data/rails/vendor/rails/railties/lib/rails_generator/generators/components/plugin/templates/MIT-LICENSE +20 -0
  1596. data/rails/vendor/rails/railties/lib/rails_generator/generators/components/plugin/templates/README +13 -0
  1597. data/rails/vendor/rails/railties/lib/rails_generator/generators/components/plugin/templates/Rakefile +22 -0
  1598. data/rails/vendor/rails/railties/lib/rails_generator/generators/components/plugin/templates/USAGE +8 -0
  1599. data/rails/vendor/rails/railties/lib/rails_generator/generators/components/plugin/templates/generator.rb +8 -0
  1600. data/rails/vendor/rails/railties/lib/rails_generator/generators/components/plugin/templates/init.rb +1 -0
  1601. data/rails/vendor/rails/railties/lib/rails_generator/generators/components/plugin/templates/install.rb +1 -0
  1602. data/rails/vendor/rails/railties/lib/rails_generator/generators/components/plugin/templates/plugin.rb +1 -0
  1603. data/rails/vendor/rails/railties/lib/rails_generator/generators/components/plugin/templates/tasks.rake +4 -0
  1604. data/rails/vendor/rails/railties/lib/rails_generator/generators/components/plugin/templates/uninstall.rb +1 -0
  1605. data/rails/vendor/rails/railties/lib/rails_generator/generators/components/plugin/templates/unit_test.rb +8 -0
  1606. data/rails/vendor/rails/railties/lib/rails_generator/generators/components/resource/USAGE +23 -0
  1607. data/rails/vendor/rails/railties/lib/rails_generator/generators/components/resource/resource_generator.rb +74 -0
  1608. data/rails/vendor/rails/railties/lib/rails_generator/generators/components/resource/templates/controller.rb +2 -0
  1609. data/rails/vendor/rails/railties/lib/rails_generator/generators/components/resource/templates/functional_test.rb +8 -0
  1610. data/rails/vendor/rails/railties/lib/rails_generator/generators/components/resource/templates/helper.rb +2 -0
  1611. data/rails/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/USAGE +25 -0
  1612. data/rails/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/scaffold_generator.rb +93 -0
  1613. data/rails/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/templates/controller.rb +85 -0
  1614. data/rails/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/templates/functional_test.rb +45 -0
  1615. data/rails/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/templates/helper.rb +2 -0
  1616. data/rails/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/templates/layout.html.erb +17 -0
  1617. data/rails/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/templates/style.css +54 -0
  1618. data/rails/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/templates/view_edit.html.erb +18 -0
  1619. data/rails/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/templates/view_index.html.erb +24 -0
  1620. data/rails/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/templates/view_new.html.erb +17 -0
  1621. data/rails/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/templates/view_show.html.erb +10 -0
  1622. data/rails/vendor/rails/railties/lib/rails_generator/generators/components/session_migration/USAGE +10 -0
  1623. data/rails/vendor/rails/railties/lib/rails_generator/generators/components/session_migration/session_migration_generator.rb +18 -0
  1624. data/rails/vendor/rails/railties/lib/rails_generator/generators/components/session_migration/templates/migration.rb +16 -0
  1625. data/rails/vendor/rails/railties/lib/rails_generator/lookup.rb +248 -0
  1626. data/rails/vendor/rails/railties/lib/rails_generator/manifest.rb +53 -0
  1627. data/rails/vendor/rails/railties/lib/rails_generator/options.rb +150 -0
  1628. data/rails/vendor/rails/railties/lib/rails_generator/scripts.rb +89 -0
  1629. data/rails/vendor/rails/railties/lib/rails_generator/scripts/destroy.rb +30 -0
  1630. data/rails/vendor/rails/railties/lib/rails_generator/scripts/generate.rb +7 -0
  1631. data/rails/vendor/rails/railties/lib/rails_generator/scripts/update.rb +12 -0
  1632. data/rails/vendor/rails/railties/lib/rails_generator/secret_key_generator.rb +164 -0
  1633. data/rails/vendor/rails/railties/lib/rails_generator/simple_logger.rb +46 -0
  1634. data/rails/vendor/rails/railties/lib/rails_generator/spec.rb +44 -0
  1635. data/rails/vendor/rails/railties/lib/railties_path.rb +1 -0
  1636. data/rails/vendor/rails/railties/lib/ruby_version_check.rb +17 -0
  1637. data/rails/vendor/rails/railties/lib/rubyprof_ext.rb +35 -0
  1638. data/rails/vendor/rails/railties/lib/source_annotation_extractor.rb +102 -0
  1639. data/rails/vendor/rails/railties/lib/tasks/annotations.rake +23 -0
  1640. data/rails/vendor/rails/railties/lib/tasks/databases.rake +387 -0
  1641. data/rails/vendor/rails/railties/lib/tasks/documentation.rake +80 -0
  1642. data/rails/vendor/rails/railties/lib/tasks/framework.rake +114 -0
  1643. data/rails/vendor/rails/railties/lib/tasks/gems.rake +64 -0
  1644. data/rails/vendor/rails/railties/lib/tasks/log.rake +9 -0
  1645. data/rails/vendor/rails/railties/lib/tasks/misc.rake +57 -0
  1646. data/rails/vendor/rails/railties/lib/tasks/rails.rb +8 -0
  1647. data/rails/vendor/rails/railties/lib/tasks/routes.rake +17 -0
  1648. data/rails/vendor/rails/railties/lib/tasks/statistics.rake +18 -0
  1649. data/rails/vendor/rails/railties/lib/tasks/testing.rake +118 -0
  1650. data/rails/vendor/rails/railties/lib/tasks/tmp.rake +37 -0
  1651. data/rails/vendor/rails/railties/lib/test_help.rb +28 -0
  1652. data/rails/vendor/rails/railties/lib/webrick_server.rb +165 -0
  1653. data/rails/vendor/rails/railties/test/abstract_unit.rb +24 -0
  1654. data/rails/vendor/rails/railties/test/boot_test.rb +181 -0
  1655. data/rails/vendor/rails/railties/test/console_app_test.rb +32 -0
  1656. data/rails/vendor/rails/railties/test/fcgi_dispatcher_test.rb +299 -0
  1657. data/rails/vendor/rails/railties/test/fixtures/about_yml_plugins/bad_about_yml/about.yml +1 -0
  1658. data/rails/vendor/rails/railties/test/fixtures/about_yml_plugins/bad_about_yml/init.rb +1 -0
  1659. data/rails/vendor/rails/railties/test/fixtures/about_yml_plugins/plugin_without_about_yml/init.rb +1 -0
  1660. data/rails/vendor/rails/railties/test/fixtures/environment_with_constant.rb +1 -0
  1661. data/rails/vendor/rails/railties/test/fixtures/lib/generators/missing_class/missing_class_generator.rb +0 -0
  1662. data/rails/vendor/rails/railties/test/fixtures/lib/generators/working/working_generator.rb +2 -0
  1663. data/rails/vendor/rails/railties/test/fixtures/plugins/alternate/a/generators/a_generator/a_generator.rb +4 -0
  1664. data/rails/vendor/rails/railties/test/fixtures/plugins/default/plugin_with_no_lib_dir/init.rb +0 -0
  1665. data/rails/vendor/rails/railties/test/fixtures/plugins/default/stubby/about.yml +2 -0
  1666. data/rails/vendor/rails/railties/test/fixtures/plugins/default/stubby/generators/stubby_generator/stubby_generator.rb +4 -0
  1667. data/rails/vendor/rails/railties/test/fixtures/plugins/default/stubby/init.rb +7 -0
  1668. data/rails/vendor/rails/railties/test/fixtures/plugins/default/stubby/lib/stubby_mixin.rb +2 -0
  1669. data/rails/vendor/rails/railties/test/gem_dependency_test.rb +66 -0
  1670. data/rails/vendor/rails/railties/test/generator_lookup_test.rb +40 -0
  1671. data/rails/vendor/rails/railties/test/generators/generator_test_helper.rb +287 -0
  1672. data/rails/vendor/rails/railties/test/generators/rails_controller_generator_test.rb +20 -0
  1673. data/rails/vendor/rails/railties/test/generators/rails_mailer_generator_test.rb +29 -0
  1674. data/rails/vendor/rails/railties/test/generators/rails_model_generator_test.rb +32 -0
  1675. data/rails/vendor/rails/railties/test/generators/rails_resource_generator_test.rb +29 -0
  1676. data/rails/vendor/rails/railties/test/generators/rails_scaffold_generator_test.rb +107 -0
  1677. data/rails/vendor/rails/railties/test/initializer_test.rb +225 -0
  1678. data/rails/vendor/rails/railties/test/mocks/routes.rb +6 -0
  1679. data/rails/vendor/rails/railties/test/plugin_loader_test.rb +142 -0
  1680. data/rails/vendor/rails/railties/test/plugin_locator_test.rb +69 -0
  1681. data/rails/vendor/rails/railties/test/plugin_test.rb +159 -0
  1682. data/rails/vendor/rails/railties/test/plugin_test_helper.rb +29 -0
  1683. data/rails/vendor/rails/railties/test/rails_generator_test.rb +145 -0
  1684. data/rails/vendor/rails/railties/test/rails_info_controller_test.rb +48 -0
  1685. data/rails/vendor/rails/railties/test/rails_info_test.rb +99 -0
  1686. data/rails/vendor/rails/railties/test/secret_key_generation_test.rb +44 -0
  1687. data/templates/colors_template_file.xml +7 -0
  1688. data/templates/defaults_template_file.yml +2 -0
  1689. data/tmp/useless.txt +1 -0
  1690. metadata +2122 -0
@@ -0,0 +1,1974 @@
1
+ require "cases/helper"
2
+ require 'models/author'
3
+ require 'models/topic'
4
+ require 'models/reply'
5
+ require 'models/category'
6
+ require 'models/company'
7
+ require 'models/customer'
8
+ require 'models/developer'
9
+ require 'models/project'
10
+ require 'models/default'
11
+ require 'models/auto_id'
12
+ require 'models/column_name'
13
+ require 'models/subscriber'
14
+ require 'models/keyboard'
15
+ require 'models/post'
16
+ require 'models/comment'
17
+ require 'models/minimalistic'
18
+ require 'models/warehouse_thing'
19
+ require 'rexml/document'
20
+
21
+ class Category < ActiveRecord::Base; end
22
+ class Smarts < ActiveRecord::Base; end
23
+ class CreditCard < ActiveRecord::Base
24
+ class PinNumber < ActiveRecord::Base
25
+ class CvvCode < ActiveRecord::Base; end
26
+ class SubCvvCode < CvvCode; end
27
+ end
28
+ class SubPinNumber < PinNumber; end
29
+ class Brand < Category; end
30
+ end
31
+ class MasterCreditCard < ActiveRecord::Base; end
32
+ class Post < ActiveRecord::Base; end
33
+ class Computer < ActiveRecord::Base; end
34
+ class NonExistentTable < ActiveRecord::Base; end
35
+ class TestOracleDefault < ActiveRecord::Base; end
36
+
37
+ class LoosePerson < ActiveRecord::Base
38
+ self.table_name = 'people'
39
+ self.abstract_class = true
40
+ attr_protected :credit_rating, :administrator
41
+ end
42
+
43
+ class LooseDescendant < LoosePerson
44
+ attr_protected :phone_number
45
+ end
46
+
47
+ class LooseDescendantSecond< LoosePerson
48
+ attr_protected :phone_number
49
+ attr_protected :name
50
+ end
51
+
52
+ class TightPerson < ActiveRecord::Base
53
+ self.table_name = 'people'
54
+ attr_accessible :name, :address
55
+ end
56
+
57
+ class TightDescendant < TightPerson
58
+ attr_accessible :phone_number
59
+ end
60
+
61
+ class ReadonlyTitlePost < Post
62
+ attr_readonly :title
63
+ end
64
+
65
+ class Booleantest < ActiveRecord::Base; end
66
+
67
+ class Task < ActiveRecord::Base
68
+ attr_protected :starting
69
+ end
70
+
71
+ class TopicWithProtectedContentAndAccessibleAuthorName < ActiveRecord::Base
72
+ self.table_name = 'topics'
73
+ attr_accessible :author_name
74
+ attr_protected :content
75
+ end
76
+
77
+ class BasicsTest < ActiveRecord::TestCase
78
+ fixtures :topics, :companies, :developers, :projects, :computers, :accounts, :minimalistics, 'warehouse-things', :authors
79
+
80
+ def test_table_exists
81
+ assert !NonExistentTable.table_exists?
82
+ assert Topic.table_exists?
83
+ end
84
+
85
+ def test_set_attributes
86
+ topic = Topic.find(1)
87
+ topic.attributes = { "title" => "Budget", "author_name" => "Jason" }
88
+ topic.save
89
+ assert_equal("Budget", topic.title)
90
+ assert_equal("Jason", topic.author_name)
91
+ assert_equal(topics(:first).author_email_address, Topic.find(1).author_email_address)
92
+ end
93
+
94
+ def test_integers_as_nil
95
+ test = AutoId.create('value' => '')
96
+ assert_nil AutoId.find(test.id).value
97
+ end
98
+
99
+ def test_set_attributes_with_block
100
+ topic = Topic.new do |t|
101
+ t.title = "Budget"
102
+ t.author_name = "Jason"
103
+ end
104
+
105
+ assert_equal("Budget", topic.title)
106
+ assert_equal("Jason", topic.author_name)
107
+ end
108
+
109
+ def test_respond_to?
110
+ topic = Topic.find(1)
111
+ assert topic.respond_to?("title")
112
+ assert topic.respond_to?("title?")
113
+ assert topic.respond_to?("title=")
114
+ assert topic.respond_to?(:title)
115
+ assert topic.respond_to?(:title?)
116
+ assert topic.respond_to?(:title=)
117
+ assert topic.respond_to?("author_name")
118
+ assert topic.respond_to?("attribute_names")
119
+ assert !topic.respond_to?("nothingness")
120
+ assert !topic.respond_to?(:nothingness)
121
+ end
122
+
123
+ def test_array_content
124
+ topic = Topic.new
125
+ topic.content = %w( one two three )
126
+ topic.save
127
+
128
+ assert_equal(%w( one two three ), Topic.find(topic.id).content)
129
+ end
130
+
131
+ def test_read_attributes_before_type_cast
132
+ category = Category.new({:name=>"Test categoty", :type => nil})
133
+ category_attrs = {"name"=>"Test categoty", "type" => nil}
134
+ assert_equal category_attrs , category.attributes_before_type_cast
135
+ end
136
+
137
+ if current_adapter?(:MysqlAdapter)
138
+ def test_read_attributes_before_type_cast_on_boolean
139
+ bool = Booleantest.create({ "value" => false })
140
+ assert_equal 0, bool.attributes_before_type_cast["value"]
141
+ end
142
+ end
143
+
144
+ def test_read_attributes_before_type_cast_on_datetime
145
+ developer = Developer.find(:first)
146
+ assert_equal developer.created_at.to_s(:db) , developer.attributes_before_type_cast["created_at"]
147
+ end
148
+
149
+ def test_hash_content
150
+ topic = Topic.new
151
+ topic.content = { "one" => 1, "two" => 2 }
152
+ topic.save
153
+
154
+ assert_equal 2, Topic.find(topic.id).content["two"]
155
+
156
+ topic.content_will_change!
157
+ topic.content["three"] = 3
158
+ topic.save
159
+
160
+ assert_equal 3, Topic.find(topic.id).content["three"]
161
+ end
162
+
163
+ def test_update_array_content
164
+ topic = Topic.new
165
+ topic.content = %w( one two three )
166
+
167
+ topic.content.push "four"
168
+ assert_equal(%w( one two three four ), topic.content)
169
+
170
+ topic.save
171
+
172
+ topic = Topic.find(topic.id)
173
+ topic.content << "five"
174
+ assert_equal(%w( one two three four five ), topic.content)
175
+ end
176
+
177
+ def test_case_sensitive_attributes_hash
178
+ # DB2 is not case-sensitive
179
+ return true if current_adapter?(:DB2Adapter)
180
+
181
+ assert_equal @loaded_fixtures['computers']['workstation'].to_hash, Computer.find(:first).attributes
182
+ end
183
+
184
+ def test_create
185
+ topic = Topic.new
186
+ topic.title = "New Topic"
187
+ topic.save
188
+ topic_reloaded = Topic.find(topic.id)
189
+ assert_equal("New Topic", topic_reloaded.title)
190
+ end
191
+
192
+ def test_save!
193
+ topic = Topic.new(:title => "New Topic")
194
+ assert topic.save!
195
+
196
+ reply = Reply.new
197
+ assert_raise(ActiveRecord::RecordInvalid) { reply.save! }
198
+ end
199
+
200
+ def test_save_null_string_attributes
201
+ topic = Topic.find(1)
202
+ topic.attributes = { "title" => "null", "author_name" => "null" }
203
+ topic.save!
204
+ topic.reload
205
+ assert_equal("null", topic.title)
206
+ assert_equal("null", topic.author_name)
207
+ end
208
+
209
+ def test_save_nil_string_attributes
210
+ topic = Topic.find(1)
211
+ topic.title = nil
212
+ topic.save!
213
+ topic.reload
214
+ assert_nil topic.title
215
+ end
216
+
217
+ def test_save_for_record_with_only_primary_key
218
+ minimalistic = Minimalistic.new
219
+ assert_nothing_raised { minimalistic.save }
220
+ end
221
+
222
+ def test_save_for_record_with_only_primary_key_that_is_provided
223
+ assert_nothing_raised { Minimalistic.create!(:id => 2) }
224
+ end
225
+
226
+ def test_hashes_not_mangled
227
+ new_topic = { :title => "New Topic" }
228
+ new_topic_values = { :title => "AnotherTopic" }
229
+
230
+ topic = Topic.new(new_topic)
231
+ assert_equal new_topic[:title], topic.title
232
+
233
+ topic.attributes= new_topic_values
234
+ assert_equal new_topic_values[:title], topic.title
235
+ end
236
+
237
+ def test_create_many
238
+ topics = Topic.create([ { "title" => "first" }, { "title" => "second" }])
239
+ assert_equal 2, topics.size
240
+ assert_equal "first", topics.first.title
241
+ end
242
+
243
+ def test_create_columns_not_equal_attributes
244
+ topic = Topic.new
245
+ topic.title = 'Another New Topic'
246
+ topic.send :write_attribute, 'does_not_exist', 'test'
247
+ assert_nothing_raised { topic.save }
248
+ end
249
+
250
+ def test_create_through_factory
251
+ topic = Topic.create("title" => "New Topic")
252
+ topicReloaded = Topic.find(topic.id)
253
+ assert_equal(topic, topicReloaded)
254
+ end
255
+
256
+ def test_create_through_factory_with_block
257
+ topic = Topic.create("title" => "New Topic") do |t|
258
+ t.author_name = "David"
259
+ end
260
+ topicReloaded = Topic.find(topic.id)
261
+ assert_equal("New Topic", topic.title)
262
+ assert_equal("David", topic.author_name)
263
+ end
264
+
265
+ def test_create_many_through_factory_with_block
266
+ topics = Topic.create([ { "title" => "first" }, { "title" => "second" }]) do |t|
267
+ t.author_name = "David"
268
+ end
269
+ assert_equal 2, topics.size
270
+ topic1, topic2 = Topic.find(topics[0].id), Topic.find(topics[1].id)
271
+ assert_equal "first", topic1.title
272
+ assert_equal "David", topic1.author_name
273
+ assert_equal "second", topic2.title
274
+ assert_equal "David", topic2.author_name
275
+ end
276
+
277
+ def test_update
278
+ topic = Topic.new
279
+ topic.title = "Another New Topic"
280
+ topic.written_on = "2003-12-12 23:23:00"
281
+ topic.save
282
+ topicReloaded = Topic.find(topic.id)
283
+ assert_equal("Another New Topic", topicReloaded.title)
284
+
285
+ topicReloaded.title = "Updated topic"
286
+ topicReloaded.save
287
+
288
+ topicReloadedAgain = Topic.find(topic.id)
289
+
290
+ assert_equal("Updated topic", topicReloadedAgain.title)
291
+ end
292
+
293
+ def test_update_columns_not_equal_attributes
294
+ topic = Topic.new
295
+ topic.title = "Still another topic"
296
+ topic.save
297
+
298
+ topicReloaded = Topic.find(topic.id)
299
+ topicReloaded.title = "A New Topic"
300
+ topicReloaded.send :write_attribute, 'does_not_exist', 'test'
301
+ assert_nothing_raised { topicReloaded.save }
302
+ end
303
+
304
+ def test_update_for_record_with_only_primary_key
305
+ minimalistic = minimalistics(:first)
306
+ assert_nothing_raised { minimalistic.save }
307
+ end
308
+
309
+ def test_write_attribute
310
+ topic = Topic.new
311
+ topic.send(:write_attribute, :title, "Still another topic")
312
+ assert_equal "Still another topic", topic.title
313
+
314
+ topic.send(:write_attribute, "title", "Still another topic: part 2")
315
+ assert_equal "Still another topic: part 2", topic.title
316
+ end
317
+
318
+ def test_read_attribute
319
+ topic = Topic.new
320
+ topic.title = "Don't change the topic"
321
+ assert_equal "Don't change the topic", topic.send(:read_attribute, "title")
322
+ assert_equal "Don't change the topic", topic["title"]
323
+
324
+ assert_equal "Don't change the topic", topic.send(:read_attribute, :title)
325
+ assert_equal "Don't change the topic", topic[:title]
326
+ end
327
+
328
+ def test_read_attribute_when_false
329
+ topic = topics(:first)
330
+ topic.approved = false
331
+ assert !topic.approved?, "approved should be false"
332
+ topic.approved = "false"
333
+ assert !topic.approved?, "approved should be false"
334
+ end
335
+
336
+ def test_read_attribute_when_true
337
+ topic = topics(:first)
338
+ topic.approved = true
339
+ assert topic.approved?, "approved should be true"
340
+ topic.approved = "true"
341
+ assert topic.approved?, "approved should be true"
342
+ end
343
+
344
+ def test_read_write_boolean_attribute
345
+ topic = Topic.new
346
+ # puts ""
347
+ # puts "New Topic"
348
+ # puts topic.inspect
349
+ topic.approved = "false"
350
+ # puts "Expecting false"
351
+ # puts topic.inspect
352
+ assert !topic.approved?, "approved should be false"
353
+ topic.approved = "false"
354
+ # puts "Expecting false"
355
+ # puts topic.inspect
356
+ assert !topic.approved?, "approved should be false"
357
+ topic.approved = "true"
358
+ # puts "Expecting true"
359
+ # puts topic.inspect
360
+ assert topic.approved?, "approved should be true"
361
+ topic.approved = "true"
362
+ # puts "Expecting true"
363
+ # puts topic.inspect
364
+ assert topic.approved?, "approved should be true"
365
+ # puts ""
366
+ end
367
+
368
+ def test_query_attribute_string
369
+ [nil, "", " "].each do |value|
370
+ assert_equal false, Topic.new(:author_name => value).author_name?
371
+ end
372
+
373
+ assert_equal true, Topic.new(:author_name => "Name").author_name?
374
+ end
375
+
376
+ def test_query_attribute_number
377
+ [nil, 0, "0"].each do |value|
378
+ assert_equal false, Developer.new(:salary => value).salary?
379
+ end
380
+
381
+ assert_equal true, Developer.new(:salary => 1).salary?
382
+ assert_equal true, Developer.new(:salary => "1").salary?
383
+ end
384
+
385
+ def test_query_attribute_boolean
386
+ [nil, "", false, "false", "f", 0].each do |value|
387
+ assert_equal false, Topic.new(:approved => value).approved?
388
+ end
389
+
390
+ [true, "true", "1", 1].each do |value|
391
+ assert_equal true, Topic.new(:approved => value).approved?
392
+ end
393
+ end
394
+
395
+ def test_query_attribute_with_custom_fields
396
+ object = Company.find_by_sql(<<-SQL).first
397
+ SELECT c1.*, c2.ruby_type as string_value, c2.rating as int_value
398
+ FROM companies c1, companies c2
399
+ WHERE c1.firm_id = c2.id
400
+ AND c1.id = 2
401
+ SQL
402
+
403
+ assert_equal "Firm", object.string_value
404
+ assert object.string_value?
405
+
406
+ object.string_value = " "
407
+ assert !object.string_value?
408
+
409
+ assert_equal 1, object.int_value.to_i
410
+ assert object.int_value?
411
+
412
+ object.int_value = "0"
413
+ assert !object.int_value?
414
+ end
415
+
416
+
417
+ def test_reader_for_invalid_column_names
418
+ Topic.send(:define_read_method, "mumub-jumbo".to_sym, "mumub-jumbo", nil)
419
+ assert !Topic.generated_methods.include?("mumub-jumbo")
420
+ end
421
+
422
+ def test_non_attribute_access_and_assignment
423
+ topic = Topic.new
424
+ assert !topic.respond_to?("mumbo")
425
+ assert_raises(NoMethodError) { topic.mumbo }
426
+ assert_raises(NoMethodError) { topic.mumbo = 5 }
427
+ end
428
+
429
+ def test_preserving_date_objects
430
+ # SQL Server doesn't have a separate column type just for dates, so all are returned as time
431
+ return true if current_adapter?(:SQLServerAdapter)
432
+
433
+ if current_adapter?(:SybaseAdapter, :OracleAdapter)
434
+ # Sybase ctlib does not (yet?) support the date type; use datetime instead.
435
+ # Oracle treats all dates/times as Time.
436
+ assert_kind_of(
437
+ Time, Topic.find(1).last_read,
438
+ "The last_read attribute should be of the Time class"
439
+ )
440
+ else
441
+ assert_kind_of(
442
+ Date, Topic.find(1).last_read,
443
+ "The last_read attribute should be of the Date class"
444
+ )
445
+ end
446
+ end
447
+
448
+ def test_preserving_time_objects
449
+ assert_kind_of(
450
+ Time, Topic.find(1).bonus_time,
451
+ "The bonus_time attribute should be of the Time class"
452
+ )
453
+
454
+ assert_kind_of(
455
+ Time, Topic.find(1).written_on,
456
+ "The written_on attribute should be of the Time class"
457
+ )
458
+
459
+ # For adapters which support microsecond resolution.
460
+ if current_adapter?(:PostgreSQLAdapter)
461
+ assert_equal 11, Topic.find(1).written_on.sec
462
+ assert_equal 223300, Topic.find(1).written_on.usec
463
+ assert_equal 9900, Topic.find(2).written_on.usec
464
+ end
465
+ end
466
+
467
+ def test_custom_mutator
468
+ topic = Topic.find(1)
469
+ # This mutator is protected in the class definition
470
+ topic.send(:approved=, true)
471
+ assert topic.instance_variable_get("@custom_approved")
472
+ end
473
+
474
+ def test_destroy
475
+ topic = Topic.find(1)
476
+ assert_equal topic, topic.destroy, 'topic.destroy did not return self'
477
+ assert topic.frozen?, 'topic not frozen after destroy'
478
+ assert_raise(ActiveRecord::RecordNotFound) { Topic.find(topic.id) }
479
+ end
480
+
481
+ def test_record_not_found_exception
482
+ assert_raises(ActiveRecord::RecordNotFound) { topicReloaded = Topic.find(99999) }
483
+ end
484
+
485
+ def test_initialize_with_attributes
486
+ topic = Topic.new({
487
+ "title" => "initialized from attributes", "written_on" => "2003-12-12 23:23"
488
+ })
489
+
490
+ assert_equal("initialized from attributes", topic.title)
491
+ end
492
+
493
+ def test_initialize_with_invalid_attribute
494
+ begin
495
+ topic = Topic.new({ "title" => "test",
496
+ "last_read(1i)" => "2005", "last_read(2i)" => "2", "last_read(3i)" => "31"})
497
+ rescue ActiveRecord::MultiparameterAssignmentErrors => ex
498
+ assert_equal(1, ex.errors.size)
499
+ assert_equal("last_read", ex.errors[0].attribute)
500
+ end
501
+ end
502
+
503
+ def test_load
504
+ topics = Topic.find(:all, :order => 'id')
505
+ assert_equal(4, topics.size)
506
+ assert_equal(topics(:first).title, topics.first.title)
507
+ end
508
+
509
+ def test_load_with_condition
510
+ topics = Topic.find(:all, :conditions => "author_name = 'Mary'")
511
+
512
+ assert_equal(1, topics.size)
513
+ assert_equal(topics(:second).title, topics.first.title)
514
+ end
515
+
516
+ def test_table_name_guesses
517
+ classes = [Category, Smarts, CreditCard, CreditCard::PinNumber, CreditCard::PinNumber::CvvCode, CreditCard::SubPinNumber, CreditCard::Brand, MasterCreditCard]
518
+
519
+ assert_equal "topics", Topic.table_name
520
+
521
+ assert_equal "categories", Category.table_name
522
+ assert_equal "smarts", Smarts.table_name
523
+ assert_equal "credit_cards", CreditCard.table_name
524
+ assert_equal "credit_card_pin_numbers", CreditCard::PinNumber.table_name
525
+ assert_equal "credit_card_pin_number_cvv_codes", CreditCard::PinNumber::CvvCode.table_name
526
+ assert_equal "credit_card_pin_numbers", CreditCard::SubPinNumber.table_name
527
+ assert_equal "categories", CreditCard::Brand.table_name
528
+ assert_equal "master_credit_cards", MasterCreditCard.table_name
529
+
530
+ ActiveRecord::Base.pluralize_table_names = false
531
+ classes.each(&:reset_table_name)
532
+
533
+ assert_equal "category", Category.table_name
534
+ assert_equal "smarts", Smarts.table_name
535
+ assert_equal "credit_card", CreditCard.table_name
536
+ assert_equal "credit_card_pin_number", CreditCard::PinNumber.table_name
537
+ assert_equal "credit_card_pin_number_cvv_code", CreditCard::PinNumber::CvvCode.table_name
538
+ assert_equal "credit_card_pin_number", CreditCard::SubPinNumber.table_name
539
+ assert_equal "category", CreditCard::Brand.table_name
540
+ assert_equal "master_credit_card", MasterCreditCard.table_name
541
+
542
+ ActiveRecord::Base.pluralize_table_names = true
543
+ classes.each(&:reset_table_name)
544
+
545
+ ActiveRecord::Base.table_name_prefix = "test_"
546
+ Category.reset_table_name
547
+ assert_equal "test_categories", Category.table_name
548
+ ActiveRecord::Base.table_name_suffix = "_test"
549
+ Category.reset_table_name
550
+ assert_equal "test_categories_test", Category.table_name
551
+ ActiveRecord::Base.table_name_prefix = ""
552
+ Category.reset_table_name
553
+ assert_equal "categories_test", Category.table_name
554
+ ActiveRecord::Base.table_name_suffix = ""
555
+ Category.reset_table_name
556
+ assert_equal "categories", Category.table_name
557
+
558
+ ActiveRecord::Base.pluralize_table_names = false
559
+ ActiveRecord::Base.table_name_prefix = "test_"
560
+ Category.reset_table_name
561
+ assert_equal "test_category", Category.table_name
562
+ ActiveRecord::Base.table_name_suffix = "_test"
563
+ Category.reset_table_name
564
+ assert_equal "test_category_test", Category.table_name
565
+ ActiveRecord::Base.table_name_prefix = ""
566
+ Category.reset_table_name
567
+ assert_equal "category_test", Category.table_name
568
+ ActiveRecord::Base.table_name_suffix = ""
569
+ Category.reset_table_name
570
+ assert_equal "category", Category.table_name
571
+
572
+ ActiveRecord::Base.pluralize_table_names = true
573
+ classes.each(&:reset_table_name)
574
+ end
575
+
576
+ def test_destroy_all
577
+ original_count = Topic.count
578
+ topics_by_mary = Topic.count(:conditions => mary = "author_name = 'Mary'")
579
+
580
+ Topic.destroy_all mary
581
+ assert_equal original_count - topics_by_mary, Topic.count
582
+ end
583
+
584
+ def test_destroy_many
585
+ assert_equal 3, Client.count
586
+ Client.destroy([2, 3])
587
+ assert_equal 1, Client.count
588
+ end
589
+
590
+ def test_delete_many
591
+ original_count = Topic.count
592
+ Topic.delete(deleting = [1, 2])
593
+ assert_equal original_count - deleting.size, Topic.count
594
+ end
595
+
596
+ def test_boolean_attributes
597
+ assert ! Topic.find(1).approved?
598
+ assert Topic.find(2).approved?
599
+ end
600
+
601
+ def test_increment_counter
602
+ Topic.increment_counter("replies_count", 1)
603
+ assert_equal 2, Topic.find(1).replies_count
604
+
605
+ Topic.increment_counter("replies_count", 1)
606
+ assert_equal 3, Topic.find(1).replies_count
607
+ end
608
+
609
+ def test_decrement_counter
610
+ Topic.decrement_counter("replies_count", 2)
611
+ assert_equal -1, Topic.find(2).replies_count
612
+
613
+ Topic.decrement_counter("replies_count", 2)
614
+ assert_equal -2, Topic.find(2).replies_count
615
+ end
616
+
617
+ def test_update_all
618
+ assert_equal Topic.count, Topic.update_all("content = 'bulk updated!'")
619
+ assert_equal "bulk updated!", Topic.find(1).content
620
+ assert_equal "bulk updated!", Topic.find(2).content
621
+
622
+ assert_equal Topic.count, Topic.update_all(['content = ?', 'bulk updated again!'])
623
+ assert_equal "bulk updated again!", Topic.find(1).content
624
+ assert_equal "bulk updated again!", Topic.find(2).content
625
+
626
+ assert_equal Topic.count, Topic.update_all(['content = ?', nil])
627
+ assert_nil Topic.find(1).content
628
+ end
629
+
630
+ def test_update_all_with_hash
631
+ assert_not_nil Topic.find(1).last_read
632
+ assert_equal Topic.count, Topic.update_all(:content => 'bulk updated with hash!', :last_read => nil)
633
+ assert_equal "bulk updated with hash!", Topic.find(1).content
634
+ assert_equal "bulk updated with hash!", Topic.find(2).content
635
+ assert_nil Topic.find(1).last_read
636
+ assert_nil Topic.find(2).last_read
637
+ end
638
+
639
+ def test_update_all_with_non_standard_table_name
640
+ assert_equal 1, WarehouseThing.update_all(['value = ?', 0], ['id = ?', 1])
641
+ assert_equal 0, WarehouseThing.find(1).value
642
+ end
643
+
644
+ if current_adapter?(:MysqlAdapter)
645
+ def test_update_all_with_order_and_limit
646
+ assert_equal 1, Topic.update_all("content = 'bulk updated!'", nil, :limit => 1, :order => 'id DESC')
647
+ end
648
+ end
649
+
650
+ def test_update_all_ignores_order_limit_from_association
651
+ author = Author.find(1)
652
+ assert_nothing_raised do
653
+ assert_equal author.posts_with_comments_and_categories.length, author.posts_with_comments_and_categories.update_all("body = 'bulk update!'")
654
+ end
655
+ end
656
+
657
+ def test_update_many
658
+ topic_data = { 1 => { "content" => "1 updated" }, 2 => { "content" => "2 updated" } }
659
+ updated = Topic.update(topic_data.keys, topic_data.values)
660
+
661
+ assert_equal 2, updated.size
662
+ assert_equal "1 updated", Topic.find(1).content
663
+ assert_equal "2 updated", Topic.find(2).content
664
+ end
665
+
666
+ def test_delete_all
667
+ assert Topic.count > 0
668
+
669
+ assert_equal Topic.count, Topic.delete_all
670
+ end
671
+
672
+ def test_update_by_condition
673
+ Topic.update_all "content = 'bulk updated!'", ["approved = ?", true]
674
+ assert_equal "Have a nice day", Topic.find(1).content
675
+ assert_equal "bulk updated!", Topic.find(2).content
676
+ end
677
+
678
+ def test_attribute_present
679
+ t = Topic.new
680
+ t.title = "hello there!"
681
+ t.written_on = Time.now
682
+ assert t.attribute_present?("title")
683
+ assert t.attribute_present?("written_on")
684
+ assert !t.attribute_present?("content")
685
+ end
686
+
687
+ def test_attribute_keys_on_new_instance
688
+ t = Topic.new
689
+ assert_equal nil, t.title, "The topics table has a title column, so it should be nil"
690
+ assert_raise(NoMethodError) { t.title2 }
691
+ end
692
+
693
+ def test_class_name
694
+ assert_equal "Firm", ActiveRecord::Base.class_name("firms")
695
+ assert_equal "Category", ActiveRecord::Base.class_name("categories")
696
+ assert_equal "AccountHolder", ActiveRecord::Base.class_name("account_holder")
697
+
698
+ ActiveRecord::Base.pluralize_table_names = false
699
+ assert_equal "Firms", ActiveRecord::Base.class_name( "firms" )
700
+ ActiveRecord::Base.pluralize_table_names = true
701
+
702
+ ActiveRecord::Base.table_name_prefix = "test_"
703
+ assert_equal "Firm", ActiveRecord::Base.class_name( "test_firms" )
704
+ ActiveRecord::Base.table_name_suffix = "_tests"
705
+ assert_equal "Firm", ActiveRecord::Base.class_name( "test_firms_tests" )
706
+ ActiveRecord::Base.table_name_prefix = ""
707
+ assert_equal "Firm", ActiveRecord::Base.class_name( "firms_tests" )
708
+ ActiveRecord::Base.table_name_suffix = ""
709
+ assert_equal "Firm", ActiveRecord::Base.class_name( "firms" )
710
+ end
711
+
712
+ def test_null_fields
713
+ assert_nil Topic.find(1).parent_id
714
+ assert_nil Topic.create("title" => "Hey you").parent_id
715
+ end
716
+
717
+ def test_default_values
718
+ topic = Topic.new
719
+ assert topic.approved?
720
+ assert_nil topic.written_on
721
+ assert_nil topic.bonus_time
722
+ assert_nil topic.last_read
723
+
724
+ topic.save
725
+
726
+ topic = Topic.find(topic.id)
727
+ assert topic.approved?
728
+ assert_nil topic.last_read
729
+
730
+ # Oracle has some funky default handling, so it requires a bit of
731
+ # extra testing. See ticket #2788.
732
+ if current_adapter?(:OracleAdapter)
733
+ test = TestOracleDefault.new
734
+ assert_equal "X", test.test_char
735
+ assert_equal "hello", test.test_string
736
+ assert_equal 3, test.test_int
737
+ end
738
+ end
739
+
740
+ # Oracle, SQLServer, and Sybase do not have a TIME datatype.
741
+ unless current_adapter?(:SQLServerAdapter, :OracleAdapter, :SybaseAdapter)
742
+ def test_utc_as_time_zone
743
+ Topic.default_timezone = :utc
744
+ attributes = { "bonus_time" => "5:42:00AM" }
745
+ topic = Topic.find(1)
746
+ topic.attributes = attributes
747
+ assert_equal Time.utc(2000, 1, 1, 5, 42, 0), topic.bonus_time
748
+ Topic.default_timezone = :local
749
+ end
750
+
751
+ def test_utc_as_time_zone_and_new
752
+ Topic.default_timezone = :utc
753
+ attributes = { "bonus_time(1i)"=>"2000",
754
+ "bonus_time(2i)"=>"1",
755
+ "bonus_time(3i)"=>"1",
756
+ "bonus_time(4i)"=>"10",
757
+ "bonus_time(5i)"=>"35",
758
+ "bonus_time(6i)"=>"50" }
759
+ topic = Topic.new(attributes)
760
+ assert_equal Time.utc(2000, 1, 1, 10, 35, 50), topic.bonus_time
761
+ Topic.default_timezone = :local
762
+ end
763
+ end
764
+
765
+ def test_default_values_on_empty_strings
766
+ topic = Topic.new
767
+ topic.approved = nil
768
+ topic.last_read = nil
769
+
770
+ topic.save
771
+
772
+ topic = Topic.find(topic.id)
773
+ assert_nil topic.last_read
774
+
775
+ # Sybase adapter does not allow nulls in boolean columns
776
+ if current_adapter?(:SybaseAdapter)
777
+ assert topic.approved == false
778
+ else
779
+ assert_nil topic.approved
780
+ end
781
+ end
782
+
783
+ def test_equality
784
+ assert_equal Topic.find(1), Topic.find(2).topic
785
+ end
786
+
787
+ def test_equality_of_new_records
788
+ assert_not_equal Topic.new, Topic.new
789
+ end
790
+
791
+ def test_hashing
792
+ assert_equal [ Topic.find(1) ], [ Topic.find(2).topic ] & [ Topic.find(1) ]
793
+ end
794
+
795
+ def test_destroy_new_record
796
+ client = Client.new
797
+ client.destroy
798
+ assert client.frozen?
799
+ end
800
+
801
+ def test_destroy_record_with_associations
802
+ client = Client.find(3)
803
+ client.destroy
804
+ assert client.frozen?
805
+ assert_kind_of Firm, client.firm
806
+ assert_raises(ActiveSupport::FrozenObjectError) { client.name = "something else" }
807
+ end
808
+
809
+ def test_update_attribute
810
+ assert !Topic.find(1).approved?
811
+ Topic.find(1).update_attribute("approved", true)
812
+ assert Topic.find(1).approved?
813
+
814
+ Topic.find(1).update_attribute(:approved, false)
815
+ assert !Topic.find(1).approved?
816
+ end
817
+
818
+ def test_update_attributes
819
+ topic = Topic.find(1)
820
+ assert !topic.approved?
821
+ assert_equal "The First Topic", topic.title
822
+
823
+ topic.update_attributes("approved" => true, "title" => "The First Topic Updated")
824
+ topic.reload
825
+ assert topic.approved?
826
+ assert_equal "The First Topic Updated", topic.title
827
+
828
+ topic.update_attributes(:approved => false, :title => "The First Topic")
829
+ topic.reload
830
+ assert !topic.approved?
831
+ assert_equal "The First Topic", topic.title
832
+ end
833
+
834
+ def test_update_attributes!
835
+ reply = Reply.find(2)
836
+ assert_equal "The Second Topic of the day", reply.title
837
+ assert_equal "Have a nice day", reply.content
838
+
839
+ reply.update_attributes!("title" => "The Second Topic of the day updated", "content" => "Have a nice evening")
840
+ reply.reload
841
+ assert_equal "The Second Topic of the day updated", reply.title
842
+ assert_equal "Have a nice evening", reply.content
843
+
844
+ reply.update_attributes!(:title => "The Second Topic of the day", :content => "Have a nice day")
845
+ reply.reload
846
+ assert_equal "The Second Topic of the day", reply.title
847
+ assert_equal "Have a nice day", reply.content
848
+
849
+ assert_raise(ActiveRecord::RecordInvalid) { reply.update_attributes!(:title => nil, :content => "Have a nice evening") }
850
+ end
851
+
852
+ def test_mass_assignment_should_raise_exception_if_accessible_and_protected_attribute_writers_are_both_used
853
+ topic = TopicWithProtectedContentAndAccessibleAuthorName.new
854
+ assert_raises(RuntimeError) { topic.attributes = { "author_name" => "me" } }
855
+ assert_raises(RuntimeError) { topic.attributes = { "content" => "stuff" } }
856
+ end
857
+
858
+ def test_mass_assignment_protection
859
+ firm = Firm.new
860
+ firm.attributes = { "name" => "Next Angle", "rating" => 5 }
861
+ assert_equal 1, firm.rating
862
+ end
863
+
864
+ def test_mass_assignment_protection_against_class_attribute_writers
865
+ [:logger, :configurations, :primary_key_prefix_type, :table_name_prefix, :table_name_suffix, :pluralize_table_names, :colorize_logging,
866
+ :default_timezone, :allow_concurrency, :schema_format, :verification_timeout, :lock_optimistically, :record_timestamps].each do |method|
867
+ assert Task.respond_to?(method)
868
+ assert Task.respond_to?("#{method}=")
869
+ assert Task.new.respond_to?(method)
870
+ assert !Task.new.respond_to?("#{method}=")
871
+ end
872
+ end
873
+
874
+ def test_customized_primary_key_remains_protected
875
+ subscriber = Subscriber.new(:nick => 'webster123', :name => 'nice try')
876
+ assert_nil subscriber.id
877
+
878
+ keyboard = Keyboard.new(:key_number => 9, :name => 'nice try')
879
+ assert_nil keyboard.id
880
+ end
881
+
882
+ def test_customized_primary_key_remains_protected_when_referred_to_as_id
883
+ subscriber = Subscriber.new(:id => 'webster123', :name => 'nice try')
884
+ assert_nil subscriber.id
885
+
886
+ keyboard = Keyboard.new(:id => 9, :name => 'nice try')
887
+ assert_nil keyboard.id
888
+ end
889
+
890
+ def test_mass_assignment_protection_on_defaults
891
+ firm = Firm.new
892
+ firm.attributes = { "id" => 5, "type" => "Client" }
893
+ assert_nil firm.id
894
+ assert_equal "Firm", firm[:type]
895
+ end
896
+
897
+ def test_mass_assignment_accessible
898
+ reply = Reply.new("title" => "hello", "content" => "world", "approved" => true)
899
+ reply.save
900
+
901
+ assert reply.approved?
902
+
903
+ reply.approved = false
904
+ reply.save
905
+
906
+ assert !reply.approved?
907
+ end
908
+
909
+ def test_mass_assignment_protection_inheritance
910
+ assert_nil LoosePerson.accessible_attributes
911
+ assert_equal Set.new([ 'credit_rating', 'administrator' ]), LoosePerson.protected_attributes
912
+
913
+ assert_nil LooseDescendant.accessible_attributes
914
+ assert_equal Set.new([ 'credit_rating', 'administrator', 'phone_number' ]), LooseDescendant.protected_attributes
915
+
916
+ assert_nil LooseDescendantSecond.accessible_attributes
917
+ assert_equal Set.new([ 'credit_rating', 'administrator', 'phone_number', 'name' ]), LooseDescendantSecond.protected_attributes, 'Running attr_protected twice in one class should merge the protections'
918
+
919
+ assert_nil TightPerson.protected_attributes
920
+ assert_equal Set.new([ 'name', 'address' ]), TightPerson.accessible_attributes
921
+
922
+ assert_nil TightDescendant.protected_attributes
923
+ assert_equal Set.new([ 'name', 'address', 'phone_number' ]), TightDescendant.accessible_attributes
924
+ end
925
+
926
+ def test_readonly_attributes
927
+ assert_equal Set.new([ 'title' , 'comments_count' ]), ReadonlyTitlePost.readonly_attributes
928
+
929
+ post = ReadonlyTitlePost.create(:title => "cannot change this", :body => "changeable")
930
+ post.reload
931
+ assert_equal "cannot change this", post.title
932
+
933
+ post.update_attributes(:title => "try to change", :body => "changed")
934
+ post.reload
935
+ assert_equal "cannot change this", post.title
936
+ assert_equal "changed", post.body
937
+ end
938
+
939
+ def test_multiparameter_attributes_on_date
940
+ attributes = { "last_read(1i)" => "2004", "last_read(2i)" => "6", "last_read(3i)" => "24" }
941
+ topic = Topic.find(1)
942
+ topic.attributes = attributes
943
+ # note that extra #to_date call allows test to pass for Oracle, which
944
+ # treats dates/times the same
945
+ assert_date_from_db Date.new(2004, 6, 24), topic.last_read.to_date
946
+ end
947
+
948
+ def test_multiparameter_attributes_on_date_with_empty_date
949
+ attributes = { "last_read(1i)" => "2004", "last_read(2i)" => "6", "last_read(3i)" => "" }
950
+ topic = Topic.find(1)
951
+ topic.attributes = attributes
952
+ # note that extra #to_date call allows test to pass for Oracle, which
953
+ # treats dates/times the same
954
+ assert_date_from_db Date.new(2004, 6, 1), topic.last_read.to_date
955
+ end
956
+
957
+ def test_multiparameter_attributes_on_date_with_all_empty
958
+ attributes = { "last_read(1i)" => "", "last_read(2i)" => "", "last_read(3i)" => "" }
959
+ topic = Topic.find(1)
960
+ topic.attributes = attributes
961
+ assert_nil topic.last_read
962
+ end
963
+
964
+ def test_multiparameter_attributes_on_time
965
+ attributes = {
966
+ "written_on(1i)" => "2004", "written_on(2i)" => "6", "written_on(3i)" => "24",
967
+ "written_on(4i)" => "16", "written_on(5i)" => "24", "written_on(6i)" => "00"
968
+ }
969
+ topic = Topic.find(1)
970
+ topic.attributes = attributes
971
+ assert_equal Time.local(2004, 6, 24, 16, 24, 0), topic.written_on
972
+ end
973
+
974
+ def test_multiparameter_attributes_on_time_with_old_date
975
+ attributes = {
976
+ "written_on(1i)" => "1850", "written_on(2i)" => "6", "written_on(3i)" => "24",
977
+ "written_on(4i)" => "16", "written_on(5i)" => "24", "written_on(6i)" => "00"
978
+ }
979
+ topic = Topic.find(1)
980
+ topic.attributes = attributes
981
+ # testing against to_s(:db) representation because either a Time or a DateTime might be returned, depending on platform
982
+ assert_equal "1850-06-24 16:24:00", topic.written_on.to_s(:db)
983
+ end
984
+
985
+ def test_multiparameter_attributes_on_time_with_utc
986
+ ActiveRecord::Base.default_timezone = :utc
987
+ attributes = {
988
+ "written_on(1i)" => "2004", "written_on(2i)" => "6", "written_on(3i)" => "24",
989
+ "written_on(4i)" => "16", "written_on(5i)" => "24", "written_on(6i)" => "00"
990
+ }
991
+ topic = Topic.find(1)
992
+ topic.attributes = attributes
993
+ assert_equal Time.utc(2004, 6, 24, 16, 24, 0), topic.written_on
994
+ ensure
995
+ ActiveRecord::Base.default_timezone = :local
996
+ end
997
+
998
+ def test_multiparameter_attributes_on_time_with_time_zone_aware_attributes
999
+ ActiveRecord::Base.time_zone_aware_attributes = true
1000
+ ActiveRecord::Base.default_timezone = :utc
1001
+ Time.zone = TimeZone[-28800]
1002
+ attributes = {
1003
+ "written_on(1i)" => "2004", "written_on(2i)" => "6", "written_on(3i)" => "24",
1004
+ "written_on(4i)" => "16", "written_on(5i)" => "24", "written_on(6i)" => "00"
1005
+ }
1006
+ topic = Topic.find(1)
1007
+ topic.attributes = attributes
1008
+ assert_equal Time.utc(2004, 6, 24, 23, 24, 0), topic.written_on
1009
+ assert_equal Time.utc(2004, 6, 24, 16, 24, 0), topic.written_on.time
1010
+ assert_equal Time.zone, topic.written_on.time_zone
1011
+ ensure
1012
+ ActiveRecord::Base.time_zone_aware_attributes = false
1013
+ ActiveRecord::Base.default_timezone = :local
1014
+ Time.zone = nil
1015
+ end
1016
+
1017
+ def test_multiparameter_attributes_on_time_with_time_zone_aware_attributes_false
1018
+ ActiveRecord::Base.time_zone_aware_attributes = false
1019
+ Time.zone = TimeZone[-28800]
1020
+ attributes = {
1021
+ "written_on(1i)" => "2004", "written_on(2i)" => "6", "written_on(3i)" => "24",
1022
+ "written_on(4i)" => "16", "written_on(5i)" => "24", "written_on(6i)" => "00"
1023
+ }
1024
+ topic = Topic.find(1)
1025
+ topic.attributes = attributes
1026
+ assert_equal Time.local(2004, 6, 24, 16, 24, 0), topic.written_on
1027
+ assert_equal false, topic.written_on.respond_to?(:time_zone)
1028
+ ensure
1029
+ Time.zone = nil
1030
+ end
1031
+
1032
+ def test_multiparameter_attributes_on_time_with_skip_time_zone_conversion_for_attributes
1033
+ ActiveRecord::Base.time_zone_aware_attributes = true
1034
+ ActiveRecord::Base.default_timezone = :utc
1035
+ Time.zone = TimeZone[-28800]
1036
+ Topic.skip_time_zone_conversion_for_attributes = [:written_on]
1037
+ attributes = {
1038
+ "written_on(1i)" => "2004", "written_on(2i)" => "6", "written_on(3i)" => "24",
1039
+ "written_on(4i)" => "16", "written_on(5i)" => "24", "written_on(6i)" => "00"
1040
+ }
1041
+ topic = Topic.find(1)
1042
+ topic.attributes = attributes
1043
+ assert_equal Time.utc(2004, 6, 24, 16, 24, 0), topic.written_on
1044
+ assert_equal false, topic.written_on.respond_to?(:time_zone)
1045
+ ensure
1046
+ ActiveRecord::Base.time_zone_aware_attributes = false
1047
+ ActiveRecord::Base.default_timezone = :local
1048
+ Time.zone = nil
1049
+ Topic.skip_time_zone_conversion_for_attributes = []
1050
+ end
1051
+
1052
+ def test_multiparameter_attributes_on_time_with_empty_seconds
1053
+ attributes = {
1054
+ "written_on(1i)" => "2004", "written_on(2i)" => "6", "written_on(3i)" => "24",
1055
+ "written_on(4i)" => "16", "written_on(5i)" => "24", "written_on(6i)" => ""
1056
+ }
1057
+ topic = Topic.find(1)
1058
+ topic.attributes = attributes
1059
+ assert_equal Time.local(2004, 6, 24, 16, 24, 0), topic.written_on
1060
+ end
1061
+
1062
+ def test_multiparameter_mass_assignment_protector
1063
+ task = Task.new
1064
+ time = Time.mktime(2000, 1, 1, 1)
1065
+ task.starting = time
1066
+ attributes = { "starting(1i)" => "2004", "starting(2i)" => "6", "starting(3i)" => "24" }
1067
+ task.attributes = attributes
1068
+ assert_equal time, task.starting
1069
+ end
1070
+
1071
+ def test_multiparameter_assignment_of_aggregation
1072
+ customer = Customer.new
1073
+ address = Address.new("The Street", "The City", "The Country")
1074
+ attributes = { "address(1)" => address.street, "address(2)" => address.city, "address(3)" => address.country }
1075
+ customer.attributes = attributes
1076
+ assert_equal address, customer.address
1077
+ end
1078
+
1079
+ def test_attributes_on_dummy_time
1080
+ # Oracle, SQL Server, and Sybase do not have a TIME datatype.
1081
+ return true if current_adapter?(:SQLServerAdapter, :OracleAdapter, :SybaseAdapter)
1082
+
1083
+ attributes = {
1084
+ "bonus_time" => "5:42:00AM"
1085
+ }
1086
+ topic = Topic.find(1)
1087
+ topic.attributes = attributes
1088
+ assert_equal Time.local(2000, 1, 1, 5, 42, 0), topic.bonus_time
1089
+ end
1090
+
1091
+ def test_boolean
1092
+ b_false = Booleantest.create({ "value" => false })
1093
+ false_id = b_false.id
1094
+ b_true = Booleantest.create({ "value" => true })
1095
+ true_id = b_true.id
1096
+
1097
+ b_false = Booleantest.find(false_id)
1098
+ assert !b_false.value?
1099
+ b_true = Booleantest.find(true_id)
1100
+ assert b_true.value?
1101
+ end
1102
+
1103
+ def test_boolean_cast_from_string
1104
+ b_false = Booleantest.create({ "value" => "0" })
1105
+ false_id = b_false.id
1106
+ b_true = Booleantest.create({ "value" => "1" })
1107
+ true_id = b_true.id
1108
+
1109
+ b_false = Booleantest.find(false_id)
1110
+ assert !b_false.value?
1111
+ b_true = Booleantest.find(true_id)
1112
+ assert b_true.value?
1113
+ end
1114
+
1115
+ def test_clone
1116
+ topic = Topic.find(1)
1117
+ cloned_topic = nil
1118
+ assert_nothing_raised { cloned_topic = topic.clone }
1119
+ assert_equal topic.title, cloned_topic.title
1120
+ assert cloned_topic.new_record?
1121
+
1122
+ # test if the attributes have been cloned
1123
+ topic.title = "a"
1124
+ cloned_topic.title = "b"
1125
+ assert_equal "a", topic.title
1126
+ assert_equal "b", cloned_topic.title
1127
+
1128
+ # test if the attribute values have been cloned
1129
+ topic.title = {"a" => "b"}
1130
+ cloned_topic = topic.clone
1131
+ cloned_topic.title["a"] = "c"
1132
+ assert_equal "b", topic.title["a"]
1133
+
1134
+ #test if attributes set as part of after_initialize are cloned correctly
1135
+ assert_equal topic.author_email_address, cloned_topic.author_email_address
1136
+
1137
+ # test if saved clone object differs from original
1138
+ cloned_topic.save
1139
+ assert !cloned_topic.new_record?
1140
+ assert cloned_topic.id != topic.id
1141
+ end
1142
+
1143
+ def test_clone_with_aggregate_of_same_name_as_attribute
1144
+ dev = DeveloperWithAggregate.find(1)
1145
+ assert_kind_of DeveloperSalary, dev.salary
1146
+
1147
+ clone = nil
1148
+ assert_nothing_raised { clone = dev.clone }
1149
+ assert_kind_of DeveloperSalary, clone.salary
1150
+ assert_equal dev.salary.amount, clone.salary.amount
1151
+ assert clone.new_record?
1152
+
1153
+ # test if the attributes have been cloned
1154
+ original_amount = clone.salary.amount
1155
+ dev.salary.amount = 1
1156
+ assert_equal original_amount, clone.salary.amount
1157
+
1158
+ assert clone.save
1159
+ assert !clone.new_record?
1160
+ assert clone.id != dev.id
1161
+ end
1162
+
1163
+ def test_clone_preserves_subtype
1164
+ clone = nil
1165
+ assert_nothing_raised { clone = Company.find(3).clone }
1166
+ assert_kind_of Client, clone
1167
+ end
1168
+
1169
+ def test_bignum
1170
+ company = Company.find(1)
1171
+ company.rating = 2147483647
1172
+ company.save
1173
+ company = Company.find(1)
1174
+ assert_equal 2147483647, company.rating
1175
+ end
1176
+
1177
+ # TODO: extend defaults tests to other databases!
1178
+ if current_adapter?(:PostgreSQLAdapter)
1179
+ def test_default
1180
+ default = Default.new
1181
+
1182
+ # fixed dates / times
1183
+ assert_equal Date.new(2004, 1, 1), default.fixed_date
1184
+ assert_equal Time.local(2004, 1,1,0,0,0,0), default.fixed_time
1185
+
1186
+ # char types
1187
+ assert_equal 'Y', default.char1
1188
+ assert_equal 'a varchar field', default.char2
1189
+ assert_equal 'a text field', default.char3
1190
+ end
1191
+
1192
+ class Geometric < ActiveRecord::Base; end
1193
+ def test_geometric_content
1194
+
1195
+ # accepted format notes:
1196
+ # ()'s aren't required
1197
+ # values can be a mix of float or integer
1198
+
1199
+ g = Geometric.new(
1200
+ :a_point => '(5.0, 6.1)',
1201
+ #:a_line => '((2.0, 3), (5.5, 7.0))' # line type is currently unsupported in postgresql
1202
+ :a_line_segment => '(2.0, 3), (5.5, 7.0)',
1203
+ :a_box => '2.0, 3, 5.5, 7.0',
1204
+ :a_path => '[(2.0, 3), (5.5, 7.0), (8.5, 11.0)]', # [ ] is an open path
1205
+ :a_polygon => '((2.0, 3), (5.5, 7.0), (8.5, 11.0))',
1206
+ :a_circle => '<(5.3, 10.4), 2>'
1207
+ )
1208
+
1209
+ assert g.save
1210
+
1211
+ # Reload and check that we have all the geometric attributes.
1212
+ h = Geometric.find(g.id)
1213
+
1214
+ assert_equal '(5,6.1)', h.a_point
1215
+ assert_equal '[(2,3),(5.5,7)]', h.a_line_segment
1216
+ assert_equal '(5.5,7),(2,3)', h.a_box # reordered to store upper right corner then bottom left corner
1217
+ assert_equal '[(2,3),(5.5,7),(8.5,11)]', h.a_path
1218
+ assert_equal '((2,3),(5.5,7),(8.5,11))', h.a_polygon
1219
+ assert_equal '<(5.3,10.4),2>', h.a_circle
1220
+
1221
+ # use a geometric function to test for an open path
1222
+ objs = Geometric.find_by_sql ["select isopen(a_path) from geometrics where id = ?", g.id]
1223
+ assert_equal objs[0].isopen, 't'
1224
+
1225
+ # test alternate formats when defining the geometric types
1226
+
1227
+ g = Geometric.new(
1228
+ :a_point => '5.0, 6.1',
1229
+ #:a_line => '((2.0, 3), (5.5, 7.0))' # line type is currently unsupported in postgresql
1230
+ :a_line_segment => '((2.0, 3), (5.5, 7.0))',
1231
+ :a_box => '(2.0, 3), (5.5, 7.0)',
1232
+ :a_path => '((2.0, 3), (5.5, 7.0), (8.5, 11.0))', # ( ) is a closed path
1233
+ :a_polygon => '2.0, 3, 5.5, 7.0, 8.5, 11.0',
1234
+ :a_circle => '((5.3, 10.4), 2)'
1235
+ )
1236
+
1237
+ assert g.save
1238
+
1239
+ # Reload and check that we have all the geometric attributes.
1240
+ h = Geometric.find(g.id)
1241
+
1242
+ assert_equal '(5,6.1)', h.a_point
1243
+ assert_equal '[(2,3),(5.5,7)]', h.a_line_segment
1244
+ assert_equal '(5.5,7),(2,3)', h.a_box # reordered to store upper right corner then bottom left corner
1245
+ assert_equal '((2,3),(5.5,7),(8.5,11))', h.a_path
1246
+ assert_equal '((2,3),(5.5,7),(8.5,11))', h.a_polygon
1247
+ assert_equal '<(5.3,10.4),2>', h.a_circle
1248
+
1249
+ # use a geometric function to test for an closed path
1250
+ objs = Geometric.find_by_sql ["select isclosed(a_path) from geometrics where id = ?", g.id]
1251
+ assert_equal objs[0].isclosed, 't'
1252
+ end
1253
+ end
1254
+
1255
+ class NumericData < ActiveRecord::Base
1256
+ self.table_name = 'numeric_data'
1257
+ end
1258
+
1259
+ def test_numeric_fields
1260
+ m = NumericData.new(
1261
+ :bank_balance => 1586.43,
1262
+ :big_bank_balance => BigDecimal("1000234000567.95"),
1263
+ :world_population => 6000000000,
1264
+ :my_house_population => 3
1265
+ )
1266
+ assert m.save
1267
+
1268
+ m1 = NumericData.find(m.id)
1269
+ assert_not_nil m1
1270
+
1271
+ # As with migration_test.rb, we should make world_population >= 2**62
1272
+ # to cover 64-bit platforms and test it is a Bignum, but the main thing
1273
+ # is that it's an Integer.
1274
+ assert_kind_of Integer, m1.world_population
1275
+ assert_equal 6000000000, m1.world_population
1276
+
1277
+ assert_kind_of Fixnum, m1.my_house_population
1278
+ assert_equal 3, m1.my_house_population
1279
+
1280
+ assert_kind_of BigDecimal, m1.bank_balance
1281
+ assert_equal BigDecimal("1586.43"), m1.bank_balance
1282
+
1283
+ assert_kind_of BigDecimal, m1.big_bank_balance
1284
+ assert_equal BigDecimal("1000234000567.95"), m1.big_bank_balance
1285
+ end
1286
+
1287
+ def test_auto_id
1288
+ auto = AutoId.new
1289
+ auto.save
1290
+ assert (auto.id > 0)
1291
+ end
1292
+
1293
+ def quote_column_name(name)
1294
+ "<#{name}>"
1295
+ end
1296
+
1297
+ def test_quote_keys
1298
+ ar = AutoId.new
1299
+ source = {"foo" => "bar", "baz" => "quux"}
1300
+ actual = ar.send(:quote_columns, self, source)
1301
+ inverted = actual.invert
1302
+ assert_equal("<foo>", inverted["bar"])
1303
+ assert_equal("<baz>", inverted["quux"])
1304
+ end
1305
+
1306
+ def test_sql_injection_via_find
1307
+ assert_raises(ActiveRecord::RecordNotFound, ActiveRecord::StatementInvalid) do
1308
+ Topic.find("123456 OR id > 0")
1309
+ end
1310
+ end
1311
+
1312
+ def test_column_name_properly_quoted
1313
+ col_record = ColumnName.new
1314
+ col_record.references = 40
1315
+ assert col_record.save
1316
+ col_record.references = 41
1317
+ assert col_record.save
1318
+ assert_not_nil c2 = ColumnName.find(col_record.id)
1319
+ assert_equal(41, c2.references)
1320
+ end
1321
+
1322
+ def test_quoting_arrays
1323
+ replies = Reply.find(:all, :conditions => [ "id IN (?)", topics(:first).replies.collect(&:id) ])
1324
+ assert_equal topics(:first).replies.size, replies.size
1325
+
1326
+ replies = Reply.find(:all, :conditions => [ "id IN (?)", [] ])
1327
+ assert_equal 0, replies.size
1328
+ end
1329
+
1330
+ MyObject = Struct.new :attribute1, :attribute2
1331
+
1332
+ def test_serialized_attribute
1333
+ myobj = MyObject.new('value1', 'value2')
1334
+ topic = Topic.create("content" => myobj)
1335
+ Topic.serialize("content", MyObject)
1336
+ assert_equal(myobj, topic.content)
1337
+ end
1338
+
1339
+ def test_nil_serialized_attribute_with_class_constraint
1340
+ myobj = MyObject.new('value1', 'value2')
1341
+ topic = Topic.new
1342
+ assert_nil topic.content
1343
+ end
1344
+
1345
+ def test_should_raise_exception_on_serialized_attribute_with_type_mismatch
1346
+ myobj = MyObject.new('value1', 'value2')
1347
+ topic = Topic.new(:content => myobj)
1348
+ assert topic.save
1349
+ Topic.serialize(:content, Hash)
1350
+ assert_raise(ActiveRecord::SerializationTypeMismatch) { Topic.find(topic.id).content }
1351
+ ensure
1352
+ Topic.serialize(:content)
1353
+ end
1354
+
1355
+ def test_serialized_attribute_with_class_constraint
1356
+ settings = { "color" => "blue" }
1357
+ Topic.serialize(:content, Hash)
1358
+ topic = Topic.new(:content => settings)
1359
+ assert topic.save
1360
+ assert_equal(settings, Topic.find(topic.id).content)
1361
+ ensure
1362
+ Topic.serialize(:content)
1363
+ end
1364
+
1365
+ def test_quote
1366
+ author_name = "\\ \001 ' \n \\n \""
1367
+ topic = Topic.create('author_name' => author_name)
1368
+ assert_equal author_name, Topic.find(topic.id).author_name
1369
+ end
1370
+
1371
+ if RUBY_VERSION < '1.9'
1372
+ def test_quote_chars
1373
+ str = 'The Narrator'
1374
+ topic = Topic.create(:author_name => str)
1375
+ assert_equal str, topic.author_name
1376
+
1377
+ assert_kind_of ActiveSupport::Multibyte::Chars, str.chars
1378
+ topic = Topic.find_by_author_name(str.chars)
1379
+
1380
+ assert_kind_of Topic, topic
1381
+ assert_equal str, topic.author_name, "The right topic should have been found by name even with name passed as Chars"
1382
+ end
1383
+ end
1384
+
1385
+ def test_class_level_destroy
1386
+ should_be_destroyed_reply = Reply.create("title" => "hello", "content" => "world")
1387
+ Topic.find(1).replies << should_be_destroyed_reply
1388
+
1389
+ Topic.destroy(1)
1390
+ assert_raise(ActiveRecord::RecordNotFound) { Topic.find(1) }
1391
+ assert_raise(ActiveRecord::RecordNotFound) { Reply.find(should_be_destroyed_reply.id) }
1392
+ end
1393
+
1394
+ def test_class_level_delete
1395
+ should_be_destroyed_reply = Reply.create("title" => "hello", "content" => "world")
1396
+ Topic.find(1).replies << should_be_destroyed_reply
1397
+
1398
+ Topic.delete(1)
1399
+ assert_raise(ActiveRecord::RecordNotFound) { Topic.find(1) }
1400
+ assert_nothing_raised { Reply.find(should_be_destroyed_reply.id) }
1401
+ end
1402
+
1403
+ def test_increment_attribute
1404
+ assert_equal 50, accounts(:signals37).credit_limit
1405
+ accounts(:signals37).increment! :credit_limit
1406
+ assert_equal 51, accounts(:signals37, :reload).credit_limit
1407
+
1408
+ accounts(:signals37).increment(:credit_limit).increment!(:credit_limit)
1409
+ assert_equal 53, accounts(:signals37, :reload).credit_limit
1410
+ end
1411
+
1412
+ def test_increment_nil_attribute
1413
+ assert_nil topics(:first).parent_id
1414
+ topics(:first).increment! :parent_id
1415
+ assert_equal 1, topics(:first).parent_id
1416
+ end
1417
+
1418
+ def test_increment_attribute_by
1419
+ assert_equal 50, accounts(:signals37).credit_limit
1420
+ accounts(:signals37).increment! :credit_limit, 5
1421
+ assert_equal 55, accounts(:signals37, :reload).credit_limit
1422
+
1423
+ accounts(:signals37).increment(:credit_limit, 1).increment!(:credit_limit, 3)
1424
+ assert_equal 59, accounts(:signals37, :reload).credit_limit
1425
+ end
1426
+
1427
+ def test_decrement_attribute
1428
+ assert_equal 50, accounts(:signals37).credit_limit
1429
+
1430
+ accounts(:signals37).decrement!(:credit_limit)
1431
+ assert_equal 49, accounts(:signals37, :reload).credit_limit
1432
+
1433
+ accounts(:signals37).decrement(:credit_limit).decrement!(:credit_limit)
1434
+ assert_equal 47, accounts(:signals37, :reload).credit_limit
1435
+ end
1436
+
1437
+ def test_decrement_attribute_by
1438
+ assert_equal 50, accounts(:signals37).credit_limit
1439
+ accounts(:signals37).decrement! :credit_limit, 5
1440
+ assert_equal 45, accounts(:signals37, :reload).credit_limit
1441
+
1442
+ accounts(:signals37).decrement(:credit_limit, 1).decrement!(:credit_limit, 3)
1443
+ assert_equal 41, accounts(:signals37, :reload).credit_limit
1444
+ end
1445
+
1446
+ def test_toggle_attribute
1447
+ assert !topics(:first).approved?
1448
+ topics(:first).toggle!(:approved)
1449
+ assert topics(:first).approved?
1450
+ topic = topics(:first)
1451
+ topic.toggle(:approved)
1452
+ assert !topic.approved?
1453
+ topic.reload
1454
+ assert topic.approved?
1455
+ end
1456
+
1457
+ def test_reload
1458
+ t1 = Topic.find(1)
1459
+ t2 = Topic.find(1)
1460
+ t1.title = "something else"
1461
+ t1.save
1462
+ t2.reload
1463
+ assert_equal t1.title, t2.title
1464
+ end
1465
+
1466
+ def test_define_attr_method_with_value
1467
+ k = Class.new( ActiveRecord::Base )
1468
+ k.send(:define_attr_method, :table_name, "foo")
1469
+ assert_equal "foo", k.table_name
1470
+ end
1471
+
1472
+ def test_define_attr_method_with_block
1473
+ k = Class.new( ActiveRecord::Base )
1474
+ k.send(:define_attr_method, :primary_key) { "sys_" + original_primary_key }
1475
+ assert_equal "sys_id", k.primary_key
1476
+ end
1477
+
1478
+ def test_set_table_name_with_value
1479
+ k = Class.new( ActiveRecord::Base )
1480
+ k.table_name = "foo"
1481
+ assert_equal "foo", k.table_name
1482
+ k.set_table_name "bar"
1483
+ assert_equal "bar", k.table_name
1484
+ end
1485
+
1486
+ def test_set_table_name_with_block
1487
+ k = Class.new( ActiveRecord::Base )
1488
+ k.set_table_name { "ks" }
1489
+ assert_equal "ks", k.table_name
1490
+ end
1491
+
1492
+ def test_set_primary_key_with_value
1493
+ k = Class.new( ActiveRecord::Base )
1494
+ k.primary_key = "foo"
1495
+ assert_equal "foo", k.primary_key
1496
+ k.set_primary_key "bar"
1497
+ assert_equal "bar", k.primary_key
1498
+ end
1499
+
1500
+ def test_set_primary_key_with_block
1501
+ k = Class.new( ActiveRecord::Base )
1502
+ k.set_primary_key { "sys_" + original_primary_key }
1503
+ assert_equal "sys_id", k.primary_key
1504
+ end
1505
+
1506
+ def test_set_inheritance_column_with_value
1507
+ k = Class.new( ActiveRecord::Base )
1508
+ k.inheritance_column = "foo"
1509
+ assert_equal "foo", k.inheritance_column
1510
+ k.set_inheritance_column "bar"
1511
+ assert_equal "bar", k.inheritance_column
1512
+ end
1513
+
1514
+ def test_set_inheritance_column_with_block
1515
+ k = Class.new( ActiveRecord::Base )
1516
+ k.set_inheritance_column { original_inheritance_column + "_id" }
1517
+ assert_equal "type_id", k.inheritance_column
1518
+ end
1519
+
1520
+ def test_count_with_join
1521
+ res = Post.count_by_sql "SELECT COUNT(*) FROM posts LEFT JOIN comments ON posts.id=comments.post_id WHERE posts.#{QUOTED_TYPE} = 'Post'"
1522
+
1523
+ res2 = Post.count(:conditions => "posts.#{QUOTED_TYPE} = 'Post'", :joins => "LEFT JOIN comments ON posts.id=comments.post_id")
1524
+ assert_equal res, res2
1525
+
1526
+ res3 = nil
1527
+ assert_nothing_raised do
1528
+ res3 = Post.count(:conditions => "posts.#{QUOTED_TYPE} = 'Post'",
1529
+ :joins => "LEFT JOIN comments ON posts.id=comments.post_id")
1530
+ end
1531
+ assert_equal res, res3
1532
+
1533
+ res4 = Post.count_by_sql "SELECT COUNT(p.id) FROM posts p, comments co WHERE p.#{QUOTED_TYPE} = 'Post' AND p.id=co.post_id"
1534
+ res5 = nil
1535
+ assert_nothing_raised do
1536
+ res5 = Post.count(:conditions => "p.#{QUOTED_TYPE} = 'Post' AND p.id=co.post_id",
1537
+ :joins => "p, comments co",
1538
+ :select => "p.id")
1539
+ end
1540
+
1541
+ assert_equal res4, res5
1542
+
1543
+ unless current_adapter?(:SQLite2Adapter, :DeprecatedSQLiteAdapter)
1544
+ res6 = Post.count_by_sql "SELECT COUNT(DISTINCT p.id) FROM posts p, comments co WHERE p.#{QUOTED_TYPE} = 'Post' AND p.id=co.post_id"
1545
+ res7 = nil
1546
+ assert_nothing_raised do
1547
+ res7 = Post.count(:conditions => "p.#{QUOTED_TYPE} = 'Post' AND p.id=co.post_id",
1548
+ :joins => "p, comments co",
1549
+ :select => "p.id",
1550
+ :distinct => true)
1551
+ end
1552
+ assert_equal res6, res7
1553
+ end
1554
+ end
1555
+
1556
+ def test_clear_association_cache_stored
1557
+ firm = Firm.find(1)
1558
+ assert_kind_of Firm, firm
1559
+
1560
+ firm.clear_association_cache
1561
+ assert_equal Firm.find(1).clients.collect{ |x| x.name }.sort, firm.clients.collect{ |x| x.name }.sort
1562
+ end
1563
+
1564
+ def test_clear_association_cache_new_record
1565
+ firm = Firm.new
1566
+ client_stored = Client.find(3)
1567
+ client_new = Client.new
1568
+ client_new.name = "The Joneses"
1569
+ clients = [ client_stored, client_new ]
1570
+
1571
+ firm.clients << clients
1572
+ assert_equal clients.map(&:name).to_set, firm.clients.map(&:name).to_set
1573
+
1574
+ firm.clear_association_cache
1575
+ assert_equal clients.map(&:name).to_set, firm.clients.map(&:name).to_set
1576
+ end
1577
+
1578
+ def test_interpolate_sql
1579
+ assert_nothing_raised { Category.new.send(:interpolate_sql, 'foo@bar') }
1580
+ assert_nothing_raised { Category.new.send(:interpolate_sql, 'foo bar) baz') }
1581
+ assert_nothing_raised { Category.new.send(:interpolate_sql, 'foo bar} baz') }
1582
+ end
1583
+
1584
+ def test_scoped_find_conditions
1585
+ scoped_developers = Developer.with_scope(:find => { :conditions => 'salary > 90000' }) do
1586
+ Developer.find(:all, :conditions => 'id < 5')
1587
+ end
1588
+ assert !scoped_developers.include?(developers(:david)) # David's salary is less than 90,000
1589
+ assert_equal 3, scoped_developers.size
1590
+ end
1591
+
1592
+ def test_scoped_find_limit_offset
1593
+ scoped_developers = Developer.with_scope(:find => { :limit => 3, :offset => 2 }) do
1594
+ Developer.find(:all, :order => 'id')
1595
+ end
1596
+ assert !scoped_developers.include?(developers(:david))
1597
+ assert !scoped_developers.include?(developers(:jamis))
1598
+ assert_equal 3, scoped_developers.size
1599
+
1600
+ # Test without scoped find conditions to ensure we get the whole thing
1601
+ developers = Developer.find(:all, :order => 'id')
1602
+ assert_equal Developer.count, developers.size
1603
+ end
1604
+
1605
+ def test_scoped_find_order
1606
+ # Test order in scope
1607
+ scoped_developers = Developer.with_scope(:find => { :limit => 1, :order => 'salary DESC' }) do
1608
+ Developer.find(:all)
1609
+ end
1610
+ assert_equal 'Jamis', scoped_developers.first.name
1611
+ assert scoped_developers.include?(developers(:jamis))
1612
+ # Test scope without order and order in find
1613
+ scoped_developers = Developer.with_scope(:find => { :limit => 1 }) do
1614
+ Developer.find(:all, :order => 'salary DESC')
1615
+ end
1616
+ # Test scope order + find order, find has priority
1617
+ scoped_developers = Developer.with_scope(:find => { :limit => 3, :order => 'id DESC' }) do
1618
+ Developer.find(:all, :order => 'salary ASC')
1619
+ end
1620
+ assert scoped_developers.include?(developers(:poor_jamis))
1621
+ assert scoped_developers.include?(developers(:david))
1622
+ assert scoped_developers.include?(developers(:dev_10))
1623
+ # Test without scoped find conditions to ensure we get the right thing
1624
+ developers = Developer.find(:all, :order => 'id', :limit => 1)
1625
+ assert scoped_developers.include?(developers(:david))
1626
+ end
1627
+
1628
+ def test_scoped_find_limit_offset_including_has_many_association
1629
+ topics = Topic.with_scope(:find => {:limit => 1, :offset => 1, :include => :replies}) do
1630
+ Topic.find(:all, :order => "topics.id")
1631
+ end
1632
+ assert_equal 1, topics.size
1633
+ assert_equal 2, topics.first.id
1634
+ end
1635
+
1636
+ def test_scoped_find_order_including_has_many_association
1637
+ developers = Developer.with_scope(:find => { :order => 'developers.salary DESC', :include => :projects }) do
1638
+ Developer.find(:all)
1639
+ end
1640
+ assert developers.size >= 2
1641
+ for i in 1...developers.size
1642
+ assert developers[i-1].salary >= developers[i].salary
1643
+ end
1644
+ end
1645
+
1646
+ def test_find_last
1647
+ last = Developer.find :last
1648
+ assert_equal last, Developer.find(:first, :order => 'id desc')
1649
+ end
1650
+
1651
+ def test_last
1652
+ assert_equal Developer.find(:first, :order => 'id desc'), Developer.last
1653
+ end
1654
+
1655
+ def test_all_with_conditions
1656
+ assert_equal Developer.find(:all, :order => 'id desc'), Developer.all(:order => 'id desc')
1657
+ end
1658
+
1659
+ def test_find_ordered_last
1660
+ last = Developer.find :last, :order => 'developers.salary ASC'
1661
+ assert_equal last, Developer.find(:all, :order => 'developers.salary ASC').last
1662
+ end
1663
+
1664
+ def test_find_reverse_ordered_last
1665
+ last = Developer.find :last, :order => 'developers.salary DESC'
1666
+ assert_equal last, Developer.find(:all, :order => 'developers.salary DESC').last
1667
+ end
1668
+
1669
+ def test_find_multiple_ordered_last
1670
+ last = Developer.find :last, :order => 'developers.name, developers.salary DESC'
1671
+ assert_equal last, Developer.find(:all, :order => 'developers.name, developers.salary DESC').last
1672
+ end
1673
+
1674
+ def test_find_scoped_ordered_last
1675
+ last_developer = Developer.with_scope(:find => { :order => 'developers.salary ASC' }) do
1676
+ Developer.find(:last)
1677
+ end
1678
+ assert_equal last_developer, Developer.find(:all, :order => 'developers.salary ASC').last
1679
+ end
1680
+
1681
+ def test_abstract_class
1682
+ assert !ActiveRecord::Base.abstract_class?
1683
+ assert LoosePerson.abstract_class?
1684
+ assert !LooseDescendant.abstract_class?
1685
+ end
1686
+
1687
+ def test_base_class
1688
+ assert_equal LoosePerson, LoosePerson.base_class
1689
+ assert_equal LooseDescendant, LooseDescendant.base_class
1690
+ assert_equal TightPerson, TightPerson.base_class
1691
+ assert_equal TightPerson, TightDescendant.base_class
1692
+
1693
+ assert_equal Post, Post.base_class
1694
+ assert_equal Post, SpecialPost.base_class
1695
+ assert_equal Post, StiPost.base_class
1696
+ assert_equal SubStiPost, SubStiPost.base_class
1697
+ end
1698
+
1699
+ def test_descends_from_active_record
1700
+ # Tries to call Object.abstract_class?
1701
+ assert_raise(NoMethodError) do
1702
+ ActiveRecord::Base.descends_from_active_record?
1703
+ end
1704
+
1705
+ # Abstract subclass of AR::Base.
1706
+ assert LoosePerson.descends_from_active_record?
1707
+
1708
+ # Concrete subclass of an abstract class.
1709
+ assert LooseDescendant.descends_from_active_record?
1710
+
1711
+ # Concrete subclass of AR::Base.
1712
+ assert TightPerson.descends_from_active_record?
1713
+
1714
+ # Concrete subclass of a concrete class but has no type column.
1715
+ assert TightDescendant.descends_from_active_record?
1716
+
1717
+ # Concrete subclass of AR::Base.
1718
+ assert Post.descends_from_active_record?
1719
+
1720
+ # Abstract subclass of a concrete class which has a type column.
1721
+ # This is pathological, as you'll never have Sub < Abstract < Concrete.
1722
+ assert !StiPost.descends_from_active_record?
1723
+
1724
+ # Concrete subclasses an abstract class which has a type column.
1725
+ assert !SubStiPost.descends_from_active_record?
1726
+ end
1727
+
1728
+ def test_find_on_abstract_base_class_doesnt_use_type_condition
1729
+ old_class = LooseDescendant
1730
+ Object.send :remove_const, :LooseDescendant
1731
+
1732
+ descendant = old_class.create! :first_name => 'bob'
1733
+ assert_not_nil LoosePerson.find(descendant.id), "Should have found instance of LooseDescendant when finding abstract LoosePerson: #{descendant.inspect}"
1734
+ ensure
1735
+ unless Object.const_defined?(:LooseDescendant)
1736
+ Object.const_set :LooseDescendant, old_class
1737
+ end
1738
+ end
1739
+
1740
+ def test_assert_queries
1741
+ query = lambda { ActiveRecord::Base.connection.execute 'select count(*) from developers' }
1742
+ assert_queries(2) { 2.times { query.call } }
1743
+ assert_queries 1, &query
1744
+ assert_no_queries { assert true }
1745
+ end
1746
+
1747
+ def test_to_xml
1748
+ xml = REXML::Document.new(topics(:first).to_xml(:indent => 0))
1749
+ bonus_time_in_current_timezone = topics(:first).bonus_time.xmlschema
1750
+ written_on_in_current_timezone = topics(:first).written_on.xmlschema
1751
+ last_read_in_current_timezone = topics(:first).last_read.xmlschema
1752
+
1753
+ assert_equal "topic", xml.root.name
1754
+ assert_equal "The First Topic" , xml.elements["//title"].text
1755
+ assert_equal "David" , xml.elements["//author-name"].text
1756
+
1757
+ assert_equal "1", xml.elements["//id"].text
1758
+ assert_equal "integer" , xml.elements["//id"].attributes['type']
1759
+
1760
+ assert_equal "1", xml.elements["//replies-count"].text
1761
+ assert_equal "integer" , xml.elements["//replies-count"].attributes['type']
1762
+
1763
+ assert_equal written_on_in_current_timezone, xml.elements["//written-on"].text
1764
+ assert_equal "datetime" , xml.elements["//written-on"].attributes['type']
1765
+
1766
+ assert_equal "--- Have a nice day\n" , xml.elements["//content"].text
1767
+ assert_equal "yaml" , xml.elements["//content"].attributes['type']
1768
+
1769
+ assert_equal "david@loudthinking.com", xml.elements["//author-email-address"].text
1770
+
1771
+ assert_equal nil, xml.elements["//parent-id"].text
1772
+ assert_equal "integer", xml.elements["//parent-id"].attributes['type']
1773
+ assert_equal "true", xml.elements["//parent-id"].attributes['nil']
1774
+
1775
+ if current_adapter?(:SybaseAdapter, :SQLServerAdapter, :OracleAdapter)
1776
+ assert_equal last_read_in_current_timezone, xml.elements["//last-read"].text
1777
+ assert_equal "datetime" , xml.elements["//last-read"].attributes['type']
1778
+ else
1779
+ assert_equal "2004-04-15", xml.elements["//last-read"].text
1780
+ assert_equal "date" , xml.elements["//last-read"].attributes['type']
1781
+ end
1782
+
1783
+ # Oracle and DB2 don't have true boolean or time-only fields
1784
+ unless current_adapter?(:OracleAdapter, :DB2Adapter)
1785
+ assert_equal "false", xml.elements["//approved"].text
1786
+ assert_equal "boolean" , xml.elements["//approved"].attributes['type']
1787
+
1788
+ assert_equal bonus_time_in_current_timezone, xml.elements["//bonus-time"].text
1789
+ assert_equal "datetime" , xml.elements["//bonus-time"].attributes['type']
1790
+ end
1791
+ end
1792
+
1793
+ def test_to_xml_skipping_attributes
1794
+ xml = topics(:first).to_xml(:indent => 0, :skip_instruct => true, :except => [:title, :replies_count])
1795
+ assert_equal "<topic>", xml.first(7)
1796
+ assert !xml.include?(%(<title>The First Topic</title>))
1797
+ assert xml.include?(%(<author-name>David</author-name>))
1798
+
1799
+ xml = topics(:first).to_xml(:indent => 0, :skip_instruct => true, :except => [:title, :author_name, :replies_count])
1800
+ assert !xml.include?(%(<title>The First Topic</title>))
1801
+ assert !xml.include?(%(<author-name>David</author-name>))
1802
+ end
1803
+
1804
+ def test_to_xml_including_has_many_association
1805
+ xml = topics(:first).to_xml(:indent => 0, :skip_instruct => true, :include => :replies, :except => :replies_count)
1806
+ assert_equal "<topic>", xml.first(7)
1807
+ assert xml.include?(%(<replies type="array"><reply>))
1808
+ assert xml.include?(%(<title>The Second Topic of the day</title>))
1809
+ end
1810
+
1811
+ def test_array_to_xml_including_has_many_association
1812
+ xml = [ topics(:first), topics(:second) ].to_xml(:indent => 0, :skip_instruct => true, :include => :replies)
1813
+ assert xml.include?(%(<replies type="array"><reply>))
1814
+ end
1815
+
1816
+ def test_array_to_xml_including_methods
1817
+ xml = [ topics(:first), topics(:second) ].to_xml(:indent => 0, :skip_instruct => true, :methods => [ :topic_id ])
1818
+ assert xml.include?(%(<topic-id type="integer">#{topics(:first).topic_id}</topic-id>)), xml
1819
+ assert xml.include?(%(<topic-id type="integer">#{topics(:second).topic_id}</topic-id>)), xml
1820
+ end
1821
+
1822
+ def test_array_to_xml_including_has_one_association
1823
+ xml = [ companies(:first_firm), companies(:rails_core) ].to_xml(:indent => 0, :skip_instruct => true, :include => :account)
1824
+ assert xml.include?(companies(:first_firm).account.to_xml(:indent => 0, :skip_instruct => true))
1825
+ assert xml.include?(companies(:rails_core).account.to_xml(:indent => 0, :skip_instruct => true))
1826
+ end
1827
+
1828
+ def test_array_to_xml_including_belongs_to_association
1829
+ xml = [ companies(:first_client), companies(:second_client), companies(:another_client) ].to_xml(:indent => 0, :skip_instruct => true, :include => :firm)
1830
+ assert xml.include?(companies(:first_client).to_xml(:indent => 0, :skip_instruct => true))
1831
+ assert xml.include?(companies(:second_client).firm.to_xml(:indent => 0, :skip_instruct => true))
1832
+ assert xml.include?(companies(:another_client).firm.to_xml(:indent => 0, :skip_instruct => true))
1833
+ end
1834
+
1835
+ def test_to_xml_including_belongs_to_association
1836
+ xml = companies(:first_client).to_xml(:indent => 0, :skip_instruct => true, :include => :firm)
1837
+ assert !xml.include?("<firm>")
1838
+
1839
+ xml = companies(:second_client).to_xml(:indent => 0, :skip_instruct => true, :include => :firm)
1840
+ assert xml.include?("<firm>")
1841
+ end
1842
+
1843
+ def test_to_xml_including_multiple_associations
1844
+ xml = companies(:first_firm).to_xml(:indent => 0, :skip_instruct => true, :include => [ :clients, :account ])
1845
+ assert_equal "<firm>", xml.first(6)
1846
+ assert xml.include?(%(<account>))
1847
+ assert xml.include?(%(<clients type="array"><client>))
1848
+ end
1849
+
1850
+ def test_to_xml_including_multiple_associations_with_options
1851
+ xml = companies(:first_firm).to_xml(
1852
+ :indent => 0, :skip_instruct => true,
1853
+ :include => { :clients => { :only => :name } }
1854
+ )
1855
+
1856
+ assert_equal "<firm>", xml.first(6)
1857
+ assert xml.include?(%(<client><name>Summit</name></client>))
1858
+ assert xml.include?(%(<clients type="array"><client>))
1859
+ end
1860
+
1861
+ def test_to_xml_including_methods
1862
+ xml = Company.new.to_xml(:methods => :arbitrary_method, :skip_instruct => true)
1863
+ assert_equal "<company>", xml.first(9)
1864
+ assert xml.include?(%(<arbitrary-method>I am Jack's profound disappointment</arbitrary-method>))
1865
+ end
1866
+
1867
+ def test_to_xml_with_block
1868
+ value = "Rockin' the block"
1869
+ xml = Company.new.to_xml(:skip_instruct => true) do |xml|
1870
+ xml.tag! "arbitrary-element", value
1871
+ end
1872
+ assert_equal "<company>", xml.first(9)
1873
+ assert xml.include?(%(<arbitrary-element>#{value}</arbitrary-element>))
1874
+ end
1875
+
1876
+ def test_type_name_with_module_should_handle_beginning
1877
+ assert_equal 'ActiveRecord::Person', ActiveRecord::Base.send(:type_name_with_module, 'Person')
1878
+ assert_equal '::Person', ActiveRecord::Base.send(:type_name_with_module, '::Person')
1879
+ end
1880
+
1881
+ def test_to_param_should_return_string
1882
+ assert_kind_of String, Client.find(:first).to_param
1883
+ end
1884
+
1885
+ def test_inspect_class
1886
+ assert_equal 'ActiveRecord::Base', ActiveRecord::Base.inspect
1887
+ assert_equal 'LoosePerson(abstract)', LoosePerson.inspect
1888
+ assert_match(/^Topic\(id: integer, title: string/, Topic.inspect)
1889
+ end
1890
+
1891
+ def test_inspect_instance
1892
+ topic = topics(:first)
1893
+ assert_equal %(#<Topic id: 1, title: "The First Topic", author_name: "David", author_email_address: "david@loudthinking.com", written_on: "#{topic.written_on.to_s(:db)}", bonus_time: "#{topic.bonus_time.to_s(:db)}", last_read: "#{topic.last_read.to_s(:db)}", content: "Have a nice day", approved: false, replies_count: 1, parent_id: nil, type: nil>), topic.inspect
1894
+ end
1895
+
1896
+ def test_inspect_new_instance
1897
+ assert_match /Topic id: nil/, Topic.new.inspect
1898
+ end
1899
+
1900
+ def test_inspect_limited_select_instance
1901
+ assert_equal %(#<Topic id: 1>), Topic.find(:first, :select => 'id', :conditions => 'id = 1').inspect
1902
+ assert_equal %(#<Topic id: 1, title: "The First Topic">), Topic.find(:first, :select => 'id, title', :conditions => 'id = 1').inspect
1903
+ end
1904
+
1905
+ def test_inspect_class_without_table
1906
+ assert_equal "NonExistentTable(Table doesn't exist)", NonExistentTable.inspect
1907
+ end
1908
+
1909
+ def test_attribute_for_inspect
1910
+ t = topics(:first)
1911
+ t.title = "The First Topic Now Has A Title With\nNewlines And More Than 50 Characters"
1912
+
1913
+ assert_equal %("#{t.written_on.to_s(:db)}"), t.attribute_for_inspect(:written_on)
1914
+ assert_equal '"The First Topic Now Has A Title With\nNewlines And M..."', t.attribute_for_inspect(:title)
1915
+ end
1916
+
1917
+ def test_becomes
1918
+ assert_kind_of Reply, topics(:first).becomes(Reply)
1919
+ assert_equal "The First Topic", topics(:first).becomes(Reply).title
1920
+ end
1921
+
1922
+ def test_silence_sets_log_level_to_error_in_block
1923
+ original_logger = ActiveRecord::Base.logger
1924
+ log = StringIO.new
1925
+ ActiveRecord::Base.logger = Logger.new(log)
1926
+ ActiveRecord::Base.logger.level = Logger::DEBUG
1927
+ ActiveRecord::Base.silence do
1928
+ ActiveRecord::Base.logger.warn "warn"
1929
+ ActiveRecord::Base.logger.error "error"
1930
+ end
1931
+ assert_equal "error\n", log.string
1932
+ ensure
1933
+ ActiveRecord::Base.logger = original_logger
1934
+ end
1935
+
1936
+ def test_silence_sets_log_level_back_to_level_before_yield
1937
+ original_logger = ActiveRecord::Base.logger
1938
+ log = StringIO.new
1939
+ ActiveRecord::Base.logger = Logger.new(log)
1940
+ ActiveRecord::Base.logger.level = Logger::WARN
1941
+ ActiveRecord::Base.silence do
1942
+ end
1943
+ assert_equal Logger::WARN, ActiveRecord::Base.logger.level
1944
+ ensure
1945
+ ActiveRecord::Base.logger = original_logger
1946
+ end
1947
+
1948
+ def test_benchmark_with_log_level
1949
+ original_logger = ActiveRecord::Base.logger
1950
+ log = StringIO.new
1951
+ ActiveRecord::Base.logger = Logger.new(log)
1952
+ ActiveRecord::Base.logger.level = Logger::WARN
1953
+ ActiveRecord::Base.benchmark("Debug Topic Count", Logger::DEBUG) { Topic.count }
1954
+ ActiveRecord::Base.benchmark("Warn Topic Count", Logger::WARN) { Topic.count }
1955
+ ActiveRecord::Base.benchmark("Error Topic Count", Logger::ERROR) { Topic.count }
1956
+ assert_no_match /Debug Topic Count/, log.string
1957
+ assert_match /Warn Topic Count/, log.string
1958
+ assert_match /Error Topic Count/, log.string
1959
+ ensure
1960
+ ActiveRecord::Base.logger = original_logger
1961
+ end
1962
+
1963
+ def test_benchmark_with_use_silence
1964
+ original_logger = ActiveRecord::Base.logger
1965
+ log = StringIO.new
1966
+ ActiveRecord::Base.logger = Logger.new(log)
1967
+ ActiveRecord::Base.benchmark("Logging", Logger::DEBUG, true) { ActiveRecord::Base.logger.debug "Loud" }
1968
+ ActiveRecord::Base.benchmark("Logging", Logger::DEBUG, false) { ActiveRecord::Base.logger.debug "Quiet" }
1969
+ assert_no_match /Loud/, log.string
1970
+ assert_match /Quiet/, log.string
1971
+ ensure
1972
+ ActiveRecord::Base.logger = original_logger
1973
+ end
1974
+ end