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,36 @@
1
+ require "active_support/test_case"
2
+
3
+ module ActiveRecord
4
+ class TestCase < ActiveSupport::TestCase #:nodoc:
5
+ self.fixture_path = FIXTURES_ROOT
6
+ self.use_instantiated_fixtures = false
7
+ self.use_transactional_fixtures = true
8
+
9
+ def create_fixtures(*table_names, &block)
10
+ Fixtures.create_fixtures(FIXTURES_ROOT, table_names, {}, &block)
11
+ end
12
+
13
+ def assert_date_from_db(expected, actual, message = nil)
14
+ # SQL Server doesn't have a separate column type just for dates,
15
+ # so the time is in the string and incorrectly formatted
16
+ if current_adapter?(:SQLServerAdapter)
17
+ assert_equal expected.strftime("%Y/%m/%d 00:00:00"), actual.strftime("%Y/%m/%d 00:00:00")
18
+ elsif current_adapter?(:SybaseAdapter)
19
+ assert_equal expected.to_s, actual.to_date.to_s, message
20
+ else
21
+ assert_equal expected.to_s, actual.to_s, message
22
+ end
23
+ end
24
+
25
+ def assert_queries(num = 1)
26
+ $query_count = 0
27
+ yield
28
+ ensure
29
+ assert_equal num, $query_count, "#{$query_count} instead of #{num} queries were executed."
30
+ end
31
+
32
+ def assert_no_queries(&block)
33
+ assert_queries(0, &block)
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,41 @@
1
+ module ActiveRecord
2
+ # Active Record automatically timestamps create and update operations if the table has fields
3
+ # named created_at/created_on or updated_at/updated_on.
4
+ #
5
+ # Timestamping can be turned off by setting
6
+ # <tt>ActiveRecord::Base.record_timestamps = false</tt>
7
+ #
8
+ # Timestamps are in the local timezone by default but you can use UTC by setting
9
+ # <tt>ActiveRecord::Base.default_timezone = :utc</tt>
10
+ module Timestamp
11
+ def self.included(base) #:nodoc:
12
+ base.alias_method_chain :create, :timestamps
13
+ base.alias_method_chain :update, :timestamps
14
+
15
+ base.class_inheritable_accessor :record_timestamps, :instance_writer => false
16
+ base.record_timestamps = true
17
+ end
18
+
19
+ private
20
+ def create_with_timestamps #:nodoc:
21
+ if record_timestamps
22
+ t = self.class.default_timezone == :utc ? Time.now.utc : Time.now
23
+ write_attribute('created_at', t) if respond_to?(:created_at) && created_at.nil?
24
+ write_attribute('created_on', t) if respond_to?(:created_on) && created_on.nil?
25
+
26
+ write_attribute('updated_at', t) if respond_to?(:updated_at)
27
+ write_attribute('updated_on', t) if respond_to?(:updated_on)
28
+ end
29
+ create_without_timestamps
30
+ end
31
+
32
+ def update_with_timestamps(*args) #:nodoc:
33
+ if record_timestamps && (!partial_updates? || changed?)
34
+ t = self.class.default_timezone == :utc ? Time.now.utc : Time.now
35
+ write_attribute('updated_at', t) if respond_to?(:updated_at)
36
+ write_attribute('updated_on', t) if respond_to?(:updated_on)
37
+ end
38
+ update_without_timestamps(*args)
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,130 @@
1
+ require 'thread'
2
+
3
+ module ActiveRecord
4
+ module Transactions # :nodoc:
5
+ class TransactionError < ActiveRecordError # :nodoc:
6
+ end
7
+
8
+ def self.included(base)
9
+ base.extend(ClassMethods)
10
+
11
+ base.class_eval do
12
+ [:destroy, :save, :save!].each do |method|
13
+ alias_method_chain method, :transactions
14
+ end
15
+ end
16
+ end
17
+
18
+ # Transactions are protective blocks where SQL statements are only permanent if they can all succeed as one atomic action.
19
+ # The classic example is a transfer between two accounts where you can only have a deposit if the withdrawal succeeded and
20
+ # vice versa. Transactions enforce the integrity of the database and guard the data against program errors or database break-downs.
21
+ # So basically you should use transaction blocks whenever you have a number of statements that must be executed together or
22
+ # not at all. Example:
23
+ #
24
+ # transaction do
25
+ # david.withdrawal(100)
26
+ # mary.deposit(100)
27
+ # end
28
+ #
29
+ # This example will only take money from David and give to Mary if neither +withdrawal+ nor +deposit+ raises an exception.
30
+ # Exceptions will force a ROLLBACK that returns the database to the state before the transaction was begun. Be aware, though,
31
+ # that the objects will _not_ have their instance data returned to their pre-transactional state.
32
+ #
33
+ # == Different Active Record classes in a single transaction
34
+ #
35
+ # Though the transaction class method is called on some Active Record class,
36
+ # the objects within the transaction block need not all be instances of
37
+ # that class.
38
+ # In this example a <tt>Balance</tt> record is transactionally saved even
39
+ # though <tt>transaction</tt> is called on the <tt>Account</tt> class:
40
+ #
41
+ # Account.transaction do
42
+ # balance.save!
43
+ # account.save!
44
+ # end
45
+ #
46
+ # == Transactions are not distributed across database connections
47
+ #
48
+ # A transaction acts on a single database connection. If you have
49
+ # multiple class-specific databases, the transaction will not protect
50
+ # interaction among them. One workaround is to begin a transaction
51
+ # on each class whose models you alter:
52
+ #
53
+ # Student.transaction do
54
+ # Course.transaction do
55
+ # course.enroll(student)
56
+ # student.units += course.units
57
+ # end
58
+ # end
59
+ #
60
+ # This is a poor solution, but full distributed transactions are beyond
61
+ # the scope of Active Record.
62
+ #
63
+ # == Save and destroy are automatically wrapped in a transaction
64
+ #
65
+ # Both Base#save and Base#destroy come wrapped in a transaction that ensures that whatever you do in validations or callbacks
66
+ # will happen under the protected cover of a transaction. So you can use validations to check for values that the transaction
67
+ # depends on or you can raise exceptions in the callbacks to rollback.
68
+ #
69
+ # == Exception handling
70
+ #
71
+ # Also have in mind that exceptions thrown within a transaction block will be propagated (after triggering the ROLLBACK), so you
72
+ # should be ready to catch those in your application code. One exception is the ActiveRecord::Rollback exception, which will
73
+ # trigger a ROLLBACK when raised, but not be re-raised by the transaction block.
74
+ module ClassMethods
75
+ def transaction(&block)
76
+ increment_open_transactions
77
+
78
+ begin
79
+ connection.transaction(Thread.current['start_db_transaction'], &block)
80
+ ensure
81
+ decrement_open_transactions
82
+ end
83
+ end
84
+
85
+ private
86
+ def increment_open_transactions #:nodoc:
87
+ open = Thread.current['open_transactions'] ||= 0
88
+ Thread.current['start_db_transaction'] = open.zero?
89
+ Thread.current['open_transactions'] = open + 1
90
+ end
91
+
92
+ def decrement_open_transactions #:nodoc:
93
+ Thread.current['open_transactions'] -= 1
94
+ end
95
+ end
96
+
97
+ def transaction(&block)
98
+ self.class.transaction(&block)
99
+ end
100
+
101
+ def destroy_with_transactions #:nodoc:
102
+ transaction { destroy_without_transactions }
103
+ end
104
+
105
+ def save_with_transactions(perform_validation = true) #:nodoc:
106
+ rollback_active_record_state! { transaction { save_without_transactions(perform_validation) } }
107
+ end
108
+
109
+ def save_with_transactions! #:nodoc:
110
+ rollback_active_record_state! { transaction { save_without_transactions! } }
111
+ end
112
+
113
+ # Reset id and @new_record if the transaction rolls back.
114
+ def rollback_active_record_state!
115
+ id_present = has_attribute?(self.class.primary_key)
116
+ previous_id = id
117
+ previous_new_record = new_record?
118
+ yield
119
+ rescue Exception
120
+ @new_record = previous_new_record
121
+ if id_present
122
+ self.id = previous_id
123
+ else
124
+ @attributes.delete(self.class.primary_key)
125
+ @attributes_cache.delete(self.class.primary_key)
126
+ end
127
+ raise
128
+ end
129
+ end
130
+ end
@@ -0,0 +1,961 @@
1
+ module ActiveRecord
2
+ # Raised by save! and create! when the record is invalid. Use the
3
+ # +record+ method to retrieve the record which did not validate.
4
+ # begin
5
+ # complex_operation_that_calls_save!_internally
6
+ # rescue ActiveRecord::RecordInvalid => invalid
7
+ # puts invalid.record.errors
8
+ # end
9
+ class RecordInvalid < ActiveRecordError
10
+ attr_reader :record
11
+ def initialize(record)
12
+ @record = record
13
+ super("Validation failed: #{@record.errors.full_messages.join(", ")}")
14
+ end
15
+ end
16
+
17
+ # Active Record validation is reported to and from this object, which is used by Base#save to
18
+ # determine whether the object is in a valid state to be saved. See usage example in Validations.
19
+ class Errors
20
+ include Enumerable
21
+
22
+ def initialize(base) # :nodoc:
23
+ @base, @errors = base, {}
24
+ end
25
+
26
+ @@default_error_messages = {
27
+ :inclusion => "is not included in the list",
28
+ :exclusion => "is reserved",
29
+ :invalid => "is invalid",
30
+ :confirmation => "doesn't match confirmation",
31
+ :accepted => "must be accepted",
32
+ :empty => "can't be empty",
33
+ :blank => "can't be blank",
34
+ :too_long => "is too long (maximum is %d characters)",
35
+ :too_short => "is too short (minimum is %d characters)",
36
+ :wrong_length => "is the wrong length (should be %d characters)",
37
+ :taken => "has already been taken",
38
+ :not_a_number => "is not a number",
39
+ :greater_than => "must be greater than %d",
40
+ :greater_than_or_equal_to => "must be greater than or equal to %d",
41
+ :equal_to => "must be equal to %d",
42
+ :less_than => "must be less than %d",
43
+ :less_than_or_equal_to => "must be less than or equal to %d",
44
+ :odd => "must be odd",
45
+ :even => "must be even"
46
+ }
47
+
48
+ # Holds a hash with all the default error messages that can be replaced by your own copy or localizations.
49
+ cattr_accessor :default_error_messages
50
+
51
+
52
+ # Adds an error to the base object instead of any particular attribute. This is used
53
+ # to report errors that don't tie to any specific attribute, but rather to the object
54
+ # as a whole. These error messages don't get prepended with any field name when iterating
55
+ # with each_full, so they should be complete sentences.
56
+ def add_to_base(msg)
57
+ add(:base, msg)
58
+ end
59
+
60
+ # Adds an error message (+msg+) to the +attribute+, which will be returned on a call to <tt>on(attribute)</tt>
61
+ # for the same attribute and ensure that this error object returns false when asked if <tt>empty?</tt>. More than one
62
+ # error can be added to the same +attribute+ in which case an array will be returned on a call to <tt>on(attribute)</tt>.
63
+ # If no +msg+ is supplied, "invalid" is assumed.
64
+ def add(attribute, msg = @@default_error_messages[:invalid])
65
+ @errors[attribute.to_s] = [] if @errors[attribute.to_s].nil?
66
+ @errors[attribute.to_s] << msg
67
+ end
68
+
69
+ # Will add an error message to each of the attributes in +attributes+ that is empty.
70
+ def add_on_empty(attributes, msg = @@default_error_messages[:empty])
71
+ for attr in [attributes].flatten
72
+ value = @base.respond_to?(attr.to_s) ? @base.send(attr.to_s) : @base[attr.to_s]
73
+ is_empty = value.respond_to?("empty?") ? value.empty? : false
74
+ add(attr, msg) unless !value.nil? && !is_empty
75
+ end
76
+ end
77
+
78
+ # Will add an error message to each of the attributes in +attributes+ that is blank (using Object#blank?).
79
+ def add_on_blank(attributes, msg = @@default_error_messages[:blank])
80
+ for attr in [attributes].flatten
81
+ value = @base.respond_to?(attr.to_s) ? @base.send(attr.to_s) : @base[attr.to_s]
82
+ add(attr, msg) if value.blank?
83
+ end
84
+ end
85
+
86
+ # Returns true if the specified +attribute+ has errors associated with it.
87
+ #
88
+ # class Company < ActiveRecord::Base
89
+ # validates_presence_of :name, :address, :email
90
+ # validates_length_of :name, :in => 5..30
91
+ # end
92
+ #
93
+ # company = Company.create(:address => '123 First St.')
94
+ # company.errors.invalid?(:name) # => true
95
+ # company.errors.invalid?(:address) # => false
96
+ def invalid?(attribute)
97
+ !@errors[attribute.to_s].nil?
98
+ end
99
+
100
+ # Returns nil, if no errors are associated with the specified +attribute+.
101
+ # Returns the error message, if one error is associated with the specified +attribute+.
102
+ # Returns an array of error messages, if more than one error is associated with the specified +attribute+.
103
+ #
104
+ # class Company < ActiveRecord::Base
105
+ # validates_presence_of :name, :address, :email
106
+ # validates_length_of :name, :in => 5..30
107
+ # end
108
+ #
109
+ # company = Company.create(:address => '123 First St.')
110
+ # company.errors.on(:name) # => ["is too short (minimum is 5 characters)", "can't be blank"]
111
+ # company.errors.on(:email) # => "can't be blank"
112
+ # company.errors.on(:address) # => nil
113
+ def on(attribute)
114
+ errors = @errors[attribute.to_s]
115
+ return nil if errors.nil?
116
+ errors.size == 1 ? errors.first : errors
117
+ end
118
+
119
+ alias :[] :on
120
+
121
+ # Returns errors assigned to the base object through add_to_base according to the normal rules of on(attribute).
122
+ def on_base
123
+ on(:base)
124
+ end
125
+
126
+ # Yields each attribute and associated message per error added.
127
+ #
128
+ # class Company < ActiveRecord::Base
129
+ # validates_presence_of :name, :address, :email
130
+ # validates_length_of :name, :in => 5..30
131
+ # end
132
+ #
133
+ # company = Company.create(:address => '123 First St.')
134
+ # company.errors.each{|attr,msg| puts "#{attr} - #{msg}" } # =>
135
+ # name - is too short (minimum is 5 characters)
136
+ # name - can't be blank
137
+ # address - can't be blank
138
+ def each
139
+ @errors.each_key { |attr| @errors[attr].each { |msg| yield attr, msg } }
140
+ end
141
+
142
+ # Yields each full error message added. So Person.errors.add("first_name", "can't be empty") will be returned
143
+ # through iteration as "First name can't be empty".
144
+ #
145
+ # class Company < ActiveRecord::Base
146
+ # validates_presence_of :name, :address, :email
147
+ # validates_length_of :name, :in => 5..30
148
+ # end
149
+ #
150
+ # company = Company.create(:address => '123 First St.')
151
+ # company.errors.each_full{|msg| puts msg } # =>
152
+ # Name is too short (minimum is 5 characters)
153
+ # Name can't be blank
154
+ # Address can't be blank
155
+ def each_full
156
+ full_messages.each { |msg| yield msg }
157
+ end
158
+
159
+ # Returns all the full error messages in an array.
160
+ #
161
+ # class Company < ActiveRecord::Base
162
+ # validates_presence_of :name, :address, :email
163
+ # validates_length_of :name, :in => 5..30
164
+ # end
165
+ #
166
+ # company = Company.create(:address => '123 First St.')
167
+ # company.errors.full_messages # =>
168
+ # ["Name is too short (minimum is 5 characters)", "Name can't be blank", "Address can't be blank"]
169
+ def full_messages
170
+ full_messages = []
171
+
172
+ @errors.each_key do |attr|
173
+ @errors[attr].each do |msg|
174
+ next if msg.nil?
175
+
176
+ if attr == "base"
177
+ full_messages << msg
178
+ else
179
+ full_messages << @base.class.human_attribute_name(attr) + " " + msg
180
+ end
181
+ end
182
+ end
183
+ full_messages
184
+ end
185
+
186
+ # Returns true if no errors have been added.
187
+ def empty?
188
+ @errors.empty?
189
+ end
190
+
191
+ # Removes all errors that have been added.
192
+ def clear
193
+ @errors = {}
194
+ end
195
+
196
+ # Returns the total number of errors added. Two errors added to the same attribute will be counted as such.
197
+ def size
198
+ @errors.values.inject(0) { |error_count, attribute| error_count + attribute.size }
199
+ end
200
+
201
+ alias_method :count, :size
202
+ alias_method :length, :size
203
+
204
+ # Returns an XML representation of this error object.
205
+ #
206
+ # class Company < ActiveRecord::Base
207
+ # validates_presence_of :name, :address, :email
208
+ # validates_length_of :name, :in => 5..30
209
+ # end
210
+ #
211
+ # company = Company.create(:address => '123 First St.')
212
+ # company.errors.to_xml # =>
213
+ # <?xml version="1.0" encoding="UTF-8"?>
214
+ # <errors>
215
+ # <error>Name is too short (minimum is 5 characters)</error>
216
+ # <error>Name can't be blank</error>
217
+ # <error>Address can't be blank</error>
218
+ # </errors>
219
+ def to_xml(options={})
220
+ options[:root] ||= "errors"
221
+ options[:indent] ||= 2
222
+ options[:builder] ||= Builder::XmlMarkup.new(:indent => options[:indent])
223
+
224
+ options[:builder].instruct! unless options.delete(:skip_instruct)
225
+ options[:builder].errors do |e|
226
+ full_messages.each { |msg| e.error(msg) }
227
+ end
228
+ end
229
+ end
230
+
231
+
232
+ # Active Records implement validation by overwriting Base#validate (or the variations, +validate_on_create+ and
233
+ # +validate_on_update+). Each of these methods can inspect the state of the object, which usually means ensuring
234
+ # that a number of attributes have a certain value (such as not empty, within a given range, matching a certain regular expression).
235
+ #
236
+ # Example:
237
+ #
238
+ # class Person < ActiveRecord::Base
239
+ # protected
240
+ # def validate
241
+ # errors.add_on_empty %w( first_name last_name )
242
+ # errors.add("phone_number", "has invalid format") unless phone_number =~ /[0-9]*/
243
+ # end
244
+ #
245
+ # def validate_on_create # is only run the first time a new object is saved
246
+ # unless valid_discount?(membership_discount)
247
+ # errors.add("membership_discount", "has expired")
248
+ # end
249
+ # end
250
+ #
251
+ # def validate_on_update
252
+ # errors.add_to_base("No changes have occurred") if unchanged_attributes?
253
+ # end
254
+ # end
255
+ #
256
+ # person = Person.new("first_name" => "David", "phone_number" => "what?")
257
+ # person.save # => false (and doesn't do the save)
258
+ # person.errors.empty? # => false
259
+ # person.errors.count # => 2
260
+ # person.errors.on "last_name" # => "can't be empty"
261
+ # person.errors.on "phone_number" # => "has invalid format"
262
+ # person.errors.each_full { |msg| puts msg }
263
+ # # => "Last name can't be empty\n" +
264
+ # "Phone number has invalid format"
265
+ #
266
+ # person.attributes = { "last_name" => "Heinemeier", "phone_number" => "555-555" }
267
+ # person.save # => true (and person is now saved in the database)
268
+ #
269
+ # An Errors object is automatically created for every Active Record.
270
+ #
271
+ # Please do have a look at ActiveRecord::Validations::ClassMethods for a higher level of validations.
272
+ module Validations
273
+ VALIDATIONS = %w( validate validate_on_create validate_on_update )
274
+
275
+ def self.included(base) # :nodoc:
276
+ base.extend ClassMethods
277
+ base.class_eval do
278
+ alias_method_chain :save, :validation
279
+ alias_method_chain :save!, :validation
280
+ alias_method_chain :update_attribute, :validation_skipping
281
+ end
282
+
283
+ base.send :include, ActiveSupport::Callbacks
284
+ base.define_callbacks *VALIDATIONS
285
+ end
286
+
287
+ # All of the following validations are defined in the class scope of the model that you're interested in validating.
288
+ # They offer a more declarative way of specifying when the model is valid and when it is not. It is recommended to use
289
+ # these over the low-level calls to +validate+ and +validate_on_create+ when possible.
290
+ module ClassMethods
291
+ DEFAULT_VALIDATION_OPTIONS = {
292
+ :on => :save,
293
+ :allow_nil => false,
294
+ :allow_blank => false,
295
+ :message => nil
296
+ }.freeze
297
+
298
+ ALL_RANGE_OPTIONS = [ :is, :within, :in, :minimum, :maximum ].freeze
299
+ ALL_NUMERICALITY_CHECKS = { :greater_than => '>', :greater_than_or_equal_to => '>=',
300
+ :equal_to => '==', :less_than => '<', :less_than_or_equal_to => '<=',
301
+ :odd => 'odd?', :even => 'even?' }.freeze
302
+
303
+ # Adds a validation method or block to the class. This is useful when
304
+ # overriding the +validate+ instance method becomes too unwieldly and
305
+ # you're looking for more descriptive declaration of your validations.
306
+ #
307
+ # This can be done with a symbol pointing to a method:
308
+ #
309
+ # class Comment < ActiveRecord::Base
310
+ # validate :must_be_friends
311
+ #
312
+ # def must_be_friends
313
+ # errors.add_to_base("Must be friends to leave a comment") unless commenter.friend_of?(commentee)
314
+ # end
315
+ # end
316
+ #
317
+ # Or with a block which is passed the current record to be validated:
318
+ #
319
+ # class Comment < ActiveRecord::Base
320
+ # validate do |comment|
321
+ # comment.must_be_friends
322
+ # end
323
+ #
324
+ # def must_be_friends
325
+ # errors.add_to_base("Must be friends to leave a comment") unless commenter.friend_of?(commentee)
326
+ # end
327
+ # end
328
+ #
329
+ # This usage applies to +validate_on_create+ and +validate_on_update+ as well.
330
+
331
+ # Validates each attribute against a block.
332
+ #
333
+ # class Person < ActiveRecord::Base
334
+ # validates_each :first_name, :last_name do |record, attr, value|
335
+ # record.errors.add attr, 'starts with z.' if value[0] == ?z
336
+ # end
337
+ # end
338
+ #
339
+ # Options:
340
+ # * <tt>:on</tt> - Specifies when this validation is active (default is <tt>:save</tt>, other options <tt>:create</tt>, <tt>:update</tt>).
341
+ # * <tt>:allow_nil</tt> - Skip validation if attribute is +nil+.
342
+ # * <tt>:allow_blank</tt> - Skip validation if attribute is blank.
343
+ # * <tt>:if</tt> - Specifies a method, proc or string to call to determine if the validation should
344
+ # occur (e.g. <tt>:if => :allow_validation</tt>, or <tt>:if => Proc.new { |user| user.signup_step > 2 }</tt>). The
345
+ # method, proc or string should return or evaluate to a true or false value.
346
+ # * <tt>:unless</tt> - Specifies a method, proc or string to call to determine if the validation should
347
+ # not occur (e.g. <tt>:unless => :skip_validation</tt>, or <tt>:unless => Proc.new { |user| user.signup_step <= 2 }</tt>). The
348
+ # method, proc or string should return or evaluate to a true or false value.
349
+ def validates_each(*attrs)
350
+ options = attrs.extract_options!.symbolize_keys
351
+ attrs = attrs.flatten
352
+
353
+ # Declare the validation.
354
+ send(validation_method(options[:on] || :save), options) do |record|
355
+ attrs.each do |attr|
356
+ value = record.send(attr)
357
+ next if (value.nil? && options[:allow_nil]) || (value.blank? && options[:allow_blank])
358
+ yield record, attr, value
359
+ end
360
+ end
361
+ end
362
+
363
+ # Encapsulates the pattern of wanting to validate a password or email address field with a confirmation. Example:
364
+ #
365
+ # Model:
366
+ # class Person < ActiveRecord::Base
367
+ # validates_confirmation_of :user_name, :password
368
+ # validates_confirmation_of :email_address, :message => "should match confirmation"
369
+ # end
370
+ #
371
+ # View:
372
+ # <%= password_field "person", "password" %>
373
+ # <%= password_field "person", "password_confirmation" %>
374
+ #
375
+ # The added +password_confirmation+ attribute is virtual; it exists only as an in-memory attribute for validating the password.
376
+ # To achieve this, the validation adds accessors to the model for the confirmation attribute. NOTE: This check is performed
377
+ # only if +password_confirmation+ is not +nil+, and by default only on save. To require confirmation, make sure to add a presence
378
+ # check for the confirmation attribute:
379
+ #
380
+ # validates_presence_of :password_confirmation, :if => :password_changed?
381
+ #
382
+ # Configuration options:
383
+ # * <tt>:message</tt> - A custom error message (default is: "doesn't match confirmation").
384
+ # * <tt>:on</tt> - Specifies when this validation is active (default is <tt>:save</tt>, other options <tt>:create</tt>, <tt>:update</tt>).
385
+ # * <tt>:if</tt> - Specifies a method, proc or string to call to determine if the validation should
386
+ # occur (e.g. <tt>:if => :allow_validation</tt>, or <tt>:if => Proc.new { |user| user.signup_step > 2 }</tt>). The
387
+ # method, proc or string should return or evaluate to a true or false value.
388
+ # * <tt>:unless</tt> - Specifies a method, proc or string to call to determine if the validation should
389
+ # not occur (e.g. <tt>:unless => :skip_validation</tt>, or <tt>:unless => Proc.new { |user| user.signup_step <= 2 }</tt>). The
390
+ # method, proc or string should return or evaluate to a true or false value.
391
+ def validates_confirmation_of(*attr_names)
392
+ configuration = { :message => ActiveRecord::Errors.default_error_messages[:confirmation], :on => :save }
393
+ configuration.update(attr_names.extract_options!)
394
+
395
+ attr_accessor(*(attr_names.map { |n| "#{n}_confirmation" }))
396
+
397
+ validates_each(attr_names, configuration) do |record, attr_name, value|
398
+ record.errors.add(attr_name, configuration[:message]) unless record.send("#{attr_name}_confirmation").nil? or value == record.send("#{attr_name}_confirmation")
399
+ end
400
+ end
401
+
402
+ # Encapsulates the pattern of wanting to validate the acceptance of a terms of service check box (or similar agreement). Example:
403
+ #
404
+ # class Person < ActiveRecord::Base
405
+ # validates_acceptance_of :terms_of_service
406
+ # validates_acceptance_of :eula, :message => "must be abided"
407
+ # end
408
+ #
409
+ # If the database column does not exist, the +terms_of_service+ attribute is entirely virtual. This check is
410
+ # performed only if +terms_of_service+ is not +nil+ and by default on save.
411
+ #
412
+ # Configuration options:
413
+ # * <tt>:message</tt> - A custom error message (default is: "must be accepted").
414
+ # * <tt>:on</tt> - Specifies when this validation is active (default is <tt>:save</tt>, other options <tt>:create</tt>, <tt>:update</tt>).
415
+ # * <tt>:allow_nil</tt> - Skip validation if attribute is +nil+ (default is true).
416
+ # * <tt>:accept</tt> - Specifies value that is considered accepted. The default value is a string "1", which
417
+ # makes it easy to relate to an HTML checkbox. This should be set to +true+ if you are validating a database
418
+ # column, since the attribute is typecast from "1" to +true+ before validation.
419
+ # * <tt>:if</tt> - Specifies a method, proc or string to call to determine if the validation should
420
+ # occur (e.g. <tt>:if => :allow_validation</tt>, or <tt>:if => Proc.new { |user| user.signup_step > 2 }</tt>). The
421
+ # method, proc or string should return or evaluate to a true or false value.
422
+ # * <tt>:unless</tt> - Specifies a method, proc or string to call to determine if the validation should
423
+ # not occur (e.g. <tt>:unless => :skip_validation</tt>, or <tt>:unless => Proc.new { |user| user.signup_step <= 2 }</tt>). The
424
+ # method, proc or string should return or evaluate to a true or false value.
425
+ def validates_acceptance_of(*attr_names)
426
+ configuration = { :message => ActiveRecord::Errors.default_error_messages[:accepted], :on => :save, :allow_nil => true, :accept => "1" }
427
+ configuration.update(attr_names.extract_options!)
428
+
429
+ db_cols = begin
430
+ column_names
431
+ rescue ActiveRecord::StatementInvalid
432
+ []
433
+ end
434
+ names = attr_names.reject { |name| db_cols.include?(name.to_s) }
435
+ attr_accessor(*names)
436
+
437
+ validates_each(attr_names,configuration) do |record, attr_name, value|
438
+ record.errors.add(attr_name, configuration[:message]) unless value == configuration[:accept]
439
+ end
440
+ end
441
+
442
+ # Validates that the specified attributes are not blank (as defined by Object#blank?). Happens by default on save. Example:
443
+ #
444
+ # class Person < ActiveRecord::Base
445
+ # validates_presence_of :first_name
446
+ # end
447
+ #
448
+ # The first_name attribute must be in the object and it cannot be blank.
449
+ #
450
+ # If you want to validate the presence of a boolean field (where the real values are true and false),
451
+ # you will want to use validates_inclusion_of :field_name, :in => [true, false]
452
+ # This is due to the way Object#blank? handles boolean values. false.blank? # => true
453
+ #
454
+ # Configuration options:
455
+ # * <tt>message</tt> - A custom error message (default is: "can't be blank").
456
+ # * <tt>on</tt> - Specifies when this validation is active (default is <tt>:save</tt>, other options <tt>:create</tt>, <tt>:update</tt>).
457
+ # * <tt>if</tt> - Specifies a method, proc or string to call to determine if the validation should
458
+ # occur (e.g. :if => :allow_validation, or :if => Proc.new { |user| user.signup_step > 2 }). The
459
+ # method, proc or string should return or evaluate to a true or false value.
460
+ # * <tt>unless</tt> - Specifies a method, proc or string to call to determine if the validation should
461
+ # not occur (e.g. :unless => :skip_validation, or :unless => Proc.new { |user| user.signup_step <= 2 }). The
462
+ # method, proc or string should return or evaluate to a true or false value.
463
+ #
464
+ def validates_presence_of(*attr_names)
465
+ configuration = { :message => ActiveRecord::Errors.default_error_messages[:blank], :on => :save }
466
+ configuration.update(attr_names.extract_options!)
467
+
468
+ # can't use validates_each here, because it cannot cope with nonexistent attributes,
469
+ # while errors.add_on_empty can
470
+ send(validation_method(configuration[:on]), configuration) do |record|
471
+ record.errors.add_on_blank(attr_names, configuration[:message])
472
+ end
473
+ end
474
+
475
+ # Validates that the specified attribute matches the length restrictions supplied. Only one option can be used at a time:
476
+ #
477
+ # class Person < ActiveRecord::Base
478
+ # validates_length_of :first_name, :maximum=>30
479
+ # validates_length_of :last_name, :maximum=>30, :message=>"less than %d if you don't mind"
480
+ # validates_length_of :fax, :in => 7..32, :allow_nil => true
481
+ # validates_length_of :phone, :in => 7..32, :allow_blank => true
482
+ # validates_length_of :user_name, :within => 6..20, :too_long => "pick a shorter name", :too_short => "pick a longer name"
483
+ # validates_length_of :fav_bra_size, :minimum=>1, :too_short=>"please enter at least %d character"
484
+ # validates_length_of :smurf_leader, :is=>4, :message=>"papa is spelled with %d characters... don't play me."
485
+ # end
486
+ #
487
+ # Configuration options:
488
+ # * <tt>:minimum</tt> - The minimum size of the attribute.
489
+ # * <tt>:maximum</tt> - The maximum size of the attribute.
490
+ # * <tt>:is</tt> - The exact size of the attribute.
491
+ # * <tt>:within</tt> - A range specifying the minimum and maximum size of the attribute.
492
+ # * <tt>:in</tt> - A synonym(or alias) for <tt>:within</tt>.
493
+ # * <tt>:allow_nil</tt> - Attribute may be +nil+; skip validation.
494
+ # * <tt>:allow_blank</tt> - Attribute may be blank; skip validation.
495
+ #
496
+ # * <tt>:too_long</tt> - The error message if the attribute goes over the maximum (default is: "is too long (maximum is %d characters)").
497
+ # * <tt>:too_short</tt> - The error message if the attribute goes under the minimum (default is: "is too short (min is %d characters)").
498
+ # * <tt>:wrong_length</tt> - The error message if using the <tt>:is</tt> method and the attribute is the wrong size (default is: "is the wrong length (should be %d characters)").
499
+ # * <tt>:message</tt> - The error message to use for a <tt>:minimum</tt>, <tt>:maximum</tt>, or <tt>:is</tt> violation. An alias of the appropriate <tt>too_long</tt>/<tt>too_short</tt>/<tt>wrong_length</tt> message.
500
+ # * <tt>:on</tt> - Specifies when this validation is active (default is <tt>:save</tt>, other options <tt>:create</tt>, <tt>:update</tt>).
501
+ # * <tt>:if</tt> - Specifies a method, proc or string to call to determine if the validation should
502
+ # occur (e.g. <tt>:if => :allow_validation</tt>, or <tt>:if => Proc.new { |user| user.signup_step > 2 }</tt>). The
503
+ # method, proc or string should return or evaluate to a true or false value.
504
+ # * <tt>:unless</tt> - Specifies a method, proc or string to call to determine if the validation should
505
+ # not occur (e.g. <tt>:unless => :skip_validation</tt>, or <tt>:unless => Proc.new { |user| user.signup_step <= 2 }</tt>). The
506
+ # method, proc or string should return or evaluate to a true or false value.
507
+ def validates_length_of(*attrs)
508
+ # Merge given options with defaults.
509
+ options = {
510
+ :too_long => ActiveRecord::Errors.default_error_messages[:too_long],
511
+ :too_short => ActiveRecord::Errors.default_error_messages[:too_short],
512
+ :wrong_length => ActiveRecord::Errors.default_error_messages[:wrong_length]
513
+ }.merge(DEFAULT_VALIDATION_OPTIONS)
514
+ options.update(attrs.extract_options!.symbolize_keys)
515
+
516
+ # Ensure that one and only one range option is specified.
517
+ range_options = ALL_RANGE_OPTIONS & options.keys
518
+ case range_options.size
519
+ when 0
520
+ raise ArgumentError, 'Range unspecified. Specify the :within, :maximum, :minimum, or :is option.'
521
+ when 1
522
+ # Valid number of options; do nothing.
523
+ else
524
+ raise ArgumentError, 'Too many range options specified. Choose only one.'
525
+ end
526
+
527
+ # Get range option and value.
528
+ option = range_options.first
529
+ option_value = options[range_options.first]
530
+
531
+ case option
532
+ when :within, :in
533
+ raise ArgumentError, ":#{option} must be a Range" unless option_value.is_a?(Range)
534
+
535
+ too_short = options[:too_short] % option_value.begin
536
+ too_long = options[:too_long] % option_value.end
537
+
538
+ validates_each(attrs, options) do |record, attr, value|
539
+ value = value.split(//) if value.kind_of?(String)
540
+ if value.nil? or value.size < option_value.begin
541
+ record.errors.add(attr, too_short)
542
+ elsif value.size > option_value.end
543
+ record.errors.add(attr, too_long)
544
+ end
545
+ end
546
+ when :is, :minimum, :maximum
547
+ raise ArgumentError, ":#{option} must be a nonnegative Integer" unless option_value.is_a?(Integer) and option_value >= 0
548
+
549
+ # Declare different validations per option.
550
+ validity_checks = { :is => "==", :minimum => ">=", :maximum => "<=" }
551
+ message_options = { :is => :wrong_length, :minimum => :too_short, :maximum => :too_long }
552
+
553
+ message = (options[:message] || options[message_options[option]]) % option_value
554
+
555
+ validates_each(attrs, options) do |record, attr, value|
556
+ value = value.split(//) if value.kind_of?(String)
557
+ record.errors.add(attr, message) unless !value.nil? and value.size.method(validity_checks[option])[option_value]
558
+ end
559
+ end
560
+ end
561
+
562
+ alias_method :validates_size_of, :validates_length_of
563
+
564
+
565
+ # Validates whether the value of the specified attributes are unique across the system. Useful for making sure that only one user
566
+ # can be named "davidhh".
567
+ #
568
+ # class Person < ActiveRecord::Base
569
+ # validates_uniqueness_of :user_name, :scope => :account_id
570
+ # end
571
+ #
572
+ # It can also validate whether the value of the specified attributes are unique based on multiple scope parameters. For example,
573
+ # making sure that a teacher can only be on the schedule once per semester for a particular class.
574
+ #
575
+ # class TeacherSchedule < ActiveRecord::Base
576
+ # validates_uniqueness_of :teacher_id, :scope => [:semester_id, :class_id]
577
+ # end
578
+ #
579
+ # When the record is created, a check is performed to make sure that no record exists in the database with the given value for the specified
580
+ # attribute (that maps to a column). When the record is updated, the same check is made but disregarding the record itself.
581
+ #
582
+ # Because this check is performed outside the database there is still a chance that duplicate values
583
+ # will be inserted in two parallel transactions. To guarantee against this you should create a
584
+ # unique index on the field. See +add_index+ for more information.
585
+ #
586
+ # Configuration options:
587
+ # * <tt>:message</tt> - Specifies a custom error message (default is: "has already been taken").
588
+ # * <tt>:scope</tt> - One or more columns by which to limit the scope of the uniqueness constraint.
589
+ # * <tt>:case_sensitive</tt> - Looks for an exact match. Ignored by non-text columns (+false+ by default).
590
+ # * <tt>:allow_nil</tt> - If set to true, skips this validation if the attribute is +nil+ (default is +false+).
591
+ # * <tt>:allow_blank</tt> - If set to true, skips this validation if the attribute is blank (default is +false+).
592
+ # * <tt>:if</tt> - Specifies a method, proc or string to call to determine if the validation should
593
+ # occur (e.g. <tt>:if => :allow_validation</tt>, or <tt>:if => Proc.new { |user| user.signup_step > 2 }</tt>). The
594
+ # method, proc or string should return or evaluate to a true or false value.
595
+ # * <tt>:unless</tt> - Specifies a method, proc or string to call to determine if the validation should
596
+ # not occur (e.g. <tt>:unless => :skip_validation</tt>, or <tt>:unless => Proc.new { |user| user.signup_step <= 2 }</tt>). The
597
+ # method, proc or string should return or evaluate to a true or false value.
598
+ def validates_uniqueness_of(*attr_names)
599
+ configuration = { :message => ActiveRecord::Errors.default_error_messages[:taken], :case_sensitive => true }
600
+ configuration.update(attr_names.extract_options!)
601
+
602
+ validates_each(attr_names,configuration) do |record, attr_name, value|
603
+ # The check for an existing value should be run from a class that
604
+ # isn't abstract. This means working down from the current class
605
+ # (self), to the first non-abstract class. Since classes don't know
606
+ # their subclasses, we have to build the hierarchy between self and
607
+ # the record's class.
608
+ class_hierarchy = [record.class]
609
+ while class_hierarchy.first != self
610
+ class_hierarchy.insert(0, class_hierarchy.first.superclass)
611
+ end
612
+
613
+ # Now we can work our way down the tree to the first non-abstract
614
+ # class (which has a database table to query from).
615
+ finder_class = class_hierarchy.detect { |klass| !klass.abstract_class? }
616
+
617
+ if value.nil? || (configuration[:case_sensitive] || !finder_class.columns_hash[attr_name.to_s].text?)
618
+ condition_sql = "#{record.class.quoted_table_name}.#{attr_name} #{attribute_condition(value)}"
619
+ condition_params = [value]
620
+ else
621
+ # sqlite has case sensitive SELECT query, while MySQL/Postgresql don't.
622
+ # Hence, this is needed only for sqlite.
623
+ condition_sql = "LOWER(#{record.class.quoted_table_name}.#{attr_name}) #{attribute_condition(value)}"
624
+ condition_params = [value.downcase]
625
+ end
626
+
627
+ if scope = configuration[:scope]
628
+ Array(scope).map do |scope_item|
629
+ scope_value = record.send(scope_item)
630
+ condition_sql << " AND #{record.class.quoted_table_name}.#{scope_item} #{attribute_condition(scope_value)}"
631
+ condition_params << scope_value
632
+ end
633
+ end
634
+
635
+ unless record.new_record?
636
+ condition_sql << " AND #{record.class.quoted_table_name}.#{record.class.primary_key} <> ?"
637
+ condition_params << record.send(:id)
638
+ end
639
+
640
+ results = finder_class.with_exclusive_scope do
641
+ connection.select_all(
642
+ construct_finder_sql(
643
+ :select => "#{connection.quote_column_name(attr_name)}",
644
+ :from => "#{finder_class.quoted_table_name}",
645
+ :conditions => [condition_sql, *condition_params]
646
+ )
647
+ )
648
+ end
649
+
650
+ unless results.length.zero?
651
+ found = true
652
+
653
+ # As MySQL/Postgres don't have case sensitive SELECT queries, we try to find duplicate
654
+ # column in ruby when case sensitive option
655
+ if configuration[:case_sensitive] && finder_class.columns_hash[attr_name.to_s].text?
656
+ found = results.any? { |a| a[attr_name.to_s] == value }
657
+ end
658
+
659
+ record.errors.add(attr_name, configuration[:message]) if found
660
+ end
661
+ end
662
+ end
663
+
664
+
665
+ # Validates whether the value of the specified attribute is of the correct form by matching it against the regular expression
666
+ # provided.
667
+ #
668
+ # class Person < ActiveRecord::Base
669
+ # validates_format_of :email, :with => /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\Z/i, :on => :create
670
+ # end
671
+ #
672
+ # Note: use <tt>\A</tt> and <tt>\Z</tt> to match the start and end of the string, <tt>^</tt> and <tt>$</tt> match the start/end of a line.
673
+ #
674
+ # A regular expression must be provided or else an exception will be raised.
675
+ #
676
+ # Configuration options:
677
+ # * <tt>:message</tt> - A custom error message (default is: "is invalid").
678
+ # * <tt>:allow_nil</tt> - If set to true, skips this validation if the attribute is +nil+ (default is +false+).
679
+ # * <tt>:allow_blank</tt> - If set to true, skips this validation if the attribute is blank (default is +false+).
680
+ # * <tt>:with</tt> - The regular expression used to validate the format with (note: must be supplied!).
681
+ # * <tt>:on</tt> - Specifies when this validation is active (default is <tt>:save</tt>, other options <tt>:create</tt>, <tt>:update</tt>).
682
+ # * <tt>:if</tt> - Specifies a method, proc or string to call to determine if the validation should
683
+ # occur (e.g. <tt>:if => :allow_validation</tt>, or <tt>:if => Proc.new { |user| user.signup_step > 2 }</tt>). The
684
+ # method, proc or string should return or evaluate to a true or false value.
685
+ # * <tt>:unless</tt> - Specifies a method, proc or string to call to determine if the validation should
686
+ # not occur (e.g. <tt>:unless => :skip_validation</tt>, or <tt>:unless => Proc.new { |user| user.signup_step <= 2 }</tt>). The
687
+ # method, proc or string should return or evaluate to a true or false value.
688
+ def validates_format_of(*attr_names)
689
+ configuration = { :message => ActiveRecord::Errors.default_error_messages[:invalid], :on => :save, :with => nil }
690
+ configuration.update(attr_names.extract_options!)
691
+
692
+ raise(ArgumentError, "A regular expression must be supplied as the :with option of the configuration hash") unless configuration[:with].is_a?(Regexp)
693
+
694
+ validates_each(attr_names, configuration) do |record, attr_name, value|
695
+ record.errors.add(attr_name, configuration[:message] % value) unless value.to_s =~ configuration[:with]
696
+ end
697
+ end
698
+
699
+ # Validates whether the value of the specified attribute is available in a particular enumerable object.
700
+ #
701
+ # class Person < ActiveRecord::Base
702
+ # validates_inclusion_of :gender, :in => %w( m f ), :message => "woah! what are you then!??!!"
703
+ # validates_inclusion_of :age, :in => 0..99
704
+ # validates_inclusion_of :format, :in => %w( jpg gif png ), :message => "extension %s is not included in the list"
705
+ # end
706
+ #
707
+ # Configuration options:
708
+ # * <tt>:in</tt> - An enumerable object of available items.
709
+ # * <tt>:message</tt> - Specifies a custom error message (default is: "is not included in the list").
710
+ # * <tt>:allow_nil</tt> - If set to true, skips this validation if the attribute is +nil+ (default is +false+).
711
+ # * <tt>:allow_blank</tt> - If set to true, skips this validation if the attribute is blank (default is +false+).
712
+ # * <tt>:if</tt> - Specifies a method, proc or string to call to determine if the validation should
713
+ # occur (e.g. <tt>:if => :allow_validation</tt>, or <tt>:if => Proc.new { |user| user.signup_step > 2 }</tt>). The
714
+ # method, proc or string should return or evaluate to a true or false value.
715
+ # * <tt>:unless</tt> - Specifies a method, proc or string to call to determine if the validation should
716
+ # not occur (e.g. <tt>:unless => :skip_validation</tt>, or <tt>:unless => Proc.new { |user| user.signup_step <= 2 }</tt>). The
717
+ # method, proc or string should return or evaluate to a true or false value.
718
+ def validates_inclusion_of(*attr_names)
719
+ configuration = { :message => ActiveRecord::Errors.default_error_messages[:inclusion], :on => :save }
720
+ configuration.update(attr_names.extract_options!)
721
+
722
+ enum = configuration[:in] || configuration[:within]
723
+
724
+ raise(ArgumentError, "An object with the method include? is required must be supplied as the :in option of the configuration hash") unless enum.respond_to?("include?")
725
+
726
+ validates_each(attr_names, configuration) do |record, attr_name, value|
727
+ record.errors.add(attr_name, configuration[:message] % value) unless enum.include?(value)
728
+ end
729
+ end
730
+
731
+ # Validates that the value of the specified attribute is not in a particular enumerable object.
732
+ #
733
+ # class Person < ActiveRecord::Base
734
+ # validates_exclusion_of :username, :in => %w( admin superuser ), :message => "You don't belong here"
735
+ # validates_exclusion_of :age, :in => 30..60, :message => "This site is only for under 30 and over 60"
736
+ # validates_exclusion_of :format, :in => %w( mov avi ), :message => "extension %s is not allowed"
737
+ # end
738
+ #
739
+ # Configuration options:
740
+ # * <tt>:in</tt> - An enumerable object of items that the value shouldn't be part of.
741
+ # * <tt>:message</tt> - Specifies a custom error message (default is: "is reserved").
742
+ # * <tt>:allow_nil</tt> - If set to true, skips this validation if the attribute is +nil+ (default is +false+).
743
+ # * <tt>:allow_blank</tt> - If set to true, skips this validation if the attribute is blank (default is +false+).
744
+ # * <tt>:if</tt> - Specifies a method, proc or string to call to determine if the validation should
745
+ # occur (e.g. <tt>:if => :allow_validation</tt>, or <tt>:if => Proc.new { |user| user.signup_step > 2 }</tt>). The
746
+ # method, proc or string should return or evaluate to a true or false value.
747
+ # * <tt>:unless</tt> - Specifies a method, proc or string to call to determine if the validation should
748
+ # not occur (e.g. <tt>:unless => :skip_validation</tt>, or <tt>:unless => Proc.new { |user| user.signup_step <= 2 }</tt>). The
749
+ # method, proc or string should return or evaluate to a true or false value.
750
+ def validates_exclusion_of(*attr_names)
751
+ configuration = { :message => ActiveRecord::Errors.default_error_messages[:exclusion], :on => :save }
752
+ configuration.update(attr_names.extract_options!)
753
+
754
+ enum = configuration[:in] || configuration[:within]
755
+
756
+ raise(ArgumentError, "An object with the method include? is required must be supplied as the :in option of the configuration hash") unless enum.respond_to?("include?")
757
+
758
+ validates_each(attr_names, configuration) do |record, attr_name, value|
759
+ record.errors.add(attr_name, configuration[:message] % value) if enum.include?(value)
760
+ end
761
+ end
762
+
763
+ # Validates whether the associated object or objects are all valid themselves. Works with any kind of association.
764
+ #
765
+ # class Book < ActiveRecord::Base
766
+ # has_many :pages
767
+ # belongs_to :library
768
+ #
769
+ # validates_associated :pages, :library
770
+ # end
771
+ #
772
+ # Warning: If, after the above definition, you then wrote:
773
+ #
774
+ # class Page < ActiveRecord::Base
775
+ # belongs_to :book
776
+ #
777
+ # validates_associated :book
778
+ # end
779
+ #
780
+ # this would specify a circular dependency and cause infinite recursion.
781
+ #
782
+ # NOTE: This validation will not fail if the association hasn't been assigned. If you want to ensure that the association
783
+ # is both present and guaranteed to be valid, you also need to use +validates_presence_of+.
784
+ #
785
+ # Configuration options:
786
+ # * <tt>:message</tt> - A custom error message (default is: "is invalid")
787
+ # * <tt>:on</tt> - Specifies when this validation is active (default is <tt>:save</tt>, other options <tt>:create</tt>, <tt>:update</tt>).
788
+ # * <tt>:if</tt> - Specifies a method, proc or string to call to determine if the validation should
789
+ # occur (e.g. <tt>:if => :allow_validation</tt>, or <tt>:if => Proc.new { |user| user.signup_step > 2 }</tt>). The
790
+ # method, proc or string should return or evaluate to a true or false value.
791
+ # * <tt>:unless</tt> - Specifies a method, proc or string to call to determine if the validation should
792
+ # not occur (e.g. <tt>:unless => :skip_validation</tt>, or <tt>:unless => Proc.new { |user| user.signup_step <= 2 }</tt>). The
793
+ # method, proc or string should return or evaluate to a true or false value.
794
+ def validates_associated(*attr_names)
795
+ configuration = { :message => ActiveRecord::Errors.default_error_messages[:invalid], :on => :save }
796
+ configuration.update(attr_names.extract_options!)
797
+
798
+ validates_each(attr_names, configuration) do |record, attr_name, value|
799
+ record.errors.add(attr_name, configuration[:message]) unless
800
+ (value.is_a?(Array) ? value : [value]).inject(true) { |v, r| (r.nil? || r.valid?) && v }
801
+ end
802
+ end
803
+
804
+ # Validates whether the value of the specified attribute is numeric by trying to convert it to
805
+ # a float with Kernel.Float (if <tt>only_integer</tt> is false) or applying it to the regular expression
806
+ # <tt>/\A[\+\-]?\d+\Z/</tt> (if <tt>only_integer</tt> is set to true).
807
+ #
808
+ # class Person < ActiveRecord::Base
809
+ # validates_numericality_of :value, :on => :create
810
+ # end
811
+ #
812
+ # Configuration options:
813
+ # * <tt>:message</tt> - A custom error message (default is: "is not a number").
814
+ # * <tt>:on</tt> - Specifies when this validation is active (default is <tt>:save</tt>, other options <tt>:create</tt>, <tt>:update</tt>).
815
+ # * <tt>:only_integer</tt> - Specifies whether the value has to be an integer, e.g. an integral value (default is +false+).
816
+ # * <tt>:allow_nil</tt> - Skip validation if attribute is +nil+ (default is +false+). Notice that for fixnum and float columns empty strings are converted to +nil+.
817
+ # * <tt>:greater_than</tt> - Specifies the value must be greater than the supplied value.
818
+ # * <tt>:greater_than_or_equal_to</tt> - Specifies the value must be greater than or equal the supplied value.
819
+ # * <tt>:equal_to</tt> - Specifies the value must be equal to the supplied value.
820
+ # * <tt>:less_than</tt> - Specifies the value must be less than the supplied value.
821
+ # * <tt>:less_than_or_equal_to</tt> - Specifies the value must be less than or equal the supplied value.
822
+ # * <tt>:odd</tt> - Specifies the value must be an odd number.
823
+ # * <tt>:even</tt> - Specifies the value must be an even number.
824
+ # * <tt>:if</tt> - Specifies a method, proc or string to call to determine if the validation should
825
+ # occur (e.g. <tt>:if => :allow_validation</tt>, or <tt>:if => Proc.new { |user| user.signup_step > 2 }</tt>). The
826
+ # method, proc or string should return or evaluate to a true or false value.
827
+ # * <tt>:unless</tt> - Specifies a method, proc or string to call to determine if the validation should
828
+ # not occur (e.g. <tt>:unless => :skip_validation</tt>, or <tt>:unless => Proc.new { |user| user.signup_step <= 2 }</tt>). The
829
+ # method, proc or string should return or evaluate to a true or false value.
830
+ def validates_numericality_of(*attr_names)
831
+ configuration = { :on => :save, :only_integer => false, :allow_nil => false }
832
+ configuration.update(attr_names.extract_options!)
833
+
834
+
835
+ numericality_options = ALL_NUMERICALITY_CHECKS.keys & configuration.keys
836
+
837
+ (numericality_options - [ :odd, :even ]).each do |option|
838
+ raise ArgumentError, ":#{option} must be a number" unless configuration[option].is_a?(Numeric)
839
+ end
840
+
841
+ validates_each(attr_names,configuration) do |record, attr_name, value|
842
+ raw_value = record.send("#{attr_name}_before_type_cast") || value
843
+
844
+ next if configuration[:allow_nil] and raw_value.nil?
845
+
846
+ if configuration[:only_integer]
847
+ unless raw_value.to_s =~ /\A[+-]?\d+\Z/
848
+ record.errors.add(attr_name, configuration[:message] || ActiveRecord::Errors.default_error_messages[:not_a_number])
849
+ next
850
+ end
851
+ raw_value = raw_value.to_i
852
+ else
853
+ begin
854
+ raw_value = Kernel.Float(raw_value.to_s)
855
+ rescue ArgumentError, TypeError
856
+ record.errors.add(attr_name, configuration[:message] || ActiveRecord::Errors.default_error_messages[:not_a_number])
857
+ next
858
+ end
859
+ end
860
+
861
+ numericality_options.each do |option|
862
+ case option
863
+ when :odd, :even
864
+ record.errors.add(attr_name, configuration[:message] || ActiveRecord::Errors.default_error_messages[option]) unless raw_value.to_i.method(ALL_NUMERICALITY_CHECKS[option])[]
865
+ else
866
+ message = configuration[:message] || ActiveRecord::Errors.default_error_messages[option]
867
+ message = message % configuration[option] if configuration[option]
868
+ record.errors.add(attr_name, message) unless raw_value.method(ALL_NUMERICALITY_CHECKS[option])[configuration[option]]
869
+ end
870
+ end
871
+ end
872
+ end
873
+
874
+ # Creates an object just like Base.create but calls save! instead of save
875
+ # so an exception is raised if the record is invalid.
876
+ def create!(attributes = nil, &block)
877
+ if attributes.is_a?(Array)
878
+ attributes.collect { |attr| create!(attr, &block) }
879
+ else
880
+ object = new(attributes)
881
+ yield(object) if block_given?
882
+ object.save!
883
+ object
884
+ end
885
+ end
886
+
887
+ private
888
+ def validation_method(on)
889
+ case on
890
+ when :save then :validate
891
+ when :create then :validate_on_create
892
+ when :update then :validate_on_update
893
+ end
894
+ end
895
+ end
896
+
897
+ # The validation process on save can be skipped by passing false. The regular Base#save method is
898
+ # replaced with this when the validations module is mixed in, which it is by default.
899
+ def save_with_validation(perform_validation = true)
900
+ if perform_validation && valid? || !perform_validation
901
+ save_without_validation
902
+ else
903
+ false
904
+ end
905
+ end
906
+
907
+ # Attempts to save the record just like Base#save but will raise a RecordInvalid exception instead of returning false
908
+ # if the record is not valid.
909
+ def save_with_validation!
910
+ if valid?
911
+ save_without_validation!
912
+ else
913
+ raise RecordInvalid.new(self)
914
+ end
915
+ end
916
+
917
+ # Updates a single attribute and saves the record without going through the normal validation procedure.
918
+ # This is especially useful for boolean flags on existing records. The regular +update_attribute+ method
919
+ # in Base is replaced with this when the validations module is mixed in, which it is by default.
920
+ def update_attribute_with_validation_skipping(name, value)
921
+ send(name.to_s + '=', value)
922
+ save(false)
923
+ end
924
+
925
+ # Runs +validate+ and +validate_on_create+ or +validate_on_update+ and returns true if no errors were added otherwise false.
926
+ def valid?
927
+ errors.clear
928
+
929
+ run_callbacks(:validate)
930
+ validate
931
+
932
+ if new_record?
933
+ run_callbacks(:validate_on_create)
934
+ validate_on_create
935
+ else
936
+ run_callbacks(:validate_on_update)
937
+ validate_on_update
938
+ end
939
+
940
+ errors.empty?
941
+ end
942
+
943
+ # Returns the Errors object that holds all information about attribute error messages.
944
+ def errors
945
+ @errors ||= Errors.new(self)
946
+ end
947
+
948
+ protected
949
+ # Overwrite this method for validation checks on all saves and use <tt>Errors.add(field, msg)</tt> for invalid attributes.
950
+ def validate #:doc:
951
+ end
952
+
953
+ # Overwrite this method for validation checks used only on creation.
954
+ def validate_on_create #:doc:
955
+ end
956
+
957
+ # Overwrite this method for validation checks used only on updates.
958
+ def validate_on_update # :doc:
959
+ end
960
+ end
961
+ end