kajam 1.0.3.rc2

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of kajam might be problematic. Click here for more details.

Files changed (2635) hide show
  1. data/.gitignore +20 -0
  2. data/INSTALL +35 -0
  3. data/LICENSE +21 -0
  4. data/README +84 -0
  5. data/Rakefile +11 -0
  6. data/app/controllers/admin/configuration_controller.rb +50 -0
  7. data/app/controllers/admin/extensions_controller.rb +11 -0
  8. data/app/controllers/admin/layouts_controller.rb +8 -0
  9. data/app/controllers/admin/page_fields_controller.rb +9 -0
  10. data/app/controllers/admin/page_parts_controller.rb +9 -0
  11. data/app/controllers/admin/pages_controller.rb +79 -0
  12. data/app/controllers/admin/preferences_controller.rb +46 -0
  13. data/app/controllers/admin/references_controller.rb +7 -0
  14. data/app/controllers/admin/resource_controller.rb +242 -0
  15. data/app/controllers/admin/snippets_controller.rb +8 -0
  16. data/app/controllers/admin/users_controller.rb +40 -0
  17. data/app/controllers/admin/welcome_controller.rb +48 -0
  18. data/app/controllers/application_controller.rb +87 -0
  19. data/app/controllers/site_controller.rb +77 -0
  20. data/app/helpers/admin/configuration_helper.rb +80 -0
  21. data/app/helpers/admin/export_helper.rb +2 -0
  22. data/app/helpers/admin/extensions_helper.rb +2 -0
  23. data/app/helpers/admin/layouts_helper.rb +21 -0
  24. data/app/helpers/admin/node_helper.rb +133 -0
  25. data/app/helpers/admin/pages_helper.rb +117 -0
  26. data/app/helpers/admin/preferences_helper.rb +3 -0
  27. data/app/helpers/admin/references_helper.rb +44 -0
  28. data/app/helpers/admin/regions_helper.rb +28 -0
  29. data/app/helpers/admin/snippets_helper.rb +41 -0
  30. data/app/helpers/admin/users_helper.rb +8 -0
  31. data/app/helpers/admin/welcome_helper.rb +2 -0
  32. data/app/helpers/application_helper.rb +236 -0
  33. data/app/helpers/site_helper.rb +2 -0
  34. data/app/models/deprecated_tags.rb +34 -0
  35. data/app/models/file_not_found_page.rb +32 -0
  36. data/app/models/kajam/config.rb +305 -0
  37. data/app/models/layout.rb +15 -0
  38. data/app/models/page.rb +363 -0
  39. data/app/models/page_context.rb +46 -0
  40. data/app/models/page_field.rb +3 -0
  41. data/app/models/page_part.rb +20 -0
  42. data/app/models/snippet.rb +23 -0
  43. data/app/models/standard_tags.rb +1364 -0
  44. data/app/models/status.rb +41 -0
  45. data/app/models/text_filter.rb +36 -0
  46. data/app/models/user.rb +97 -0
  47. data/app/models/user_action_observer.rb +25 -0
  48. data/app/views/admin/configuration/edit.html.haml +38 -0
  49. data/app/views/admin/configuration/show.html.haml +58 -0
  50. data/app/views/admin/extensions/index.html.haml +41 -0
  51. data/app/views/admin/layouts/_form.html.haml +39 -0
  52. data/app/views/admin/layouts/edit.html.haml +9 -0
  53. data/app/views/admin/layouts/index.html.haml +36 -0
  54. data/app/views/admin/layouts/new.html.haml +7 -0
  55. data/app/views/admin/layouts/remove.html.haml +16 -0
  56. data/app/views/admin/page_fields/_page_field.html.haml +12 -0
  57. data/app/views/admin/page_parts/_page_part.html.haml +18 -0
  58. data/app/views/admin/pages/_fields.html.haml +71 -0
  59. data/app/views/admin/pages/_meta_row.html.haml +8 -0
  60. data/app/views/admin/pages/_node.html.haml +26 -0
  61. data/app/views/admin/pages/_popups.html.haml +27 -0
  62. data/app/views/admin/pages/children.html.haml +2 -0
  63. data/app/views/admin/pages/edit.html.haml +12 -0
  64. data/app/views/admin/pages/index.html.haml +26 -0
  65. data/app/views/admin/pages/new.html.haml +10 -0
  66. data/app/views/admin/pages/remove.html.haml +18 -0
  67. data/app/views/admin/preferences/edit.html.haml +44 -0
  68. data/app/views/admin/references/_tag_reference.haml +3 -0
  69. data/app/views/admin/references/filters.haml +6 -0
  70. data/app/views/admin/references/tags.haml +30 -0
  71. data/app/views/admin/snippets/_form.html.haml +33 -0
  72. data/app/views/admin/snippets/edit.html.haml +9 -0
  73. data/app/views/admin/snippets/index.html.haml +34 -0
  74. data/app/views/admin/snippets/new.html.haml +7 -0
  75. data/app/views/admin/snippets/remove.html.haml +17 -0
  76. data/app/views/admin/users/_avatar.html.haml +5 -0
  77. data/app/views/admin/users/_form.html.haml +53 -0
  78. data/app/views/admin/users/_password_fields.html.haml +18 -0
  79. data/app/views/admin/users/edit.html.haml +9 -0
  80. data/app/views/admin/users/index.html.haml +39 -0
  81. data/app/views/admin/users/new.html.haml +6 -0
  82. data/app/views/admin/users/remove.html.haml +16 -0
  83. data/app/views/admin/welcome/login.html.haml +23 -0
  84. data/app/views/layouts/application.html.haml +50 -0
  85. data/app/views/site/not_found.html.haml +3 -0
  86. data/bin/kajam +53 -0
  87. data/config/boot.rb +179 -0
  88. data/config/compass.config +18 -0
  89. data/config/cucumber.yml +7 -0
  90. data/config/database.db2.yml +23 -0
  91. data/config/database.mysql.yml +28 -0
  92. data/config/database.postgresql.yml +28 -0
  93. data/config/database.sqlite.yml +19 -0
  94. data/config/database.sqlserver.yml +23 -0
  95. data/config/environment.rb +98 -0
  96. data/config/environments/cucumber.rb +29 -0
  97. data/config/environments/development.rb +17 -0
  98. data/config/environments/production.rb +24 -0
  99. data/config/environments/test.rb +38 -0
  100. data/config/initializers/compass.rb +6 -0
  101. data/config/initializers/haml.rb +2 -0
  102. data/config/initializers/kajam_config.rb +17 -0
  103. data/config/locales/en.yml +238 -0
  104. data/config/locales/en_available_tags.yml +625 -0
  105. data/config/routes.rb +42 -0
  106. data/db/migrate/001_create_kajam_tables.rb +75 -0
  107. data/db/migrate/002_insert_initial_data.rb +12 -0
  108. data/db/migrate/003_rename_behavior_column.rb +9 -0
  109. data/db/migrate/004_rename_filter_column.rb +11 -0
  110. data/db/migrate/005_add_virtual_column_to_page.rb +9 -0
  111. data/db/migrate/006_integer_columns_to_boolean.rb +36 -0
  112. data/db/migrate/007_remove_virtual_column_from_page.rb +9 -0
  113. data/db/migrate/008_add_virtual_column_to_page_again.rb +9 -0
  114. data/db/migrate/009_add_content_type_field_to_layout.rb +9 -0
  115. data/db/migrate/010_merge_behaviors_and_pages.rb +57 -0
  116. data/db/migrate/011_rename_type_column_on_page_to_class_name.rb +9 -0
  117. data/db/migrate/012_create_extension_meta.rb +13 -0
  118. data/db/migrate/013_add_notes_field_to_user.rb +9 -0
  119. data/db/migrate/014_rename_config_default_parts_key.rb +17 -0
  120. data/db/migrate/015_add_optimistic_locking.rb +15 -0
  121. data/db/migrate/016_add_sessions.rb +16 -0
  122. data/db/migrate/017_rename_created_by_updated_by_columns.rb +15 -0
  123. data/db/migrate/018_add_description_and_keywords_to_pages.rb +11 -0
  124. data/db/migrate/019_add_salt_to_users.rb +11 -0
  125. data/db/migrate/020_add_session_info_to_users.rb +11 -0
  126. data/db/migrate/021_remove_session_expire_from_users.rb +9 -0
  127. data/db/migrate/20081203140407_add_indexes.rb +19 -0
  128. data/db/migrate/20090226140109_add_user_language.rb +9 -0
  129. data/db/migrate/20090929164633_rename_developer_role_to_designer.rb +9 -0
  130. data/db/migrate/20091003095744_change_user_language_to_locale.rb +9 -0
  131. data/db/migrate/20100805154952_add_page_fields.rb +15 -0
  132. data/db/migrate/20100805155020_convert_page_metas.rb +15 -0
  133. data/db/migrate/20100810151922_add_field_name_index.rb +11 -0
  134. data/db/schema.rb +141 -0
  135. data/features/admin/configuration.feature +38 -0
  136. data/features/admin/content_negotiation.feature +24 -0
  137. data/features/admin/layouts_management.feature +10 -0
  138. data/features/admin/pages_management.feature +78 -0
  139. data/features/admin/resource_pagination.feature +27 -0
  140. data/features/admin/snippets_management.feature +57 -0
  141. data/features/admin/user_permissions.feature +156 -0
  142. data/features/admin/user_preferences.feature +35 -0
  143. data/features/admin/users_management.feature +62 -0
  144. data/features/navigation_rendering.feature +30 -0
  145. data/features/page_serving.feature +42 -0
  146. data/features/step_definitions/admin/admin_steps.rb +38 -0
  147. data/features/step_definitions/admin/content_negotiation_steps.rb +50 -0
  148. data/features/step_definitions/admin/pages_management_steps.rb +28 -0
  149. data/features/step_definitions/admin/pagination_steps.rb +44 -0
  150. data/features/step_definitions/admin/users_management_steps.rb +15 -0
  151. data/features/step_definitions/page_serving_steps.rb +62 -0
  152. data/features/step_definitions/web_steps.rb +273 -0
  153. data/features/support/dataset.rb +13 -0
  154. data/features/support/datasets_loader.rb +3 -0
  155. data/features/support/env.rb +60 -0
  156. data/features/support/matchers.rb +3 -0
  157. data/features/support/paths.rb +74 -0
  158. data/kajam.gemspec +43 -0
  159. data/lib/annotatable.rb +68 -0
  160. data/lib/autotest/discover.rb +3 -0
  161. data/lib/autotest/kajam_rails_rspec.rb +111 -0
  162. data/lib/generators/extension/USAGE +30 -0
  163. data/lib/generators/extension/extension_generator.rb +99 -0
  164. data/lib/generators/extension/templates/README +6 -0
  165. data/lib/generators/extension/templates/RSpecRakefile +109 -0
  166. data/lib/generators/extension/templates/Rakefile +25 -0
  167. data/lib/generators/extension/templates/cucumber.yml +1 -0
  168. data/lib/generators/extension/templates/cucumber_env.rb +11 -0
  169. data/lib/generators/extension/templates/cucumber_paths.rb +22 -0
  170. data/lib/generators/extension/templates/en.yml +3 -0
  171. data/lib/generators/extension/templates/extension.rb +23 -0
  172. data/lib/generators/extension/templates/functional_test.rb +15 -0
  173. data/lib/generators/extension/templates/gemspec.rb +29 -0
  174. data/lib/generators/extension/templates/kajam_config.rb +3 -0
  175. data/lib/generators/extension/templates/lib.rb +2 -0
  176. data/lib/generators/extension/templates/migration.rb +9 -0
  177. data/lib/generators/extension/templates/routes.rb +5 -0
  178. data/lib/generators/extension/templates/spec.opts +6 -0
  179. data/lib/generators/extension/templates/spec_helper.rb +36 -0
  180. data/lib/generators/extension/templates/tasks.rake +55 -0
  181. data/lib/generators/extension/templates/test_helper.rb +26 -0
  182. data/lib/generators/extension/templates/version.rb +3 -0
  183. data/lib/generators/extension_controller/USAGE +36 -0
  184. data/lib/generators/extension_controller/extension_controller_generator.rb +84 -0
  185. data/lib/generators/extension_controller/templates/controller.rb +10 -0
  186. data/lib/generators/extension_controller/templates/controller_spec.rb +23 -0
  187. data/lib/generators/extension_controller/templates/functional_test.rb +11 -0
  188. data/lib/generators/extension_controller/templates/helper.rb +2 -0
  189. data/lib/generators/extension_controller/templates/helper_spec.rb +11 -0
  190. data/lib/generators/extension_controller/templates/helper_test.rb +4 -0
  191. data/lib/generators/extension_controller/templates/view.html.erb +2 -0
  192. data/lib/generators/extension_controller/templates/view_spec.rb +12 -0
  193. data/lib/generators/extension_mailer/USAGE +17 -0
  194. data/lib/generators/extension_mailer/extension_mailer_generator.rb +68 -0
  195. data/lib/generators/extension_mailer/templates/fixture.erb +3 -0
  196. data/lib/generators/extension_mailer/templates/mailer.rb +15 -0
  197. data/lib/generators/extension_mailer/templates/unit_test.rb +21 -0
  198. data/lib/generators/extension_mailer/templates/view.erb +3 -0
  199. data/lib/generators/extension_migration/USAGE +34 -0
  200. data/lib/generators/extension_migration/extension_migration_generator.rb +25 -0
  201. data/lib/generators/extension_migration/templates/migration.rb +11 -0
  202. data/lib/generators/extension_model/USAGE +35 -0
  203. data/lib/generators/extension_model/extension_model_generator.rb +68 -0
  204. data/lib/generators/extension_model/templates/fixtures.yml +19 -0
  205. data/lib/generators/extension_model/templates/migration.rb +16 -0
  206. data/lib/generators/extension_model/templates/model.rb +2 -0
  207. data/lib/generators/extension_model/templates/model_spec.rb +11 -0
  208. data/lib/generators/extension_model/templates/unit_test.rb +8 -0
  209. data/lib/generators/generator_base_extension.rb +16 -0
  210. data/lib/generators/instance/instance_generator.rb +119 -0
  211. data/lib/generators/instance/templates/databases/db2.yml +40 -0
  212. data/lib/generators/instance/templates/databases/mysql.yml +47 -0
  213. data/lib/generators/instance/templates/databases/postgresql.yml +44 -0
  214. data/lib/generators/instance/templates/databases/sqlite3.yml +16 -0
  215. data/lib/generators/instance/templates/databases/sqlserver.yml +21 -0
  216. data/lib/generators/instance/templates/instance_boot.rb +179 -0
  217. data/lib/generators/instance/templates/instance_environment.rb +93 -0
  218. data/lib/generators/instance/templates/instance_generate +18 -0
  219. data/lib/generators/instance/templates/instance_kajam_config.rb +16 -0
  220. data/lib/generators/instance/templates/instance_rakefile +3 -0
  221. data/lib/generators/instance/templates/instance_routes.rb +1 -0
  222. data/lib/generators/language_extension/USAGE +27 -0
  223. data/lib/generators/language_extension/language_extension_generator.rb +49 -0
  224. data/lib/generators/language_extension/templates/README +3 -0
  225. data/lib/generators/language_extension/templates/RSpecRakefile +123 -0
  226. data/lib/generators/language_extension/templates/Rakefile +25 -0
  227. data/lib/generators/language_extension/templates/available_tags.yml +553 -0
  228. data/lib/generators/language_extension/templates/cucumber.yml +1 -0
  229. data/lib/generators/language_extension/templates/cucumber_env.rb +16 -0
  230. data/lib/generators/language_extension/templates/cucumber_paths.rb +14 -0
  231. data/lib/generators/language_extension/templates/extension.rb +8 -0
  232. data/lib/generators/language_extension/templates/functional_test.rb +15 -0
  233. data/lib/generators/language_extension/templates/lang.yml +181 -0
  234. data/lib/generators/language_extension/templates/spec.opts +6 -0
  235. data/lib/generators/language_extension/templates/spec_helper.rb +36 -0
  236. data/lib/generators/language_extension/templates/tasks.rake +28 -0
  237. data/lib/generators/language_extension/templates/test_helper.rb +26 -0
  238. data/lib/inheritable_class_attributes.rb +65 -0
  239. data/lib/kajam.rb +19 -0
  240. data/lib/kajam/admin_ui.rb +258 -0
  241. data/lib/kajam/admin_ui/region_partials.rb +18 -0
  242. data/lib/kajam/admin_ui/region_set.rb +35 -0
  243. data/lib/kajam/available_locales.rb +31 -0
  244. data/lib/kajam/cache.rb +99 -0
  245. data/lib/kajam/config/definition.rb +142 -0
  246. data/lib/kajam/extension.rb +151 -0
  247. data/lib/kajam/extension/script.rb +393 -0
  248. data/lib/kajam/extension_gem.rb +12 -0
  249. data/lib/kajam/extension_loader.rb +174 -0
  250. data/lib/kajam/extension_locator.rb +25 -0
  251. data/lib/kajam/extension_migrator.rb +98 -0
  252. data/lib/kajam/gem_dependency_fix.rb +21 -0
  253. data/lib/kajam/gem_locator.rb +28 -0
  254. data/lib/kajam/initializer.rb +319 -0
  255. data/lib/kajam/pagination/controller.rb +35 -0
  256. data/lib/kajam/pagination/link_renderer.rb +34 -0
  257. data/lib/kajam/resource_responses.rb +115 -0
  258. data/lib/kajam/setup.rb +224 -0
  259. data/lib/kajam/taggable.rb +132 -0
  260. data/lib/local_time.rb +8 -0
  261. data/lib/login_system.rb +128 -0
  262. data/lib/method_observer.rb +50 -0
  263. data/lib/plugins/active_record_extensions/init.rb +1 -0
  264. data/lib/plugins/active_record_extensions/lib/active_record_extensions.rb +28 -0
  265. data/lib/plugins/extension_patches/init.rb +1 -0
  266. data/lib/plugins/extension_patches/lib/routing_extension.rb +31 -0
  267. data/lib/plugins/object_extensions/init.rb +1 -0
  268. data/lib/plugins/object_extensions/lib/object_extensions.rb +8 -0
  269. data/lib/plugins/response_cache_timeout/init.rb +3 -0
  270. data/lib/plugins/string_extensions/init.rb +1 -0
  271. data/lib/plugins/string_extensions/lib/string_extensions.rb +23 -0
  272. data/lib/plugins/symbol_extensions/init.rb +1 -0
  273. data/lib/plugins/symbol_extensions/lib/symbol_extensions.rb +5 -0
  274. data/lib/simpleton.rb +21 -0
  275. data/lib/task_support.rb +64 -0
  276. data/lib/tasks/ci.rake +9 -0
  277. data/lib/tasks/cucumber.rake +47 -0
  278. data/lib/tasks/database.rake +33 -0
  279. data/lib/tasks/environments.rake +11 -0
  280. data/lib/tasks/extensions.rake +97 -0
  281. data/lib/tasks/framework.rake +223 -0
  282. data/lib/tasks/instance.rake +23 -0
  283. data/lib/tasks/kajam_config.rake +18 -0
  284. data/lib/tasks/prototype.rake +31 -0
  285. data/lib/tasks/release.rake +130 -0
  286. data/lib/tasks/rspec.rake +221 -0
  287. data/lib/tasks/translate.rake +59 -0
  288. data/lib/tasks/undefine.rake +28 -0
  289. data/lib/translation_support.rb +54 -0
  290. data/log/.keep +0 -0
  291. data/public/.htaccess +40 -0
  292. data/public/404.html +8 -0
  293. data/public/500.html +8 -0
  294. data/public/dispatch.cgi +10 -0
  295. data/public/dispatch.fcgi +24 -0
  296. data/public/dispatch.rb +10 -0
  297. data/public/favicon.ico +0 -0
  298. data/public/images/admin/add_tab.png +0 -0
  299. data/public/images/admin/avatar_32x32.png +0 -0
  300. data/public/images/admin/avatar_64x64.png +0 -0
  301. data/public/images/admin/avatar_96x96.png +0 -0
  302. data/public/images/admin/brown_bottom_line.gif +0 -0
  303. data/public/images/admin/calendar_down.gif +0 -0
  304. data/public/images/admin/collapse.png +0 -0
  305. data/public/images/admin/draft_page.png +0 -0
  306. data/public/images/admin/expand.png +0 -0
  307. data/public/images/admin/image.png +0 -0
  308. data/public/images/admin/javascript.png +0 -0
  309. data/public/images/admin/layout.png +0 -0
  310. data/public/images/admin/metadata_toggle.png +0 -0
  311. data/public/images/admin/minus.png +0 -0
  312. data/public/images/admin/minus_disabled.png +0 -0
  313. data/public/images/admin/minus_grey.png +0 -0
  314. data/public/images/admin/navigation_secondary_separator.gif +0 -0
  315. data/public/images/admin/page.png +0 -0
  316. data/public/images/admin/plus.png +0 -0
  317. data/public/images/admin/plus_disabled.png +0 -0
  318. data/public/images/admin/plus_grey.png +0 -0
  319. data/public/images/admin/popup_border_background.png +0 -0
  320. data/public/images/admin/popup_border_bottom_left.png +0 -0
  321. data/public/images/admin/popup_border_bottom_right.png +0 -0
  322. data/public/images/admin/popup_border_top_left.png +0 -0
  323. data/public/images/admin/popup_border_top_right.png +0 -0
  324. data/public/images/admin/search.png +0 -0
  325. data/public/images/admin/single_form_shadow.png +0 -0
  326. data/public/images/admin/snippet.png +0 -0
  327. data/public/images/admin/spinner.gif +0 -0
  328. data/public/images/admin/status_background.png +0 -0
  329. data/public/images/admin/status_bottom_left.png +0 -0
  330. data/public/images/admin/status_bottom_right.png +0 -0
  331. data/public/images/admin/status_spinner.gif +0 -0
  332. data/public/images/admin/status_top_left.png +0 -0
  333. data/public/images/admin/status_top_right.png +0 -0
  334. data/public/images/admin/stylesheet.png +0 -0
  335. data/public/images/admin/tab_close.png +0 -0
  336. data/public/images/admin/upload.png +0 -0
  337. data/public/images/admin/virtual_page.png +0 -0
  338. data/public/images/kajam/kajam-badge-color.png +0 -0
  339. data/public/javascripts/admin/application.js +94 -0
  340. data/public/javascripts/admin/codearea.js +165 -0
  341. data/public/javascripts/admin/controls.js +965 -0
  342. data/public/javascripts/admin/cookie.js +80 -0
  343. data/public/javascripts/admin/dateinput.js +402 -0
  344. data/public/javascripts/admin/dragdrop.js +974 -0
  345. data/public/javascripts/admin/dropdown.js +216 -0
  346. data/public/javascripts/admin/effects.js +1122 -0
  347. data/public/javascripts/admin/lowpro.js +340 -0
  348. data/public/javascripts/admin/overrides.js +1 -0
  349. data/public/javascripts/admin/page_preview.js +41 -0
  350. data/public/javascripts/admin/pagefield.js +54 -0
  351. data/public/javascripts/admin/pagestatus.js +17 -0
  352. data/public/javascripts/admin/popup.js +339 -0
  353. data/public/javascripts/admin/prototype.js +4874 -0
  354. data/public/javascripts/admin/ruledtable.js +13 -0
  355. data/public/javascripts/admin/shortcuts.js +27 -0
  356. data/public/javascripts/admin/sitemap.js +149 -0
  357. data/public/javascripts/admin/status.js +233 -0
  358. data/public/javascripts/admin/tabcontrol.js +123 -0
  359. data/public/javascripts/admin/toggle.js +430 -0
  360. data/public/javascripts/admin/utility.js +53 -0
  361. data/public/javascripts/admin/validationerror.js +18 -0
  362. data/public/loading-iframe.html +11 -0
  363. data/public/robots.txt +1 -0
  364. data/public/stylesheets/admin/base.css +1 -0
  365. data/public/stylesheets/admin/main.css +1 -0
  366. data/public/stylesheets/admin/overrides.css +0 -0
  367. data/public/stylesheets/sass/admin/_base.sass +17 -0
  368. data/public/stylesheets/sass/admin/main.sass +27 -0
  369. data/public/stylesheets/sass/admin/modules/_boxes.sass +6 -0
  370. data/public/stylesheets/sass/admin/modules/_links.sass +18 -0
  371. data/public/stylesheets/sass/admin/overrides.sass +2 -0
  372. data/public/stylesheets/sass/admin/partials/_actions.sass +96 -0
  373. data/public/stylesheets/sass/admin/partials/_avatars.sass +10 -0
  374. data/public/stylesheets/sass/admin/partials/_content.sass +58 -0
  375. data/public/stylesheets/sass/admin/partials/_dateinput.sass +62 -0
  376. data/public/stylesheets/sass/admin/partials/_deprecated.sass +55 -0
  377. data/public/stylesheets/sass/admin/partials/_dropdown.sass +28 -0
  378. data/public/stylesheets/sass/admin/partials/_footer.sass +12 -0
  379. data/public/stylesheets/sass/admin/partials/_forms.sass +322 -0
  380. data/public/stylesheets/sass/admin/partials/_header.sass +114 -0
  381. data/public/stylesheets/sass/admin/partials/_index.sass +147 -0
  382. data/public/stylesheets/sass/admin/partials/_layout.sass +10 -0
  383. data/public/stylesheets/sass/admin/partials/_messages.sass +10 -0
  384. data/public/stylesheets/sass/admin/partials/_popup.sass +213 -0
  385. data/public/stylesheets/sass/admin/partials/_tabcontrol.sass +72 -0
  386. data/public/stylesheets/sass/admin/partials/_toolbar.sass +31 -0
  387. data/public/stylesheets/sass/admin/partials/_typography.sass +60 -0
  388. data/public/stylesheets/sass/admin/partials/_validations.sass +19 -0
  389. data/script/about +3 -0
  390. data/script/autospec +5 -0
  391. data/script/breakpointer +3 -0
  392. data/script/console +3 -0
  393. data/script/cucumber +10 -0
  394. data/script/dbconsole +3 -0
  395. data/script/destroy +3 -0
  396. data/script/extension +5 -0
  397. data/script/generate +4 -0
  398. data/script/performance/benchmarker +3 -0
  399. data/script/performance/profiler +3 -0
  400. data/script/performance/request +3 -0
  401. data/script/plugin +3 -0
  402. data/script/process/inspector +3 -0
  403. data/script/process/reaper +3 -0
  404. data/script/process/spawner +3 -0
  405. data/script/process/spinner +3 -0
  406. data/script/runner +3 -0
  407. data/script/server +3 -0
  408. data/script/spec +5 -0
  409. data/script/spec_server +116 -0
  410. data/script/version +5 -0
  411. data/spec/controllers/admin/extensions_controller_spec.rb +36 -0
  412. data/spec/controllers/admin/layouts_controller_spec.rb +102 -0
  413. data/spec/controllers/admin/page_fields_controller_spec.rb +17 -0
  414. data/spec/controllers/admin/pages_controller_spec.rb +341 -0
  415. data/spec/controllers/admin/paginated_controller_spec.rb +26 -0
  416. data/spec/controllers/admin/preferences_controller_spec.rb +57 -0
  417. data/spec/controllers/admin/references_controller_spec.rb +15 -0
  418. data/spec/controllers/admin/snippets_controller_spec.rb +110 -0
  419. data/spec/controllers/admin/users_controller_spec.rb +101 -0
  420. data/spec/controllers/admin/welcome_controller_spec.rb +98 -0
  421. data/spec/controllers/application_controller_spec.rb +88 -0
  422. data/spec/controllers/site_controller_spec.rb +182 -0
  423. data/spec/datasets/config_dataset.rb +13 -0
  424. data/spec/datasets/file_not_found_dataset.rb +22 -0
  425. data/spec/datasets/home_page_dataset.rb +62 -0
  426. data/spec/datasets/layouts_dataset.rb +58 -0
  427. data/spec/datasets/markup_pages_dataset.rb +13 -0
  428. data/spec/datasets/pages_dataset.rb +65 -0
  429. data/spec/datasets/pages_with_layouts_dataset.rb +10 -0
  430. data/spec/datasets/snippets_dataset.rb +38 -0
  431. data/spec/datasets/users_and_pages_dataset.rb +9 -0
  432. data/spec/datasets/users_dataset.rb +56 -0
  433. data/spec/fixtures/bad_settings.rb +5 -0
  434. data/spec/fixtures/example_extension/README +3 -0
  435. data/spec/fixtures/example_extension/Rakefile +120 -0
  436. data/spec/fixtures/example_extension/example_extension.rb +21 -0
  437. data/spec/fixtures/example_extension/lib/tasks/example_extension_tasks.rake +28 -0
  438. data/spec/fixtures/example_extension/spec/spec.opts +6 -0
  439. data/spec/fixtures/example_extension/spec/spec_helper.rb +36 -0
  440. data/spec/fixtures/invalid_config.yml +11 -0
  441. data/spec/fixtures/kajam_config.yml +10 -0
  442. data/spec/fixtures/more_settings.rb +8 -0
  443. data/spec/fixtures/sample.txt +1 -0
  444. data/spec/fixtures/settings.rb +5 -0
  445. data/spec/generators/extension_controller_generator_spec.rb +97 -0
  446. data/spec/generators/extension_generator_spec.rb +237 -0
  447. data/spec/generators/extension_generators_spec_helper.rb +164 -0
  448. data/spec/generators/extension_mailer_generator_spec.rb +62 -0
  449. data/spec/generators/extension_migration_generator_spec.rb +22 -0
  450. data/spec/generators/extension_model_generator_spec.rb +63 -0
  451. data/spec/generators/instance_generator_spec.rb +159 -0
  452. data/spec/helpers/admin/export_helper_spec.rb +4 -0
  453. data/spec/helpers/admin/extensions_helper_spec.rb +4 -0
  454. data/spec/helpers/admin/layouts_helper_spec.rb +4 -0
  455. data/spec/helpers/admin/node_helper_spec.rb +160 -0
  456. data/spec/helpers/admin/pages_helper_spec.rb +66 -0
  457. data/spec/helpers/admin/preferences_helper_spec.rb +11 -0
  458. data/spec/helpers/admin/references_helper_spec.rb +124 -0
  459. data/spec/helpers/admin/regions_helper_spec.rb +47 -0
  460. data/spec/helpers/admin/snippets_helper_spec.rb +4 -0
  461. data/spec/helpers/admin/users_helper_spec.rb +11 -0
  462. data/spec/helpers/admin/welcome_helper_spec.rb +4 -0
  463. data/spec/helpers/application_helper_spec.rb +256 -0
  464. data/spec/helpers/site_helper_spec.rb +4 -0
  465. data/spec/lib/annotatable_spec.rb +86 -0
  466. data/spec/lib/autotest_spec.rb +81 -0
  467. data/spec/lib/core_ext/string_ext_spec.rb +11 -0
  468. data/spec/lib/inheritable_class_attributes_spec.rb +90 -0
  469. data/spec/lib/kajam/admin_ui/nav_tabs_spec.rb +139 -0
  470. data/spec/lib/kajam/admin_ui/region_partials_spec.rb +35 -0
  471. data/spec/lib/kajam/admin_ui/region_set_spec.rb +61 -0
  472. data/spec/lib/kajam/admin_ui_spec.rb +121 -0
  473. data/spec/lib/kajam/available_locales_spec.rb +13 -0
  474. data/spec/lib/kajam/config/definition_spec.rb +160 -0
  475. data/spec/lib/kajam/extension/script_spec.rb +473 -0
  476. data/spec/lib/kajam/extension_loader_spec.rb +271 -0
  477. data/spec/lib/kajam/extension_migrator_spec.rb +65 -0
  478. data/spec/lib/kajam/extension_spec.rb +152 -0
  479. data/spec/lib/kajam/initializer_spec.rb +178 -0
  480. data/spec/lib/kajam/resource_responses_spec.rb +207 -0
  481. data/spec/lib/kajam/taggable_spec.rb +243 -0
  482. data/spec/lib/kajam_spec.rb +30 -0
  483. data/spec/lib/locator_spec.rb +41 -0
  484. data/spec/lib/login_system_spec.rb +201 -0
  485. data/spec/lib/method_observer_spec.rb +48 -0
  486. data/spec/lib/simpleton_spec.rb +45 -0
  487. data/spec/lib/task_support_spec.rb +93 -0
  488. data/spec/lib/translation_support_spec.rb +16 -0
  489. data/spec/matchers/autotest_matchers.rb +47 -0
  490. data/spec/matchers/generator_matchers.rb +235 -0
  491. data/spec/matchers/login_system_matcher.rb +79 -0
  492. data/spec/matchers/render_form_errors_matcher.rb +62 -0
  493. data/spec/matchers/render_matcher.rb +133 -0
  494. data/spec/models/deprecated_tags_spec.rb +124 -0
  495. data/spec/models/file_not_found_page_spec.rb +35 -0
  496. data/spec/models/kajam/config_spec.rb +149 -0
  497. data/spec/models/layout_spec.rb +29 -0
  498. data/spec/models/page_context_spec.rb +66 -0
  499. data/spec/models/page_part_spec.rb +60 -0
  500. data/spec/models/page_spec.rb +700 -0
  501. data/spec/models/snippet_spec.rb +59 -0
  502. data/spec/models/standard_tags_spec.rb +1183 -0
  503. data/spec/models/status_spec.rb +64 -0
  504. data/spec/models/text_filter_spec.rb +44 -0
  505. data/spec/models/user_action_observer_spec.rb +34 -0
  506. data/spec/models/user_spec.rb +202 -0
  507. data/spec/rcov.opts +2 -0
  508. data/spec/spec.opts +4 -0
  509. data/spec/spec_helper.rb +84 -0
  510. data/test/fixtures/extensions/basic/app/controllers/basic_extension_controller.rb +7 -0
  511. data/test/fixtures/extensions/basic/app/metal/basic_metal.rb +9 -0
  512. data/test/fixtures/extensions/basic/app/models/basic_extension_mailer.rb +4 -0
  513. data/test/fixtures/extensions/basic/app/models/basic_extension_model.rb +2 -0
  514. data/test/fixtures/extensions/basic/app/views/basic_extension/index.html.erb +1 -0
  515. data/test/fixtures/extensions/basic/app/views/basic_extension/override.html.erb +1 -0
  516. data/test/fixtures/extensions/basic/app/views/basic_extension_mailer/message.text.html.erb +1 -0
  517. data/test/fixtures/extensions/basic/basic_extension.rb +11 -0
  518. data/test/fixtures/extensions/basic/config/routes.rb +3 -0
  519. data/test/fixtures/extensions/basic/db/migrate/200812131420_create_initial_schema.rb +10 -0
  520. data/test/fixtures/extensions/basic/db/migrate/200812131421_modify_initial_schema.rb +10 -0
  521. data/test/fixtures/extensions/basic/lib/new_module.rb +2 -0
  522. data/test/fixtures/extensions/basic/vendor/plugins/multiple/init.rb +1 -0
  523. data/test/fixtures/extensions/basic/vendor/plugins/multiple/lib/multiple.rb +2 -0
  524. data/test/fixtures/extensions/basic/vendor/plugins/plugin_normal/init.rb +1 -0
  525. data/test/fixtures/extensions/basic/vendor/plugins/plugin_normal/lib/normal_plugin.rb +2 -0
  526. data/test/fixtures/extensions/load_order_blue/load_order_blue_extension.rb +8 -0
  527. data/test/fixtures/extensions/load_order_green/load_order_green_extension.rb +8 -0
  528. data/test/fixtures/extensions/load_order_red/load_order_red_extension.rb +8 -0
  529. data/test/fixtures/extensions/locale/config/locales/en-uk.yml +3 -0
  530. data/test/fixtures/extensions/locale/config/locales/en.yml +3 -0
  531. data/test/fixtures/extensions/locale/locale_extension.rb +5 -0
  532. data/test/fixtures/extensions/overriding/app/metal/basic_metal.rb +9 -0
  533. data/test/fixtures/extensions/overriding/app/views/basic_extension/override.html.erb +1 -0
  534. data/test/fixtures/extensions/overriding/overriding_extension.rb +8 -0
  535. data/test/fixtures/extensions/overriding/vendor/plugins/multiple/init.rb +1 -0
  536. data/test/fixtures/extensions/overriding/vendor/plugins/multiple/lib/multiple.rb +2 -0
  537. data/test/fixtures/extensions/replacing/db/migrate/200812131420_create_initial_schema.rb +10 -0
  538. data/test/fixtures/extensions/replacing/db/migrate/201106021232_further_modify_schema.rb +7 -0
  539. data/test/fixtures/extensions/replacing/replacing_extension.rb +3 -0
  540. data/test/fixtures/extensions/routed/config/routes.rb +1 -0
  541. data/test/fixtures/extensions/routed/routed_extension.rb +2 -0
  542. data/test/fixtures/extensions/special_characters/db/migrate/001_create_initial_schema.rb +10 -0
  543. data/test/fixtures/extensions/special_characters/special_characters_extension.rb +3 -0
  544. data/test/fixtures/extensions/unrouted/unrouted_extension.rb +2 -0
  545. data/test/fixtures/extensions/upgrading/db/migrate/01_first.rb +7 -0
  546. data/test/fixtures/extensions/upgrading/db/migrate/02_second.rb +7 -0
  547. data/test/fixtures/extensions/upgrading/db/migrate/03_pending.rb +7 -0
  548. data/test/fixtures/extensions/upgrading/db/migrate/04_dont_run.rb +7 -0
  549. data/test/fixtures/extensions/upgrading/upgrading_extension.rb +2 -0
  550. data/test/fixtures/gems/kajam-gem_ext-extension-0.0.0/app/views/dummy.haml +0 -0
  551. data/test/fixtures/gems/kajam-gem_ext-extension-0.0.0/gem_ext_extension.rb +2 -0
  552. data/test/fixtures/gems/kajam-gem_ext-extension-0.0.0/lib/gem_ext.rb +3 -0
  553. data/test/fixtures/gems/misnamed_ext-0.0.0/misnamed_ext_extension.rb +2 -0
  554. data/test/helpers/page_test_helper.rb +79 -0
  555. data/test/helpers/render_test_helper.rb +60 -0
  556. data/test/helpers/user_test_helper.rb +35 -0
  557. data/test/helpers/validation_test_helper.rb +42 -0
  558. data/test/test_helper.rb +64 -0
  559. data/vendor/extensions/debug/README +3 -0
  560. data/vendor/extensions/debug/Rakefile +136 -0
  561. data/vendor/extensions/debug/app/models/env_dump_page.rb +17 -0
  562. data/vendor/extensions/debug/config/locales/en.yml +3 -0
  563. data/vendor/extensions/debug/config/routes.rb +5 -0
  564. data/vendor/extensions/debug/debug_extension.rb +11 -0
  565. data/vendor/extensions/debug/lib/tasks/debug_extension_tasks.rake +55 -0
  566. data/vendor/extensions/debug/spec/models/env_dump_page_spec.rb +18 -0
  567. data/vendor/extensions/debug/spec/spec.opts +6 -0
  568. data/vendor/extensions/debug/spec/spec_helper.rb +36 -0
  569. data/vendor/extensions/exporter/README +5 -0
  570. data/vendor/extensions/exporter/Rakefile +116 -0
  571. data/vendor/extensions/exporter/app/controllers/admin/export_controller.rb +5 -0
  572. data/vendor/extensions/exporter/app/models/kajam/exporter.rb +41 -0
  573. data/vendor/extensions/exporter/config/locales/en.yml +3 -0
  574. data/vendor/extensions/exporter/config/routes.rb +6 -0
  575. data/vendor/extensions/exporter/cucumber.yml +1 -0
  576. data/vendor/extensions/exporter/exporter_extension.rb +8 -0
  577. data/vendor/extensions/exporter/features/support/env.rb +16 -0
  578. data/vendor/extensions/exporter/features/support/paths.rb +14 -0
  579. data/vendor/extensions/exporter/lib/tasks/exporter_extension_tasks.rake +55 -0
  580. data/vendor/extensions/exporter/spec/controllers/admin/export_controller_spec.rb +16 -0
  581. data/vendor/extensions/exporter/spec/models/kajam/exporter_spec.rb +29 -0
  582. data/vendor/extensions/exporter/spec/spec.opts +6 -0
  583. data/vendor/extensions/exporter/spec/spec_helper.rb +36 -0
  584. data/vendor/extensions/site_templates/README +3 -0
  585. data/vendor/extensions/site_templates/Rakefile +136 -0
  586. data/vendor/extensions/site_templates/db/templates/empty.yml +2 -0
  587. data/vendor/extensions/site_templates/db/templates/roasters.yml +7826 -0
  588. data/vendor/extensions/site_templates/db/templates/simple-blog.yml +251 -0
  589. data/vendor/extensions/site_templates/db/templates/styled-blog.yml +532 -0
  590. data/vendor/extensions/site_templates/lib/tasks/site_templates_extension_tasks.rake +55 -0
  591. data/vendor/extensions/site_templates/public/images/roasters/banner.jpg +0 -0
  592. data/vendor/extensions/site_templates/public/images/roasters/closelabel.gif +0 -0
  593. data/vendor/extensions/site_templates/public/images/roasters/comment.png +0 -0
  594. data/vendor/extensions/site_templates/public/images/roasters/gallery1.jpg +0 -0
  595. data/vendor/extensions/site_templates/public/images/roasters/gallery2.jpg +0 -0
  596. data/vendor/extensions/site_templates/public/images/roasters/gallery3.jpg +0 -0
  597. data/vendor/extensions/site_templates/public/images/roasters/gallery4.jpg +0 -0
  598. data/vendor/extensions/site_templates/public/images/roasters/gift.gif +0 -0
  599. data/vendor/extensions/site_templates/public/images/roasters/green.gif +0 -0
  600. data/vendor/extensions/site_templates/public/images/roasters/nav-background.gif +0 -0
  601. data/vendor/extensions/site_templates/public/images/roasters/nav-divider.gif +0 -0
  602. data/vendor/extensions/site_templates/public/images/roasters/nextlabel.gif +0 -0
  603. data/vendor/extensions/site_templates/public/images/roasters/open.gif +0 -0
  604. data/vendor/extensions/site_templates/public/images/roasters/preview-1.jpg +0 -0
  605. data/vendor/extensions/site_templates/public/images/roasters/preview.jpg +0 -0
  606. data/vendor/extensions/site_templates/public/images/roasters/prevlabel.gif +0 -0
  607. data/vendor/extensions/site_templates/public/images/roasters/prize.gif +0 -0
  608. data/vendor/extensions/site_templates/public/images/roasters/recycle.gif +0 -0
  609. data/vendor/extensions/site_templates/public/images/roasters/rss.gif +0 -0
  610. data/vendor/extensions/site_templates/public/images/roasters/thumb-grinder.jpg +0 -0
  611. data/vendor/extensions/site_templates/public/images/roasters/thumb-grower.jpg +0 -0
  612. data/vendor/extensions/site_templates/public/images/roasters/thumb-roaster.jpg +0 -0
  613. data/vendor/extensions/site_templates/public/images/roasters/truck.gif +0 -0
  614. data/vendor/extensions/site_templates/site_templates_extension.rb +8 -0
  615. data/vendor/extensions/textile_filter/README +1 -0
  616. data/vendor/extensions/textile_filter/Rakefile +120 -0
  617. data/vendor/extensions/textile_filter/lib/tasks/textile_filter_extension_tasks.rake +0 -0
  618. data/vendor/extensions/textile_filter/lib/textile_filter.rb +6 -0
  619. data/vendor/extensions/textile_filter/lib/textile_tags.rb +24 -0
  620. data/vendor/extensions/textile_filter/spec/models/textile_filter_spec.rb +19 -0
  621. data/vendor/extensions/textile_filter/spec/spec.opts +6 -0
  622. data/vendor/extensions/textile_filter/spec/spec_helper.rb +36 -0
  623. data/vendor/extensions/textile_filter/test/test_helper.rb +19 -0
  624. data/vendor/extensions/textile_filter/test/unit/textile_filter_test.rb +13 -0
  625. data/vendor/extensions/textile_filter/textile.html +115 -0
  626. data/vendor/extensions/textile_filter/textile_filter_extension.rb +10 -0
  627. data/vendor/highline/CHANGELOG +222 -0
  628. data/vendor/highline/INSTALL +35 -0
  629. data/vendor/highline/LICENSE +7 -0
  630. data/vendor/highline/README +63 -0
  631. data/vendor/highline/Rakefile +82 -0
  632. data/vendor/highline/TODO +6 -0
  633. data/vendor/highline/examples/ansi_colors.rb +38 -0
  634. data/vendor/highline/examples/asking_for_arrays.rb +18 -0
  635. data/vendor/highline/examples/basic_usage.rb +75 -0
  636. data/vendor/highline/examples/color_scheme.rb +32 -0
  637. data/vendor/highline/examples/limit.rb +12 -0
  638. data/vendor/highline/examples/menus.rb +65 -0
  639. data/vendor/highline/examples/overwrite.rb +19 -0
  640. data/vendor/highline/examples/page_and_wrap.rb +322 -0
  641. data/vendor/highline/examples/password.rb +7 -0
  642. data/vendor/highline/examples/trapping_eof.rb +22 -0
  643. data/vendor/highline/examples/using_readline.rb +17 -0
  644. data/vendor/highline/lib/highline.rb +758 -0
  645. data/vendor/highline/lib/highline/color_scheme.rb +120 -0
  646. data/vendor/highline/lib/highline/compatibility.rb +17 -0
  647. data/vendor/highline/lib/highline/import.rb +43 -0
  648. data/vendor/highline/lib/highline/menu.rb +395 -0
  649. data/vendor/highline/lib/highline/question.rb +463 -0
  650. data/vendor/highline/lib/highline/system_extensions.rb +193 -0
  651. data/vendor/highline/setup.rb +1360 -0
  652. data/vendor/highline/test/tc_color_scheme.rb +56 -0
  653. data/vendor/highline/test/tc_highline.rb +823 -0
  654. data/vendor/highline/test/tc_import.rb +54 -0
  655. data/vendor/highline/test/tc_menu.rb +429 -0
  656. data/vendor/highline/test/ts_all.rb +15 -0
  657. data/vendor/plugins/acts_as_tree/README +26 -0
  658. data/vendor/plugins/acts_as_tree/Rakefile +22 -0
  659. data/vendor/plugins/acts_as_tree/init.rb +1 -0
  660. data/vendor/plugins/acts_as_tree/lib/active_record/acts/tree.rb +96 -0
  661. data/vendor/plugins/acts_as_tree/test/abstract_unit.rb +0 -0
  662. data/vendor/plugins/acts_as_tree/test/acts_as_tree_test.rb +219 -0
  663. data/vendor/plugins/acts_as_tree/test/database.yml +0 -0
  664. data/vendor/plugins/acts_as_tree/test/fixtures/mixin.rb +0 -0
  665. data/vendor/plugins/acts_as_tree/test/fixtures/mixins.yml +0 -0
  666. data/vendor/plugins/acts_as_tree/test/schema.rb +0 -0
  667. data/vendor/plugins/dataset/CHANGELOG +59 -0
  668. data/vendor/plugins/dataset/LICENSE +19 -0
  669. data/vendor/plugins/dataset/README +111 -0
  670. data/vendor/plugins/dataset/Rakefile +31 -0
  671. data/vendor/plugins/dataset/TODO +15 -0
  672. data/vendor/plugins/dataset/VERSION.yml +4 -0
  673. data/vendor/plugins/dataset/dataset.gemspec +33 -0
  674. data/vendor/plugins/dataset/lib/dataset.rb +128 -0
  675. data/vendor/plugins/dataset/lib/dataset/base.rb +157 -0
  676. data/vendor/plugins/dataset/lib/dataset/collection.rb +19 -0
  677. data/vendor/plugins/dataset/lib/dataset/database/base.rb +30 -0
  678. data/vendor/plugins/dataset/lib/dataset/database/mysql.rb +34 -0
  679. data/vendor/plugins/dataset/lib/dataset/database/postgresql.rb +34 -0
  680. data/vendor/plugins/dataset/lib/dataset/database/sqlite3.rb +32 -0
  681. data/vendor/plugins/dataset/lib/dataset/extensions/cucumber.rb +21 -0
  682. data/vendor/plugins/dataset/lib/dataset/extensions/rspec.rb +21 -0
  683. data/vendor/plugins/dataset/lib/dataset/extensions/test_unit.rb +60 -0
  684. data/vendor/plugins/dataset/lib/dataset/instance_methods.rb +10 -0
  685. data/vendor/plugins/dataset/lib/dataset/load.rb +37 -0
  686. data/vendor/plugins/dataset/lib/dataset/record/fixture.rb +73 -0
  687. data/vendor/plugins/dataset/lib/dataset/record/meta.rb +66 -0
  688. data/vendor/plugins/dataset/lib/dataset/record/model.rb +50 -0
  689. data/vendor/plugins/dataset/lib/dataset/resolver.rb +110 -0
  690. data/vendor/plugins/dataset/lib/dataset/session.rb +35 -0
  691. data/vendor/plugins/dataset/lib/dataset/session_binding.rb +307 -0
  692. data/vendor/plugins/dataset/lib/dataset/version.rb +9 -0
  693. data/vendor/plugins/dataset/plugit/descriptor.rb +25 -0
  694. data/vendor/plugins/dataset/spec/dataset/cucumber_spec.rb +54 -0
  695. data/vendor/plugins/dataset/spec/dataset/database/base_spec.rb +21 -0
  696. data/vendor/plugins/dataset/spec/dataset/record/meta_spec.rb +14 -0
  697. data/vendor/plugins/dataset/spec/dataset/resolver_spec.rb +110 -0
  698. data/vendor/plugins/dataset/spec/dataset/rspec_spec.rb +133 -0
  699. data/vendor/plugins/dataset/spec/dataset/session_binding_spec.rb +198 -0
  700. data/vendor/plugins/dataset/spec/dataset/session_spec.rb +299 -0
  701. data/vendor/plugins/dataset/spec/dataset/test_unit_spec.rb +210 -0
  702. data/vendor/plugins/dataset/spec/fixtures/datasets/constant_not_defined.rb +0 -0
  703. data/vendor/plugins/dataset/spec/fixtures/datasets/ending_with_dataset.rb +2 -0
  704. data/vendor/plugins/dataset/spec/fixtures/datasets/exact_name.rb +2 -0
  705. data/vendor/plugins/dataset/spec/fixtures/datasets/not_a_dataset_base.rb +2 -0
  706. data/vendor/plugins/dataset/spec/fixtures/more_datasets/in_another_directory.rb +2 -0
  707. data/vendor/plugins/dataset/spec/models.rb +18 -0
  708. data/vendor/plugins/dataset/spec/schema.rb +26 -0
  709. data/vendor/plugins/dataset/spec/spec.opts +7 -0
  710. data/vendor/plugins/dataset/spec/spec_helper.rb +47 -0
  711. data/vendor/plugins/dataset/spec/stubs/mini_rails.rb +18 -0
  712. data/vendor/plugins/dataset/spec/stubs/test_help.rb +1 -0
  713. data/vendor/plugins/dataset/tasks/dataset.rake +19 -0
  714. data/vendor/radius/CHANGELOG +33 -0
  715. data/vendor/radius/LICENSE +19 -0
  716. data/vendor/radius/QUICKSTART.rdoc +322 -0
  717. data/vendor/radius/README.rdoc +102 -0
  718. data/vendor/radius/Rakefile +8 -0
  719. data/vendor/radius/VERSION +1 -0
  720. data/vendor/radius/lib/radius.rb +10 -0
  721. data/vendor/radius/lib/radius/context.rb +139 -0
  722. data/vendor/radius/lib/radius/delegating_open_struct.rb +31 -0
  723. data/vendor/radius/lib/radius/error.rb +43 -0
  724. data/vendor/radius/lib/radius/parse_tag.rb +24 -0
  725. data/vendor/radius/lib/radius/parser.rb +65 -0
  726. data/vendor/radius/lib/radius/parser/scan.rb +678 -0
  727. data/vendor/radius/lib/radius/parser/scan.rl +124 -0
  728. data/vendor/radius/lib/radius/tag_binding.rb +71 -0
  729. data/vendor/radius/lib/radius/tag_definitions.rb +78 -0
  730. data/vendor/radius/lib/radius/utility.rb +30 -0
  731. data/vendor/radius/lib/radius/version.rb +8 -0
  732. data/vendor/radius/radius.gemspec +71 -0
  733. data/vendor/radius/tasks/jeweler.rake +21 -0
  734. data/vendor/radius/tasks/rdoc.rake +13 -0
  735. data/vendor/radius/tasks/scan.rake +27 -0
  736. data/vendor/radius/tasks/test.rake +7 -0
  737. data/vendor/radius/test/context_test.rb +61 -0
  738. data/vendor/radius/test/parser_test.rb +295 -0
  739. data/vendor/radius/test/quickstart_test.rb +153 -0
  740. data/vendor/radius/test/test_helper.rb +29 -0
  741. data/vendor/rails/Rakefile +83 -0
  742. data/vendor/rails/actionmailer/CHANGELOG +387 -0
  743. data/vendor/rails/actionmailer/MIT-LICENSE +21 -0
  744. data/vendor/rails/actionmailer/README +149 -0
  745. data/vendor/rails/actionmailer/Rakefile +99 -0
  746. data/vendor/rails/actionmailer/install.rb +30 -0
  747. data/vendor/rails/actionmailer/lib/action_mailer.rb +62 -0
  748. data/vendor/rails/actionmailer/lib/action_mailer/adv_attr_accessor.rb +30 -0
  749. data/vendor/rails/actionmailer/lib/action_mailer/base.rb +739 -0
  750. data/vendor/rails/actionmailer/lib/action_mailer/helpers.rb +113 -0
  751. data/vendor/rails/actionmailer/lib/action_mailer/mail_helper.rb +17 -0
  752. data/vendor/rails/actionmailer/lib/action_mailer/part.rb +107 -0
  753. data/vendor/rails/actionmailer/lib/action_mailer/part_container.rb +55 -0
  754. data/vendor/rails/actionmailer/lib/action_mailer/quoting.rb +62 -0
  755. data/vendor/rails/actionmailer/lib/action_mailer/test_case.rb +64 -0
  756. data/vendor/rails/actionmailer/lib/action_mailer/test_helper.rb +68 -0
  757. data/vendor/rails/actionmailer/lib/action_mailer/utils.rb +7 -0
  758. data/vendor/rails/actionmailer/lib/action_mailer/vendor/text-format-0.6.3/text/format.rb +1466 -0
  759. data/vendor/rails/actionmailer/lib/action_mailer/vendor/text_format.rb +10 -0
  760. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail.rb +6 -0
  761. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/Makefile +18 -0
  762. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/address.rb +392 -0
  763. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/attachments.rb +65 -0
  764. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/base64.rb +46 -0
  765. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/compat.rb +41 -0
  766. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/config.rb +67 -0
  767. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/core_extensions.rb +63 -0
  768. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/encode.rb +590 -0
  769. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/header.rb +962 -0
  770. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/index.rb +9 -0
  771. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/interface.rb +1162 -0
  772. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/loader.rb +3 -0
  773. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/mail.rb +578 -0
  774. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/mailbox.rb +496 -0
  775. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/main.rb +6 -0
  776. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/mbox.rb +3 -0
  777. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/net.rb +250 -0
  778. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/obsolete.rb +132 -0
  779. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/parser.rb +1060 -0
  780. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/parser.y +416 -0
  781. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/port.rb +379 -0
  782. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/quoting.rb +164 -0
  783. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/require_arch.rb +58 -0
  784. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/scanner.rb +49 -0
  785. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/scanner_r.rb +262 -0
  786. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/stringio.rb +280 -0
  787. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/utils.rb +362 -0
  788. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/COPYING +504 -0
  789. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/README +12 -0
  790. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet.rb +67 -0
  791. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/big5freq.rb +927 -0
  792. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/big5prober.rb +42 -0
  793. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/chardistribution.rb +238 -0
  794. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/charsetgroupprober.rb +112 -0
  795. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/charsetprober.rb +75 -0
  796. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/codingstatemachine.rb +64 -0
  797. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/constants.rb +42 -0
  798. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/escprober.rb +89 -0
  799. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/escsm.rb +244 -0
  800. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/eucjpprober.rb +88 -0
  801. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/euckrfreq.rb +596 -0
  802. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/euckrprober.rb +42 -0
  803. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/euctwfreq.rb +430 -0
  804. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/euctwprober.rb +42 -0
  805. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/gb2312freq.rb +474 -0
  806. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/gb2312prober.rb +42 -0
  807. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/hebrewprober.rb +289 -0
  808. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/jisfreq.rb +570 -0
  809. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/jpcntx.rb +229 -0
  810. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/langbulgarianmodel.rb +229 -0
  811. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/langcyrillicmodel.rb +330 -0
  812. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/langgreekmodel.rb +227 -0
  813. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/langhebrewmodel.rb +202 -0
  814. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/langhungarianmodel.rb +226 -0
  815. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/langthaimodel.rb +201 -0
  816. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/latin1prober.rb +147 -0
  817. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/mbcharsetprober.rb +89 -0
  818. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/mbcsgroupprober.rb +45 -0
  819. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/mbcssm.rb +542 -0
  820. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/sbcharsetprober.rb +124 -0
  821. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/sbcsgroupprober.rb +56 -0
  822. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/sjisprober.rb +88 -0
  823. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/universaldetector.rb +168 -0
  824. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/utf8prober.rb +87 -0
  825. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/version.rb +39 -0
  826. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail.rb +17 -0
  827. data/vendor/rails/actionmailer/lib/action_mailer/version.rb +9 -0
  828. data/vendor/rails/actionmailer/lib/actionmailer.rb +2 -0
  829. data/vendor/rails/actionmailer/test/abstract_unit.rb +62 -0
  830. data/vendor/rails/actionmailer/test/asset_host_test.rb +54 -0
  831. data/vendor/rails/actionmailer/test/delivery_method_test.rb +51 -0
  832. data/vendor/rails/actionmailer/test/fixtures/asset_host_mailer/email_with_asset.html.erb +1 -0
  833. data/vendor/rails/actionmailer/test/fixtures/auto_layout_mailer/hello.html.erb +1 -0
  834. data/vendor/rails/actionmailer/test/fixtures/auto_layout_mailer/multipart.text.html.erb +1 -0
  835. data/vendor/rails/actionmailer/test/fixtures/auto_layout_mailer/multipart.text.plain.erb +1 -0
  836. data/vendor/rails/actionmailer/test/fixtures/explicit_layout_mailer/logout.html.erb +1 -0
  837. data/vendor/rails/actionmailer/test/fixtures/explicit_layout_mailer/signup.html.erb +1 -0
  838. data/vendor/rails/actionmailer/test/fixtures/first_mailer/share.erb +1 -0
  839. data/vendor/rails/actionmailer/test/fixtures/helper_mailer/use_example_helper.erb +1 -0
  840. data/vendor/rails/actionmailer/test/fixtures/helper_mailer/use_helper.erb +1 -0
  841. data/vendor/rails/actionmailer/test/fixtures/helper_mailer/use_helper_method.erb +1 -0
  842. data/vendor/rails/actionmailer/test/fixtures/helper_mailer/use_mail_helper.erb +5 -0
  843. data/vendor/rails/actionmailer/test/fixtures/helpers/example_helper.rb +5 -0
  844. data/vendor/rails/actionmailer/test/fixtures/layouts/auto_layout_mailer.html.erb +1 -0
  845. data/vendor/rails/actionmailer/test/fixtures/layouts/auto_layout_mailer.text.erb +1 -0
  846. data/vendor/rails/actionmailer/test/fixtures/layouts/spam.html.erb +1 -0
  847. data/vendor/rails/actionmailer/test/fixtures/path.with.dots/funky_path_mailer/multipart_with_template_path_with_dots.erb +1 -0
  848. data/vendor/rails/actionmailer/test/fixtures/raw_email +14 -0
  849. data/vendor/rails/actionmailer/test/fixtures/raw_email10 +20 -0
  850. data/vendor/rails/actionmailer/test/fixtures/raw_email12 +32 -0
  851. data/vendor/rails/actionmailer/test/fixtures/raw_email13 +29 -0
  852. data/vendor/rails/actionmailer/test/fixtures/raw_email2 +114 -0
  853. data/vendor/rails/actionmailer/test/fixtures/raw_email3 +70 -0
  854. data/vendor/rails/actionmailer/test/fixtures/raw_email4 +59 -0
  855. data/vendor/rails/actionmailer/test/fixtures/raw_email5 +19 -0
  856. data/vendor/rails/actionmailer/test/fixtures/raw_email6 +20 -0
  857. data/vendor/rails/actionmailer/test/fixtures/raw_email7 +66 -0
  858. data/vendor/rails/actionmailer/test/fixtures/raw_email8 +47 -0
  859. data/vendor/rails/actionmailer/test/fixtures/raw_email9 +28 -0
  860. data/vendor/rails/actionmailer/test/fixtures/raw_email_quoted_with_0d0a +14 -0
  861. data/vendor/rails/actionmailer/test/fixtures/raw_email_with_invalid_characters_in_content_type +104 -0
  862. data/vendor/rails/actionmailer/test/fixtures/raw_email_with_nested_attachment +100 -0
  863. data/vendor/rails/actionmailer/test/fixtures/raw_email_with_partially_quoted_subject +14 -0
  864. data/vendor/rails/actionmailer/test/fixtures/second_mailer/share.erb +1 -0
  865. data/vendor/rails/actionmailer/test/fixtures/templates/signed_up.erb +3 -0
  866. data/vendor/rails/actionmailer/test/fixtures/test_mailer/_subtemplate.text.plain.erb +1 -0
  867. data/vendor/rails/actionmailer/test/fixtures/test_mailer/body_ivar.erb +2 -0
  868. data/vendor/rails/actionmailer/test/fixtures/test_mailer/custom_templating_extension.text.html.haml +6 -0
  869. data/vendor/rails/actionmailer/test/fixtures/test_mailer/custom_templating_extension.text.plain.haml +6 -0
  870. data/vendor/rails/actionmailer/test/fixtures/test_mailer/implicitly_multipart_example.ignored.erb +1 -0
  871. data/vendor/rails/actionmailer/test/fixtures/test_mailer/implicitly_multipart_example.rhtml.bak +1 -0
  872. data/vendor/rails/actionmailer/test/fixtures/test_mailer/implicitly_multipart_example.text.html.erb +10 -0
  873. data/vendor/rails/actionmailer/test/fixtures/test_mailer/implicitly_multipart_example.text.html.erb~ +10 -0
  874. data/vendor/rails/actionmailer/test/fixtures/test_mailer/implicitly_multipart_example.text.plain.erb +2 -0
  875. data/vendor/rails/actionmailer/test/fixtures/test_mailer/implicitly_multipart_example.text.yaml.erb +1 -0
  876. data/vendor/rails/actionmailer/test/fixtures/test_mailer/included_subtemplate.text.plain.erb +1 -0
  877. data/vendor/rails/actionmailer/test/fixtures/test_mailer/rxml_template.builder +2 -0
  878. data/vendor/rails/actionmailer/test/fixtures/test_mailer/rxml_template.rxml +2 -0
  879. data/vendor/rails/actionmailer/test/fixtures/test_mailer/signed_up.html.erb +3 -0
  880. data/vendor/rails/actionmailer/test/fixtures/test_mailer/signed_up_with_url.erb +5 -0
  881. data/vendor/rails/actionmailer/test/mail_helper_test.rb +95 -0
  882. data/vendor/rails/actionmailer/test/mail_layout_test.rb +123 -0
  883. data/vendor/rails/actionmailer/test/mail_render_test.rb +116 -0
  884. data/vendor/rails/actionmailer/test/mail_service_test.rb +1145 -0
  885. data/vendor/rails/actionmailer/test/quoting_test.rb +105 -0
  886. data/vendor/rails/actionmailer/test/test_helper_test.rb +129 -0
  887. data/vendor/rails/actionmailer/test/tmail_test.rb +22 -0
  888. data/vendor/rails/actionmailer/test/url_test.rb +76 -0
  889. data/vendor/rails/actionpack/CHANGELOG +5250 -0
  890. data/vendor/rails/actionpack/MIT-LICENSE +21 -0
  891. data/vendor/rails/actionpack/README +409 -0
  892. data/vendor/rails/actionpack/RUNNING_UNIT_TESTS +24 -0
  893. data/vendor/rails/actionpack/Rakefile +160 -0
  894. data/vendor/rails/actionpack/install.rb +30 -0
  895. data/vendor/rails/actionpack/lib/action_controller.rb +113 -0
  896. data/vendor/rails/actionpack/lib/action_controller/assertions/dom_assertions.rb +55 -0
  897. data/vendor/rails/actionpack/lib/action_controller/assertions/model_assertions.rb +21 -0
  898. data/vendor/rails/actionpack/lib/action_controller/assertions/response_assertions.rb +169 -0
  899. data/vendor/rails/actionpack/lib/action_controller/assertions/routing_assertions.rb +146 -0
  900. data/vendor/rails/actionpack/lib/action_controller/assertions/selector_assertions.rb +638 -0
  901. data/vendor/rails/actionpack/lib/action_controller/assertions/tag_assertions.rb +127 -0
  902. data/vendor/rails/actionpack/lib/action_controller/base.rb +1425 -0
  903. data/vendor/rails/actionpack/lib/action_controller/benchmarking.rb +107 -0
  904. data/vendor/rails/actionpack/lib/action_controller/caching.rb +71 -0
  905. data/vendor/rails/actionpack/lib/action_controller/caching/actions.rb +177 -0
  906. data/vendor/rails/actionpack/lib/action_controller/caching/fragments.rb +120 -0
  907. data/vendor/rails/actionpack/lib/action_controller/caching/pages.rb +152 -0
  908. data/vendor/rails/actionpack/lib/action_controller/caching/sweeper.rb +45 -0
  909. data/vendor/rails/actionpack/lib/action_controller/caching/sweeping.rb +55 -0
  910. data/vendor/rails/actionpack/lib/action_controller/cgi_ext.rb +15 -0
  911. data/vendor/rails/actionpack/lib/action_controller/cgi_ext/cookie.rb +112 -0
  912. data/vendor/rails/actionpack/lib/action_controller/cgi_ext/query_extension.rb +22 -0
  913. data/vendor/rails/actionpack/lib/action_controller/cgi_ext/stdinput.rb +24 -0
  914. data/vendor/rails/actionpack/lib/action_controller/cgi_process.rb +77 -0
  915. data/vendor/rails/actionpack/lib/action_controller/cookies.rb +197 -0
  916. data/vendor/rails/actionpack/lib/action_controller/dispatcher.rb +133 -0
  917. data/vendor/rails/actionpack/lib/action_controller/failsafe.rb +87 -0
  918. data/vendor/rails/actionpack/lib/action_controller/filters.rb +680 -0
  919. data/vendor/rails/actionpack/lib/action_controller/flash.rb +213 -0
  920. data/vendor/rails/actionpack/lib/action_controller/headers.rb +33 -0
  921. data/vendor/rails/actionpack/lib/action_controller/helpers.rb +225 -0
  922. data/vendor/rails/actionpack/lib/action_controller/http_authentication.rb +309 -0
  923. data/vendor/rails/actionpack/lib/action_controller/integration.rb +708 -0
  924. data/vendor/rails/actionpack/lib/action_controller/layout.rb +286 -0
  925. data/vendor/rails/actionpack/lib/action_controller/middleware_stack.rb +119 -0
  926. data/vendor/rails/actionpack/lib/action_controller/middlewares.rb +14 -0
  927. data/vendor/rails/actionpack/lib/action_controller/mime_responds.rb +193 -0
  928. data/vendor/rails/actionpack/lib/action_controller/mime_type.rb +212 -0
  929. data/vendor/rails/actionpack/lib/action_controller/mime_types.rb +21 -0
  930. data/vendor/rails/actionpack/lib/action_controller/params_parser.rb +77 -0
  931. data/vendor/rails/actionpack/lib/action_controller/performance_test.rb +15 -0
  932. data/vendor/rails/actionpack/lib/action_controller/polymorphic_routes.rb +189 -0
  933. data/vendor/rails/actionpack/lib/action_controller/rack_lint_patch.rb +36 -0
  934. data/vendor/rails/actionpack/lib/action_controller/record_identifier.rb +104 -0
  935. data/vendor/rails/actionpack/lib/action_controller/reloader.rb +54 -0
  936. data/vendor/rails/actionpack/lib/action_controller/request.rb +493 -0
  937. data/vendor/rails/actionpack/lib/action_controller/request_forgery_protection.rb +116 -0
  938. data/vendor/rails/actionpack/lib/action_controller/rescue.rb +183 -0
  939. data/vendor/rails/actionpack/lib/action_controller/resources.rb +682 -0
  940. data/vendor/rails/actionpack/lib/action_controller/response.rb +236 -0
  941. data/vendor/rails/actionpack/lib/action_controller/routing.rb +388 -0
  942. data/vendor/rails/actionpack/lib/action_controller/routing/builder.rb +197 -0
  943. data/vendor/rails/actionpack/lib/action_controller/routing/optimisations.rb +130 -0
  944. data/vendor/rails/actionpack/lib/action_controller/routing/recognition_optimisation.rb +167 -0
  945. data/vendor/rails/actionpack/lib/action_controller/routing/route.rb +265 -0
  946. data/vendor/rails/actionpack/lib/action_controller/routing/route_set.rb +503 -0
  947. data/vendor/rails/actionpack/lib/action_controller/routing/routing_ext.rb +49 -0
  948. data/vendor/rails/actionpack/lib/action_controller/routing/segments.rb +343 -0
  949. data/vendor/rails/actionpack/lib/action_controller/session/abstract_store.rb +275 -0
  950. data/vendor/rails/actionpack/lib/action_controller/session/cookie_store.rb +240 -0
  951. data/vendor/rails/actionpack/lib/action_controller/session/mem_cache_store.rb +60 -0
  952. data/vendor/rails/actionpack/lib/action_controller/session_management.rb +54 -0
  953. data/vendor/rails/actionpack/lib/action_controller/status_codes.rb +88 -0
  954. data/vendor/rails/actionpack/lib/action_controller/streaming.rb +181 -0
  955. data/vendor/rails/actionpack/lib/action_controller/string_coercion.rb +29 -0
  956. data/vendor/rails/actionpack/lib/action_controller/templates/rescues/_request_and_response.erb +24 -0
  957. data/vendor/rails/actionpack/lib/action_controller/templates/rescues/_trace.erb +26 -0
  958. data/vendor/rails/actionpack/lib/action_controller/templates/rescues/diagnostics.erb +11 -0
  959. data/vendor/rails/actionpack/lib/action_controller/templates/rescues/layout.erb +29 -0
  960. data/vendor/rails/actionpack/lib/action_controller/templates/rescues/missing_template.erb +2 -0
  961. data/vendor/rails/actionpack/lib/action_controller/templates/rescues/routing_error.erb +10 -0
  962. data/vendor/rails/actionpack/lib/action_controller/templates/rescues/template_error.erb +21 -0
  963. data/vendor/rails/actionpack/lib/action_controller/templates/rescues/unknown_action.erb +2 -0
  964. data/vendor/rails/actionpack/lib/action_controller/test_case.rb +209 -0
  965. data/vendor/rails/actionpack/lib/action_controller/test_process.rb +580 -0
  966. data/vendor/rails/actionpack/lib/action_controller/translation.rb +13 -0
  967. data/vendor/rails/actionpack/lib/action_controller/uploaded_file.rb +44 -0
  968. data/vendor/rails/actionpack/lib/action_controller/url_rewriter.rb +229 -0
  969. data/vendor/rails/actionpack/lib/action_controller/vendor/html-scanner.rb +16 -0
  970. data/vendor/rails/actionpack/lib/action_controller/vendor/html-scanner/html/document.rb +68 -0
  971. data/vendor/rails/actionpack/lib/action_controller/vendor/html-scanner/html/node.rb +537 -0
  972. data/vendor/rails/actionpack/lib/action_controller/vendor/html-scanner/html/sanitizer.rb +173 -0
  973. data/vendor/rails/actionpack/lib/action_controller/vendor/html-scanner/html/selector.rb +828 -0
  974. data/vendor/rails/actionpack/lib/action_controller/vendor/html-scanner/html/tokenizer.rb +105 -0
  975. data/vendor/rails/actionpack/lib/action_controller/vendor/html-scanner/html/version.rb +11 -0
  976. data/vendor/rails/actionpack/lib/action_controller/verification.rb +130 -0
  977. data/vendor/rails/actionpack/lib/action_pack.rb +24 -0
  978. data/vendor/rails/actionpack/lib/action_pack/version.rb +9 -0
  979. data/vendor/rails/actionpack/lib/action_view.rb +58 -0
  980. data/vendor/rails/actionpack/lib/action_view/base.rb +362 -0
  981. data/vendor/rails/actionpack/lib/action_view/helpers.rb +61 -0
  982. data/vendor/rails/actionpack/lib/action_view/helpers/active_record_helper.rb +305 -0
  983. data/vendor/rails/actionpack/lib/action_view/helpers/asset_tag_helper.rb +695 -0
  984. data/vendor/rails/actionpack/lib/action_view/helpers/atom_feed_helper.rb +198 -0
  985. data/vendor/rails/actionpack/lib/action_view/helpers/benchmark_helper.rb +54 -0
  986. data/vendor/rails/actionpack/lib/action_view/helpers/cache_helper.rb +39 -0
  987. data/vendor/rails/actionpack/lib/action_view/helpers/capture_helper.rb +136 -0
  988. data/vendor/rails/actionpack/lib/action_view/helpers/csrf_helper.rb +14 -0
  989. data/vendor/rails/actionpack/lib/action_view/helpers/date_helper.rb +989 -0
  990. data/vendor/rails/actionpack/lib/action_view/helpers/debug_helper.rb +38 -0
  991. data/vendor/rails/actionpack/lib/action_view/helpers/form_helper.rb +1118 -0
  992. data/vendor/rails/actionpack/lib/action_view/helpers/form_options_helper.rb +599 -0
  993. data/vendor/rails/actionpack/lib/action_view/helpers/form_tag_helper.rb +490 -0
  994. data/vendor/rails/actionpack/lib/action_view/helpers/javascript_helper.rb +208 -0
  995. data/vendor/rails/actionpack/lib/action_view/helpers/number_helper.rb +308 -0
  996. data/vendor/rails/actionpack/lib/action_view/helpers/prototype_helper.rb +1305 -0
  997. data/vendor/rails/actionpack/lib/action_view/helpers/raw_output_helper.rb +9 -0
  998. data/vendor/rails/actionpack/lib/action_view/helpers/record_identification_helper.rb +20 -0
  999. data/vendor/rails/actionpack/lib/action_view/helpers/record_tag_helper.rb +58 -0
  1000. data/vendor/rails/actionpack/lib/action_view/helpers/sanitize_helper.rb +251 -0
  1001. data/vendor/rails/actionpack/lib/action_view/helpers/scriptaculous_helper.rb +226 -0
  1002. data/vendor/rails/actionpack/lib/action_view/helpers/tag_helper.rb +151 -0
  1003. data/vendor/rails/actionpack/lib/action_view/helpers/text_helper.rb +597 -0
  1004. data/vendor/rails/actionpack/lib/action_view/helpers/translation_helper.rb +67 -0
  1005. data/vendor/rails/actionpack/lib/action_view/helpers/url_helper.rb +637 -0
  1006. data/vendor/rails/actionpack/lib/action_view/inline_template.rb +19 -0
  1007. data/vendor/rails/actionpack/lib/action_view/locale/en.yml +117 -0
  1008. data/vendor/rails/actionpack/lib/action_view/partials.rb +241 -0
  1009. data/vendor/rails/actionpack/lib/action_view/paths.rb +77 -0
  1010. data/vendor/rails/actionpack/lib/action_view/reloadable_template.rb +117 -0
  1011. data/vendor/rails/actionpack/lib/action_view/renderable.rb +109 -0
  1012. data/vendor/rails/actionpack/lib/action_view/renderable_partial.rb +53 -0
  1013. data/vendor/rails/actionpack/lib/action_view/template.rb +252 -0
  1014. data/vendor/rails/actionpack/lib/action_view/template_error.rb +99 -0
  1015. data/vendor/rails/actionpack/lib/action_view/template_handler.rb +34 -0
  1016. data/vendor/rails/actionpack/lib/action_view/template_handlers.rb +48 -0
  1017. data/vendor/rails/actionpack/lib/action_view/template_handlers/builder.rb +17 -0
  1018. data/vendor/rails/actionpack/lib/action_view/template_handlers/erb.rb +25 -0
  1019. data/vendor/rails/actionpack/lib/action_view/template_handlers/rjs.rb +13 -0
  1020. data/vendor/rails/actionpack/lib/action_view/test_case.rb +162 -0
  1021. data/vendor/rails/actionpack/lib/actionpack.rb +2 -0
  1022. data/vendor/rails/actionpack/test/abstract_unit.rb +78 -0
  1023. data/vendor/rails/actionpack/test/active_record_unit.rb +104 -0
  1024. data/vendor/rails/actionpack/test/activerecord/active_record_store_test.rb +221 -0
  1025. data/vendor/rails/actionpack/test/activerecord/render_partial_with_record_identification_test.rb +188 -0
  1026. data/vendor/rails/actionpack/test/adv_attr_test.rb +20 -0
  1027. data/vendor/rails/actionpack/test/controller/action_pack_assertions_test.rb +545 -0
  1028. data/vendor/rails/actionpack/test/controller/addresses_render_test.rb +37 -0
  1029. data/vendor/rails/actionpack/test/controller/assert_select_test.rb +735 -0
  1030. data/vendor/rails/actionpack/test/controller/base_test.rb +217 -0
  1031. data/vendor/rails/actionpack/test/controller/benchmark_test.rb +32 -0
  1032. data/vendor/rails/actionpack/test/controller/caching_test.rb +743 -0
  1033. data/vendor/rails/actionpack/test/controller/capture_test.rb +66 -0
  1034. data/vendor/rails/actionpack/test/controller/content_type_test.rb +168 -0
  1035. data/vendor/rails/actionpack/test/controller/controller_fixtures/app/controllers/admin/user_controller.rb +0 -0
  1036. data/vendor/rails/actionpack/test/controller/controller_fixtures/app/controllers/user_controller.rb +0 -0
  1037. data/vendor/rails/actionpack/test/controller/controller_fixtures/vendor/plugins/bad_plugin/lib/plugin_controller.rb +0 -0
  1038. data/vendor/rails/actionpack/test/controller/cookie_test.rb +208 -0
  1039. data/vendor/rails/actionpack/test/controller/deprecation/deprecated_base_methods_test.rb +32 -0
  1040. data/vendor/rails/actionpack/test/controller/dispatcher_test.rb +144 -0
  1041. data/vendor/rails/actionpack/test/controller/dom_assertions_test.rb +53 -0
  1042. data/vendor/rails/actionpack/test/controller/failsafe_test.rb +60 -0
  1043. data/vendor/rails/actionpack/test/controller/fake_controllers.rb +33 -0
  1044. data/vendor/rails/actionpack/test/controller/fake_models.rb +19 -0
  1045. data/vendor/rails/actionpack/test/controller/filter_params_test.rb +52 -0
  1046. data/vendor/rails/actionpack/test/controller/filters_test.rb +885 -0
  1047. data/vendor/rails/actionpack/test/controller/flash_test.rb +174 -0
  1048. data/vendor/rails/actionpack/test/controller/header_test.rb +14 -0
  1049. data/vendor/rails/actionpack/test/controller/helper_test.rb +224 -0
  1050. data/vendor/rails/actionpack/test/controller/html-scanner/cdata_node_test.rb +15 -0
  1051. data/vendor/rails/actionpack/test/controller/html-scanner/document_test.rb +148 -0
  1052. data/vendor/rails/actionpack/test/controller/html-scanner/node_test.rb +89 -0
  1053. data/vendor/rails/actionpack/test/controller/html-scanner/sanitizer_test.rb +274 -0
  1054. data/vendor/rails/actionpack/test/controller/html-scanner/tag_node_test.rb +238 -0
  1055. data/vendor/rails/actionpack/test/controller/html-scanner/text_node_test.rb +50 -0
  1056. data/vendor/rails/actionpack/test/controller/html-scanner/tokenizer_test.rb +131 -0
  1057. data/vendor/rails/actionpack/test/controller/http_basic_authentication_test.rb +113 -0
  1058. data/vendor/rails/actionpack/test/controller/http_digest_authentication_test.rb +254 -0
  1059. data/vendor/rails/actionpack/test/controller/integration_test.rb +526 -0
  1060. data/vendor/rails/actionpack/test/controller/layout_test.rb +215 -0
  1061. data/vendor/rails/actionpack/test/controller/localized_templates_test.rb +24 -0
  1062. data/vendor/rails/actionpack/test/controller/logging_test.rb +46 -0
  1063. data/vendor/rails/actionpack/test/controller/middleware_stack_test.rb +90 -0
  1064. data/vendor/rails/actionpack/test/controller/mime_responds_test.rb +536 -0
  1065. data/vendor/rails/actionpack/test/controller/mime_type_test.rb +93 -0
  1066. data/vendor/rails/actionpack/test/controller/output_escaping_test.rb +19 -0
  1067. data/vendor/rails/actionpack/test/controller/polymorphic_routes_test.rb +297 -0
  1068. data/vendor/rails/actionpack/test/controller/rack_test.rb +308 -0
  1069. data/vendor/rails/actionpack/test/controller/record_identifier_test.rb +139 -0
  1070. data/vendor/rails/actionpack/test/controller/redirect_test.rb +285 -0
  1071. data/vendor/rails/actionpack/test/controller/reloader_test.rb +125 -0
  1072. data/vendor/rails/actionpack/test/controller/render_test.rb +1783 -0
  1073. data/vendor/rails/actionpack/test/controller/request/json_params_parsing_test.rb +65 -0
  1074. data/vendor/rails/actionpack/test/controller/request/multipart_params_parsing_test.rb +177 -0
  1075. data/vendor/rails/actionpack/test/controller/request/query_string_parsing_test.rb +120 -0
  1076. data/vendor/rails/actionpack/test/controller/request/test_request_test.rb +35 -0
  1077. data/vendor/rails/actionpack/test/controller/request/url_encoded_params_parsing_test.rb +146 -0
  1078. data/vendor/rails/actionpack/test/controller/request/xml_params_parsing_test.rb +103 -0
  1079. data/vendor/rails/actionpack/test/controller/request_forgery_protection_test.rb +233 -0
  1080. data/vendor/rails/actionpack/test/controller/request_test.rb +395 -0
  1081. data/vendor/rails/actionpack/test/controller/rescue_test.rb +541 -0
  1082. data/vendor/rails/actionpack/test/controller/resources_test.rb +1393 -0
  1083. data/vendor/rails/actionpack/test/controller/routing_test.rb +2592 -0
  1084. data/vendor/rails/actionpack/test/controller/selector_test.rb +628 -0
  1085. data/vendor/rails/actionpack/test/controller/send_file_test.rb +171 -0
  1086. data/vendor/rails/actionpack/test/controller/session/cookie_store_test.rb +310 -0
  1087. data/vendor/rails/actionpack/test/controller/session/mem_cache_store_test.rb +187 -0
  1088. data/vendor/rails/actionpack/test/controller/session/test_session_test.rb +58 -0
  1089. data/vendor/rails/actionpack/test/controller/test_test.rb +700 -0
  1090. data/vendor/rails/actionpack/test/controller/translation_test.rb +26 -0
  1091. data/vendor/rails/actionpack/test/controller/url_rewriter_test.rb +395 -0
  1092. data/vendor/rails/actionpack/test/controller/verification_test.rb +270 -0
  1093. data/vendor/rails/actionpack/test/controller/view_paths_test.rb +141 -0
  1094. data/vendor/rails/actionpack/test/controller/webservice_test.rb +260 -0
  1095. data/vendor/rails/actionpack/test/fixtures/_top_level_partial.html.erb +1 -0
  1096. data/vendor/rails/actionpack/test/fixtures/_top_level_partial_only.erb +1 -0
  1097. data/vendor/rails/actionpack/test/fixtures/addresses/list.erb +1 -0
  1098. data/vendor/rails/actionpack/test/fixtures/alternate_helpers/foo_helper.rb +3 -0
  1099. data/vendor/rails/actionpack/test/fixtures/bad_customers/_bad_customer.html.erb +1 -0
  1100. data/vendor/rails/actionpack/test/fixtures/companies.yml +24 -0
  1101. data/vendor/rails/actionpack/test/fixtures/company.rb +10 -0
  1102. data/vendor/rails/actionpack/test/fixtures/content_type/render_default_content_types_for_respond_to.rhtml +1 -0
  1103. data/vendor/rails/actionpack/test/fixtures/content_type/render_default_for_rhtml.rhtml +1 -0
  1104. data/vendor/rails/actionpack/test/fixtures/content_type/render_default_for_rjs.rjs +1 -0
  1105. data/vendor/rails/actionpack/test/fixtures/content_type/render_default_for_rxml.rxml +1 -0
  1106. data/vendor/rails/actionpack/test/fixtures/customers/_customer.html.erb +1 -0
  1107. data/vendor/rails/actionpack/test/fixtures/db_definitions/sqlite.sql +49 -0
  1108. data/vendor/rails/actionpack/test/fixtures/developer.rb +9 -0
  1109. data/vendor/rails/actionpack/test/fixtures/developers.yml +21 -0
  1110. data/vendor/rails/actionpack/test/fixtures/developers/_developer.erb +1 -0
  1111. data/vendor/rails/actionpack/test/fixtures/developers_projects.yml +13 -0
  1112. data/vendor/rails/actionpack/test/fixtures/failsafe/500.html +1 -0
  1113. data/vendor/rails/actionpack/test/fixtures/fun/games/_game.erb +1 -0
  1114. data/vendor/rails/actionpack/test/fixtures/fun/games/hello_world.erb +1 -0
  1115. data/vendor/rails/actionpack/test/fixtures/fun/serious/games/_game.erb +1 -0
  1116. data/vendor/rails/actionpack/test/fixtures/functional_caching/_partial.erb +3 -0
  1117. data/vendor/rails/actionpack/test/fixtures/functional_caching/formatted_fragment_cached.html.erb +3 -0
  1118. data/vendor/rails/actionpack/test/fixtures/functional_caching/formatted_fragment_cached.js.rjs +6 -0
  1119. data/vendor/rails/actionpack/test/fixtures/functional_caching/formatted_fragment_cached.xml.builder +5 -0
  1120. data/vendor/rails/actionpack/test/fixtures/functional_caching/fragment_cached.html.erb +2 -0
  1121. data/vendor/rails/actionpack/test/fixtures/functional_caching/html_fragment_cached_with_partial.html.erb +1 -0
  1122. data/vendor/rails/actionpack/test/fixtures/functional_caching/inline_fragment_cached.html.erb +2 -0
  1123. data/vendor/rails/actionpack/test/fixtures/functional_caching/js_fragment_cached_with_partial.js.rjs +1 -0
  1124. data/vendor/rails/actionpack/test/fixtures/good_customers/_good_customer.html.erb +1 -0
  1125. data/vendor/rails/actionpack/test/fixtures/helpers/abc_helper.rb +5 -0
  1126. data/vendor/rails/actionpack/test/fixtures/helpers/fun/games_helper.rb +3 -0
  1127. data/vendor/rails/actionpack/test/fixtures/helpers/fun/pdf_helper.rb +3 -0
  1128. data/vendor/rails/actionpack/test/fixtures/layout_tests/abs_path_layout.rhtml +1 -0
  1129. data/vendor/rails/actionpack/test/fixtures/layout_tests/alt/hello.rhtml +1 -0
  1130. data/vendor/rails/actionpack/test/fixtures/layout_tests/alt/layouts/alt.rhtml +0 -0
  1131. data/vendor/rails/actionpack/test/fixtures/layout_tests/layouts/controller_name_space/nested.rhtml +1 -0
  1132. data/vendor/rails/actionpack/test/fixtures/layout_tests/layouts/item.rhtml +1 -0
  1133. data/vendor/rails/actionpack/test/fixtures/layout_tests/layouts/layout_test.rhtml +1 -0
  1134. data/vendor/rails/actionpack/test/fixtures/layout_tests/layouts/multiple_extensions.html.erb +1 -0
  1135. data/vendor/rails/actionpack/test/fixtures/layout_tests/layouts/third_party_template_library.mab +1 -0
  1136. data/vendor/rails/actionpack/test/fixtures/layout_tests/views/hello.rhtml +1 -0
  1137. data/vendor/rails/actionpack/test/fixtures/layouts/_column.html.erb +2 -0
  1138. data/vendor/rails/actionpack/test/fixtures/layouts/block_with_layout.erb +3 -0
  1139. data/vendor/rails/actionpack/test/fixtures/layouts/builder.builder +3 -0
  1140. data/vendor/rails/actionpack/test/fixtures/layouts/default_html.html.erb +1 -0
  1141. data/vendor/rails/actionpack/test/fixtures/layouts/partial_with_layout.erb +3 -0
  1142. data/vendor/rails/actionpack/test/fixtures/layouts/standard.erb +1 -0
  1143. data/vendor/rails/actionpack/test/fixtures/layouts/talk_from_action.erb +2 -0
  1144. data/vendor/rails/actionpack/test/fixtures/layouts/xhr.html.erb +2 -0
  1145. data/vendor/rails/actionpack/test/fixtures/layouts/yield.erb +2 -0
  1146. data/vendor/rails/actionpack/test/fixtures/localized/hello_world.de.html +1 -0
  1147. data/vendor/rails/actionpack/test/fixtures/localized/hello_world.en.html +1 -0
  1148. data/vendor/rails/actionpack/test/fixtures/mascot.rb +3 -0
  1149. data/vendor/rails/actionpack/test/fixtures/mascots.yml +4 -0
  1150. data/vendor/rails/actionpack/test/fixtures/mascots/_mascot.html.erb +1 -0
  1151. data/vendor/rails/actionpack/test/fixtures/multipart/binary_file +0 -0
  1152. data/vendor/rails/actionpack/test/fixtures/multipart/boundary_problem_file +10 -0
  1153. data/vendor/rails/actionpack/test/fixtures/multipart/bracketed_param +5 -0
  1154. data/vendor/rails/actionpack/test/fixtures/multipart/empty +10 -0
  1155. data/vendor/rails/actionpack/test/fixtures/multipart/hello.txt +1 -0
  1156. data/vendor/rails/actionpack/test/fixtures/multipart/large_text_file +10 -0
  1157. data/vendor/rails/actionpack/test/fixtures/multipart/mixed_files +0 -0
  1158. data/vendor/rails/actionpack/test/fixtures/multipart/mona_lisa.jpg +0 -0
  1159. data/vendor/rails/actionpack/test/fixtures/multipart/none +9 -0
  1160. data/vendor/rails/actionpack/test/fixtures/multipart/single_parameter +5 -0
  1161. data/vendor/rails/actionpack/test/fixtures/multipart/text_file +10 -0
  1162. data/vendor/rails/actionpack/test/fixtures/override/test/hello_world.erb +1 -0
  1163. data/vendor/rails/actionpack/test/fixtures/override2/layouts/test/sub.erb +1 -0
  1164. data/vendor/rails/actionpack/test/fixtures/post_test/layouts/post.html.erb +1 -0
  1165. data/vendor/rails/actionpack/test/fixtures/post_test/layouts/super_post.iphone.erb +1 -0
  1166. data/vendor/rails/actionpack/test/fixtures/post_test/post/index.html.erb +1 -0
  1167. data/vendor/rails/actionpack/test/fixtures/post_test/post/index.iphone.erb +1 -0
  1168. data/vendor/rails/actionpack/test/fixtures/post_test/super_post/index.html.erb +1 -0
  1169. data/vendor/rails/actionpack/test/fixtures/post_test/super_post/index.iphone.erb +1 -0
  1170. data/vendor/rails/actionpack/test/fixtures/project.rb +3 -0
  1171. data/vendor/rails/actionpack/test/fixtures/projects.yml +7 -0
  1172. data/vendor/rails/actionpack/test/fixtures/projects/_project.erb +1 -0
  1173. data/vendor/rails/actionpack/test/fixtures/public/404.html +1 -0
  1174. data/vendor/rails/actionpack/test/fixtures/public/500.da.html +1 -0
  1175. data/vendor/rails/actionpack/test/fixtures/public/500.html +1 -0
  1176. data/vendor/rails/actionpack/test/fixtures/public/absolute/test.css +23 -0
  1177. data/vendor/rails/actionpack/test/fixtures/public/absolute/test.js +63 -0
  1178. data/vendor/rails/actionpack/test/fixtures/public/images/rails.png +0 -0
  1179. data/vendor/rails/actionpack/test/fixtures/public/javascripts/application.js +1 -0
  1180. data/vendor/rails/actionpack/test/fixtures/public/javascripts/bank.js +1 -0
  1181. data/vendor/rails/actionpack/test/fixtures/public/javascripts/controls.js +1 -0
  1182. data/vendor/rails/actionpack/test/fixtures/public/javascripts/dragdrop.js +1 -0
  1183. data/vendor/rails/actionpack/test/fixtures/public/javascripts/effects.js +1 -0
  1184. data/vendor/rails/actionpack/test/fixtures/public/javascripts/prototype.js +1 -0
  1185. data/vendor/rails/actionpack/test/fixtures/public/javascripts/robber.js +1 -0
  1186. data/vendor/rails/actionpack/test/fixtures/public/javascripts/subdir/subdir.js +1 -0
  1187. data/vendor/rails/actionpack/test/fixtures/public/javascripts/version.1.0.js +1 -0
  1188. data/vendor/rails/actionpack/test/fixtures/public/stylesheets/bank.css +1 -0
  1189. data/vendor/rails/actionpack/test/fixtures/public/stylesheets/robber.css +1 -0
  1190. data/vendor/rails/actionpack/test/fixtures/public/stylesheets/subdir/subdir.css +1 -0
  1191. data/vendor/rails/actionpack/test/fixtures/public/stylesheets/version.1.0.css +1 -0
  1192. data/vendor/rails/actionpack/test/fixtures/quiz/questions/_question.html.erb +1 -0
  1193. data/vendor/rails/actionpack/test/fixtures/replies.yml +15 -0
  1194. data/vendor/rails/actionpack/test/fixtures/replies/_reply.erb +1 -0
  1195. data/vendor/rails/actionpack/test/fixtures/reply.rb +7 -0
  1196. data/vendor/rails/actionpack/test/fixtures/respond_to/all_types_with_layout.html.erb +1 -0
  1197. data/vendor/rails/actionpack/test/fixtures/respond_to/all_types_with_layout.js.rjs +1 -0
  1198. data/vendor/rails/actionpack/test/fixtures/respond_to/custom_constant_handling_without_block.mobile.erb +1 -0
  1199. data/vendor/rails/actionpack/test/fixtures/respond_to/iphone_with_html_response_type.html.erb +1 -0
  1200. data/vendor/rails/actionpack/test/fixtures/respond_to/iphone_with_html_response_type.iphone.erb +1 -0
  1201. data/vendor/rails/actionpack/test/fixtures/respond_to/layouts/missing.html.erb +1 -0
  1202. data/vendor/rails/actionpack/test/fixtures/respond_to/layouts/standard.html.erb +1 -0
  1203. data/vendor/rails/actionpack/test/fixtures/respond_to/layouts/standard.iphone.erb +1 -0
  1204. data/vendor/rails/actionpack/test/fixtures/respond_to/using_defaults.html.erb +1 -0
  1205. data/vendor/rails/actionpack/test/fixtures/respond_to/using_defaults.js.rjs +1 -0
  1206. data/vendor/rails/actionpack/test/fixtures/respond_to/using_defaults.xml.builder +1 -0
  1207. data/vendor/rails/actionpack/test/fixtures/respond_to/using_defaults_with_type_list.html.erb +1 -0
  1208. data/vendor/rails/actionpack/test/fixtures/respond_to/using_defaults_with_type_list.js.rjs +1 -0
  1209. data/vendor/rails/actionpack/test/fixtures/respond_to/using_defaults_with_type_list.xml.builder +1 -0
  1210. data/vendor/rails/actionpack/test/fixtures/scope/test/modgreet.erb +1 -0
  1211. data/vendor/rails/actionpack/test/fixtures/session_autoload_test/session_autoload_test/foo.rb +10 -0
  1212. data/vendor/rails/actionpack/test/fixtures/shared.html.erb +1 -0
  1213. data/vendor/rails/actionpack/test/fixtures/symlink_parent/symlinked_layout.erb +5 -0
  1214. data/vendor/rails/actionpack/test/fixtures/test/_counter.html.erb +1 -0
  1215. data/vendor/rails/actionpack/test/fixtures/test/_customer.erb +1 -0
  1216. data/vendor/rails/actionpack/test/fixtures/test/_customer_counter.erb +1 -0
  1217. data/vendor/rails/actionpack/test/fixtures/test/_customer_counter_with_as.erb +1 -0
  1218. data/vendor/rails/actionpack/test/fixtures/test/_customer_greeting.erb +1 -0
  1219. data/vendor/rails/actionpack/test/fixtures/test/_customer_with_var.erb +1 -0
  1220. data/vendor/rails/actionpack/test/fixtures/test/_form.erb +1 -0
  1221. data/vendor/rails/actionpack/test/fixtures/test/_from_helper.erb +1 -0
  1222. data/vendor/rails/actionpack/test/fixtures/test/_hash_greeting.erb +1 -0
  1223. data/vendor/rails/actionpack/test/fixtures/test/_hash_object.erb +2 -0
  1224. data/vendor/rails/actionpack/test/fixtures/test/_hello.builder +1 -0
  1225. data/vendor/rails/actionpack/test/fixtures/test/_labelling_form.erb +1 -0
  1226. data/vendor/rails/actionpack/test/fixtures/test/_layout_for_block_with_args.html.erb +3 -0
  1227. data/vendor/rails/actionpack/test/fixtures/test/_layout_for_partial.html.erb +3 -0
  1228. data/vendor/rails/actionpack/test/fixtures/test/_local_inspector.html.erb +1 -0
  1229. data/vendor/rails/actionpack/test/fixtures/test/_one.html.erb +1 -0
  1230. data/vendor/rails/actionpack/test/fixtures/test/_partial.erb +1 -0
  1231. data/vendor/rails/actionpack/test/fixtures/test/_partial.html.erb +1 -0
  1232. data/vendor/rails/actionpack/test/fixtures/test/_partial.js.erb +1 -0
  1233. data/vendor/rails/actionpack/test/fixtures/test/_partial_for_use_in_layout.html.erb +1 -0
  1234. data/vendor/rails/actionpack/test/fixtures/test/_partial_only.erb +1 -0
  1235. data/vendor/rails/actionpack/test/fixtures/test/_partial_with_only_html_version.html.erb +1 -0
  1236. data/vendor/rails/actionpack/test/fixtures/test/_person.erb +2 -0
  1237. data/vendor/rails/actionpack/test/fixtures/test/_raise.html.erb +1 -0
  1238. data/vendor/rails/actionpack/test/fixtures/test/_two.html.erb +1 -0
  1239. data/vendor/rails/actionpack/test/fixtures/test/_utf8_partial.html.erb +1 -0
  1240. data/vendor/rails/actionpack/test/fixtures/test/_utf8_partial_magic.html.erb +2 -0
  1241. data/vendor/rails/actionpack/test/fixtures/test/action_talk_to_layout.erb +2 -0
  1242. data/vendor/rails/actionpack/test/fixtures/test/array_translation.erb +1 -0
  1243. data/vendor/rails/actionpack/test/fixtures/test/calling_partial_with_layout.html.erb +1 -0
  1244. data/vendor/rails/actionpack/test/fixtures/test/capturing.erb +4 -0
  1245. data/vendor/rails/actionpack/test/fixtures/test/content_for.erb +2 -0
  1246. data/vendor/rails/actionpack/test/fixtures/test/content_for_concatenated.erb +3 -0
  1247. data/vendor/rails/actionpack/test/fixtures/test/content_for_with_parameter.erb +2 -0
  1248. data/vendor/rails/actionpack/test/fixtures/test/delete_with_js.rjs +2 -0
  1249. data/vendor/rails/actionpack/test/fixtures/test/dont_pick_me +1 -0
  1250. data/vendor/rails/actionpack/test/fixtures/test/dot.directory/render_file_with_ivar.erb +1 -0
  1251. data/vendor/rails/actionpack/test/fixtures/test/enum_rjs_test.rjs +6 -0
  1252. data/vendor/rails/actionpack/test/fixtures/test/formatted_html_erb.html.erb +1 -0
  1253. data/vendor/rails/actionpack/test/fixtures/test/formatted_xml_erb.builder +1 -0
  1254. data/vendor/rails/actionpack/test/fixtures/test/formatted_xml_erb.html.erb +1 -0
  1255. data/vendor/rails/actionpack/test/fixtures/test/formatted_xml_erb.xml.erb +1 -0
  1256. data/vendor/rails/actionpack/test/fixtures/test/greeting.erb +1 -0
  1257. data/vendor/rails/actionpack/test/fixtures/test/greeting.js.rjs +1 -0
  1258. data/vendor/rails/actionpack/test/fixtures/test/hello.builder +4 -0
  1259. data/vendor/rails/actionpack/test/fixtures/test/hello_world.da.html.erb +1 -0
  1260. data/vendor/rails/actionpack/test/fixtures/test/hello_world.erb +1 -0
  1261. data/vendor/rails/actionpack/test/fixtures/test/hello_world.erb~ +1 -0
  1262. data/vendor/rails/actionpack/test/fixtures/test/hello_world.pt-BR.html.erb +1 -0
  1263. data/vendor/rails/actionpack/test/fixtures/test/hello_world_container.builder +3 -0
  1264. data/vendor/rails/actionpack/test/fixtures/test/hello_world_from_rxml.builder +4 -0
  1265. data/vendor/rails/actionpack/test/fixtures/test/hello_world_with_layout_false.erb +1 -0
  1266. data/vendor/rails/actionpack/test/fixtures/test/hello_xml_world.builder +11 -0
  1267. data/vendor/rails/actionpack/test/fixtures/test/hyphen-ated.erb +1 -0
  1268. data/vendor/rails/actionpack/test/fixtures/test/implicit_content_type.atom.builder +2 -0
  1269. data/vendor/rails/actionpack/test/fixtures/test/list.erb +1 -0
  1270. data/vendor/rails/actionpack/test/fixtures/test/malformed/malformed.en.html.erb~ +1 -0
  1271. data/vendor/rails/actionpack/test/fixtures/test/malformed/malformed.erb~ +1 -0
  1272. data/vendor/rails/actionpack/test/fixtures/test/malformed/malformed.html.erb~ +1 -0
  1273. data/vendor/rails/actionpack/test/fixtures/test/nested_layout.erb +3 -0
  1274. data/vendor/rails/actionpack/test/fixtures/test/non_erb_block_content_for.builder +4 -0
  1275. data/vendor/rails/actionpack/test/fixtures/test/potential_conflicts.erb +4 -0
  1276. data/vendor/rails/actionpack/test/fixtures/test/render_explicit_html_template.js.rjs +1 -0
  1277. data/vendor/rails/actionpack/test/fixtures/test/render_file_from_template.html.erb +1 -0
  1278. data/vendor/rails/actionpack/test/fixtures/test/render_file_with_ivar.erb +1 -0
  1279. data/vendor/rails/actionpack/test/fixtures/test/render_file_with_locals.erb +1 -0
  1280. data/vendor/rails/actionpack/test/fixtures/test/render_implicit_html_template.js.rjs +1 -0
  1281. data/vendor/rails/actionpack/test/fixtures/test/render_implicit_html_template_from_xhr_request.da.html.erb +1 -0
  1282. data/vendor/rails/actionpack/test/fixtures/test/render_implicit_html_template_from_xhr_request.html.erb +1 -0
  1283. data/vendor/rails/actionpack/test/fixtures/test/render_implicit_js_template_without_layout.js.erb +1 -0
  1284. data/vendor/rails/actionpack/test/fixtures/test/render_to_string_test.erb +1 -0
  1285. data/vendor/rails/actionpack/test/fixtures/test/scoped_array_translation.erb +1 -0
  1286. data/vendor/rails/actionpack/test/fixtures/test/sub_template_raise.html.erb +1 -0
  1287. data/vendor/rails/actionpack/test/fixtures/test/template.erb +1 -0
  1288. data/vendor/rails/actionpack/test/fixtures/test/translation.erb +1 -0
  1289. data/vendor/rails/actionpack/test/fixtures/test/update_element_with_capture.erb +9 -0
  1290. data/vendor/rails/actionpack/test/fixtures/test/using_layout_around_block.html.erb +1 -0
  1291. data/vendor/rails/actionpack/test/fixtures/test/using_layout_around_block_with_args.html.erb +1 -0
  1292. data/vendor/rails/actionpack/test/fixtures/test/utf8.html.erb +4 -0
  1293. data/vendor/rails/actionpack/test/fixtures/test/utf8_magic.html.erb +5 -0
  1294. data/vendor/rails/actionpack/test/fixtures/test/utf8_magic_with_bare_partial.html.erb +5 -0
  1295. data/vendor/rails/actionpack/test/fixtures/topic.rb +3 -0
  1296. data/vendor/rails/actionpack/test/fixtures/topics.yml +22 -0
  1297. data/vendor/rails/actionpack/test/fixtures/topics/_topic.html.erb +1 -0
  1298. data/vendor/rails/actionpack/test/template/active_record_helper_i18n_test.rb +51 -0
  1299. data/vendor/rails/actionpack/test/template/active_record_helper_test.rb +302 -0
  1300. data/vendor/rails/actionpack/test/template/asset_tag_helper_test.rb +770 -0
  1301. data/vendor/rails/actionpack/test/template/atom_feed_helper_test.rb +315 -0
  1302. data/vendor/rails/actionpack/test/template/benchmark_helper_test.rb +86 -0
  1303. data/vendor/rails/actionpack/test/template/compiled_templates_test.rb +204 -0
  1304. data/vendor/rails/actionpack/test/template/date_helper_i18n_test.rb +121 -0
  1305. data/vendor/rails/actionpack/test/template/date_helper_test.rb +2603 -0
  1306. data/vendor/rails/actionpack/test/template/erb_util_test.rb +36 -0
  1307. data/vendor/rails/actionpack/test/template/form_helper_test.rb +1447 -0
  1308. data/vendor/rails/actionpack/test/template/form_options_helper_i18n_test.rb +27 -0
  1309. data/vendor/rails/actionpack/test/template/form_options_helper_test.rb +811 -0
  1310. data/vendor/rails/actionpack/test/template/form_tag_helper_test.rb +356 -0
  1311. data/vendor/rails/actionpack/test/template/javascript_helper_test.rb +106 -0
  1312. data/vendor/rails/actionpack/test/template/number_helper_i18n_test.rb +69 -0
  1313. data/vendor/rails/actionpack/test/template/number_helper_test.rb +132 -0
  1314. data/vendor/rails/actionpack/test/template/prototype_helper_test.rb +639 -0
  1315. data/vendor/rails/actionpack/test/template/raw_output_helper_test.rb +21 -0
  1316. data/vendor/rails/actionpack/test/template/record_tag_helper_test.rb +58 -0
  1317. data/vendor/rails/actionpack/test/template/render_test.rb +329 -0
  1318. data/vendor/rails/actionpack/test/template/sanitize_helper_test.rb +57 -0
  1319. data/vendor/rails/actionpack/test/template/scriptaculous_helper_test.rb +90 -0
  1320. data/vendor/rails/actionpack/test/template/tag_helper_test.rb +98 -0
  1321. data/vendor/rails/actionpack/test/template/template_test.rb +32 -0
  1322. data/vendor/rails/actionpack/test/template/test_test.rb +54 -0
  1323. data/vendor/rails/actionpack/test/template/text_helper_test.rb +597 -0
  1324. data/vendor/rails/actionpack/test/template/translation_helper_test.rb +95 -0
  1325. data/vendor/rails/actionpack/test/template/url_helper_test.rb +641 -0
  1326. data/vendor/rails/actionpack/test/testing_sandbox.rb +15 -0
  1327. data/vendor/rails/actionpack/test/view/test_case_test.rb +176 -0
  1328. data/vendor/rails/activemodel/CHANGES +12 -0
  1329. data/vendor/rails/activemodel/README +21 -0
  1330. data/vendor/rails/activemodel/Rakefile +24 -0
  1331. data/vendor/rails/activemodel/lib/active_model.rb +5 -0
  1332. data/vendor/rails/activemodel/lib/active_model/base.rb +8 -0
  1333. data/vendor/rails/activemodel/lib/active_model/callbacks.rb +7 -0
  1334. data/vendor/rails/activemodel/lib/active_model/core.rb +7 -0
  1335. data/vendor/rails/activemodel/lib/active_model/deprecated_error_methods.rb +38 -0
  1336. data/vendor/rails/activemodel/lib/active_model/errors.rb +82 -0
  1337. data/vendor/rails/activemodel/lib/active_model/observing.rb +98 -0
  1338. data/vendor/rails/activemodel/lib/active_model/state_machine.rb +68 -0
  1339. data/vendor/rails/activemodel/lib/active_model/state_machine/event.rb +64 -0
  1340. data/vendor/rails/activemodel/lib/active_model/state_machine/machine.rb +78 -0
  1341. data/vendor/rails/activemodel/lib/active_model/state_machine/state.rb +47 -0
  1342. data/vendor/rails/activemodel/lib/active_model/state_machine/state_transition.rb +40 -0
  1343. data/vendor/rails/activemodel/lib/active_model/validations.rb +126 -0
  1344. data/vendor/rails/activemodel/lib/active_model/validations/acceptance.rb +45 -0
  1345. data/vendor/rails/activemodel/lib/active_model/validations/associated.rb +46 -0
  1346. data/vendor/rails/activemodel/lib/active_model/validations/confirmation.rb +44 -0
  1347. data/vendor/rails/activemodel/lib/active_model/validations/exclusion.rb +37 -0
  1348. data/vendor/rails/activemodel/lib/active_model/validations/format.rb +39 -0
  1349. data/vendor/rails/activemodel/lib/active_model/validations/inclusion.rb +37 -0
  1350. data/vendor/rails/activemodel/lib/active_model/validations/length.rb +95 -0
  1351. data/vendor/rails/activemodel/lib/active_model/validations/numericality.rb +80 -0
  1352. data/vendor/rails/activemodel/lib/active_model/validations/presence.rb +42 -0
  1353. data/vendor/rails/activemodel/lib/active_model/validations/uniqueness.rb +104 -0
  1354. data/vendor/rails/activemodel/test/observing_test.rb +121 -0
  1355. data/vendor/rails/activemodel/test/state_machine/event_test.rb +49 -0
  1356. data/vendor/rails/activemodel/test/state_machine/machine_test.rb +43 -0
  1357. data/vendor/rails/activemodel/test/state_machine/state_test.rb +72 -0
  1358. data/vendor/rails/activemodel/test/state_machine/state_transition_test.rb +84 -0
  1359. data/vendor/rails/activemodel/test/state_machine_test.rb +312 -0
  1360. data/vendor/rails/activemodel/test/test_helper.rb +21 -0
  1361. data/vendor/rails/activerecord/CHANGELOG +5904 -0
  1362. data/vendor/rails/activerecord/MIT-LICENSE +20 -0
  1363. data/vendor/rails/activerecord/README +351 -0
  1364. data/vendor/rails/activerecord/RUNNING_UNIT_TESTS +36 -0
  1365. data/vendor/rails/activerecord/Rakefile +270 -0
  1366. data/vendor/rails/activerecord/examples/associations.png +0 -0
  1367. data/vendor/rails/activerecord/examples/performance.rb +198 -0
  1368. data/vendor/rails/activerecord/install.rb +30 -0
  1369. data/vendor/rails/activerecord/lib/active_record.rb +83 -0
  1370. data/vendor/rails/activerecord/lib/active_record/aggregations.rb +261 -0
  1371. data/vendor/rails/activerecord/lib/active_record/association_preload.rb +406 -0
  1372. data/vendor/rails/activerecord/lib/active_record/associations.rb +2251 -0
  1373. data/vendor/rails/activerecord/lib/active_record/associations/association_collection.rb +533 -0
  1374. data/vendor/rails/activerecord/lib/active_record/associations/association_proxy.rb +288 -0
  1375. data/vendor/rails/activerecord/lib/active_record/associations/belongs_to_association.rb +86 -0
  1376. data/vendor/rails/activerecord/lib/active_record/associations/belongs_to_polymorphic_association.rb +77 -0
  1377. data/vendor/rails/activerecord/lib/active_record/associations/has_and_belongs_to_many_association.rb +143 -0
  1378. data/vendor/rails/activerecord/lib/active_record/associations/has_many_association.rb +127 -0
  1379. data/vendor/rails/activerecord/lib/active_record/associations/has_many_through_association.rb +266 -0
  1380. data/vendor/rails/activerecord/lib/active_record/associations/has_one_association.rb +142 -0
  1381. data/vendor/rails/activerecord/lib/active_record/associations/has_one_through_association.rb +37 -0
  1382. data/vendor/rails/activerecord/lib/active_record/attribute_methods.rb +388 -0
  1383. data/vendor/rails/activerecord/lib/active_record/autosave_association.rb +395 -0
  1384. data/vendor/rails/activerecord/lib/active_record/base.rb +3218 -0
  1385. data/vendor/rails/activerecord/lib/active_record/batches.rb +85 -0
  1386. data/vendor/rails/activerecord/lib/active_record/calculations.rb +321 -0
  1387. data/vendor/rails/activerecord/lib/active_record/callbacks.rb +360 -0
  1388. data/vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb +371 -0
  1389. data/vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/connection_specification.rb +139 -0
  1390. data/vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/database_limits.rb +57 -0
  1391. data/vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/database_statements.rb +289 -0
  1392. data/vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/query_cache.rb +94 -0
  1393. data/vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/quoting.rb +65 -0
  1394. data/vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/schema_definitions.rb +722 -0
  1395. data/vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/schema_statements.rb +490 -0
  1396. data/vendor/rails/activerecord/lib/active_record/connection_adapters/abstract_adapter.rb +249 -0
  1397. data/vendor/rails/activerecord/lib/active_record/connection_adapters/mysql_adapter.rb +662 -0
  1398. data/vendor/rails/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb +1078 -0
  1399. data/vendor/rails/activerecord/lib/active_record/connection_adapters/sqlite3_adapter.rb +34 -0
  1400. data/vendor/rails/activerecord/lib/active_record/connection_adapters/sqlite_adapter.rb +454 -0
  1401. data/vendor/rails/activerecord/lib/active_record/dirty.rb +183 -0
  1402. data/vendor/rails/activerecord/lib/active_record/dynamic_finder_match.rb +41 -0
  1403. data/vendor/rails/activerecord/lib/active_record/dynamic_scope_match.rb +25 -0
  1404. data/vendor/rails/activerecord/lib/active_record/fixtures.rb +997 -0
  1405. data/vendor/rails/activerecord/lib/active_record/locale/en.yml +58 -0
  1406. data/vendor/rails/activerecord/lib/active_record/locking/optimistic.rb +182 -0
  1407. data/vendor/rails/activerecord/lib/active_record/locking/pessimistic.rb +55 -0
  1408. data/vendor/rails/activerecord/lib/active_record/migration.rb +571 -0
  1409. data/vendor/rails/activerecord/lib/active_record/named_scope.rb +197 -0
  1410. data/vendor/rails/activerecord/lib/active_record/nested_attributes.rb +404 -0
  1411. data/vendor/rails/activerecord/lib/active_record/observer.rb +197 -0
  1412. data/vendor/rails/activerecord/lib/active_record/query_cache.rb +33 -0
  1413. data/vendor/rails/activerecord/lib/active_record/reflection.rb +385 -0
  1414. data/vendor/rails/activerecord/lib/active_record/schema.rb +55 -0
  1415. data/vendor/rails/activerecord/lib/active_record/schema_dumper.rb +185 -0
  1416. data/vendor/rails/activerecord/lib/active_record/serialization.rb +101 -0
  1417. data/vendor/rails/activerecord/lib/active_record/serializers/json_serializer.rb +91 -0
  1418. data/vendor/rails/activerecord/lib/active_record/serializers/xml_serializer.rb +357 -0
  1419. data/vendor/rails/activerecord/lib/active_record/session_store.rb +334 -0
  1420. data/vendor/rails/activerecord/lib/active_record/test_case.rb +66 -0
  1421. data/vendor/rails/activerecord/lib/active_record/timestamp.rb +71 -0
  1422. data/vendor/rails/activerecord/lib/active_record/transactions.rb +235 -0
  1423. data/vendor/rails/activerecord/lib/active_record/validations.rb +1147 -0
  1424. data/vendor/rails/activerecord/lib/active_record/version.rb +9 -0
  1425. data/vendor/rails/activerecord/lib/activerecord.rb +2 -0
  1426. data/vendor/rails/activerecord/test/assets/example.log +1 -0
  1427. data/vendor/rails/activerecord/test/assets/flowers.jpg +0 -0
  1428. data/vendor/rails/activerecord/test/cases/aaa_create_tables_test.rb +24 -0
  1429. data/vendor/rails/activerecord/test/cases/active_schema_test_mysql.rb +122 -0
  1430. data/vendor/rails/activerecord/test/cases/active_schema_test_postgresql.rb +24 -0
  1431. data/vendor/rails/activerecord/test/cases/adapter_test.rb +144 -0
  1432. data/vendor/rails/activerecord/test/cases/aggregations_test.rb +167 -0
  1433. data/vendor/rails/activerecord/test/cases/ar_schema_test.rb +32 -0
  1434. data/vendor/rails/activerecord/test/cases/associations/belongs_to_associations_test.rb +438 -0
  1435. data/vendor/rails/activerecord/test/cases/associations/callbacks_test.rb +161 -0
  1436. data/vendor/rails/activerecord/test/cases/associations/cascaded_eager_loading_test.rb +131 -0
  1437. data/vendor/rails/activerecord/test/cases/associations/eager_load_includes_full_sti_class_test.rb +36 -0
  1438. data/vendor/rails/activerecord/test/cases/associations/eager_load_nested_include_test.rb +131 -0
  1439. data/vendor/rails/activerecord/test/cases/associations/eager_load_nested_polymorphic_include.rb +19 -0
  1440. data/vendor/rails/activerecord/test/cases/associations/eager_singularization_test.rb +145 -0
  1441. data/vendor/rails/activerecord/test/cases/associations/eager_test.rb +852 -0
  1442. data/vendor/rails/activerecord/test/cases/associations/extension_test.rb +62 -0
  1443. data/vendor/rails/activerecord/test/cases/associations/habtm_join_table_test.rb +56 -0
  1444. data/vendor/rails/activerecord/test/cases/associations/has_and_belongs_to_many_associations_test.rb +827 -0
  1445. data/vendor/rails/activerecord/test/cases/associations/has_many_associations_test.rb +1264 -0
  1446. data/vendor/rails/activerecord/test/cases/associations/has_many_through_associations_test.rb +360 -0
  1447. data/vendor/rails/activerecord/test/cases/associations/has_one_associations_test.rb +330 -0
  1448. data/vendor/rails/activerecord/test/cases/associations/has_one_through_associations_test.rb +209 -0
  1449. data/vendor/rails/activerecord/test/cases/associations/inner_join_association_test.rb +93 -0
  1450. data/vendor/rails/activerecord/test/cases/associations/inverse_associations_test.rb +566 -0
  1451. data/vendor/rails/activerecord/test/cases/associations/join_model_test.rb +712 -0
  1452. data/vendor/rails/activerecord/test/cases/associations_test.rb +282 -0
  1453. data/vendor/rails/activerecord/test/cases/attribute_methods_test.rb +305 -0
  1454. data/vendor/rails/activerecord/test/cases/autosave_association_test.rb +1218 -0
  1455. data/vendor/rails/activerecord/test/cases/base_test.rb +2143 -0
  1456. data/vendor/rails/activerecord/test/cases/batches_test.rb +81 -0
  1457. data/vendor/rails/activerecord/test/cases/binary_test.rb +30 -0
  1458. data/vendor/rails/activerecord/test/cases/calculations_test.rb +360 -0
  1459. data/vendor/rails/activerecord/test/cases/callbacks_observers_test.rb +38 -0
  1460. data/vendor/rails/activerecord/test/cases/callbacks_test.rb +438 -0
  1461. data/vendor/rails/activerecord/test/cases/class_inheritable_attributes_test.rb +32 -0
  1462. data/vendor/rails/activerecord/test/cases/column_alias_test.rb +17 -0
  1463. data/vendor/rails/activerecord/test/cases/column_definition_test.rb +70 -0
  1464. data/vendor/rails/activerecord/test/cases/connection_pool_test.rb +25 -0
  1465. data/vendor/rails/activerecord/test/cases/connection_test_firebird.rb +8 -0
  1466. data/vendor/rails/activerecord/test/cases/connection_test_mysql.rb +65 -0
  1467. data/vendor/rails/activerecord/test/cases/copy_table_test_sqlite.rb +80 -0
  1468. data/vendor/rails/activerecord/test/cases/counter_cache_test.rb +84 -0
  1469. data/vendor/rails/activerecord/test/cases/database_statements_test.rb +12 -0
  1470. data/vendor/rails/activerecord/test/cases/datatype_test_postgresql.rb +204 -0
  1471. data/vendor/rails/activerecord/test/cases/date_time_test.rb +37 -0
  1472. data/vendor/rails/activerecord/test/cases/default_test_firebird.rb +16 -0
  1473. data/vendor/rails/activerecord/test/cases/defaults_test.rb +111 -0
  1474. data/vendor/rails/activerecord/test/cases/deprecated_finder_test.rb +30 -0
  1475. data/vendor/rails/activerecord/test/cases/dirty_test.rb +316 -0
  1476. data/vendor/rails/activerecord/test/cases/finder_respond_to_test.rb +76 -0
  1477. data/vendor/rails/activerecord/test/cases/finder_test.rb +1070 -0
  1478. data/vendor/rails/activerecord/test/cases/fixtures_test.rb +661 -0
  1479. data/vendor/rails/activerecord/test/cases/helper.rb +68 -0
  1480. data/vendor/rails/activerecord/test/cases/i18n_test.rb +46 -0
  1481. data/vendor/rails/activerecord/test/cases/inheritance_test.rb +262 -0
  1482. data/vendor/rails/activerecord/test/cases/invalid_date_test.rb +24 -0
  1483. data/vendor/rails/activerecord/test/cases/json_serialization_test.rb +219 -0
  1484. data/vendor/rails/activerecord/test/cases/lifecycle_test.rb +193 -0
  1485. data/vendor/rails/activerecord/test/cases/locking_test.rb +350 -0
  1486. data/vendor/rails/activerecord/test/cases/method_scoping_test.rb +704 -0
  1487. data/vendor/rails/activerecord/test/cases/migration_test.rb +1649 -0
  1488. data/vendor/rails/activerecord/test/cases/migration_test_firebird.rb +124 -0
  1489. data/vendor/rails/activerecord/test/cases/mixin_test.rb +96 -0
  1490. data/vendor/rails/activerecord/test/cases/modules_test.rb +109 -0
  1491. data/vendor/rails/activerecord/test/cases/multiple_db_test.rb +85 -0
  1492. data/vendor/rails/activerecord/test/cases/named_scope_test.rb +372 -0
  1493. data/vendor/rails/activerecord/test/cases/nested_attributes_test.rb +840 -0
  1494. data/vendor/rails/activerecord/test/cases/pk_test.rb +119 -0
  1495. data/vendor/rails/activerecord/test/cases/pooled_connections_test.rb +103 -0
  1496. data/vendor/rails/activerecord/test/cases/query_cache_test.rb +129 -0
  1497. data/vendor/rails/activerecord/test/cases/readonly_test.rb +107 -0
  1498. data/vendor/rails/activerecord/test/cases/reflection_test.rb +234 -0
  1499. data/vendor/rails/activerecord/test/cases/reload_models_test.rb +22 -0
  1500. data/vendor/rails/activerecord/test/cases/repair_helper.rb +50 -0
  1501. data/vendor/rails/activerecord/test/cases/reserved_word_test_mysql.rb +176 -0
  1502. data/vendor/rails/activerecord/test/cases/sanitize_test.rb +25 -0
  1503. data/vendor/rails/activerecord/test/cases/schema_authorization_test_postgresql.rb +75 -0
  1504. data/vendor/rails/activerecord/test/cases/schema_dumper_test.rb +211 -0
  1505. data/vendor/rails/activerecord/test/cases/schema_test_postgresql.rb +178 -0
  1506. data/vendor/rails/activerecord/test/cases/serialization_test.rb +47 -0
  1507. data/vendor/rails/activerecord/test/cases/sp_test_mysql.rb +16 -0
  1508. data/vendor/rails/activerecord/test/cases/synonym_test_oracle.rb +17 -0
  1509. data/vendor/rails/activerecord/test/cases/timestamp_test.rb +75 -0
  1510. data/vendor/rails/activerecord/test/cases/transactions_test.rb +543 -0
  1511. data/vendor/rails/activerecord/test/cases/unconnected_test.rb +32 -0
  1512. data/vendor/rails/activerecord/test/cases/validations_i18n_test.rb +925 -0
  1513. data/vendor/rails/activerecord/test/cases/validations_test.rb +1684 -0
  1514. data/vendor/rails/activerecord/test/cases/xml_serialization_test.rb +240 -0
  1515. data/vendor/rails/activerecord/test/cases/yaml_serialization_test.rb +11 -0
  1516. data/vendor/rails/activerecord/test/config.rb +5 -0
  1517. data/vendor/rails/activerecord/test/connections/jdbc_jdbcderby/connection.rb +18 -0
  1518. data/vendor/rails/activerecord/test/connections/jdbc_jdbch2/connection.rb +18 -0
  1519. data/vendor/rails/activerecord/test/connections/jdbc_jdbchsqldb/connection.rb +18 -0
  1520. data/vendor/rails/activerecord/test/connections/jdbc_jdbcmysql/connection.rb +26 -0
  1521. data/vendor/rails/activerecord/test/connections/jdbc_jdbcpostgresql/connection.rb +26 -0
  1522. data/vendor/rails/activerecord/test/connections/jdbc_jdbcsqlite3/connection.rb +25 -0
  1523. data/vendor/rails/activerecord/test/connections/native_db2/connection.rb +25 -0
  1524. data/vendor/rails/activerecord/test/connections/native_firebird/connection.rb +26 -0
  1525. data/vendor/rails/activerecord/test/connections/native_frontbase/connection.rb +27 -0
  1526. data/vendor/rails/activerecord/test/connections/native_mysql/connection.rb +25 -0
  1527. data/vendor/rails/activerecord/test/connections/native_openbase/connection.rb +21 -0
  1528. data/vendor/rails/activerecord/test/connections/native_oracle/connection.rb +27 -0
  1529. data/vendor/rails/activerecord/test/connections/native_postgresql/connection.rb +21 -0
  1530. data/vendor/rails/activerecord/test/connections/native_sqlite/connection.rb +25 -0
  1531. data/vendor/rails/activerecord/test/connections/native_sqlite3/connection.rb +25 -0
  1532. data/vendor/rails/activerecord/test/connections/native_sqlite3/in_memory_connection.rb +18 -0
  1533. data/vendor/rails/activerecord/test/connections/native_sybase/connection.rb +23 -0
  1534. data/vendor/rails/activerecord/test/fixtures/accounts.yml +29 -0
  1535. data/vendor/rails/activerecord/test/fixtures/all/developers.yml +0 -0
  1536. data/vendor/rails/activerecord/test/fixtures/all/people.csv +0 -0
  1537. data/vendor/rails/activerecord/test/fixtures/all/tasks.yml +0 -0
  1538. data/vendor/rails/activerecord/test/fixtures/author_addresses.yml +5 -0
  1539. data/vendor/rails/activerecord/test/fixtures/author_favorites.yml +4 -0
  1540. data/vendor/rails/activerecord/test/fixtures/authors.yml +9 -0
  1541. data/vendor/rails/activerecord/test/fixtures/binaries.yml +132 -0
  1542. data/vendor/rails/activerecord/test/fixtures/books.yml +7 -0
  1543. data/vendor/rails/activerecord/test/fixtures/categories.yml +14 -0
  1544. data/vendor/rails/activerecord/test/fixtures/categories/special_categories.yml +9 -0
  1545. data/vendor/rails/activerecord/test/fixtures/categories/subsubdir/arbitrary_filename.yml +4 -0
  1546. data/vendor/rails/activerecord/test/fixtures/categories_ordered.yml +7 -0
  1547. data/vendor/rails/activerecord/test/fixtures/categories_posts.yml +23 -0
  1548. data/vendor/rails/activerecord/test/fixtures/categorizations.yml +17 -0
  1549. data/vendor/rails/activerecord/test/fixtures/clubs.yml +6 -0
  1550. data/vendor/rails/activerecord/test/fixtures/comments.yml +59 -0
  1551. data/vendor/rails/activerecord/test/fixtures/companies.yml +56 -0
  1552. data/vendor/rails/activerecord/test/fixtures/computers.yml +4 -0
  1553. data/vendor/rails/activerecord/test/fixtures/courses.yml +7 -0
  1554. data/vendor/rails/activerecord/test/fixtures/customers.yml +26 -0
  1555. data/vendor/rails/activerecord/test/fixtures/developers.yml +21 -0
  1556. data/vendor/rails/activerecord/test/fixtures/developers_projects.yml +17 -0
  1557. data/vendor/rails/activerecord/test/fixtures/edges.yml +6 -0
  1558. data/vendor/rails/activerecord/test/fixtures/entrants.yml +14 -0
  1559. data/vendor/rails/activerecord/test/fixtures/faces.yml +11 -0
  1560. data/vendor/rails/activerecord/test/fixtures/fk_test_has_fk.yml +3 -0
  1561. data/vendor/rails/activerecord/test/fixtures/fk_test_has_pk.yml +2 -0
  1562. data/vendor/rails/activerecord/test/fixtures/funny_jokes.yml +10 -0
  1563. data/vendor/rails/activerecord/test/fixtures/interests.yml +33 -0
  1564. data/vendor/rails/activerecord/test/fixtures/items.yml +4 -0
  1565. data/vendor/rails/activerecord/test/fixtures/jobs.yml +7 -0
  1566. data/vendor/rails/activerecord/test/fixtures/legacy_things.yml +3 -0
  1567. data/vendor/rails/activerecord/test/fixtures/mateys.yml +4 -0
  1568. data/vendor/rails/activerecord/test/fixtures/member_types.yml +6 -0
  1569. data/vendor/rails/activerecord/test/fixtures/members.yml +6 -0
  1570. data/vendor/rails/activerecord/test/fixtures/memberships.yml +20 -0
  1571. data/vendor/rails/activerecord/test/fixtures/men.yml +5 -0
  1572. data/vendor/rails/activerecord/test/fixtures/minimalistics.yml +2 -0
  1573. data/vendor/rails/activerecord/test/fixtures/mixed_case_monkeys.yml +6 -0
  1574. data/vendor/rails/activerecord/test/fixtures/mixins.yml +29 -0
  1575. data/vendor/rails/activerecord/test/fixtures/movies.yml +7 -0
  1576. data/vendor/rails/activerecord/test/fixtures/naked/csv/accounts.csv +1 -0
  1577. data/vendor/rails/activerecord/test/fixtures/naked/yml/accounts.yml +1 -0
  1578. data/vendor/rails/activerecord/test/fixtures/naked/yml/companies.yml +1 -0
  1579. data/vendor/rails/activerecord/test/fixtures/naked/yml/courses.yml +1 -0
  1580. data/vendor/rails/activerecord/test/fixtures/organizations.yml +5 -0
  1581. data/vendor/rails/activerecord/test/fixtures/owners.yml +7 -0
  1582. data/vendor/rails/activerecord/test/fixtures/parrots.yml +27 -0
  1583. data/vendor/rails/activerecord/test/fixtures/parrots_pirates.yml +7 -0
  1584. data/vendor/rails/activerecord/test/fixtures/people.yml +15 -0
  1585. data/vendor/rails/activerecord/test/fixtures/pets.yml +14 -0
  1586. data/vendor/rails/activerecord/test/fixtures/pirates.yml +9 -0
  1587. data/vendor/rails/activerecord/test/fixtures/polymorphic_designs.yml +19 -0
  1588. data/vendor/rails/activerecord/test/fixtures/polymorphic_prices.yml +19 -0
  1589. data/vendor/rails/activerecord/test/fixtures/posts.yml +52 -0
  1590. data/vendor/rails/activerecord/test/fixtures/price_estimates.yml +7 -0
  1591. data/vendor/rails/activerecord/test/fixtures/projects.yml +7 -0
  1592. data/vendor/rails/activerecord/test/fixtures/readers.yml +9 -0
  1593. data/vendor/rails/activerecord/test/fixtures/references.yml +17 -0
  1594. data/vendor/rails/activerecord/test/fixtures/reserved_words/distinct.yml +5 -0
  1595. data/vendor/rails/activerecord/test/fixtures/reserved_words/distincts_selects.yml +11 -0
  1596. data/vendor/rails/activerecord/test/fixtures/reserved_words/group.yml +14 -0
  1597. data/vendor/rails/activerecord/test/fixtures/reserved_words/select.yml +8 -0
  1598. data/vendor/rails/activerecord/test/fixtures/reserved_words/values.yml +7 -0
  1599. data/vendor/rails/activerecord/test/fixtures/ships.yml +5 -0
  1600. data/vendor/rails/activerecord/test/fixtures/sponsors.yml +9 -0
  1601. data/vendor/rails/activerecord/test/fixtures/subscribers.yml +7 -0
  1602. data/vendor/rails/activerecord/test/fixtures/subscriptions.yml +12 -0
  1603. data/vendor/rails/activerecord/test/fixtures/taggings.yml +28 -0
  1604. data/vendor/rails/activerecord/test/fixtures/tags.yml +7 -0
  1605. data/vendor/rails/activerecord/test/fixtures/tasks.yml +7 -0
  1606. data/vendor/rails/activerecord/test/fixtures/tees.yml +4 -0
  1607. data/vendor/rails/activerecord/test/fixtures/ties.yml +4 -0
  1608. data/vendor/rails/activerecord/test/fixtures/topics.yml +42 -0
  1609. data/vendor/rails/activerecord/test/fixtures/toys.yml +4 -0
  1610. data/vendor/rails/activerecord/test/fixtures/treasures.yml +10 -0
  1611. data/vendor/rails/activerecord/test/fixtures/vertices.yml +4 -0
  1612. data/vendor/rails/activerecord/test/fixtures/warehouse-things.yml +3 -0
  1613. data/vendor/rails/activerecord/test/fixtures/zines.yml +5 -0
  1614. data/vendor/rails/activerecord/test/migrations/broken/100_migration_that_raises_exception.rb +10 -0
  1615. data/vendor/rails/activerecord/test/migrations/decimal/1_give_me_big_numbers.rb +15 -0
  1616. data/vendor/rails/activerecord/test/migrations/duplicate/1_people_have_last_names.rb +9 -0
  1617. data/vendor/rails/activerecord/test/migrations/duplicate/2_we_need_reminders.rb +12 -0
  1618. data/vendor/rails/activerecord/test/migrations/duplicate/3_foo.rb +7 -0
  1619. data/vendor/rails/activerecord/test/migrations/duplicate/3_innocent_jointable.rb +12 -0
  1620. data/vendor/rails/activerecord/test/migrations/duplicate_names/20080507052938_chunky.rb +7 -0
  1621. data/vendor/rails/activerecord/test/migrations/duplicate_names/20080507053028_chunky.rb +7 -0
  1622. data/vendor/rails/activerecord/test/migrations/interleaved/pass_1/3_innocent_jointable.rb +12 -0
  1623. data/vendor/rails/activerecord/test/migrations/interleaved/pass_2/1_people_have_last_names.rb +9 -0
  1624. data/vendor/rails/activerecord/test/migrations/interleaved/pass_2/3_innocent_jointable.rb +12 -0
  1625. data/vendor/rails/activerecord/test/migrations/interleaved/pass_3/1_people_have_last_names.rb +9 -0
  1626. data/vendor/rails/activerecord/test/migrations/interleaved/pass_3/2_i_raise_on_down.rb +8 -0
  1627. data/vendor/rails/activerecord/test/migrations/interleaved/pass_3/3_innocent_jointable.rb +12 -0
  1628. data/vendor/rails/activerecord/test/migrations/missing/1000_people_have_middle_names.rb +9 -0
  1629. data/vendor/rails/activerecord/test/migrations/missing/1_people_have_last_names.rb +9 -0
  1630. data/vendor/rails/activerecord/test/migrations/missing/3_we_need_reminders.rb +12 -0
  1631. data/vendor/rails/activerecord/test/migrations/missing/4_innocent_jointable.rb +12 -0
  1632. data/vendor/rails/activerecord/test/migrations/valid/1_people_have_last_names.rb +9 -0
  1633. data/vendor/rails/activerecord/test/migrations/valid/2_we_need_reminders.rb +12 -0
  1634. data/vendor/rails/activerecord/test/migrations/valid/3_innocent_jointable.rb +12 -0
  1635. data/vendor/rails/activerecord/test/models/author.rb +151 -0
  1636. data/vendor/rails/activerecord/test/models/auto_id.rb +4 -0
  1637. data/vendor/rails/activerecord/test/models/binary.rb +2 -0
  1638. data/vendor/rails/activerecord/test/models/bird.rb +9 -0
  1639. data/vendor/rails/activerecord/test/models/book.rb +4 -0
  1640. data/vendor/rails/activerecord/test/models/categorization.rb +5 -0
  1641. data/vendor/rails/activerecord/test/models/category.rb +34 -0
  1642. data/vendor/rails/activerecord/test/models/citation.rb +6 -0
  1643. data/vendor/rails/activerecord/test/models/club.rb +13 -0
  1644. data/vendor/rails/activerecord/test/models/column_name.rb +3 -0
  1645. data/vendor/rails/activerecord/test/models/comment.rb +29 -0
  1646. data/vendor/rails/activerecord/test/models/company.rb +173 -0
  1647. data/vendor/rails/activerecord/test/models/company_in_module.rb +78 -0
  1648. data/vendor/rails/activerecord/test/models/computer.rb +3 -0
  1649. data/vendor/rails/activerecord/test/models/contact.rb +16 -0
  1650. data/vendor/rails/activerecord/test/models/contract.rb +5 -0
  1651. data/vendor/rails/activerecord/test/models/course.rb +3 -0
  1652. data/vendor/rails/activerecord/test/models/customer.rb +73 -0
  1653. data/vendor/rails/activerecord/test/models/default.rb +2 -0
  1654. data/vendor/rails/activerecord/test/models/developer.rb +101 -0
  1655. data/vendor/rails/activerecord/test/models/edge.rb +5 -0
  1656. data/vendor/rails/activerecord/test/models/entrant.rb +3 -0
  1657. data/vendor/rails/activerecord/test/models/essay.rb +3 -0
  1658. data/vendor/rails/activerecord/test/models/event.rb +3 -0
  1659. data/vendor/rails/activerecord/test/models/event_author.rb +8 -0
  1660. data/vendor/rails/activerecord/test/models/face.rb +7 -0
  1661. data/vendor/rails/activerecord/test/models/guid.rb +2 -0
  1662. data/vendor/rails/activerecord/test/models/interest.rb +5 -0
  1663. data/vendor/rails/activerecord/test/models/invoice.rb +4 -0
  1664. data/vendor/rails/activerecord/test/models/item.rb +7 -0
  1665. data/vendor/rails/activerecord/test/models/job.rb +5 -0
  1666. data/vendor/rails/activerecord/test/models/joke.rb +3 -0
  1667. data/vendor/rails/activerecord/test/models/keyboard.rb +3 -0
  1668. data/vendor/rails/activerecord/test/models/legacy_thing.rb +3 -0
  1669. data/vendor/rails/activerecord/test/models/line_item.rb +3 -0
  1670. data/vendor/rails/activerecord/test/models/man.rb +9 -0
  1671. data/vendor/rails/activerecord/test/models/matey.rb +4 -0
  1672. data/vendor/rails/activerecord/test/models/member.rb +12 -0
  1673. data/vendor/rails/activerecord/test/models/member_detail.rb +5 -0
  1674. data/vendor/rails/activerecord/test/models/member_type.rb +3 -0
  1675. data/vendor/rails/activerecord/test/models/membership.rb +9 -0
  1676. data/vendor/rails/activerecord/test/models/minimalistic.rb +2 -0
  1677. data/vendor/rails/activerecord/test/models/mixed_case_monkey.rb +3 -0
  1678. data/vendor/rails/activerecord/test/models/movie.rb +5 -0
  1679. data/vendor/rails/activerecord/test/models/order.rb +4 -0
  1680. data/vendor/rails/activerecord/test/models/organization.rb +6 -0
  1681. data/vendor/rails/activerecord/test/models/owner.rb +5 -0
  1682. data/vendor/rails/activerecord/test/models/parrot.rb +22 -0
  1683. data/vendor/rails/activerecord/test/models/person.rb +16 -0
  1684. data/vendor/rails/activerecord/test/models/pet.rb +5 -0
  1685. data/vendor/rails/activerecord/test/models/pirate.rb +80 -0
  1686. data/vendor/rails/activerecord/test/models/polymorphic_design.rb +3 -0
  1687. data/vendor/rails/activerecord/test/models/polymorphic_price.rb +3 -0
  1688. data/vendor/rails/activerecord/test/models/post.rb +102 -0
  1689. data/vendor/rails/activerecord/test/models/price_estimate.rb +3 -0
  1690. data/vendor/rails/activerecord/test/models/project.rb +30 -0
  1691. data/vendor/rails/activerecord/test/models/reader.rb +4 -0
  1692. data/vendor/rails/activerecord/test/models/reference.rb +4 -0
  1693. data/vendor/rails/activerecord/test/models/reply.rb +46 -0
  1694. data/vendor/rails/activerecord/test/models/ship.rb +19 -0
  1695. data/vendor/rails/activerecord/test/models/ship_part.rb +7 -0
  1696. data/vendor/rails/activerecord/test/models/sponsor.rb +4 -0
  1697. data/vendor/rails/activerecord/test/models/subject.rb +4 -0
  1698. data/vendor/rails/activerecord/test/models/subscriber.rb +8 -0
  1699. data/vendor/rails/activerecord/test/models/subscription.rb +4 -0
  1700. data/vendor/rails/activerecord/test/models/tag.rb +7 -0
  1701. data/vendor/rails/activerecord/test/models/tagging.rb +10 -0
  1702. data/vendor/rails/activerecord/test/models/task.rb +3 -0
  1703. data/vendor/rails/activerecord/test/models/tee.rb +4 -0
  1704. data/vendor/rails/activerecord/test/models/tie.rb +4 -0
  1705. data/vendor/rails/activerecord/test/models/topic.rb +80 -0
  1706. data/vendor/rails/activerecord/test/models/toy.rb +6 -0
  1707. data/vendor/rails/activerecord/test/models/treasure.rb +8 -0
  1708. data/vendor/rails/activerecord/test/models/vertex.rb +9 -0
  1709. data/vendor/rails/activerecord/test/models/warehouse_thing.rb +5 -0
  1710. data/vendor/rails/activerecord/test/models/zine.rb +3 -0
  1711. data/vendor/rails/activerecord/test/schema/mysql_specific_schema.rb +31 -0
  1712. data/vendor/rails/activerecord/test/schema/postgresql_specific_schema.rb +114 -0
  1713. data/vendor/rails/activerecord/test/schema/schema.rb +550 -0
  1714. data/vendor/rails/activerecord/test/schema/schema2.rb +6 -0
  1715. data/vendor/rails/activerecord/test/schema/sqlite_specific_schema.rb +25 -0
  1716. data/vendor/rails/activeresource/CHANGELOG +306 -0
  1717. data/vendor/rails/activeresource/MIT-LICENSE +20 -0
  1718. data/vendor/rails/activeresource/README +165 -0
  1719. data/vendor/rails/activeresource/Rakefile +139 -0
  1720. data/vendor/rails/activeresource/lib/active_resource.rb +44 -0
  1721. data/vendor/rails/activeresource/lib/active_resource/base.rb +1166 -0
  1722. data/vendor/rails/activeresource/lib/active_resource/connection.rb +283 -0
  1723. data/vendor/rails/activeresource/lib/active_resource/custom_methods.rb +120 -0
  1724. data/vendor/rails/activeresource/lib/active_resource/exceptions.rb +66 -0
  1725. data/vendor/rails/activeresource/lib/active_resource/formats.rb +14 -0
  1726. data/vendor/rails/activeresource/lib/active_resource/formats/json_format.rb +23 -0
  1727. data/vendor/rails/activeresource/lib/active_resource/formats/xml_format.rb +34 -0
  1728. data/vendor/rails/activeresource/lib/active_resource/http_mock.rb +302 -0
  1729. data/vendor/rails/activeresource/lib/active_resource/validations.rb +290 -0
  1730. data/vendor/rails/activeresource/lib/active_resource/version.rb +9 -0
  1731. data/vendor/rails/activeresource/lib/activeresource.rb +2 -0
  1732. data/vendor/rails/activeresource/test/abstract_unit.rb +21 -0
  1733. data/vendor/rails/activeresource/test/authorization_test.rb +122 -0
  1734. data/vendor/rails/activeresource/test/base/custom_methods_test.rb +100 -0
  1735. data/vendor/rails/activeresource/test/base/equality_test.rb +52 -0
  1736. data/vendor/rails/activeresource/test/base/load_test.rb +161 -0
  1737. data/vendor/rails/activeresource/test/base_errors_test.rb +98 -0
  1738. data/vendor/rails/activeresource/test/base_test.rb +1087 -0
  1739. data/vendor/rails/activeresource/test/connection_test.rb +238 -0
  1740. data/vendor/rails/activeresource/test/fixtures/beast.rb +14 -0
  1741. data/vendor/rails/activeresource/test/fixtures/customer.rb +3 -0
  1742. data/vendor/rails/activeresource/test/fixtures/person.rb +3 -0
  1743. data/vendor/rails/activeresource/test/fixtures/proxy.rb +4 -0
  1744. data/vendor/rails/activeresource/test/fixtures/street_address.rb +4 -0
  1745. data/vendor/rails/activeresource/test/format_test.rb +112 -0
  1746. data/vendor/rails/activeresource/test/http_mock_test.rb +155 -0
  1747. data/vendor/rails/activeresource/test/setter_trap.rb +26 -0
  1748. data/vendor/rails/activesupport/CHANGELOG +1383 -0
  1749. data/vendor/rails/activesupport/MIT-LICENSE +20 -0
  1750. data/vendor/rails/activesupport/README +43 -0
  1751. data/vendor/rails/activesupport/Rakefile +175 -0
  1752. data/vendor/rails/activesupport/bin/generate_tables +147 -0
  1753. data/vendor/rails/activesupport/install.rb +30 -0
  1754. data/vendor/rails/activesupport/lib/active_support.rb +60 -0
  1755. data/vendor/rails/activesupport/lib/active_support/all.rb +8 -0
  1756. data/vendor/rails/activesupport/lib/active_support/backtrace_cleaner.rb +72 -0
  1757. data/vendor/rails/activesupport/lib/active_support/base64.rb +33 -0
  1758. data/vendor/rails/activesupport/lib/active_support/basic_object.rb +21 -0
  1759. data/vendor/rails/activesupport/lib/active_support/buffered_logger.rb +129 -0
  1760. data/vendor/rails/activesupport/lib/active_support/cache.rb +248 -0
  1761. data/vendor/rails/activesupport/lib/active_support/cache/compressed_mem_cache_store.rb +20 -0
  1762. data/vendor/rails/activesupport/lib/active_support/cache/drb_store.rb +14 -0
  1763. data/vendor/rails/activesupport/lib/active_support/cache/file_store.rb +72 -0
  1764. data/vendor/rails/activesupport/lib/active_support/cache/mem_cache_store.rb +143 -0
  1765. data/vendor/rails/activesupport/lib/active_support/cache/memory_store.rb +58 -0
  1766. data/vendor/rails/activesupport/lib/active_support/cache/strategy/local_cache.rb +104 -0
  1767. data/vendor/rails/activesupport/lib/active_support/cache/synchronized_memory_store.rb +47 -0
  1768. data/vendor/rails/activesupport/lib/active_support/callbacks.rb +279 -0
  1769. data/vendor/rails/activesupport/lib/active_support/core_ext.rb +8 -0
  1770. data/vendor/rails/activesupport/lib/active_support/core_ext/array.rb +15 -0
  1771. data/vendor/rails/activesupport/lib/active_support/core_ext/array/access.rb +53 -0
  1772. data/vendor/rails/activesupport/lib/active_support/core_ext/array/conversions.rb +197 -0
  1773. data/vendor/rails/activesupport/lib/active_support/core_ext/array/extract_options.rb +20 -0
  1774. data/vendor/rails/activesupport/lib/active_support/core_ext/array/grouping.rb +106 -0
  1775. data/vendor/rails/activesupport/lib/active_support/core_ext/array/random_access.rb +42 -0
  1776. data/vendor/rails/activesupport/lib/active_support/core_ext/array/wrapper.rb +24 -0
  1777. data/vendor/rails/activesupport/lib/active_support/core_ext/base64.rb +4 -0
  1778. data/vendor/rails/activesupport/lib/active_support/core_ext/base64/encoding.rb +16 -0
  1779. data/vendor/rails/activesupport/lib/active_support/core_ext/benchmark.rb +19 -0
  1780. data/vendor/rails/activesupport/lib/active_support/core_ext/bigdecimal.rb +6 -0
  1781. data/vendor/rails/activesupport/lib/active_support/core_ext/bigdecimal/conversions.rb +37 -0
  1782. data/vendor/rails/activesupport/lib/active_support/core_ext/blank.rb +2 -0
  1783. data/vendor/rails/activesupport/lib/active_support/core_ext/cgi.rb +5 -0
  1784. data/vendor/rails/activesupport/lib/active_support/core_ext/cgi/escape_skipping_slashes.rb +23 -0
  1785. data/vendor/rails/activesupport/lib/active_support/core_ext/class.rb +5 -0
  1786. data/vendor/rails/activesupport/lib/active_support/core_ext/class/attribute.rb +67 -0
  1787. data/vendor/rails/activesupport/lib/active_support/core_ext/class/attribute_accessors.rb +61 -0
  1788. data/vendor/rails/activesupport/lib/active_support/core_ext/class/delegating_attributes.rb +47 -0
  1789. data/vendor/rails/activesupport/lib/active_support/core_ext/class/inheritable_attributes.rb +140 -0
  1790. data/vendor/rails/activesupport/lib/active_support/core_ext/class/removal.rb +50 -0
  1791. data/vendor/rails/activesupport/lib/active_support/core_ext/date.rb +10 -0
  1792. data/vendor/rails/activesupport/lib/active_support/core_ext/date/behavior.rb +42 -0
  1793. data/vendor/rails/activesupport/lib/active_support/core_ext/date/calculations.rb +241 -0
  1794. data/vendor/rails/activesupport/lib/active_support/core_ext/date/conversions.rb +107 -0
  1795. data/vendor/rails/activesupport/lib/active_support/core_ext/date_time.rb +12 -0
  1796. data/vendor/rails/activesupport/lib/active_support/core_ext/date_time/calculations.rb +126 -0
  1797. data/vendor/rails/activesupport/lib/active_support/core_ext/date_time/conversions.rb +107 -0
  1798. data/vendor/rails/activesupport/lib/active_support/core_ext/duplicable.rb +43 -0
  1799. data/vendor/rails/activesupport/lib/active_support/core_ext/enumerable.rb +120 -0
  1800. data/vendor/rails/activesupport/lib/active_support/core_ext/exception.rb +45 -0
  1801. data/vendor/rails/activesupport/lib/active_support/core_ext/file.rb +5 -0
  1802. data/vendor/rails/activesupport/lib/active_support/core_ext/file/atomic.rb +47 -0
  1803. data/vendor/rails/activesupport/lib/active_support/core_ext/float.rb +7 -0
  1804. data/vendor/rails/activesupport/lib/active_support/core_ext/float/rounding.rb +24 -0
  1805. data/vendor/rails/activesupport/lib/active_support/core_ext/float/time.rb +27 -0
  1806. data/vendor/rails/activesupport/lib/active_support/core_ext/hash.rb +14 -0
  1807. data/vendor/rails/activesupport/lib/active_support/core_ext/hash/conversions.rb +247 -0
  1808. data/vendor/rails/activesupport/lib/active_support/core_ext/hash/deep_merge.rb +23 -0
  1809. data/vendor/rails/activesupport/lib/active_support/core_ext/hash/diff.rb +19 -0
  1810. data/vendor/rails/activesupport/lib/active_support/core_ext/hash/except.rb +25 -0
  1811. data/vendor/rails/activesupport/lib/active_support/core_ext/hash/indifferent_access.rb +143 -0
  1812. data/vendor/rails/activesupport/lib/active_support/core_ext/hash/keys.rb +52 -0
  1813. data/vendor/rails/activesupport/lib/active_support/core_ext/hash/reverse_merge.rb +35 -0
  1814. data/vendor/rails/activesupport/lib/active_support/core_ext/hash/slice.rb +40 -0
  1815. data/vendor/rails/activesupport/lib/active_support/core_ext/integer.rb +9 -0
  1816. data/vendor/rails/activesupport/lib/active_support/core_ext/integer/even_odd.rb +29 -0
  1817. data/vendor/rails/activesupport/lib/active_support/core_ext/integer/inflections.rb +20 -0
  1818. data/vendor/rails/activesupport/lib/active_support/core_ext/integer/time.rb +45 -0
  1819. data/vendor/rails/activesupport/lib/active_support/core_ext/kernel.rb +5 -0
  1820. data/vendor/rails/activesupport/lib/active_support/core_ext/kernel/agnostics.rb +11 -0
  1821. data/vendor/rails/activesupport/lib/active_support/core_ext/kernel/daemonizing.rb +7 -0
  1822. data/vendor/rails/activesupport/lib/active_support/core_ext/kernel/debugger.rb +16 -0
  1823. data/vendor/rails/activesupport/lib/active_support/core_ext/kernel/reporting.rb +59 -0
  1824. data/vendor/rails/activesupport/lib/active_support/core_ext/kernel/requires.rb +24 -0
  1825. data/vendor/rails/activesupport/lib/active_support/core_ext/kernel/singleton_class.rb +13 -0
  1826. data/vendor/rails/activesupport/lib/active_support/core_ext/load_error.rb +38 -0
  1827. data/vendor/rails/activesupport/lib/active_support/core_ext/logger.rb +145 -0
  1828. data/vendor/rails/activesupport/lib/active_support/core_ext/module.rb +23 -0
  1829. data/vendor/rails/activesupport/lib/active_support/core_ext/module/aliasing.rb +74 -0
  1830. data/vendor/rails/activesupport/lib/active_support/core_ext/module/attr_accessor_with_default.rb +31 -0
  1831. data/vendor/rails/activesupport/lib/active_support/core_ext/module/attr_internal.rb +32 -0
  1832. data/vendor/rails/activesupport/lib/active_support/core_ext/module/attribute_accessors.rb +67 -0
  1833. data/vendor/rails/activesupport/lib/active_support/core_ext/module/delegation.rb +135 -0
  1834. data/vendor/rails/activesupport/lib/active_support/core_ext/module/inclusion.rb +30 -0
  1835. data/vendor/rails/activesupport/lib/active_support/core_ext/module/introspection.rb +90 -0
  1836. data/vendor/rails/activesupport/lib/active_support/core_ext/module/loading.rb +23 -0
  1837. data/vendor/rails/activesupport/lib/active_support/core_ext/module/model_naming.rb +25 -0
  1838. data/vendor/rails/activesupport/lib/active_support/core_ext/module/remove_method.rb +6 -0
  1839. data/vendor/rails/activesupport/lib/active_support/core_ext/module/synchronization.rb +39 -0
  1840. data/vendor/rails/activesupport/lib/active_support/core_ext/name_error.rb +19 -0
  1841. data/vendor/rails/activesupport/lib/active_support/core_ext/numeric.rb +9 -0
  1842. data/vendor/rails/activesupport/lib/active_support/core_ext/numeric/bytes.rb +50 -0
  1843. data/vendor/rails/activesupport/lib/active_support/core_ext/numeric/conversions.rb +19 -0
  1844. data/vendor/rails/activesupport/lib/active_support/core_ext/numeric/time.rb +81 -0
  1845. data/vendor/rails/activesupport/lib/active_support/core_ext/object.rb +7 -0
  1846. data/vendor/rails/activesupport/lib/active_support/core_ext/object/blank.rb +76 -0
  1847. data/vendor/rails/activesupport/lib/active_support/core_ext/object/conversions.rb +15 -0
  1848. data/vendor/rails/activesupport/lib/active_support/core_ext/object/extending.rb +80 -0
  1849. data/vendor/rails/activesupport/lib/active_support/core_ext/object/instance_variables.rb +74 -0
  1850. data/vendor/rails/activesupport/lib/active_support/core_ext/object/metaclass.rb +14 -0
  1851. data/vendor/rails/activesupport/lib/active_support/core_ext/object/misc.rb +93 -0
  1852. data/vendor/rails/activesupport/lib/active_support/core_ext/object/singleton_class.rb +13 -0
  1853. data/vendor/rails/activesupport/lib/active_support/core_ext/pathname.rb +7 -0
  1854. data/vendor/rails/activesupport/lib/active_support/core_ext/pathname/clean_within.rb +14 -0
  1855. data/vendor/rails/activesupport/lib/active_support/core_ext/proc.rb +12 -0
  1856. data/vendor/rails/activesupport/lib/active_support/core_ext/process.rb +1 -0
  1857. data/vendor/rails/activesupport/lib/active_support/core_ext/process/daemon.rb +25 -0
  1858. data/vendor/rails/activesupport/lib/active_support/core_ext/range.rb +11 -0
  1859. data/vendor/rails/activesupport/lib/active_support/core_ext/range/blockless_step.rb +32 -0
  1860. data/vendor/rails/activesupport/lib/active_support/core_ext/range/conversions.rb +27 -0
  1861. data/vendor/rails/activesupport/lib/active_support/core_ext/range/include_range.rb +30 -0
  1862. data/vendor/rails/activesupport/lib/active_support/core_ext/range/overlaps.rb +15 -0
  1863. data/vendor/rails/activesupport/lib/active_support/core_ext/rexml.rb +41 -0
  1864. data/vendor/rails/activesupport/lib/active_support/core_ext/string.rb +24 -0
  1865. data/vendor/rails/activesupport/lib/active_support/core_ext/string/access.rb +106 -0
  1866. data/vendor/rails/activesupport/lib/active_support/core_ext/string/behavior.rb +13 -0
  1867. data/vendor/rails/activesupport/lib/active_support/core_ext/string/bytesize.rb +5 -0
  1868. data/vendor/rails/activesupport/lib/active_support/core_ext/string/conversions.rb +28 -0
  1869. data/vendor/rails/activesupport/lib/active_support/core_ext/string/filters.rb +26 -0
  1870. data/vendor/rails/activesupport/lib/active_support/core_ext/string/inflections.rb +167 -0
  1871. data/vendor/rails/activesupport/lib/active_support/core_ext/string/iterators.rb +23 -0
  1872. data/vendor/rails/activesupport/lib/active_support/core_ext/string/multibyte.rb +81 -0
  1873. data/vendor/rails/activesupport/lib/active_support/core_ext/string/output_safety.rb +101 -0
  1874. data/vendor/rails/activesupport/lib/active_support/core_ext/string/starts_ends_with.rb +33 -0
  1875. data/vendor/rails/activesupport/lib/active_support/core_ext/string/xchar.rb +11 -0
  1876. data/vendor/rails/activesupport/lib/active_support/core_ext/symbol.rb +14 -0
  1877. data/vendor/rails/activesupport/lib/active_support/core_ext/time.rb +46 -0
  1878. data/vendor/rails/activesupport/lib/active_support/core_ext/time/behavior.rb +13 -0
  1879. data/vendor/rails/activesupport/lib/active_support/core_ext/time/calculations.rb +313 -0
  1880. data/vendor/rails/activesupport/lib/active_support/core_ext/time/conversions.rb +90 -0
  1881. data/vendor/rails/activesupport/lib/active_support/core_ext/time/zones.rb +86 -0
  1882. data/vendor/rails/activesupport/lib/active_support/core_ext/try.rb +36 -0
  1883. data/vendor/rails/activesupport/lib/active_support/core_ext/uri.rb +16 -0
  1884. data/vendor/rails/activesupport/lib/active_support/dependencies.rb +651 -0
  1885. data/vendor/rails/activesupport/lib/active_support/deprecation.rb +204 -0
  1886. data/vendor/rails/activesupport/lib/active_support/duration.rb +100 -0
  1887. data/vendor/rails/activesupport/lib/active_support/gzip.rb +25 -0
  1888. data/vendor/rails/activesupport/lib/active_support/inflections.rb +56 -0
  1889. data/vendor/rails/activesupport/lib/active_support/inflector.rb +409 -0
  1890. data/vendor/rails/activesupport/lib/active_support/json.rb +2 -0
  1891. data/vendor/rails/activesupport/lib/active_support/json/backends/jsongem.rb +37 -0
  1892. data/vendor/rails/activesupport/lib/active_support/json/backends/yajl.rb +40 -0
  1893. data/vendor/rails/activesupport/lib/active_support/json/backends/yaml.rb +87 -0
  1894. data/vendor/rails/activesupport/lib/active_support/json/decoding.rb +50 -0
  1895. data/vendor/rails/activesupport/lib/active_support/json/encoders/date.rb +22 -0
  1896. data/vendor/rails/activesupport/lib/active_support/json/encoders/date_time.rb +22 -0
  1897. data/vendor/rails/activesupport/lib/active_support/json/encoders/enumerable.rb +17 -0
  1898. data/vendor/rails/activesupport/lib/active_support/json/encoders/false_class.rb +7 -0
  1899. data/vendor/rails/activesupport/lib/active_support/json/encoders/hash.rb +56 -0
  1900. data/vendor/rails/activesupport/lib/active_support/json/encoders/nil_class.rb +7 -0
  1901. data/vendor/rails/activesupport/lib/active_support/json/encoders/numeric.rb +21 -0
  1902. data/vendor/rails/activesupport/lib/active_support/json/encoders/object.rb +10 -0
  1903. data/vendor/rails/activesupport/lib/active_support/json/encoders/regexp.rb +9 -0
  1904. data/vendor/rails/activesupport/lib/active_support/json/encoders/string.rb +9 -0
  1905. data/vendor/rails/activesupport/lib/active_support/json/encoders/symbol.rb +5 -0
  1906. data/vendor/rails/activesupport/lib/active_support/json/encoders/time.rb +22 -0
  1907. data/vendor/rails/activesupport/lib/active_support/json/encoders/true_class.rb +7 -0
  1908. data/vendor/rails/activesupport/lib/active_support/json/encoding.rb +111 -0
  1909. data/vendor/rails/activesupport/lib/active_support/json/variable.rb +10 -0
  1910. data/vendor/rails/activesupport/lib/active_support/locale/en.yml +36 -0
  1911. data/vendor/rails/activesupport/lib/active_support/memoizable.rb +102 -0
  1912. data/vendor/rails/activesupport/lib/active_support/message_encryptor.rb +70 -0
  1913. data/vendor/rails/activesupport/lib/active_support/message_verifier.rb +79 -0
  1914. data/vendor/rails/activesupport/lib/active_support/multibyte.rb +57 -0
  1915. data/vendor/rails/activesupport/lib/active_support/multibyte/chars.rb +707 -0
  1916. data/vendor/rails/activesupport/lib/active_support/multibyte/exceptions.rb +8 -0
  1917. data/vendor/rails/activesupport/lib/active_support/multibyte/unicode_database.rb +71 -0
  1918. data/vendor/rails/activesupport/lib/active_support/multibyte/utils.rb +60 -0
  1919. data/vendor/rails/activesupport/lib/active_support/option_merger.rb +23 -0
  1920. data/vendor/rails/activesupport/lib/active_support/ordered_hash.rb +164 -0
  1921. data/vendor/rails/activesupport/lib/active_support/ordered_options.rb +19 -0
  1922. data/vendor/rails/activesupport/lib/active_support/rescuable.rb +108 -0
  1923. data/vendor/rails/activesupport/lib/active_support/secure_random.rb +199 -0
  1924. data/vendor/rails/activesupport/lib/active_support/string_inquirer.rb +21 -0
  1925. data/vendor/rails/activesupport/lib/active_support/test_case.rb +40 -0
  1926. data/vendor/rails/activesupport/lib/active_support/testing/assertions.rb +79 -0
  1927. data/vendor/rails/activesupport/lib/active_support/testing/declarative.rb +21 -0
  1928. data/vendor/rails/activesupport/lib/active_support/testing/default.rb +9 -0
  1929. data/vendor/rails/activesupport/lib/active_support/testing/deprecation.rb +57 -0
  1930. data/vendor/rails/activesupport/lib/active_support/testing/performance.rb +452 -0
  1931. data/vendor/rails/activesupport/lib/active_support/testing/setup_and_teardown.rb +91 -0
  1932. data/vendor/rails/activesupport/lib/active_support/time_with_zone.rb +335 -0
  1933. data/vendor/rails/activesupport/lib/active_support/values/time_zone.rb +416 -0
  1934. data/vendor/rails/activesupport/lib/active_support/values/unicode_tables.dat +0 -0
  1935. data/vendor/rails/activesupport/lib/active_support/vendor.rb +36 -0
  1936. data/vendor/rails/activesupport/lib/active_support/vendor/builder-2.1.2/blankslate.rb +113 -0
  1937. data/vendor/rails/activesupport/lib/active_support/vendor/builder-2.1.2/builder.rb +13 -0
  1938. data/vendor/rails/activesupport/lib/active_support/vendor/builder-2.1.2/builder/blankslate.rb +20 -0
  1939. data/vendor/rails/activesupport/lib/active_support/vendor/builder-2.1.2/builder/css.rb +250 -0
  1940. data/vendor/rails/activesupport/lib/active_support/vendor/builder-2.1.2/builder/xchar.rb +115 -0
  1941. data/vendor/rails/activesupport/lib/active_support/vendor/builder-2.1.2/builder/xmlbase.rb +139 -0
  1942. data/vendor/rails/activesupport/lib/active_support/vendor/builder-2.1.2/builder/xmlevents.rb +63 -0
  1943. data/vendor/rails/activesupport/lib/active_support/vendor/builder-2.1.2/builder/xmlmarkup.rb +328 -0
  1944. data/vendor/rails/activesupport/lib/active_support/vendor/i18n-0.4.1/i18n.rb +322 -0
  1945. data/vendor/rails/activesupport/lib/active_support/vendor/i18n-0.4.1/i18n/backend.rb +20 -0
  1946. data/vendor/rails/activesupport/lib/active_support/vendor/i18n-0.4.1/i18n/backend/active_record.rb +61 -0
  1947. data/vendor/rails/activesupport/lib/active_support/vendor/i18n-0.4.1/i18n/backend/active_record/missing.rb +65 -0
  1948. data/vendor/rails/activesupport/lib/active_support/vendor/i18n-0.4.1/i18n/backend/active_record/store_procs.rb +38 -0
  1949. data/vendor/rails/activesupport/lib/active_support/vendor/i18n-0.4.1/i18n/backend/active_record/translation.rb +93 -0
  1950. data/vendor/rails/activesupport/lib/active_support/vendor/i18n-0.4.1/i18n/backend/base.rb +237 -0
  1951. data/vendor/rails/activesupport/lib/active_support/vendor/i18n-0.4.1/i18n/backend/cache.rb +77 -0
  1952. data/vendor/rails/activesupport/lib/active_support/vendor/i18n-0.4.1/i18n/backend/cascade.rb +57 -0
  1953. data/vendor/rails/activesupport/lib/active_support/vendor/i18n-0.4.1/i18n/backend/chain.rb +77 -0
  1954. data/vendor/rails/activesupport/lib/active_support/vendor/i18n-0.4.1/i18n/backend/cldr.rb +100 -0
  1955. data/vendor/rails/activesupport/lib/active_support/vendor/i18n-0.4.1/i18n/backend/fallbacks.rb +69 -0
  1956. data/vendor/rails/activesupport/lib/active_support/vendor/i18n-0.4.1/i18n/backend/flatten.rb +113 -0
  1957. data/vendor/rails/activesupport/lib/active_support/vendor/i18n-0.4.1/i18n/backend/gettext.rb +75 -0
  1958. data/vendor/rails/activesupport/lib/active_support/vendor/i18n-0.4.1/i18n/backend/interpolation_compiler.rb +123 -0
  1959. data/vendor/rails/activesupport/lib/active_support/vendor/i18n-0.4.1/i18n/backend/key_value.rb +102 -0
  1960. data/vendor/rails/activesupport/lib/active_support/vendor/i18n-0.4.1/i18n/backend/memoize.rb +48 -0
  1961. data/vendor/rails/activesupport/lib/active_support/vendor/i18n-0.4.1/i18n/backend/metadata.rb +65 -0
  1962. data/vendor/rails/activesupport/lib/active_support/vendor/i18n-0.4.1/i18n/backend/pluralization.rb +57 -0
  1963. data/vendor/rails/activesupport/lib/active_support/vendor/i18n-0.4.1/i18n/backend/simple.rb +87 -0
  1964. data/vendor/rails/activesupport/lib/active_support/vendor/i18n-0.4.1/i18n/backend/transliterator.rb +98 -0
  1965. data/vendor/rails/activesupport/lib/active_support/vendor/i18n-0.4.1/i18n/config.rb +84 -0
  1966. data/vendor/rails/activesupport/lib/active_support/vendor/i18n-0.4.1/i18n/core_ext/hash.rb +28 -0
  1967. data/vendor/rails/activesupport/lib/active_support/vendor/i18n-0.4.1/i18n/core_ext/string/interpolate.rb +98 -0
  1968. data/vendor/rails/activesupport/lib/active_support/vendor/i18n-0.4.1/i18n/exceptions.rb +61 -0
  1969. data/vendor/rails/activesupport/lib/active_support/vendor/i18n-0.4.1/i18n/gettext.rb +27 -0
  1970. data/vendor/rails/activesupport/lib/active_support/vendor/i18n-0.4.1/i18n/gettext/helpers.rb +65 -0
  1971. data/vendor/rails/activesupport/lib/active_support/vendor/i18n-0.4.1/i18n/gettext/po_parser.rb +329 -0
  1972. data/vendor/rails/activesupport/lib/active_support/vendor/i18n-0.4.1/i18n/locale.rb +6 -0
  1973. data/vendor/rails/activesupport/lib/active_support/vendor/i18n-0.4.1/i18n/locale/fallbacks.rb +98 -0
  1974. data/vendor/rails/activesupport/lib/active_support/vendor/i18n-0.4.1/i18n/locale/tag.rb +28 -0
  1975. data/vendor/rails/activesupport/lib/active_support/vendor/i18n-0.4.1/i18n/locale/tag/parents.rb +24 -0
  1976. data/vendor/rails/activesupport/lib/active_support/vendor/i18n-0.4.1/i18n/locale/tag/rfc4646.rb +76 -0
  1977. data/vendor/rails/activesupport/lib/active_support/vendor/i18n-0.4.1/i18n/locale/tag/simple.rb +41 -0
  1978. data/vendor/rails/activesupport/lib/active_support/vendor/i18n-0.4.1/i18n/version.rb +3 -0
  1979. data/vendor/rails/activesupport/lib/active_support/vendor/memcache-client-1.7.4/memcache.rb +1107 -0
  1980. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo.rb +33 -0
  1981. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/data_timezone.rb +47 -0
  1982. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/data_timezone_info.rb +228 -0
  1983. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Africa/Algiers.rb +55 -0
  1984. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Africa/Cairo.rb +219 -0
  1985. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Africa/Casablanca.rb +40 -0
  1986. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Africa/Harare.rb +18 -0
  1987. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Africa/Johannesburg.rb +25 -0
  1988. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Africa/Monrovia.rb +22 -0
  1989. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Africa/Nairobi.rb +23 -0
  1990. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Argentina/Buenos_Aires.rb +166 -0
  1991. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Argentina/San_Juan.rb +86 -0
  1992. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Bogota.rb +23 -0
  1993. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Caracas.rb +23 -0
  1994. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Chicago.rb +283 -0
  1995. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Chihuahua.rb +136 -0
  1996. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Denver.rb +204 -0
  1997. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Godthab.rb +161 -0
  1998. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Guatemala.rb +27 -0
  1999. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Halifax.rb +274 -0
  2000. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Indiana/Indianapolis.rb +149 -0
  2001. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Juneau.rb +194 -0
  2002. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/La_Paz.rb +22 -0
  2003. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Lima.rb +35 -0
  2004. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Los_Angeles.rb +232 -0
  2005. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Mazatlan.rb +139 -0
  2006. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Mexico_City.rb +144 -0
  2007. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Monterrey.rb +131 -0
  2008. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/New_York.rb +282 -0
  2009. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Phoenix.rb +30 -0
  2010. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Regina.rb +74 -0
  2011. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Santiago.rb +205 -0
  2012. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Sao_Paulo.rb +171 -0
  2013. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/St_Johns.rb +288 -0
  2014. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Tijuana.rb +196 -0
  2015. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Almaty.rb +67 -0
  2016. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Baghdad.rb +73 -0
  2017. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Baku.rb +161 -0
  2018. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Bangkok.rb +20 -0
  2019. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Chongqing.rb +33 -0
  2020. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Colombo.rb +30 -0
  2021. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Dhaka.rb +27 -0
  2022. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Hong_Kong.rb +87 -0
  2023. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Irkutsk.rb +165 -0
  2024. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Jakarta.rb +30 -0
  2025. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Jerusalem.rb +163 -0
  2026. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Kabul.rb +20 -0
  2027. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Kamchatka.rb +163 -0
  2028. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Karachi.rb +30 -0
  2029. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Katmandu.rb +20 -0
  2030. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Kolkata.rb +25 -0
  2031. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Krasnoyarsk.rb +163 -0
  2032. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Kuala_Lumpur.rb +31 -0
  2033. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Kuwait.rb +18 -0
  2034. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Magadan.rb +163 -0
  2035. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Muscat.rb +18 -0
  2036. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Novosibirsk.rb +164 -0
  2037. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Rangoon.rb +24 -0
  2038. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Riyadh.rb +18 -0
  2039. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Seoul.rb +34 -0
  2040. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Shanghai.rb +35 -0
  2041. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Singapore.rb +33 -0
  2042. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Taipei.rb +59 -0
  2043. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Tashkent.rb +47 -0
  2044. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Tbilisi.rb +78 -0
  2045. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Tehran.rb +121 -0
  2046. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Tokyo.rb +30 -0
  2047. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Ulaanbaatar.rb +65 -0
  2048. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Urumqi.rb +33 -0
  2049. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Vladivostok.rb +164 -0
  2050. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Yakutsk.rb +163 -0
  2051. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Yekaterinburg.rb +165 -0
  2052. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Yerevan.rb +165 -0
  2053. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Atlantic/Azores.rb +270 -0
  2054. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Atlantic/Cape_Verde.rb +23 -0
  2055. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Atlantic/South_Georgia.rb +18 -0
  2056. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Australia/Adelaide.rb +187 -0
  2057. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Australia/Brisbane.rb +35 -0
  2058. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Australia/Darwin.rb +29 -0
  2059. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Australia/Hobart.rb +193 -0
  2060. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Australia/Melbourne.rb +185 -0
  2061. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Australia/Perth.rb +37 -0
  2062. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Australia/Sydney.rb +185 -0
  2063. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Etc/UTC.rb +16 -0
  2064. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Amsterdam.rb +228 -0
  2065. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Athens.rb +185 -0
  2066. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Belgrade.rb +163 -0
  2067. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Berlin.rb +188 -0
  2068. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Bratislava.rb +13 -0
  2069. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Brussels.rb +232 -0
  2070. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Bucharest.rb +181 -0
  2071. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Budapest.rb +197 -0
  2072. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Copenhagen.rb +179 -0
  2073. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Dublin.rb +276 -0
  2074. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Helsinki.rb +163 -0
  2075. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Istanbul.rb +218 -0
  2076. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Kiev.rb +168 -0
  2077. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Lisbon.rb +268 -0
  2078. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Ljubljana.rb +13 -0
  2079. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/London.rb +288 -0
  2080. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Madrid.rb +211 -0
  2081. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Minsk.rb +170 -0
  2082. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Moscow.rb +181 -0
  2083. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Paris.rb +232 -0
  2084. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Prague.rb +187 -0
  2085. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Riga.rb +176 -0
  2086. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Rome.rb +215 -0
  2087. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Sarajevo.rb +13 -0
  2088. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Skopje.rb +13 -0
  2089. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Sofia.rb +173 -0
  2090. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Stockholm.rb +165 -0
  2091. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Tallinn.rb +172 -0
  2092. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Vienna.rb +183 -0
  2093. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Vilnius.rb +170 -0
  2094. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Warsaw.rb +212 -0
  2095. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Zagreb.rb +13 -0
  2096. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Pacific/Auckland.rb +202 -0
  2097. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Pacific/Fiji.rb +23 -0
  2098. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Pacific/Guam.rb +22 -0
  2099. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Pacific/Honolulu.rb +28 -0
  2100. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Pacific/Majuro.rb +20 -0
  2101. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Pacific/Midway.rb +25 -0
  2102. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Pacific/Noumea.rb +25 -0
  2103. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Pacific/Pago_Pago.rb +26 -0
  2104. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Pacific/Port_Moresby.rb +20 -0
  2105. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Pacific/Tongatapu.rb +27 -0
  2106. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/info_timezone.rb +52 -0
  2107. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/linked_timezone.rb +51 -0
  2108. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/linked_timezone_info.rb +44 -0
  2109. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/offset_rationals.rb +98 -0
  2110. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/ruby_core_support.rb +56 -0
  2111. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/time_or_datetime.rb +292 -0
  2112. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/timezone.rb +508 -0
  2113. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/timezone_definition.rb +56 -0
  2114. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/timezone_info.rb +40 -0
  2115. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/timezone_offset_info.rb +94 -0
  2116. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/timezone_period.rb +198 -0
  2117. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/timezone_transition_info.rb +129 -0
  2118. data/vendor/rails/activesupport/lib/active_support/version.rb +9 -0
  2119. data/vendor/rails/activesupport/lib/active_support/whiny_nil.rb +64 -0
  2120. data/vendor/rails/activesupport/lib/active_support/xml_mini.rb +31 -0
  2121. data/vendor/rails/activesupport/lib/active_support/xml_mini/jdom.rb +162 -0
  2122. data/vendor/rails/activesupport/lib/active_support/xml_mini/libxml.rb +73 -0
  2123. data/vendor/rails/activesupport/lib/active_support/xml_mini/libxmlsax.rb +74 -0
  2124. data/vendor/rails/activesupport/lib/active_support/xml_mini/nokogiri.rb +72 -0
  2125. data/vendor/rails/activesupport/lib/active_support/xml_mini/nokogirisax.rb +73 -0
  2126. data/vendor/rails/activesupport/lib/active_support/xml_mini/rexml.rb +108 -0
  2127. data/vendor/rails/activesupport/lib/activesupport.rb +2 -0
  2128. data/vendor/rails/activesupport/test/abstract_unit.rb +37 -0
  2129. data/vendor/rails/activesupport/test/autoloading_fixtures/a/b.rb +2 -0
  2130. data/vendor/rails/activesupport/test/autoloading_fixtures/a/c/d.rb +2 -0
  2131. data/vendor/rails/activesupport/test/autoloading_fixtures/a/c/e/f.rb +2 -0
  2132. data/vendor/rails/activesupport/test/autoloading_fixtures/application.rb +1 -0
  2133. data/vendor/rails/activesupport/test/autoloading_fixtures/class_folder.rb +3 -0
  2134. data/vendor/rails/activesupport/test/autoloading_fixtures/class_folder/class_folder_subclass.rb +3 -0
  2135. data/vendor/rails/activesupport/test/autoloading_fixtures/class_folder/inline_class.rb +2 -0
  2136. data/vendor/rails/activesupport/test/autoloading_fixtures/class_folder/nested_class.rb +7 -0
  2137. data/vendor/rails/activesupport/test/autoloading_fixtures/conflict.rb +1 -0
  2138. data/vendor/rails/activesupport/test/autoloading_fixtures/counting_loader.rb +5 -0
  2139. data/vendor/rails/activesupport/test/autoloading_fixtures/cross_site_dependency.rb +2 -0
  2140. data/vendor/rails/activesupport/test/autoloading_fixtures/e.rb +2 -0
  2141. data/vendor/rails/activesupport/test/autoloading_fixtures/module_folder/inline_class.rb +2 -0
  2142. data/vendor/rails/activesupport/test/autoloading_fixtures/module_folder/nested_class.rb +4 -0
  2143. data/vendor/rails/activesupport/test/autoloading_fixtures/module_folder/nested_sibling.rb +2 -0
  2144. data/vendor/rails/activesupport/test/autoloading_fixtures/module_with_custom_const_missing/a/b.rb +1 -0
  2145. data/vendor/rails/activesupport/test/autoloading_fixtures/multiple_constant_file.rb +2 -0
  2146. data/vendor/rails/activesupport/test/autoloading_fixtures/raises_name_error.rb +3 -0
  2147. data/vendor/rails/activesupport/test/autoloading_fixtures/raises_no_method_error.rb +3 -0
  2148. data/vendor/rails/activesupport/test/buffered_logger_test.rb +146 -0
  2149. data/vendor/rails/activesupport/test/caching_test.rb +355 -0
  2150. data/vendor/rails/activesupport/test/callbacks_test.rb +188 -0
  2151. data/vendor/rails/activesupport/test/clean_backtrace_test.rb +47 -0
  2152. data/vendor/rails/activesupport/test/clean_logger_test.rb +57 -0
  2153. data/vendor/rails/activesupport/test/core_ext/array_ext_test.rb +394 -0
  2154. data/vendor/rails/activesupport/test/core_ext/base64_ext_test.rb +8 -0
  2155. data/vendor/rails/activesupport/test/core_ext/bigdecimal.rb +10 -0
  2156. data/vendor/rails/activesupport/test/core_ext/blank_test.rb +21 -0
  2157. data/vendor/rails/activesupport/test/core_ext/cgi_ext_test.rb +14 -0
  2158. data/vendor/rails/activesupport/test/core_ext/class/attribute_accessor_test.rb +38 -0
  2159. data/vendor/rails/activesupport/test/core_ext/class/class_inheritable_attributes_test.rb +224 -0
  2160. data/vendor/rails/activesupport/test/core_ext/class/delegating_attributes_test.rb +115 -0
  2161. data/vendor/rails/activesupport/test/core_ext/class_test.rb +46 -0
  2162. data/vendor/rails/activesupport/test/core_ext/date_ext_test.rb +286 -0
  2163. data/vendor/rails/activesupport/test/core_ext/date_time_ext_test.rb +363 -0
  2164. data/vendor/rails/activesupport/test/core_ext/duplicable_test.rb +22 -0
  2165. data/vendor/rails/activesupport/test/core_ext/duration_test.rb +121 -0
  2166. data/vendor/rails/activesupport/test/core_ext/enumerable_test.rb +102 -0
  2167. data/vendor/rails/activesupport/test/core_ext/exception_test.rb +68 -0
  2168. data/vendor/rails/activesupport/test/core_ext/file_test.rb +67 -0
  2169. data/vendor/rails/activesupport/test/core_ext/float_ext_test.rb +25 -0
  2170. data/vendor/rails/activesupport/test/core_ext/hash_ext_test.rb +1016 -0
  2171. data/vendor/rails/activesupport/test/core_ext/integer_ext_test.rb +37 -0
  2172. data/vendor/rails/activesupport/test/core_ext/kernel_test.rb +43 -0
  2173. data/vendor/rails/activesupport/test/core_ext/load_error_test.rb +16 -0
  2174. data/vendor/rails/activesupport/test/core_ext/module/attr_accessor_with_default_test.rb +30 -0
  2175. data/vendor/rails/activesupport/test/core_ext/module/attr_internal_test.rb +52 -0
  2176. data/vendor/rails/activesupport/test/core_ext/module/attribute_accessor_test.rb +39 -0
  2177. data/vendor/rails/activesupport/test/core_ext/module/attribute_aliasing_test.rb +58 -0
  2178. data/vendor/rails/activesupport/test/core_ext/module/model_naming_test.rb +27 -0
  2179. data/vendor/rails/activesupport/test/core_ext/module/synchronization_test.rb +86 -0
  2180. data/vendor/rails/activesupport/test/core_ext/module_test.rb +363 -0
  2181. data/vendor/rails/activesupport/test/core_ext/name_error_test.rb +20 -0
  2182. data/vendor/rails/activesupport/test/core_ext/numeric_ext_test.rb +168 -0
  2183. data/vendor/rails/activesupport/test/core_ext/object_and_class_ext_test.rb +294 -0
  2184. data/vendor/rails/activesupport/test/core_ext/object_ext_test.rb +8 -0
  2185. data/vendor/rails/activesupport/test/core_ext/pathname_test.rb +9 -0
  2186. data/vendor/rails/activesupport/test/core_ext/proc_test.rb +11 -0
  2187. data/vendor/rails/activesupport/test/core_ext/range_ext_test.rb +63 -0
  2188. data/vendor/rails/activesupport/test/core_ext/string_ext_test.rb +402 -0
  2189. data/vendor/rails/activesupport/test/core_ext/symbol_test.rb +9 -0
  2190. data/vendor/rails/activesupport/test/core_ext/time_ext_test.rb +771 -0
  2191. data/vendor/rails/activesupport/test/core_ext/time_with_zone_test.rb +851 -0
  2192. data/vendor/rails/activesupport/test/core_ext/uri_ext_test.rb +12 -0
  2193. data/vendor/rails/activesupport/test/dependencies/check_warnings.rb +2 -0
  2194. data/vendor/rails/activesupport/test/dependencies/conflict.rb +1 -0
  2195. data/vendor/rails/activesupport/test/dependencies/cross_site_depender.rb +3 -0
  2196. data/vendor/rails/activesupport/test/dependencies/mutual_one.rb +4 -0
  2197. data/vendor/rails/activesupport/test/dependencies/mutual_two.rb +4 -0
  2198. data/vendor/rails/activesupport/test/dependencies/raises_exception.rb +3 -0
  2199. data/vendor/rails/activesupport/test/dependencies/requires_nonexistent0.rb +1 -0
  2200. data/vendor/rails/activesupport/test/dependencies/requires_nonexistent1.rb +1 -0
  2201. data/vendor/rails/activesupport/test/dependencies/service_one.rb +5 -0
  2202. data/vendor/rails/activesupport/test/dependencies/service_two.rb +2 -0
  2203. data/vendor/rails/activesupport/test/dependencies_test.rb +789 -0
  2204. data/vendor/rails/activesupport/test/deprecation/proxy_wrappers_test.rb +22 -0
  2205. data/vendor/rails/activesupport/test/deprecation_test.rb +167 -0
  2206. data/vendor/rails/activesupport/test/empty_bool.rb +7 -0
  2207. data/vendor/rails/activesupport/test/flush_cache_on_private_memoization_test.rb +43 -0
  2208. data/vendor/rails/activesupport/test/gzip_test.rb +7 -0
  2209. data/vendor/rails/activesupport/test/i18n_test.rb +98 -0
  2210. data/vendor/rails/activesupport/test/inflector_test.rb +298 -0
  2211. data/vendor/rails/activesupport/test/inflector_test_cases.rb +262 -0
  2212. data/vendor/rails/activesupport/test/json/decoding_test.rb +79 -0
  2213. data/vendor/rails/activesupport/test/json/encoding_test.rb +162 -0
  2214. data/vendor/rails/activesupport/test/memoizable_test.rb +261 -0
  2215. data/vendor/rails/activesupport/test/message_encryptor_test.rb +55 -0
  2216. data/vendor/rails/activesupport/test/message_verifier_test.rb +31 -0
  2217. data/vendor/rails/activesupport/test/multibyte_chars_test.rb +606 -0
  2218. data/vendor/rails/activesupport/test/multibyte_conformance.rb +129 -0
  2219. data/vendor/rails/activesupport/test/multibyte_test_helpers.rb +19 -0
  2220. data/vendor/rails/activesupport/test/multibyte_unicode_database_test.rb +22 -0
  2221. data/vendor/rails/activesupport/test/multibyte_utils_test.rb +137 -0
  2222. data/vendor/rails/activesupport/test/option_merger_test.rb +85 -0
  2223. data/vendor/rails/activesupport/test/ordered_hash_test.rb +237 -0
  2224. data/vendor/rails/activesupport/test/ordered_options_test.rb +53 -0
  2225. data/vendor/rails/activesupport/test/rescuable_test.rb +75 -0
  2226. data/vendor/rails/activesupport/test/safe_buffer_test.rb +36 -0
  2227. data/vendor/rails/activesupport/test/secure_random_test.rb +19 -0
  2228. data/vendor/rails/activesupport/test/string_inquirer_test.rb +15 -0
  2229. data/vendor/rails/activesupport/test/test_case_test.rb +57 -0
  2230. data/vendor/rails/activesupport/test/test_test.rb +188 -0
  2231. data/vendor/rails/activesupport/test/time_zone_test.rb +285 -0
  2232. data/vendor/rails/activesupport/test/whiny_nil_test.rb +50 -0
  2233. data/vendor/rails/activesupport/test/xml_mini/jdom_engine_test.rb +153 -0
  2234. data/vendor/rails/activesupport/test/xml_mini/libxml_engine_test.rb +204 -0
  2235. data/vendor/rails/activesupport/test/xml_mini/libxmlsax_engine_test.rb +181 -0
  2236. data/vendor/rails/activesupport/test/xml_mini/nokogiri_engine_test.rb +204 -0
  2237. data/vendor/rails/activesupport/test/xml_mini/nokogirisax_engine_test.rb +217 -0
  2238. data/vendor/rails/activesupport/test/xml_mini/rexml_engine_test.rb +15 -0
  2239. data/vendor/rails/railties/CHANGELOG +2193 -0
  2240. data/vendor/rails/railties/MIT-LICENSE +20 -0
  2241. data/vendor/rails/railties/README +243 -0
  2242. data/vendor/rails/railties/Rakefile +367 -0
  2243. data/vendor/rails/railties/bin/about +4 -0
  2244. data/vendor/rails/railties/bin/console +3 -0
  2245. data/vendor/rails/railties/bin/dbconsole +3 -0
  2246. data/vendor/rails/railties/bin/destroy +3 -0
  2247. data/vendor/rails/railties/bin/generate +3 -0
  2248. data/vendor/rails/railties/bin/performance/benchmarker +3 -0
  2249. data/vendor/rails/railties/bin/performance/profiler +3 -0
  2250. data/vendor/rails/railties/bin/plugin +3 -0
  2251. data/vendor/rails/railties/bin/rails +21 -0
  2252. data/vendor/rails/railties/bin/runner +3 -0
  2253. data/vendor/rails/railties/bin/server +3 -0
  2254. data/vendor/rails/railties/builtin/rails_info/rails/info.rb +131 -0
  2255. data/vendor/rails/railties/builtin/rails_info/rails/info_controller.rb +9 -0
  2256. data/vendor/rails/railties/builtin/rails_info/rails/info_helper.rb +2 -0
  2257. data/vendor/rails/railties/builtin/rails_info/rails_info_controller.rb +2 -0
  2258. data/vendor/rails/railties/configs/databases/frontbase.yml +28 -0
  2259. data/vendor/rails/railties/configs/databases/ibm_db.yml +62 -0
  2260. data/vendor/rails/railties/configs/databases/mysql.yml +60 -0
  2261. data/vendor/rails/railties/configs/databases/oracle.yml +39 -0
  2262. data/vendor/rails/railties/configs/databases/postgresql.yml +51 -0
  2263. data/vendor/rails/railties/configs/databases/sqlite2.yml +19 -0
  2264. data/vendor/rails/railties/configs/databases/sqlite3.yml +22 -0
  2265. data/vendor/rails/railties/configs/empty.log +0 -0
  2266. data/vendor/rails/railties/configs/initializers/backtrace_silencers.rb +7 -0
  2267. data/vendor/rails/railties/configs/initializers/cookie_verification_secret.rb +7 -0
  2268. data/vendor/rails/railties/configs/initializers/inflections.rb +10 -0
  2269. data/vendor/rails/railties/configs/initializers/mime_types.rb +5 -0
  2270. data/vendor/rails/railties/configs/initializers/new_rails_defaults.rb +21 -0
  2271. data/vendor/rails/railties/configs/initializers/session_store.rb +15 -0
  2272. data/vendor/rails/railties/configs/locales/en.yml +5 -0
  2273. data/vendor/rails/railties/configs/routes.rb +43 -0
  2274. data/vendor/rails/railties/configs/seeds.rb +7 -0
  2275. data/vendor/rails/railties/dispatches/config.ru +7 -0
  2276. data/vendor/rails/railties/dispatches/dispatch.fcgi +24 -0
  2277. data/vendor/rails/railties/dispatches/dispatch.rb +10 -0
  2278. data/vendor/rails/railties/dispatches/gateway.cgi +97 -0
  2279. data/vendor/rails/railties/doc/README_FOR_APP +2 -0
  2280. data/vendor/rails/railties/environments/boot.rb +114 -0
  2281. data/vendor/rails/railties/environments/development.rb +17 -0
  2282. data/vendor/rails/railties/environments/environment.rb +41 -0
  2283. data/vendor/rails/railties/environments/production.rb +28 -0
  2284. data/vendor/rails/railties/environments/test.rb +28 -0
  2285. data/vendor/rails/railties/fresh_rakefile +10 -0
  2286. data/vendor/rails/railties/guides/files/javascripts/code_highlighter.js +188 -0
  2287. data/vendor/rails/railties/guides/files/javascripts/guides.js +8 -0
  2288. data/vendor/rails/railties/guides/files/javascripts/highlighters.js +90 -0
  2289. data/vendor/rails/railties/guides/files/stylesheets/main.css +441 -0
  2290. data/vendor/rails/railties/guides/files/stylesheets/print.css +52 -0
  2291. data/vendor/rails/railties/guides/files/stylesheets/reset.css +43 -0
  2292. data/vendor/rails/railties/guides/files/stylesheets/style.css +13 -0
  2293. data/vendor/rails/railties/guides/files/stylesheets/syntax.css +31 -0
  2294. data/vendor/rails/railties/guides/images/belongs_to.png +0 -0
  2295. data/vendor/rails/railties/guides/images/book_icon.gif +0 -0
  2296. data/vendor/rails/railties/guides/images/bullet.gif +0 -0
  2297. data/vendor/rails/railties/guides/images/chapters_icon.gif +0 -0
  2298. data/vendor/rails/railties/guides/images/check_bullet.gif +0 -0
  2299. data/vendor/rails/railties/guides/images/credits_pic_blank.gif +0 -0
  2300. data/vendor/rails/railties/guides/images/csrf.png +0 -0
  2301. data/vendor/rails/railties/guides/images/customized_error_messages.png +0 -0
  2302. data/vendor/rails/railties/guides/images/error_messages.png +0 -0
  2303. data/vendor/rails/railties/guides/images/feature_tile.gif +0 -0
  2304. data/vendor/rails/railties/guides/images/footer_tile.gif +0 -0
  2305. data/vendor/rails/railties/guides/images/fxn.jpg +0 -0
  2306. data/vendor/rails/railties/guides/images/grey_bullet.gif +0 -0
  2307. data/vendor/rails/railties/guides/images/habtm.png +0 -0
  2308. data/vendor/rails/railties/guides/images/has_many.png +0 -0
  2309. data/vendor/rails/railties/guides/images/has_many_through.png +0 -0
  2310. data/vendor/rails/railties/guides/images/has_one.png +0 -0
  2311. data/vendor/rails/railties/guides/images/has_one_through.png +0 -0
  2312. data/vendor/rails/railties/guides/images/header_backdrop.png +0 -0
  2313. data/vendor/rails/railties/guides/images/header_tile.gif +0 -0
  2314. data/vendor/rails/railties/guides/images/i18n/demo_localized_pirate.png +0 -0
  2315. data/vendor/rails/railties/guides/images/i18n/demo_translated_en.png +0 -0
  2316. data/vendor/rails/railties/guides/images/i18n/demo_translated_pirate.png +0 -0
  2317. data/vendor/rails/railties/guides/images/i18n/demo_translation_missing.png +0 -0
  2318. data/vendor/rails/railties/guides/images/i18n/demo_untranslated.png +0 -0
  2319. data/vendor/rails/railties/guides/images/icons/README +5 -0
  2320. data/vendor/rails/railties/guides/images/icons/callouts/1.png +0 -0
  2321. data/vendor/rails/railties/guides/images/icons/callouts/10.png +0 -0
  2322. data/vendor/rails/railties/guides/images/icons/callouts/11.png +0 -0
  2323. data/vendor/rails/railties/guides/images/icons/callouts/12.png +0 -0
  2324. data/vendor/rails/railties/guides/images/icons/callouts/13.png +0 -0
  2325. data/vendor/rails/railties/guides/images/icons/callouts/14.png +0 -0
  2326. data/vendor/rails/railties/guides/images/icons/callouts/15.png +0 -0
  2327. data/vendor/rails/railties/guides/images/icons/callouts/2.png +0 -0
  2328. data/vendor/rails/railties/guides/images/icons/callouts/3.png +0 -0
  2329. data/vendor/rails/railties/guides/images/icons/callouts/4.png +0 -0
  2330. data/vendor/rails/railties/guides/images/icons/callouts/5.png +0 -0
  2331. data/vendor/rails/railties/guides/images/icons/callouts/6.png +0 -0
  2332. data/vendor/rails/railties/guides/images/icons/callouts/7.png +0 -0
  2333. data/vendor/rails/railties/guides/images/icons/callouts/8.png +0 -0
  2334. data/vendor/rails/railties/guides/images/icons/callouts/9.png +0 -0
  2335. data/vendor/rails/railties/guides/images/icons/caution.png +0 -0
  2336. data/vendor/rails/railties/guides/images/icons/example.png +0 -0
  2337. data/vendor/rails/railties/guides/images/icons/home.png +0 -0
  2338. data/vendor/rails/railties/guides/images/icons/important.png +0 -0
  2339. data/vendor/rails/railties/guides/images/icons/next.png +0 -0
  2340. data/vendor/rails/railties/guides/images/icons/note.png +0 -0
  2341. data/vendor/rails/railties/guides/images/icons/prev.png +0 -0
  2342. data/vendor/rails/railties/guides/images/icons/tip.png +0 -0
  2343. data/vendor/rails/railties/guides/images/icons/up.png +0 -0
  2344. data/vendor/rails/railties/guides/images/icons/warning.png +0 -0
  2345. data/vendor/rails/railties/guides/images/nav_arrow.gif +0 -0
  2346. data/vendor/rails/railties/guides/images/polymorphic.png +0 -0
  2347. data/vendor/rails/railties/guides/images/posts_index.png +0 -0
  2348. data/vendor/rails/railties/guides/images/rails_guides_logo.gif +0 -0
  2349. data/vendor/rails/railties/guides/images/rails_logo_remix.gif +0 -0
  2350. data/vendor/rails/railties/guides/images/rails_welcome.png +0 -0
  2351. data/vendor/rails/railties/guides/images/session_fixation.png +0 -0
  2352. data/vendor/rails/railties/guides/images/tab_grey.gif +0 -0
  2353. data/vendor/rails/railties/guides/images/tab_info.gif +0 -0
  2354. data/vendor/rails/railties/guides/images/tab_note.gif +0 -0
  2355. data/vendor/rails/railties/guides/images/tab_red.gif +0 -0
  2356. data/vendor/rails/railties/guides/images/tab_yellow.gif +0 -0
  2357. data/vendor/rails/railties/guides/images/tab_yellow.png +0 -0
  2358. data/vendor/rails/railties/guides/images/validation_error_messages.png +0 -0
  2359. data/vendor/rails/railties/guides/rails_guides.rb +31 -0
  2360. data/vendor/rails/railties/guides/rails_guides/generator.rb +258 -0
  2361. data/vendor/rails/railties/guides/rails_guides/helpers.rb +34 -0
  2362. data/vendor/rails/railties/guides/rails_guides/indexer.rb +68 -0
  2363. data/vendor/rails/railties/guides/rails_guides/levenshtein.rb +31 -0
  2364. data/vendor/rails/railties/guides/rails_guides/textile_extensions.rb +41 -0
  2365. data/vendor/rails/railties/guides/source/2_2_release_notes.textile +422 -0
  2366. data/vendor/rails/railties/guides/source/2_3_release_notes.textile +610 -0
  2367. data/vendor/rails/railties/guides/source/action_controller_overview.textile +776 -0
  2368. data/vendor/rails/railties/guides/source/action_mailer_basics.textile +441 -0
  2369. data/vendor/rails/railties/guides/source/active_record_basics.textile +135 -0
  2370. data/vendor/rails/railties/guides/source/active_record_querying.textile +969 -0
  2371. data/vendor/rails/railties/guides/source/activerecord_validations_callbacks.textile +1086 -0
  2372. data/vendor/rails/railties/guides/source/association_basics.textile +1781 -0
  2373. data/vendor/rails/railties/guides/source/caching_with_rails.textile +524 -0
  2374. data/vendor/rails/railties/guides/source/command_line.textile +589 -0
  2375. data/vendor/rails/railties/guides/source/configuring.textile +234 -0
  2376. data/vendor/rails/railties/guides/source/contribute.textile +71 -0
  2377. data/vendor/rails/railties/guides/source/contributing_to_rails.textile +239 -0
  2378. data/vendor/rails/railties/guides/source/credits.html.erb +52 -0
  2379. data/vendor/rails/railties/guides/source/debugging_rails_applications.textile +709 -0
  2380. data/vendor/rails/railties/guides/source/form_helpers.textile +766 -0
  2381. data/vendor/rails/railties/guides/source/getting_started.textile +1297 -0
  2382. data/vendor/rails/railties/guides/source/i18n.textile +912 -0
  2383. data/vendor/rails/railties/guides/source/index.html.erb +125 -0
  2384. data/vendor/rails/railties/guides/source/layout.html.erb +103 -0
  2385. data/vendor/rails/railties/guides/source/layouts_and_rendering.textile +979 -0
  2386. data/vendor/rails/railties/guides/source/migrations.textile +591 -0
  2387. data/vendor/rails/railties/guides/source/nested_model_forms.textile +222 -0
  2388. data/vendor/rails/railties/guides/source/performance_testing.textile +531 -0
  2389. data/vendor/rails/railties/guides/source/plugins.textile +1512 -0
  2390. data/vendor/rails/railties/guides/source/rails_on_rack.textile +309 -0
  2391. data/vendor/rails/railties/guides/source/routing.textile +903 -0
  2392. data/vendor/rails/railties/guides/source/security.textile +986 -0
  2393. data/vendor/rails/railties/guides/source/testing.textile +951 -0
  2394. data/vendor/rails/railties/helpers/application_controller.rb +10 -0
  2395. data/vendor/rails/railties/helpers/application_helper.rb +3 -0
  2396. data/vendor/rails/railties/helpers/performance_test.rb +9 -0
  2397. data/vendor/rails/railties/helpers/test_helper.rb +38 -0
  2398. data/vendor/rails/railties/html/404.html +30 -0
  2399. data/vendor/rails/railties/html/422.html +30 -0
  2400. data/vendor/rails/railties/html/500.html +30 -0
  2401. data/vendor/rails/railties/html/favicon.ico +0 -0
  2402. data/vendor/rails/railties/html/images/rails.png +0 -0
  2403. data/vendor/rails/railties/html/index.html +275 -0
  2404. data/vendor/rails/railties/html/javascripts/application.js +2 -0
  2405. data/vendor/rails/railties/html/javascripts/controls.js +963 -0
  2406. data/vendor/rails/railties/html/javascripts/dragdrop.js +973 -0
  2407. data/vendor/rails/railties/html/javascripts/effects.js +1128 -0
  2408. data/vendor/rails/railties/html/javascripts/prototype.js +4320 -0
  2409. data/vendor/rails/railties/html/robots.txt +5 -0
  2410. data/vendor/rails/railties/lib/code_statistics.rb +107 -0
  2411. data/vendor/rails/railties/lib/commands.rb +17 -0
  2412. data/vendor/rails/railties/lib/commands/about.rb +3 -0
  2413. data/vendor/rails/railties/lib/commands/console.rb +45 -0
  2414. data/vendor/rails/railties/lib/commands/dbconsole.rb +87 -0
  2415. data/vendor/rails/railties/lib/commands/destroy.rb +6 -0
  2416. data/vendor/rails/railties/lib/commands/generate.rb +6 -0
  2417. data/vendor/rails/railties/lib/commands/ncgi/listener +86 -0
  2418. data/vendor/rails/railties/lib/commands/ncgi/tracker +69 -0
  2419. data/vendor/rails/railties/lib/commands/performance/benchmarker.rb +24 -0
  2420. data/vendor/rails/railties/lib/commands/performance/profiler.rb +50 -0
  2421. data/vendor/rails/railties/lib/commands/plugin.rb +968 -0
  2422. data/vendor/rails/railties/lib/commands/runner.rb +54 -0
  2423. data/vendor/rails/railties/lib/commands/server.rb +114 -0
  2424. data/vendor/rails/railties/lib/commands/update.rb +4 -0
  2425. data/vendor/rails/railties/lib/console_app.rb +30 -0
  2426. data/vendor/rails/railties/lib/console_sandbox.rb +6 -0
  2427. data/vendor/rails/railties/lib/console_with_helpers.rb +5 -0
  2428. data/vendor/rails/railties/lib/dispatcher.rb +24 -0
  2429. data/vendor/rails/railties/lib/fcgi_handler.rb +239 -0
  2430. data/vendor/rails/railties/lib/initializer.rb +1152 -0
  2431. data/vendor/rails/railties/lib/performance_test_help.rb +5 -0
  2432. data/vendor/rails/railties/lib/rails/backtrace_cleaner.rb +54 -0
  2433. data/vendor/rails/railties/lib/rails/gem_builder.rb +21 -0
  2434. data/vendor/rails/railties/lib/rails/gem_dependency.rb +320 -0
  2435. data/vendor/rails/railties/lib/rails/plugin.rb +179 -0
  2436. data/vendor/rails/railties/lib/rails/plugin/loader.rb +198 -0
  2437. data/vendor/rails/railties/lib/rails/plugin/locator.rb +100 -0
  2438. data/vendor/rails/railties/lib/rails/rack.rb +8 -0
  2439. data/vendor/rails/railties/lib/rails/rack/debugger.rb +23 -0
  2440. data/vendor/rails/railties/lib/rails/rack/log_tailer.rb +35 -0
  2441. data/vendor/rails/railties/lib/rails/rack/metal.rb +51 -0
  2442. data/vendor/rails/railties/lib/rails/rack/static.rb +46 -0
  2443. data/vendor/rails/railties/lib/rails/vendor_gem_source_index.rb +140 -0
  2444. data/vendor/rails/railties/lib/rails/version.rb +9 -0
  2445. data/vendor/rails/railties/lib/rails_generator.rb +46 -0
  2446. data/vendor/rails/railties/lib/rails_generator/base.rb +266 -0
  2447. data/vendor/rails/railties/lib/rails_generator/commands.rb +621 -0
  2448. data/vendor/rails/railties/lib/rails_generator/generated_attribute.rb +47 -0
  2449. data/vendor/rails/railties/lib/rails_generator/generators/applications/app/USAGE +9 -0
  2450. data/vendor/rails/railties/lib/rails_generator/generators/applications/app/app_generator.rb +266 -0
  2451. data/vendor/rails/railties/lib/rails_generator/generators/applications/app/scm/git.rb +18 -0
  2452. data/vendor/rails/railties/lib/rails_generator/generators/applications/app/scm/scm.rb +8 -0
  2453. data/vendor/rails/railties/lib/rails_generator/generators/applications/app/scm/svn.rb +7 -0
  2454. data/vendor/rails/railties/lib/rails_generator/generators/applications/app/template_runner.rb +401 -0
  2455. data/vendor/rails/railties/lib/rails_generator/generators/components/controller/USAGE +30 -0
  2456. data/vendor/rails/railties/lib/rails_generator/generators/components/controller/controller_generator.rb +43 -0
  2457. data/vendor/rails/railties/lib/rails_generator/generators/components/controller/templates/controller.rb +7 -0
  2458. data/vendor/rails/railties/lib/rails_generator/generators/components/controller/templates/functional_test.rb +8 -0
  2459. data/vendor/rails/railties/lib/rails_generator/generators/components/controller/templates/helper.rb +2 -0
  2460. data/vendor/rails/railties/lib/rails_generator/generators/components/controller/templates/helper_test.rb +4 -0
  2461. data/vendor/rails/railties/lib/rails_generator/generators/components/controller/templates/view.html.erb +2 -0
  2462. data/vendor/rails/railties/lib/rails_generator/generators/components/helper/USAGE +24 -0
  2463. data/vendor/rails/railties/lib/rails_generator/generators/components/helper/helper_generator.rb +25 -0
  2464. data/vendor/rails/railties/lib/rails_generator/generators/components/helper/templates/helper.rb +2 -0
  2465. data/vendor/rails/railties/lib/rails_generator/generators/components/helper/templates/helper_test.rb +4 -0
  2466. data/vendor/rails/railties/lib/rails_generator/generators/components/integration_test/USAGE +8 -0
  2467. data/vendor/rails/railties/lib/rails_generator/generators/components/integration_test/integration_test_generator.rb +16 -0
  2468. data/vendor/rails/railties/lib/rails_generator/generators/components/integration_test/templates/integration_test.rb +10 -0
  2469. data/vendor/rails/railties/lib/rails_generator/generators/components/mailer/USAGE +16 -0
  2470. data/vendor/rails/railties/lib/rails_generator/generators/components/mailer/mailer_generator.rb +30 -0
  2471. data/vendor/rails/railties/lib/rails_generator/generators/components/mailer/templates/fixture.erb +3 -0
  2472. data/vendor/rails/railties/lib/rails_generator/generators/components/mailer/templates/fixture.rhtml +0 -0
  2473. data/vendor/rails/railties/lib/rails_generator/generators/components/mailer/templates/mailer.rb +15 -0
  2474. data/vendor/rails/railties/lib/rails_generator/generators/components/mailer/templates/unit_test.rb +20 -0
  2475. data/vendor/rails/railties/lib/rails_generator/generators/components/mailer/templates/view.erb +3 -0
  2476. data/vendor/rails/railties/lib/rails_generator/generators/components/mailer/templates/view.rhtml +0 -0
  2477. data/vendor/rails/railties/lib/rails_generator/generators/components/metal/USAGE +8 -0
  2478. data/vendor/rails/railties/lib/rails_generator/generators/components/metal/metal_generator.rb +8 -0
  2479. data/vendor/rails/railties/lib/rails_generator/generators/components/metal/templates/metal.rb +12 -0
  2480. data/vendor/rails/railties/lib/rails_generator/generators/components/migration/USAGE +29 -0
  2481. data/vendor/rails/railties/lib/rails_generator/generators/components/migration/migration_generator.rb +20 -0
  2482. data/vendor/rails/railties/lib/rails_generator/generators/components/migration/templates/migration.rb +11 -0
  2483. data/vendor/rails/railties/lib/rails_generator/generators/components/model/USAGE +27 -0
  2484. data/vendor/rails/railties/lib/rails_generator/generators/components/model/model_generator.rb +52 -0
  2485. data/vendor/rails/railties/lib/rails_generator/generators/components/model/templates/fixtures.yml +23 -0
  2486. data/vendor/rails/railties/lib/rails_generator/generators/components/model/templates/migration.rb +16 -0
  2487. data/vendor/rails/railties/lib/rails_generator/generators/components/model/templates/model.rb +5 -0
  2488. data/vendor/rails/railties/lib/rails_generator/generators/components/model/templates/unit_test.rb +8 -0
  2489. data/vendor/rails/railties/lib/rails_generator/generators/components/observer/USAGE +13 -0
  2490. data/vendor/rails/railties/lib/rails_generator/generators/components/observer/observer_generator.rb +16 -0
  2491. data/vendor/rails/railties/lib/rails_generator/generators/components/observer/templates/observer.rb +2 -0
  2492. data/vendor/rails/railties/lib/rails_generator/generators/components/observer/templates/unit_test.rb +8 -0
  2493. data/vendor/rails/railties/lib/rails_generator/generators/components/performance_test/USAGE +8 -0
  2494. data/vendor/rails/railties/lib/rails_generator/generators/components/performance_test/performance_test_generator.rb +16 -0
  2495. data/vendor/rails/railties/lib/rails_generator/generators/components/performance_test/templates/performance_test.rb +9 -0
  2496. data/vendor/rails/railties/lib/rails_generator/generators/components/plugin/USAGE +25 -0
  2497. data/vendor/rails/railties/lib/rails_generator/generators/components/plugin/plugin_generator.rb +39 -0
  2498. data/vendor/rails/railties/lib/rails_generator/generators/components/plugin/templates/MIT-LICENSE +20 -0
  2499. data/vendor/rails/railties/lib/rails_generator/generators/components/plugin/templates/README +13 -0
  2500. data/vendor/rails/railties/lib/rails_generator/generators/components/plugin/templates/Rakefile +23 -0
  2501. data/vendor/rails/railties/lib/rails_generator/generators/components/plugin/templates/USAGE +8 -0
  2502. data/vendor/rails/railties/lib/rails_generator/generators/components/plugin/templates/generator.rb +8 -0
  2503. data/vendor/rails/railties/lib/rails_generator/generators/components/plugin/templates/init.rb +1 -0
  2504. data/vendor/rails/railties/lib/rails_generator/generators/components/plugin/templates/install.rb +1 -0
  2505. data/vendor/rails/railties/lib/rails_generator/generators/components/plugin/templates/plugin.rb +1 -0
  2506. data/vendor/rails/railties/lib/rails_generator/generators/components/plugin/templates/tasks.rake +4 -0
  2507. data/vendor/rails/railties/lib/rails_generator/generators/components/plugin/templates/test_helper.rb +4 -0
  2508. data/vendor/rails/railties/lib/rails_generator/generators/components/plugin/templates/uninstall.rb +1 -0
  2509. data/vendor/rails/railties/lib/rails_generator/generators/components/plugin/templates/unit_test.rb +8 -0
  2510. data/vendor/rails/railties/lib/rails_generator/generators/components/resource/USAGE +23 -0
  2511. data/vendor/rails/railties/lib/rails_generator/generators/components/resource/resource_generator.rb +76 -0
  2512. data/vendor/rails/railties/lib/rails_generator/generators/components/resource/templates/controller.rb +2 -0
  2513. data/vendor/rails/railties/lib/rails_generator/generators/components/resource/templates/functional_test.rb +8 -0
  2514. data/vendor/rails/railties/lib/rails_generator/generators/components/resource/templates/helper.rb +2 -0
  2515. data/vendor/rails/railties/lib/rails_generator/generators/components/resource/templates/helper_test.rb +4 -0
  2516. data/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/USAGE +29 -0
  2517. data/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/scaffold_generator.rb +103 -0
  2518. data/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/templates/controller.rb +83 -0
  2519. data/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/templates/functional_test.rb +45 -0
  2520. data/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/templates/helper.rb +2 -0
  2521. data/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/templates/helper_test.rb +4 -0
  2522. data/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/templates/layout.html.erb +17 -0
  2523. data/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/templates/style.css +54 -0
  2524. data/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/templates/view_edit.html.erb +18 -0
  2525. data/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/templates/view_index.html.erb +24 -0
  2526. data/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/templates/view_new.html.erb +17 -0
  2527. data/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/templates/view_show.html.erb +10 -0
  2528. data/vendor/rails/railties/lib/rails_generator/generators/components/session_migration/USAGE +10 -0
  2529. data/vendor/rails/railties/lib/rails_generator/generators/components/session_migration/session_migration_generator.rb +18 -0
  2530. data/vendor/rails/railties/lib/rails_generator/generators/components/session_migration/templates/migration.rb +16 -0
  2531. data/vendor/rails/railties/lib/rails_generator/lookup.rb +249 -0
  2532. data/vendor/rails/railties/lib/rails_generator/manifest.rb +53 -0
  2533. data/vendor/rails/railties/lib/rails_generator/options.rb +150 -0
  2534. data/vendor/rails/railties/lib/rails_generator/scripts.rb +89 -0
  2535. data/vendor/rails/railties/lib/rails_generator/scripts/destroy.rb +29 -0
  2536. data/vendor/rails/railties/lib/rails_generator/scripts/generate.rb +7 -0
  2537. data/vendor/rails/railties/lib/rails_generator/scripts/update.rb +12 -0
  2538. data/vendor/rails/railties/lib/rails_generator/secret_key_generator.rb +24 -0
  2539. data/vendor/rails/railties/lib/rails_generator/simple_logger.rb +46 -0
  2540. data/vendor/rails/railties/lib/rails_generator/spec.rb +44 -0
  2541. data/vendor/rails/railties/lib/railties_path.rb +1 -0
  2542. data/vendor/rails/railties/lib/ruby_version_check.rb +17 -0
  2543. data/vendor/rails/railties/lib/rubyprof_ext.rb +35 -0
  2544. data/vendor/rails/railties/lib/source_annotation_extractor.rb +102 -0
  2545. data/vendor/rails/railties/lib/tasks/annotations.rake +20 -0
  2546. data/vendor/rails/railties/lib/tasks/databases.rake +436 -0
  2547. data/vendor/rails/railties/lib/tasks/documentation.rake +88 -0
  2548. data/vendor/rails/railties/lib/tasks/framework.rake +146 -0
  2549. data/vendor/rails/railties/lib/tasks/gems.rake +78 -0
  2550. data/vendor/rails/railties/lib/tasks/log.rake +9 -0
  2551. data/vendor/rails/railties/lib/tasks/middleware.rake +7 -0
  2552. data/vendor/rails/railties/lib/tasks/misc.rake +63 -0
  2553. data/vendor/rails/railties/lib/tasks/rails.rb +14 -0
  2554. data/vendor/rails/railties/lib/tasks/routes.rake +18 -0
  2555. data/vendor/rails/railties/lib/tasks/statistics.rake +17 -0
  2556. data/vendor/rails/railties/lib/tasks/testing.rake +139 -0
  2557. data/vendor/rails/railties/lib/tasks/tmp.rake +37 -0
  2558. data/vendor/rails/railties/lib/test_help.rb +38 -0
  2559. data/vendor/rails/railties/lib/webrick_server.rb +156 -0
  2560. data/vendor/rails/railties/test/abstract_unit.rb +27 -0
  2561. data/vendor/rails/railties/test/backtrace_cleaner_test.rb +61 -0
  2562. data/vendor/rails/railties/test/boot_test.rb +178 -0
  2563. data/vendor/rails/railties/test/console_app_test.rb +42 -0
  2564. data/vendor/rails/railties/test/fcgi_dispatcher_test.rb +266 -0
  2565. data/vendor/rails/railties/test/fixtures/about_yml_plugins/bad_about_yml/about.yml +1 -0
  2566. data/vendor/rails/railties/test/fixtures/about_yml_plugins/bad_about_yml/init.rb +1 -0
  2567. data/vendor/rails/railties/test/fixtures/about_yml_plugins/plugin_without_about_yml/init.rb +1 -0
  2568. data/vendor/rails/railties/test/fixtures/eager/zoo.rb +3 -0
  2569. data/vendor/rails/railties/test/fixtures/eager/zoo/reptile_house.rb +2 -0
  2570. data/vendor/rails/railties/test/fixtures/environment_with_constant.rb +1 -0
  2571. data/vendor/rails/railties/test/fixtures/lib/generators/missing_class/missing_class_generator.rb +0 -0
  2572. data/vendor/rails/railties/test/fixtures/lib/generators/working/working_generator.rb +2 -0
  2573. data/vendor/rails/railties/test/fixtures/metal/multiplemetals/app/metal/metal_a.rb +5 -0
  2574. data/vendor/rails/railties/test/fixtures/metal/multiplemetals/app/metal/metal_b.rb +5 -0
  2575. data/vendor/rails/railties/test/fixtures/metal/pluralmetal/app/metal/legacy_routes.rb +5 -0
  2576. data/vendor/rails/railties/test/fixtures/metal/singlemetal/app/metal/foo_metal.rb +5 -0
  2577. data/vendor/rails/railties/test/fixtures/metal/subfolders/app/metal/Folder/metal_a.rb +7 -0
  2578. data/vendor/rails/railties/test/fixtures/metal/subfolders/app/metal/Folder/metal_b.rb +7 -0
  2579. data/vendor/rails/railties/test/fixtures/plugins/alternate/a/generators/a_generator/a_generator.rb +4 -0
  2580. data/vendor/rails/railties/test/fixtures/plugins/default/gemlike/init.rb +1 -0
  2581. data/vendor/rails/railties/test/fixtures/plugins/default/gemlike/lib/gemlike.rb +2 -0
  2582. data/vendor/rails/railties/test/fixtures/plugins/default/gemlike/rails/init.rb +7 -0
  2583. data/vendor/rails/railties/test/fixtures/plugins/default/plugin_with_no_lib_dir/init.rb +0 -0
  2584. data/vendor/rails/railties/test/fixtures/plugins/default/stubby/about.yml +2 -0
  2585. data/vendor/rails/railties/test/fixtures/plugins/default/stubby/generators/stubby_generator/stubby_generator.rb +4 -0
  2586. data/vendor/rails/railties/test/fixtures/plugins/default/stubby/init.rb +7 -0
  2587. data/vendor/rails/railties/test/fixtures/plugins/default/stubby/lib/stubby_mixin.rb +2 -0
  2588. data/vendor/rails/railties/test/fixtures/plugins/engines/engine/app/controllers/engine_controller.rb +2 -0
  2589. data/vendor/rails/railties/test/fixtures/plugins/engines/engine/app/metal/engine_metal.rb +9 -0
  2590. data/vendor/rails/railties/test/fixtures/plugins/engines/engine/app/models/engine_model.rb +2 -0
  2591. data/vendor/rails/railties/test/fixtures/plugins/engines/engine/config/locales/en.yml +2 -0
  2592. data/vendor/rails/railties/test/fixtures/plugins/engines/engine/config/routes.rb +3 -0
  2593. data/vendor/rails/railties/test/fixtures/plugins/engines/engine/init.rb +3 -0
  2594. data/vendor/rails/railties/test/fixtures/public/foo/bar.html +1 -0
  2595. data/vendor/rails/railties/test/fixtures/public/foo/index.html +1 -0
  2596. data/vendor/rails/railties/test/fixtures/public/index.html +1 -0
  2597. data/vendor/rails/railties/test/gem_dependency_test.rb +227 -0
  2598. data/vendor/rails/railties/test/generator_lookup_test.rb +40 -0
  2599. data/vendor/rails/railties/test/generators/generated_attribute_test.rb +38 -0
  2600. data/vendor/rails/railties/test/generators/generator_test_helper.rb +322 -0
  2601. data/vendor/rails/railties/test/generators/rails_controller_generator_test.rb +44 -0
  2602. data/vendor/rails/railties/test/generators/rails_helper_generator_test.rb +36 -0
  2603. data/vendor/rails/railties/test/generators/rails_mailer_generator_test.rb +29 -0
  2604. data/vendor/rails/railties/test/generators/rails_model_generator_test.rb +96 -0
  2605. data/vendor/rails/railties/test/generators/rails_resource_generator_test.rb +29 -0
  2606. data/vendor/rails/railties/test/generators/rails_scaffold_generator_test.rb +151 -0
  2607. data/vendor/rails/railties/test/generators/rails_template_runner_test.rb +216 -0
  2608. data/vendor/rails/railties/test/initializer_test.rb +437 -0
  2609. data/vendor/rails/railties/test/metal_test.rb +72 -0
  2610. data/vendor/rails/railties/test/mocks/routes.rb +6 -0
  2611. data/vendor/rails/railties/test/plugin_loader_test.rb +172 -0
  2612. data/vendor/rails/railties/test/plugin_locator_test.rb +62 -0
  2613. data/vendor/rails/railties/test/plugin_test.rb +162 -0
  2614. data/vendor/rails/railties/test/plugin_test_helper.rb +29 -0
  2615. data/vendor/rails/railties/test/rack_static_test.rb +47 -0
  2616. data/vendor/rails/railties/test/rails_generator_test.rb +145 -0
  2617. data/vendor/rails/railties/test/rails_info_controller_test.rb +52 -0
  2618. data/vendor/rails/railties/test/rails_info_test.rb +99 -0
  2619. data/vendor/rails/railties/test/secret_key_generation_test.rb +38 -0
  2620. data/vendor/rails/railties/test/vendor/gems/dummy-gem-a-0.4.0/lib/dummy-gem-a.rb +1 -0
  2621. data/vendor/rails/railties/test/vendor/gems/dummy-gem-b-0.4.0/lib/dummy-gem-b.rb +1 -0
  2622. data/vendor/rails/railties/test/vendor/gems/dummy-gem-b-0.6.0/lib/dummy-gem-b.rb +1 -0
  2623. data/vendor/rails/railties/test/vendor/gems/dummy-gem-c-0.4.0/lib/dummy-gem-c.rb +1 -0
  2624. data/vendor/rails/railties/test/vendor/gems/dummy-gem-c-0.6.0/lib/dummy-gem-c.rb +1 -0
  2625. data/vendor/rails/railties/test/vendor/gems/dummy-gem-d-1.0.0/lib/dummy-gem-d.rb +1 -0
  2626. data/vendor/rails/railties/test/vendor/gems/dummy-gem-e-1.0.0/lib/dummy-gem-e.rb +1 -0
  2627. data/vendor/rails/railties/test/vendor/gems/dummy-gem-f-1.0.0/lib/dummy-gem-f.rb +1 -0
  2628. data/vendor/rails/railties/test/vendor/gems/dummy-gem-g-1.0.0/lib/dummy-gem-g.rb +1 -0
  2629. data/vendor/rails/railties/test/vendor/gems/dummy-gem-h-1.0.0/lib/dummy-gem-h.rb +1 -0
  2630. data/vendor/rails/railties/test/vendor/gems/dummy-gem-i-1.0.0/ext/dummy-gem-i/Makefile +0 -0
  2631. data/vendor/rails/railties/test/vendor/gems/dummy-gem-i-1.0.0/lib/dummy-gem-i.rb +1 -0
  2632. data/vendor/rails/railties/test/vendor/gems/dummy-gem-j-1.0.0/lib/dummy-gem-j.rb +1 -0
  2633. data/vendor/rails/railties/test/vendor/gems/dummy-gem-k-1.0.0/lib/dummy-gem-k.rb +1 -0
  2634. data/vendor/rails/railties/test/vendor/gems/dummy-gem-l-1.0.0-x86-mswin32/lib/dummy-gem-l.rb +1 -0
  2635. metadata +3023 -0
@@ -0,0 +1,2143 @@
1
+ require "cases/helper"
2
+ require 'models/post'
3
+ require 'models/event_author'
4
+ require 'models/topic'
5
+ require 'models/reply'
6
+ require 'models/category'
7
+ require 'models/company'
8
+ require 'models/customer'
9
+ require 'models/developer'
10
+ require 'models/project'
11
+ require 'models/default'
12
+ require 'models/auto_id'
13
+ require 'models/column_name'
14
+ require 'models/subscriber'
15
+ require 'models/keyboard'
16
+ require 'models/comment'
17
+ require 'models/minimalistic'
18
+ require 'models/warehouse_thing'
19
+ require 'models/parrot'
20
+ require 'rexml/document'
21
+
22
+ class Category < ActiveRecord::Base; end
23
+ class Categorization < ActiveRecord::Base; end
24
+ class Smarts < ActiveRecord::Base; end
25
+ class CreditCard < ActiveRecord::Base
26
+ class PinNumber < ActiveRecord::Base
27
+ class CvvCode < ActiveRecord::Base; end
28
+ class SubCvvCode < CvvCode; end
29
+ end
30
+ class SubPinNumber < PinNumber; end
31
+ class Brand < Category; end
32
+ end
33
+ class MasterCreditCard < ActiveRecord::Base; end
34
+ class Post < ActiveRecord::Base; end
35
+ class Computer < ActiveRecord::Base; end
36
+ class NonExistentTable < ActiveRecord::Base; end
37
+ class TestOracleDefault < ActiveRecord::Base; end
38
+
39
+ class LoosePerson < ActiveRecord::Base
40
+ self.table_name = 'people'
41
+ self.abstract_class = true
42
+ attr_protected :credit_rating, :administrator
43
+ end
44
+
45
+ class LooseDescendant < LoosePerson
46
+ attr_protected :phone_number
47
+ end
48
+
49
+ class LooseDescendantSecond< LoosePerson
50
+ attr_protected :phone_number
51
+ attr_protected :name
52
+ end
53
+
54
+ class TightPerson < ActiveRecord::Base
55
+ self.table_name = 'people'
56
+ attr_accessible :name, :address
57
+ end
58
+
59
+ class TightDescendant < TightPerson
60
+ attr_accessible :phone_number
61
+ end
62
+
63
+ class ReadonlyTitlePost < Post
64
+ attr_readonly :title
65
+ end
66
+
67
+ class Booleantest < ActiveRecord::Base; end
68
+
69
+ class Task < ActiveRecord::Base
70
+ attr_protected :starting
71
+ end
72
+
73
+ class TopicWithProtectedContentAndAccessibleAuthorName < ActiveRecord::Base
74
+ self.table_name = 'topics'
75
+ attr_accessible :author_name
76
+ attr_protected :content
77
+ end
78
+
79
+ class BasicsTest < ActiveRecord::TestCase
80
+ fixtures :topics, :companies, :developers, :projects, :computers, :accounts, :minimalistics, 'warehouse-things', :authors, :categorizations, :categories, :posts
81
+
82
+ def test_table_exists
83
+ assert !NonExistentTable.table_exists?
84
+ assert Topic.table_exists?
85
+ end
86
+
87
+ def test_set_attributes
88
+ topic = Topic.find(1)
89
+ topic.attributes = { "title" => "Budget", "author_name" => "Jason" }
90
+ topic.save
91
+ assert_equal("Budget", topic.title)
92
+ assert_equal("Jason", topic.author_name)
93
+ assert_equal(topics(:first).author_email_address, Topic.find(1).author_email_address)
94
+ end
95
+
96
+ def test_integers_as_nil
97
+ test = AutoId.create('value' => '')
98
+ assert_nil AutoId.find(test.id).value
99
+ end
100
+
101
+ def test_set_attributes_with_block
102
+ topic = Topic.new do |t|
103
+ t.title = "Budget"
104
+ t.author_name = "Jason"
105
+ end
106
+
107
+ assert_equal("Budget", topic.title)
108
+ assert_equal("Jason", topic.author_name)
109
+ end
110
+
111
+ def test_respond_to?
112
+ topic = Topic.find(1)
113
+ assert topic.respond_to?("title")
114
+ assert topic.respond_to?("title?")
115
+ assert topic.respond_to?("title=")
116
+ assert topic.respond_to?(:title)
117
+ assert topic.respond_to?(:title?)
118
+ assert topic.respond_to?(:title=)
119
+ assert topic.respond_to?("author_name")
120
+ assert topic.respond_to?("attribute_names")
121
+ assert !topic.respond_to?("nothingness")
122
+ assert !topic.respond_to?(:nothingness)
123
+ end
124
+
125
+ def test_array_content
126
+ topic = Topic.new
127
+ topic.content = %w( one two three )
128
+ topic.save
129
+
130
+ assert_equal(%w( one two three ), Topic.find(topic.id).content)
131
+ end
132
+
133
+ def test_read_attributes_before_type_cast
134
+ category = Category.new({:name=>"Test categoty", :type => nil})
135
+ category_attrs = {"name"=>"Test categoty", "type" => nil, "categorizations_count" => nil}
136
+ assert_equal category_attrs , category.attributes_before_type_cast
137
+ end
138
+
139
+ if current_adapter?(:MysqlAdapter)
140
+ def test_read_attributes_before_type_cast_on_boolean
141
+ bool = Booleantest.create({ "value" => false })
142
+ assert_equal "0", bool.reload.attributes_before_type_cast["value"]
143
+ end
144
+ end
145
+
146
+ def test_read_attributes_before_type_cast_on_datetime
147
+ developer = Developer.find(:first)
148
+ assert_equal developer.created_at.to_s(:db) , developer.attributes_before_type_cast["created_at"]
149
+ end
150
+
151
+ def test_hash_content
152
+ topic = Topic.new
153
+ topic.content = { "one" => 1, "two" => 2 }
154
+ topic.save
155
+
156
+ assert_equal 2, Topic.find(topic.id).content["two"]
157
+
158
+ topic.content_will_change!
159
+ topic.content["three"] = 3
160
+ topic.save
161
+
162
+ assert_equal 3, Topic.find(topic.id).content["three"]
163
+ end
164
+
165
+ def test_update_array_content
166
+ topic = Topic.new
167
+ topic.content = %w( one two three )
168
+
169
+ topic.content.push "four"
170
+ assert_equal(%w( one two three four ), topic.content)
171
+
172
+ topic.save
173
+
174
+ topic = Topic.find(topic.id)
175
+ topic.content << "five"
176
+ assert_equal(%w( one two three four five ), topic.content)
177
+ end
178
+
179
+ def test_case_sensitive_attributes_hash
180
+ # DB2 is not case-sensitive
181
+ return true if current_adapter?(:DB2Adapter)
182
+
183
+ assert_equal @loaded_fixtures['computers']['workstation'].to_hash, Computer.find(:first).attributes
184
+ end
185
+
186
+ def test_create
187
+ topic = Topic.new
188
+ topic.title = "New Topic"
189
+ topic.save
190
+ topic_reloaded = Topic.find(topic.id)
191
+ assert_equal("New Topic", topic_reloaded.title)
192
+ end
193
+
194
+ def test_save!
195
+ topic = Topic.new(:title => "New Topic")
196
+ assert topic.save!
197
+
198
+ reply = Reply.new
199
+ assert_raise(ActiveRecord::RecordInvalid) { reply.save! }
200
+ end
201
+
202
+ def test_save_null_string_attributes
203
+ topic = Topic.find(1)
204
+ topic.attributes = { "title" => "null", "author_name" => "null" }
205
+ topic.save!
206
+ topic.reload
207
+ assert_equal("null", topic.title)
208
+ assert_equal("null", topic.author_name)
209
+ end
210
+
211
+ def test_save_nil_string_attributes
212
+ topic = Topic.find(1)
213
+ topic.title = nil
214
+ topic.save!
215
+ topic.reload
216
+ assert_nil topic.title
217
+ end
218
+
219
+ def test_save_for_record_with_only_primary_key
220
+ minimalistic = Minimalistic.new
221
+ assert_nothing_raised { minimalistic.save }
222
+ end
223
+
224
+ def test_save_for_record_with_only_primary_key_that_is_provided
225
+ assert_nothing_raised { Minimalistic.create!(:id => 2) }
226
+ end
227
+
228
+ def test_hashes_not_mangled
229
+ new_topic = { :title => "New Topic" }
230
+ new_topic_values = { :title => "AnotherTopic" }
231
+
232
+ topic = Topic.new(new_topic)
233
+ assert_equal new_topic[:title], topic.title
234
+
235
+ topic.attributes= new_topic_values
236
+ assert_equal new_topic_values[:title], topic.title
237
+ end
238
+
239
+ def test_create_many
240
+ topics = Topic.create([ { "title" => "first" }, { "title" => "second" }])
241
+ assert_equal 2, topics.size
242
+ assert_equal "first", topics.first.title
243
+ end
244
+
245
+ def test_create_columns_not_equal_attributes
246
+ topic = Topic.new
247
+ topic.title = 'Another New Topic'
248
+ topic.send :write_attribute, 'does_not_exist', 'test'
249
+ assert_nothing_raised { topic.save }
250
+ end
251
+
252
+ def test_create_through_factory
253
+ topic = Topic.create("title" => "New Topic")
254
+ topicReloaded = Topic.find(topic.id)
255
+ assert_equal(topic, topicReloaded)
256
+ end
257
+
258
+ def test_create_through_factory_with_block
259
+ topic = Topic.create("title" => "New Topic") do |t|
260
+ t.author_name = "David"
261
+ end
262
+ topicReloaded = Topic.find(topic.id)
263
+ assert_equal("New Topic", topic.title)
264
+ assert_equal("David", topic.author_name)
265
+ end
266
+
267
+ def test_create_many_through_factory_with_block
268
+ topics = Topic.create([ { "title" => "first" }, { "title" => "second" }]) do |t|
269
+ t.author_name = "David"
270
+ end
271
+ assert_equal 2, topics.size
272
+ topic1, topic2 = Topic.find(topics[0].id), Topic.find(topics[1].id)
273
+ assert_equal "first", topic1.title
274
+ assert_equal "David", topic1.author_name
275
+ assert_equal "second", topic2.title
276
+ assert_equal "David", topic2.author_name
277
+ end
278
+
279
+ def test_update
280
+ topic = Topic.new
281
+ topic.title = "Another New Topic"
282
+ topic.written_on = "2003-12-12 23:23:00"
283
+ topic.save
284
+ topicReloaded = Topic.find(topic.id)
285
+ assert_equal("Another New Topic", topicReloaded.title)
286
+
287
+ topicReloaded.title = "Updated topic"
288
+ topicReloaded.save
289
+
290
+ topicReloadedAgain = Topic.find(topic.id)
291
+
292
+ assert_equal("Updated topic", topicReloadedAgain.title)
293
+ end
294
+
295
+ def test_update_columns_not_equal_attributes
296
+ topic = Topic.new
297
+ topic.title = "Still another topic"
298
+ topic.save
299
+
300
+ topicReloaded = Topic.find(topic.id)
301
+ topicReloaded.title = "A New Topic"
302
+ topicReloaded.send :write_attribute, 'does_not_exist', 'test'
303
+ assert_nothing_raised { topicReloaded.save }
304
+ end
305
+
306
+ def test_update_for_record_with_only_primary_key
307
+ minimalistic = minimalistics(:first)
308
+ assert_nothing_raised { minimalistic.save }
309
+ end
310
+
311
+ def test_write_attribute
312
+ topic = Topic.new
313
+ topic.send(:write_attribute, :title, "Still another topic")
314
+ assert_equal "Still another topic", topic.title
315
+
316
+ topic.send(:write_attribute, "title", "Still another topic: part 2")
317
+ assert_equal "Still another topic: part 2", topic.title
318
+ end
319
+
320
+ def test_read_attribute
321
+ topic = Topic.new
322
+ topic.title = "Don't change the topic"
323
+ assert_equal "Don't change the topic", topic.send(:read_attribute, "title")
324
+ assert_equal "Don't change the topic", topic["title"]
325
+
326
+ assert_equal "Don't change the topic", topic.send(:read_attribute, :title)
327
+ assert_equal "Don't change the topic", topic[:title]
328
+ end
329
+
330
+ def test_read_attribute_when_false
331
+ topic = topics(:first)
332
+ topic.approved = false
333
+ assert !topic.approved?, "approved should be false"
334
+ topic.approved = "false"
335
+ assert !topic.approved?, "approved should be false"
336
+ end
337
+
338
+ def test_read_attribute_when_true
339
+ topic = topics(:first)
340
+ topic.approved = true
341
+ assert topic.approved?, "approved should be true"
342
+ topic.approved = "true"
343
+ assert topic.approved?, "approved should be true"
344
+ end
345
+
346
+ def test_read_write_boolean_attribute
347
+ topic = Topic.new
348
+ # puts ""
349
+ # puts "New Topic"
350
+ # puts topic.inspect
351
+ topic.approved = "false"
352
+ # puts "Expecting false"
353
+ # puts topic.inspect
354
+ assert !topic.approved?, "approved should be false"
355
+ topic.approved = "false"
356
+ # puts "Expecting false"
357
+ # puts topic.inspect
358
+ assert !topic.approved?, "approved should be false"
359
+ topic.approved = "true"
360
+ # puts "Expecting true"
361
+ # puts topic.inspect
362
+ assert topic.approved?, "approved should be true"
363
+ topic.approved = "true"
364
+ # puts "Expecting true"
365
+ # puts topic.inspect
366
+ assert topic.approved?, "approved should be true"
367
+ # puts ""
368
+ end
369
+
370
+ def test_query_attribute_string
371
+ [nil, "", " "].each do |value|
372
+ assert_equal false, Topic.new(:author_name => value).author_name?
373
+ end
374
+
375
+ assert_equal true, Topic.new(:author_name => "Name").author_name?
376
+ end
377
+
378
+ def test_query_attribute_number
379
+ [nil, 0, "0"].each do |value|
380
+ assert_equal false, Developer.new(:salary => value).salary?
381
+ end
382
+
383
+ assert_equal true, Developer.new(:salary => 1).salary?
384
+ assert_equal true, Developer.new(:salary => "1").salary?
385
+ end
386
+
387
+ def test_query_attribute_boolean
388
+ [nil, "", false, "false", "f", 0].each do |value|
389
+ assert_equal false, Topic.new(:approved => value).approved?
390
+ end
391
+
392
+ [true, "true", "1", 1].each do |value|
393
+ assert_equal true, Topic.new(:approved => value).approved?
394
+ end
395
+ end
396
+
397
+ def test_query_attribute_with_custom_fields
398
+ object = Company.find_by_sql(<<-SQL).first
399
+ SELECT c1.*, c2.ruby_type as string_value, c2.rating as int_value
400
+ FROM companies c1, companies c2
401
+ WHERE c1.firm_id = c2.id
402
+ AND c1.id = 2
403
+ SQL
404
+
405
+ assert_equal "Firm", object.string_value
406
+ assert object.string_value?
407
+
408
+ object.string_value = " "
409
+ assert !object.string_value?
410
+
411
+ assert_equal 1, object.int_value.to_i
412
+ assert object.int_value?
413
+
414
+ object.int_value = "0"
415
+ assert !object.int_value?
416
+ end
417
+
418
+
419
+ def test_reader_for_invalid_column_names
420
+ Topic.send(:define_read_method, "mumub-jumbo".to_sym, "mumub-jumbo", nil)
421
+ assert !Topic.generated_methods.include?("mumub-jumbo")
422
+ end
423
+
424
+ def test_non_attribute_access_and_assignment
425
+ topic = Topic.new
426
+ assert !topic.respond_to?("mumbo")
427
+ assert_raise(NoMethodError) { topic.mumbo }
428
+ assert_raise(NoMethodError) { topic.mumbo = 5 }
429
+ end
430
+
431
+ def test_preserving_date_objects
432
+ if current_adapter?(:SybaseAdapter, :OracleAdapter)
433
+ # Sybase ctlib does not (yet?) support the date type; use datetime instead.
434
+ # Oracle treats all dates/times as Time.
435
+ assert_kind_of(
436
+ Time, Topic.find(1).last_read,
437
+ "The last_read attribute should be of the Time class"
438
+ )
439
+ else
440
+ assert_kind_of(
441
+ Date, Topic.find(1).last_read,
442
+ "The last_read attribute should be of the Date class"
443
+ )
444
+ end
445
+ end
446
+
447
+ def test_preserving_time_objects
448
+ assert_kind_of(
449
+ Time, Topic.find(1).bonus_time,
450
+ "The bonus_time attribute should be of the Time class"
451
+ )
452
+
453
+ assert_kind_of(
454
+ Time, Topic.find(1).written_on,
455
+ "The written_on attribute should be of the Time class"
456
+ )
457
+
458
+ # For adapters which support microsecond resolution.
459
+ if current_adapter?(:PostgreSQLAdapter)
460
+ assert_equal 11, Topic.find(1).written_on.sec
461
+ assert_equal 223300, Topic.find(1).written_on.usec
462
+ assert_equal 9900, Topic.find(2).written_on.usec
463
+ end
464
+ end
465
+
466
+ def test_custom_mutator
467
+ topic = Topic.find(1)
468
+ # This mutator is protected in the class definition
469
+ topic.send(:approved=, true)
470
+ assert topic.instance_variable_get("@custom_approved")
471
+ end
472
+
473
+ def test_delete
474
+ topic = Topic.find(1)
475
+ assert_equal topic, topic.delete, 'topic.delete did not return self'
476
+ assert topic.frozen?, 'topic not frozen after delete'
477
+ assert topic.destroyed?, 'topic not marked as being destroyed'
478
+ assert_raise(ActiveRecord::RecordNotFound) { Topic.find(topic.id) }
479
+ end
480
+
481
+ def test_delete_doesnt_run_callbacks
482
+ Topic.find(1).delete
483
+ assert_not_nil Topic.find(2)
484
+ end
485
+
486
+ def test_destroy
487
+ topic = Topic.find(1)
488
+ assert_equal topic, topic.destroy, 'topic.destroy did not return self'
489
+ assert topic.frozen?, 'topic not frozen after destroy'
490
+ assert topic.destroyed?, 'topic not marked as being destroyed'
491
+ assert_raise(ActiveRecord::RecordNotFound) { Topic.find(topic.id) }
492
+ end
493
+
494
+ def test_record_not_found_exception
495
+ assert_raise(ActiveRecord::RecordNotFound) { topicReloaded = Topic.find(99999) }
496
+ end
497
+
498
+ def test_initialize_with_attributes
499
+ topic = Topic.new({
500
+ "title" => "initialized from attributes", "written_on" => "2003-12-12 23:23"
501
+ })
502
+
503
+ assert_equal("initialized from attributes", topic.title)
504
+ end
505
+
506
+ def test_initialize_with_invalid_attribute
507
+ begin
508
+ topic = Topic.new({ "title" => "test",
509
+ "last_read(1i)" => "2005", "last_read(2i)" => "2", "last_read(3i)" => "31"})
510
+ rescue ActiveRecord::MultiparameterAssignmentErrors => ex
511
+ assert_equal(1, ex.errors.size)
512
+ assert_equal("last_read", ex.errors[0].attribute)
513
+ end
514
+ end
515
+
516
+ def test_load
517
+ topics = Topic.find(:all, :order => 'id')
518
+ assert_equal(4, topics.size)
519
+ assert_equal(topics(:first).title, topics.first.title)
520
+ end
521
+
522
+ def test_load_with_condition
523
+ topics = Topic.find(:all, :conditions => "author_name = 'Mary'")
524
+
525
+ assert_equal(1, topics.size)
526
+ assert_equal(topics(:second).title, topics.first.title)
527
+ end
528
+
529
+ def test_table_name_guesses
530
+ classes = [Category, Smarts, CreditCard, CreditCard::PinNumber, CreditCard::PinNumber::CvvCode, CreditCard::SubPinNumber, CreditCard::Brand, MasterCreditCard]
531
+
532
+ assert_equal "topics", Topic.table_name
533
+
534
+ assert_equal "categories", Category.table_name
535
+ assert_equal "smarts", Smarts.table_name
536
+ assert_equal "credit_cards", CreditCard.table_name
537
+ assert_equal "credit_card_pin_numbers", CreditCard::PinNumber.table_name
538
+ assert_equal "credit_card_pin_number_cvv_codes", CreditCard::PinNumber::CvvCode.table_name
539
+ assert_equal "credit_card_pin_numbers", CreditCard::SubPinNumber.table_name
540
+ assert_equal "categories", CreditCard::Brand.table_name
541
+ assert_equal "master_credit_cards", MasterCreditCard.table_name
542
+
543
+ ActiveRecord::Base.pluralize_table_names = false
544
+ classes.each(&:reset_table_name)
545
+
546
+ assert_equal "category", Category.table_name
547
+ assert_equal "smarts", Smarts.table_name
548
+ assert_equal "credit_card", CreditCard.table_name
549
+ assert_equal "credit_card_pin_number", CreditCard::PinNumber.table_name
550
+ assert_equal "credit_card_pin_number_cvv_code", CreditCard::PinNumber::CvvCode.table_name
551
+ assert_equal "credit_card_pin_number", CreditCard::SubPinNumber.table_name
552
+ assert_equal "category", CreditCard::Brand.table_name
553
+ assert_equal "master_credit_card", MasterCreditCard.table_name
554
+
555
+ ActiveRecord::Base.pluralize_table_names = true
556
+ classes.each(&:reset_table_name)
557
+
558
+ ActiveRecord::Base.table_name_prefix = "test_"
559
+ Category.reset_table_name
560
+ assert_equal "test_categories", Category.table_name
561
+ ActiveRecord::Base.table_name_suffix = "_test"
562
+ Category.reset_table_name
563
+ assert_equal "test_categories_test", Category.table_name
564
+ ActiveRecord::Base.table_name_prefix = ""
565
+ Category.reset_table_name
566
+ assert_equal "categories_test", Category.table_name
567
+ ActiveRecord::Base.table_name_suffix = ""
568
+ Category.reset_table_name
569
+ assert_equal "categories", Category.table_name
570
+
571
+ ActiveRecord::Base.pluralize_table_names = false
572
+ ActiveRecord::Base.table_name_prefix = "test_"
573
+ Category.reset_table_name
574
+ assert_equal "test_category", Category.table_name
575
+ ActiveRecord::Base.table_name_suffix = "_test"
576
+ Category.reset_table_name
577
+ assert_equal "test_category_test", Category.table_name
578
+ ActiveRecord::Base.table_name_prefix = ""
579
+ Category.reset_table_name
580
+ assert_equal "category_test", Category.table_name
581
+ ActiveRecord::Base.table_name_suffix = ""
582
+ Category.reset_table_name
583
+ assert_equal "category", Category.table_name
584
+
585
+ ActiveRecord::Base.pluralize_table_names = true
586
+ classes.each(&:reset_table_name)
587
+ end
588
+
589
+ def test_destroy_all
590
+ conditions = "author_name = 'Mary'"
591
+ topics_by_mary = Topic.all(:conditions => conditions, :order => 'id')
592
+ assert ! topics_by_mary.empty?
593
+
594
+ assert_difference('Topic.count', -topics_by_mary.size) do
595
+ destroyed = Topic.destroy_all(conditions).sort_by(&:id)
596
+ assert_equal topics_by_mary, destroyed
597
+ assert destroyed.all? { |topic| topic.frozen? }
598
+ end
599
+ end
600
+
601
+ def test_destroy_many
602
+ clients = Client.find([2, 3], :order => 'id')
603
+
604
+ assert_difference('Client.count', -2) do
605
+ destroyed = Client.destroy([2, 3]).sort_by(&:id)
606
+ assert_equal clients, destroyed
607
+ assert destroyed.all? { |client| client.frozen? }
608
+ end
609
+ end
610
+
611
+ def test_delete_many
612
+ original_count = Topic.count
613
+ Topic.delete(deleting = [1, 2])
614
+ assert_equal original_count - deleting.size, Topic.count
615
+ end
616
+
617
+ def test_boolean_attributes
618
+ assert ! Topic.find(1).approved?
619
+ assert Topic.find(2).approved?
620
+ end
621
+
622
+ def test_update_all
623
+ assert_equal Topic.count, Topic.update_all("content = 'bulk updated!'")
624
+ assert_equal "bulk updated!", Topic.find(1).content
625
+ assert_equal "bulk updated!", Topic.find(2).content
626
+
627
+ assert_equal Topic.count, Topic.update_all(['content = ?', 'bulk updated again!'])
628
+ assert_equal "bulk updated again!", Topic.find(1).content
629
+ assert_equal "bulk updated again!", Topic.find(2).content
630
+
631
+ assert_equal Topic.count, Topic.update_all(['content = ?', nil])
632
+ assert_nil Topic.find(1).content
633
+ end
634
+
635
+ def test_update_all_with_hash
636
+ assert_not_nil Topic.find(1).last_read
637
+ assert_equal Topic.count, Topic.update_all(:content => 'bulk updated with hash!', :last_read => nil)
638
+ assert_equal "bulk updated with hash!", Topic.find(1).content
639
+ assert_equal "bulk updated with hash!", Topic.find(2).content
640
+ assert_nil Topic.find(1).last_read
641
+ assert_nil Topic.find(2).last_read
642
+ end
643
+
644
+ def test_update_all_with_non_standard_table_name
645
+ assert_equal 1, WarehouseThing.update_all(['value = ?', 0], ['id = ?', 1])
646
+ assert_equal 0, WarehouseThing.find(1).value
647
+ end
648
+
649
+ if current_adapter?(:MysqlAdapter)
650
+ def test_update_all_with_order_and_limit
651
+ assert_equal 1, Topic.update_all("content = 'bulk updated!'", nil, :limit => 1, :order => 'id DESC')
652
+ end
653
+ end
654
+
655
+ def test_update_all_ignores_order_without_limit_from_association
656
+ author = authors(:david)
657
+ assert_nothing_raised do
658
+ assert_equal author.posts_with_comments_and_categories.length, author.posts_with_comments_and_categories.update_all([ "body = ?", "bulk update!" ])
659
+ end
660
+ end
661
+
662
+ def test_update_all_with_order_and_limit_updates_subset_only
663
+ author = authors(:david)
664
+ assert_nothing_raised do
665
+ assert_equal 1, author.posts_sorted_by_id_limited.size
666
+ assert_equal 2, author.posts_sorted_by_id_limited.find(:all, :limit => 2).size
667
+ assert_equal 1, author.posts_sorted_by_id_limited.update_all([ "body = ?", "bulk update!" ])
668
+ assert_equal "bulk update!", posts(:welcome).body
669
+ assert_not_equal "bulk update!", posts(:thinking).body
670
+ end
671
+ end
672
+
673
+ def test_update_many
674
+ topic_data = { 1 => { "content" => "1 updated" }, 2 => { "content" => "2 updated" } }
675
+ updated = Topic.update(topic_data.keys, topic_data.values)
676
+
677
+ assert_equal 2, updated.size
678
+ assert_equal "1 updated", Topic.find(1).content
679
+ assert_equal "2 updated", Topic.find(2).content
680
+ end
681
+
682
+ def test_delete_all
683
+ assert Topic.count > 0
684
+
685
+ assert_equal Topic.count, Topic.delete_all
686
+ end
687
+
688
+ def test_update_by_condition
689
+ Topic.update_all "content = 'bulk updated!'", ["approved = ?", true]
690
+ assert_equal "Have a nice day", Topic.find(1).content
691
+ assert_equal "bulk updated!", Topic.find(2).content
692
+ end
693
+
694
+ def test_attribute_present
695
+ t = Topic.new
696
+ t.title = "hello there!"
697
+ t.written_on = Time.now
698
+ assert t.attribute_present?("title")
699
+ assert t.attribute_present?("written_on")
700
+ assert !t.attribute_present?("content")
701
+ end
702
+
703
+ def test_attribute_keys_on_new_instance
704
+ t = Topic.new
705
+ assert_equal nil, t.title, "The topics table has a title column, so it should be nil"
706
+ assert_raise(NoMethodError) { t.title2 }
707
+ end
708
+
709
+ def test_class_name
710
+ ActiveSupport::Deprecation.silence do
711
+ assert_equal "Firm", ActiveRecord::Base.class_name("firms")
712
+ assert_equal "Category", ActiveRecord::Base.class_name("categories")
713
+ assert_equal "AccountHolder", ActiveRecord::Base.class_name("account_holder")
714
+
715
+ ActiveRecord::Base.pluralize_table_names = false
716
+ assert_equal "Firms", ActiveRecord::Base.class_name( "firms" )
717
+ ActiveRecord::Base.pluralize_table_names = true
718
+
719
+ ActiveRecord::Base.table_name_prefix = "test_"
720
+ assert_equal "Firm", ActiveRecord::Base.class_name( "test_firms" )
721
+ ActiveRecord::Base.table_name_suffix = "_tests"
722
+ assert_equal "Firm", ActiveRecord::Base.class_name( "test_firms_tests" )
723
+ ActiveRecord::Base.table_name_prefix = ""
724
+ assert_equal "Firm", ActiveRecord::Base.class_name( "firms_tests" )
725
+ ActiveRecord::Base.table_name_suffix = ""
726
+ assert_equal "Firm", ActiveRecord::Base.class_name( "firms" )
727
+ end
728
+ end
729
+
730
+ def test_null_fields
731
+ assert_nil Topic.find(1).parent_id
732
+ assert_nil Topic.create("title" => "Hey you").parent_id
733
+ end
734
+
735
+ def test_default_values
736
+ topic = Topic.new
737
+ assert topic.approved?
738
+ assert_nil topic.written_on
739
+ assert_nil topic.bonus_time
740
+ assert_nil topic.last_read
741
+
742
+ topic.save
743
+
744
+ topic = Topic.find(topic.id)
745
+ assert topic.approved?
746
+ assert_nil topic.last_read
747
+
748
+ # Oracle has some funky default handling, so it requires a bit of
749
+ # extra testing. See ticket #2788.
750
+ if current_adapter?(:OracleAdapter)
751
+ test = TestOracleDefault.new
752
+ assert_equal "X", test.test_char
753
+ assert_equal "hello", test.test_string
754
+ assert_equal 3, test.test_int
755
+ end
756
+ end
757
+
758
+ # Oracle, and Sybase do not have a TIME datatype.
759
+ unless current_adapter?(:OracleAdapter, :SybaseAdapter)
760
+ def test_utc_as_time_zone
761
+ Topic.default_timezone = :utc
762
+ attributes = { "bonus_time" => "5:42:00AM" }
763
+ topic = Topic.find(1)
764
+ topic.attributes = attributes
765
+ assert_equal Time.utc(2000, 1, 1, 5, 42, 0), topic.bonus_time
766
+ Topic.default_timezone = :local
767
+ end
768
+
769
+ def test_utc_as_time_zone_and_new
770
+ Topic.default_timezone = :utc
771
+ attributes = { "bonus_time(1i)"=>"2000",
772
+ "bonus_time(2i)"=>"1",
773
+ "bonus_time(3i)"=>"1",
774
+ "bonus_time(4i)"=>"10",
775
+ "bonus_time(5i)"=>"35",
776
+ "bonus_time(6i)"=>"50" }
777
+ topic = Topic.new(attributes)
778
+ assert_equal Time.utc(2000, 1, 1, 10, 35, 50), topic.bonus_time
779
+ Topic.default_timezone = :local
780
+ end
781
+ end
782
+
783
+ def test_default_values_on_empty_strings
784
+ topic = Topic.new
785
+ topic.approved = nil
786
+ topic.last_read = nil
787
+
788
+ topic.save
789
+
790
+ topic = Topic.find(topic.id)
791
+ assert_nil topic.last_read
792
+
793
+ # Sybase adapter does not allow nulls in boolean columns
794
+ if current_adapter?(:SybaseAdapter)
795
+ assert topic.approved == false
796
+ else
797
+ assert_nil topic.approved
798
+ end
799
+ end
800
+
801
+ def test_equality
802
+ assert_equal Topic.find(1), Topic.find(2).topic
803
+ end
804
+
805
+ def test_equality_of_new_records
806
+ assert_not_equal Topic.new, Topic.new
807
+ end
808
+
809
+ def test_hashing
810
+ assert_equal [ Topic.find(1) ], [ Topic.find(2).topic ] & [ Topic.find(1) ]
811
+ end
812
+
813
+ def test_delete_new_record
814
+ client = Client.new
815
+ client.delete
816
+ assert client.frozen?
817
+ end
818
+
819
+ def test_delete_record_with_associations
820
+ client = Client.find(3)
821
+ client.delete
822
+ assert client.frozen?
823
+ assert_kind_of Firm, client.firm
824
+ assert_raise(ActiveSupport::FrozenObjectError) { client.name = "something else" }
825
+ end
826
+
827
+ def test_destroy_new_record
828
+ client = Client.new
829
+ client.destroy
830
+ assert client.frozen?
831
+ end
832
+
833
+ def test_destroy_record_with_associations
834
+ client = Client.find(3)
835
+ client.destroy
836
+ assert client.frozen?
837
+ assert_kind_of Firm, client.firm
838
+ assert_raise(ActiveSupport::FrozenObjectError) { client.name = "something else" }
839
+ end
840
+
841
+ def test_update_attribute
842
+ assert !Topic.find(1).approved?
843
+ Topic.find(1).update_attribute("approved", true)
844
+ assert Topic.find(1).approved?
845
+
846
+ Topic.find(1).update_attribute(:approved, false)
847
+ assert !Topic.find(1).approved?
848
+ end
849
+
850
+ def test_update_attributes
851
+ topic = Topic.find(1)
852
+ assert !topic.approved?
853
+ assert_equal "The First Topic", topic.title
854
+
855
+ topic.update_attributes("approved" => true, "title" => "The First Topic Updated")
856
+ topic.reload
857
+ assert topic.approved?
858
+ assert_equal "The First Topic Updated", topic.title
859
+
860
+ topic.update_attributes(:approved => false, :title => "The First Topic")
861
+ topic.reload
862
+ assert !topic.approved?
863
+ assert_equal "The First Topic", topic.title
864
+ end
865
+
866
+ def test_update_attributes!
867
+ reply = Reply.find(2)
868
+ assert_equal "The Second Topic of the day", reply.title
869
+ assert_equal "Have a nice day", reply.content
870
+
871
+ reply.update_attributes!("title" => "The Second Topic of the day updated", "content" => "Have a nice evening")
872
+ reply.reload
873
+ assert_equal "The Second Topic of the day updated", reply.title
874
+ assert_equal "Have a nice evening", reply.content
875
+
876
+ reply.update_attributes!(:title => "The Second Topic of the day", :content => "Have a nice day")
877
+ reply.reload
878
+ assert_equal "The Second Topic of the day", reply.title
879
+ assert_equal "Have a nice day", reply.content
880
+
881
+ assert_raise(ActiveRecord::RecordInvalid) { reply.update_attributes!(:title => nil, :content => "Have a nice evening") }
882
+ end
883
+
884
+ def test_mass_assignment_should_raise_exception_if_accessible_and_protected_attribute_writers_are_both_used
885
+ topic = TopicWithProtectedContentAndAccessibleAuthorName.new
886
+ assert_raise(RuntimeError) { topic.attributes = { "author_name" => "me" } }
887
+ assert_raise(RuntimeError) { topic.attributes = { "content" => "stuff" } }
888
+ end
889
+
890
+ def test_mass_assignment_protection
891
+ firm = Firm.new
892
+ firm.attributes = { "name" => "Next Angle", "rating" => 5 }
893
+ assert_equal 1, firm.rating
894
+ end
895
+
896
+ def test_mass_assignment_protection_against_class_attribute_writers
897
+ [:logger, :configurations, :primary_key_prefix_type, :table_name_prefix, :table_name_suffix, :pluralize_table_names, :colorize_logging,
898
+ :default_timezone, :schema_format, :lock_optimistically, :record_timestamps].each do |method|
899
+ assert Task.respond_to?(method)
900
+ assert Task.respond_to?("#{method}=")
901
+ assert Task.new.respond_to?(method)
902
+ assert !Task.new.respond_to?("#{method}=")
903
+ end
904
+ end
905
+
906
+ def test_customized_primary_key_remains_protected
907
+ subscriber = Subscriber.new(:nick => 'webster123', :name => 'nice try')
908
+ assert_nil subscriber.id
909
+
910
+ keyboard = Keyboard.new(:key_number => 9, :name => 'nice try')
911
+ assert_nil keyboard.id
912
+ end
913
+
914
+ def test_customized_primary_key_remains_protected_when_referred_to_as_id
915
+ subscriber = Subscriber.new(:id => 'webster123', :name => 'nice try')
916
+ assert_nil subscriber.id
917
+
918
+ keyboard = Keyboard.new(:id => 9, :name => 'nice try')
919
+ assert_nil keyboard.id
920
+ end
921
+
922
+ def test_mass_assigning_invalid_attribute
923
+ firm = Firm.new
924
+
925
+ assert_raise(ActiveRecord::UnknownAttributeError) do
926
+ firm.attributes = { "id" => 5, "type" => "Client", "i_dont_even_exist" => 20 }
927
+ end
928
+ end
929
+
930
+ def test_mass_assignment_protection_on_defaults
931
+ firm = Firm.new
932
+ firm.attributes = { "id" => 5, "type" => "Client" }
933
+ assert_nil firm.id
934
+ assert_equal "Firm", firm[:type]
935
+ end
936
+
937
+ def test_mass_assignment_accessible
938
+ reply = Reply.new("title" => "hello", "content" => "world", "approved" => true)
939
+ reply.save
940
+
941
+ assert reply.approved?
942
+
943
+ reply.approved = false
944
+ reply.save
945
+
946
+ assert !reply.approved?
947
+ end
948
+
949
+ def test_mass_assignment_protection_inheritance
950
+ assert_nil LoosePerson.accessible_attributes
951
+ assert_equal Set.new([ 'credit_rating', 'administrator' ]), LoosePerson.protected_attributes
952
+
953
+ assert_nil LooseDescendant.accessible_attributes
954
+ assert_equal Set.new([ 'credit_rating', 'administrator', 'phone_number' ]), LooseDescendant.protected_attributes
955
+
956
+ assert_nil LooseDescendantSecond.accessible_attributes
957
+ assert_equal Set.new([ 'credit_rating', 'administrator', 'phone_number', 'name' ]), LooseDescendantSecond.protected_attributes, 'Running attr_protected twice in one class should merge the protections'
958
+
959
+ assert_nil TightPerson.protected_attributes
960
+ assert_equal Set.new([ 'name', 'address' ]), TightPerson.accessible_attributes
961
+
962
+ assert_nil TightDescendant.protected_attributes
963
+ assert_equal Set.new([ 'name', 'address', 'phone_number' ]), TightDescendant.accessible_attributes
964
+ end
965
+
966
+ def test_readonly_attributes
967
+ assert_equal Set.new([ 'title' , 'comments_count' ]), ReadonlyTitlePost.readonly_attributes
968
+
969
+ post = ReadonlyTitlePost.create(:title => "cannot change this", :body => "changeable")
970
+ post.reload
971
+ assert_equal "cannot change this", post.title
972
+
973
+ post.update_attributes(:title => "try to change", :body => "changed")
974
+ post.reload
975
+ assert_equal "cannot change this", post.title
976
+ assert_equal "changed", post.body
977
+ end
978
+
979
+ def test_multiparameter_attribute_assignment_via_association_proxy
980
+ multiparameter_date_attribute = {
981
+ "ends_on(1i)" => "2004", "ends_on(2i)" => "6", "ends_on(3i)" => "24",
982
+ "ends_on(4i)" => "16", "ends_on(5i)" => "24", "ends_on(6i)" => "00"
983
+ }
984
+
985
+ author = Author.create(:name => "dhh")
986
+ event = author.events.create(multiparameter_date_attribute)
987
+
988
+ assert_equal Time.local(2004,6,24,16,24,0),event.ends_on
989
+ end
990
+
991
+ def test_multiparameter_attributes_on_date
992
+ attributes = { "last_read(1i)" => "2004", "last_read(2i)" => "6", "last_read(3i)" => "24" }
993
+ topic = Topic.find(1)
994
+ topic.attributes = attributes
995
+ # note that extra #to_date call allows test to pass for Oracle, which
996
+ # treats dates/times the same
997
+ assert_date_from_db Date.new(2004, 6, 24), topic.last_read.to_date
998
+ end
999
+
1000
+ def test_multiparameter_attributes_on_date_with_empty_year
1001
+ attributes = { "last_read(1i)" => "", "last_read(2i)" => "6", "last_read(3i)" => "24" }
1002
+ topic = Topic.find(1)
1003
+ topic.attributes = attributes
1004
+ # note that extra #to_date call allows test to pass for Oracle, which
1005
+ # treats dates/times the same
1006
+ assert_date_from_db Date.new(1, 6, 24), topic.last_read.to_date
1007
+ end
1008
+
1009
+ def test_multiparameter_attributes_on_date_with_empty_month
1010
+ attributes = { "last_read(1i)" => "2004", "last_read(2i)" => "", "last_read(3i)" => "24" }
1011
+ topic = Topic.find(1)
1012
+ topic.attributes = attributes
1013
+ # note that extra #to_date call allows test to pass for Oracle, which
1014
+ # treats dates/times the same
1015
+ assert_date_from_db Date.new(2004, 1, 24), topic.last_read.to_date
1016
+ end
1017
+
1018
+ def test_multiparameter_attributes_on_date_with_empty_day
1019
+ attributes = { "last_read(1i)" => "2004", "last_read(2i)" => "6", "last_read(3i)" => "" }
1020
+ topic = Topic.find(1)
1021
+ topic.attributes = attributes
1022
+ # note that extra #to_date call allows test to pass for Oracle, which
1023
+ # treats dates/times the same
1024
+ assert_date_from_db Date.new(2004, 6, 1), topic.last_read.to_date
1025
+ end
1026
+
1027
+ def test_multiparameter_attributes_on_date_with_empty_day_and_year
1028
+ attributes = { "last_read(1i)" => "", "last_read(2i)" => "6", "last_read(3i)" => "" }
1029
+ topic = Topic.find(1)
1030
+ topic.attributes = attributes
1031
+ # note that extra #to_date call allows test to pass for Oracle, which
1032
+ # treats dates/times the same
1033
+ assert_date_from_db Date.new(1, 6, 1), topic.last_read.to_date
1034
+ end
1035
+
1036
+ def test_multiparameter_attributes_on_date_with_empty_day_and_month
1037
+ attributes = { "last_read(1i)" => "2004", "last_read(2i)" => "", "last_read(3i)" => "" }
1038
+ topic = Topic.find(1)
1039
+ topic.attributes = attributes
1040
+ # note that extra #to_date call allows test to pass for Oracle, which
1041
+ # treats dates/times the same
1042
+ assert_date_from_db Date.new(2004, 1, 1), topic.last_read.to_date
1043
+ end
1044
+
1045
+ def test_multiparameter_attributes_on_date_with_empty_year_and_month
1046
+ attributes = { "last_read(1i)" => "", "last_read(2i)" => "", "last_read(3i)" => "24" }
1047
+ topic = Topic.find(1)
1048
+ topic.attributes = attributes
1049
+ # note that extra #to_date call allows test to pass for Oracle, which
1050
+ # treats dates/times the same
1051
+ assert_date_from_db Date.new(1, 1, 24), topic.last_read.to_date
1052
+ end
1053
+
1054
+ def test_multiparameter_attributes_on_date_with_all_empty
1055
+ attributes = { "last_read(1i)" => "", "last_read(2i)" => "", "last_read(3i)" => "" }
1056
+ topic = Topic.find(1)
1057
+ topic.attributes = attributes
1058
+ assert_nil topic.last_read
1059
+ end
1060
+
1061
+ def test_multiparameter_attributes_on_time
1062
+ attributes = {
1063
+ "written_on(1i)" => "2004", "written_on(2i)" => "6", "written_on(3i)" => "24",
1064
+ "written_on(4i)" => "16", "written_on(5i)" => "24", "written_on(6i)" => "00"
1065
+ }
1066
+ topic = Topic.find(1)
1067
+ topic.attributes = attributes
1068
+ assert_equal Time.local(2004, 6, 24, 16, 24, 0), topic.written_on
1069
+ end
1070
+
1071
+ def test_multiparameter_attributes_on_time_with_old_date
1072
+ attributes = {
1073
+ "written_on(1i)" => "1850", "written_on(2i)" => "6", "written_on(3i)" => "24",
1074
+ "written_on(4i)" => "16", "written_on(5i)" => "24", "written_on(6i)" => "00"
1075
+ }
1076
+ topic = Topic.find(1)
1077
+ topic.attributes = attributes
1078
+ # testing against to_s(:db) representation because either a Time or a DateTime might be returned, depending on platform
1079
+ assert_equal "1850-06-24 16:24:00", topic.written_on.to_s(:db)
1080
+ end
1081
+
1082
+ def test_multiparameter_attributes_on_time_with_utc
1083
+ ActiveRecord::Base.default_timezone = :utc
1084
+ attributes = {
1085
+ "written_on(1i)" => "2004", "written_on(2i)" => "6", "written_on(3i)" => "24",
1086
+ "written_on(4i)" => "16", "written_on(5i)" => "24", "written_on(6i)" => "00"
1087
+ }
1088
+ topic = Topic.find(1)
1089
+ topic.attributes = attributes
1090
+ assert_equal Time.utc(2004, 6, 24, 16, 24, 0), topic.written_on
1091
+ ensure
1092
+ ActiveRecord::Base.default_timezone = :local
1093
+ end
1094
+
1095
+ def test_multiparameter_attributes_on_time_with_time_zone_aware_attributes
1096
+ ActiveRecord::Base.time_zone_aware_attributes = true
1097
+ ActiveRecord::Base.default_timezone = :utc
1098
+ Time.zone = ActiveSupport::TimeZone[-28800]
1099
+ attributes = {
1100
+ "written_on(1i)" => "2004", "written_on(2i)" => "6", "written_on(3i)" => "24",
1101
+ "written_on(4i)" => "16", "written_on(5i)" => "24", "written_on(6i)" => "00"
1102
+ }
1103
+ topic = Topic.find(1)
1104
+ topic.attributes = attributes
1105
+ assert_equal Time.utc(2004, 6, 24, 23, 24, 0), topic.written_on
1106
+ assert_equal Time.utc(2004, 6, 24, 16, 24, 0), topic.written_on.time
1107
+ assert_equal Time.zone, topic.written_on.time_zone
1108
+ ensure
1109
+ ActiveRecord::Base.time_zone_aware_attributes = false
1110
+ ActiveRecord::Base.default_timezone = :local
1111
+ Time.zone = nil
1112
+ end
1113
+
1114
+ def test_multiparameter_attributes_on_time_with_time_zone_aware_attributes_false
1115
+ ActiveRecord::Base.time_zone_aware_attributes = false
1116
+ Time.zone = ActiveSupport::TimeZone[-28800]
1117
+ attributes = {
1118
+ "written_on(1i)" => "2004", "written_on(2i)" => "6", "written_on(3i)" => "24",
1119
+ "written_on(4i)" => "16", "written_on(5i)" => "24", "written_on(6i)" => "00"
1120
+ }
1121
+ topic = Topic.find(1)
1122
+ topic.attributes = attributes
1123
+ assert_equal Time.local(2004, 6, 24, 16, 24, 0), topic.written_on
1124
+ assert_equal false, topic.written_on.respond_to?(:time_zone)
1125
+ ensure
1126
+ Time.zone = nil
1127
+ end
1128
+
1129
+ def test_multiparameter_attributes_on_time_with_skip_time_zone_conversion_for_attributes
1130
+ ActiveRecord::Base.time_zone_aware_attributes = true
1131
+ ActiveRecord::Base.default_timezone = :utc
1132
+ Time.zone = ActiveSupport::TimeZone[-28800]
1133
+ Topic.skip_time_zone_conversion_for_attributes = [:written_on]
1134
+ attributes = {
1135
+ "written_on(1i)" => "2004", "written_on(2i)" => "6", "written_on(3i)" => "24",
1136
+ "written_on(4i)" => "16", "written_on(5i)" => "24", "written_on(6i)" => "00"
1137
+ }
1138
+ topic = Topic.find(1)
1139
+ topic.attributes = attributes
1140
+ assert_equal Time.utc(2004, 6, 24, 16, 24, 0), topic.written_on
1141
+ assert_equal false, topic.written_on.respond_to?(:time_zone)
1142
+ ensure
1143
+ ActiveRecord::Base.time_zone_aware_attributes = false
1144
+ ActiveRecord::Base.default_timezone = :local
1145
+ Time.zone = nil
1146
+ Topic.skip_time_zone_conversion_for_attributes = []
1147
+ end
1148
+
1149
+ def test_multiparameter_attributes_on_time_only_column_with_time_zone_aware_attributes_does_not_do_time_zone_conversion
1150
+ ActiveRecord::Base.time_zone_aware_attributes = true
1151
+ ActiveRecord::Base.default_timezone = :utc
1152
+ Time.zone = ActiveSupport::TimeZone[-28800]
1153
+ attributes = {
1154
+ "bonus_time(1i)" => "2000", "bonus_time(2i)" => "1", "bonus_time(3i)" => "1",
1155
+ "bonus_time(4i)" => "16", "bonus_time(5i)" => "24"
1156
+ }
1157
+ topic = Topic.find(1)
1158
+ topic.attributes = attributes
1159
+ assert_equal Time.utc(2000, 1, 1, 16, 24, 0), topic.bonus_time
1160
+ assert topic.bonus_time.utc?
1161
+ ensure
1162
+ ActiveRecord::Base.time_zone_aware_attributes = false
1163
+ ActiveRecord::Base.default_timezone = :local
1164
+ Time.zone = nil
1165
+ end
1166
+
1167
+ def test_multiparameter_attributes_on_time_with_empty_seconds
1168
+ attributes = {
1169
+ "written_on(1i)" => "2004", "written_on(2i)" => "6", "written_on(3i)" => "24",
1170
+ "written_on(4i)" => "16", "written_on(5i)" => "24", "written_on(6i)" => ""
1171
+ }
1172
+ topic = Topic.find(1)
1173
+ topic.attributes = attributes
1174
+ assert_equal Time.local(2004, 6, 24, 16, 24, 0), topic.written_on
1175
+ end
1176
+
1177
+ def test_multiparameter_mass_assignment_protector
1178
+ task = Task.new
1179
+ time = Time.mktime(2000, 1, 1, 1)
1180
+ task.starting = time
1181
+ attributes = { "starting(1i)" => "2004", "starting(2i)" => "6", "starting(3i)" => "24" }
1182
+ task.attributes = attributes
1183
+ assert_equal time, task.starting
1184
+ end
1185
+
1186
+ def test_multiparameter_assignment_of_aggregation
1187
+ customer = Customer.new
1188
+ address = Address.new("The Street", "The City", "The Country")
1189
+ attributes = { "address(1)" => address.street, "address(2)" => address.city, "address(3)" => address.country }
1190
+ customer.attributes = attributes
1191
+ assert_equal address, customer.address
1192
+ end
1193
+
1194
+ def test_attributes_on_dummy_time
1195
+ # Oracle, and Sybase do not have a TIME datatype.
1196
+ return true if current_adapter?(:OracleAdapter, :SybaseAdapter)
1197
+
1198
+ attributes = {
1199
+ "bonus_time" => "5:42:00AM"
1200
+ }
1201
+ topic = Topic.find(1)
1202
+ topic.attributes = attributes
1203
+ assert_equal Time.local(2000, 1, 1, 5, 42, 0), topic.bonus_time
1204
+ end
1205
+
1206
+ def test_boolean
1207
+ b_nil = Booleantest.create({ "value" => nil })
1208
+ nil_id = b_nil.id
1209
+ b_false = Booleantest.create({ "value" => false })
1210
+ false_id = b_false.id
1211
+ b_true = Booleantest.create({ "value" => true })
1212
+ true_id = b_true.id
1213
+
1214
+ b_nil = Booleantest.find(nil_id)
1215
+ assert_nil b_nil.value
1216
+ b_false = Booleantest.find(false_id)
1217
+ assert !b_false.value?
1218
+ b_true = Booleantest.find(true_id)
1219
+ assert b_true.value?
1220
+ end
1221
+
1222
+ def test_boolean_cast_from_string
1223
+ b_blank = Booleantest.create({ "value" => "" })
1224
+ blank_id = b_blank.id
1225
+ b_false = Booleantest.create({ "value" => "0" })
1226
+ false_id = b_false.id
1227
+ b_true = Booleantest.create({ "value" => "1" })
1228
+ true_id = b_true.id
1229
+
1230
+ b_blank = Booleantest.find(blank_id)
1231
+ assert_nil b_blank.value
1232
+ b_false = Booleantest.find(false_id)
1233
+ assert !b_false.value?
1234
+ b_true = Booleantest.find(true_id)
1235
+ assert b_true.value?
1236
+ end
1237
+
1238
+ def test_new_record_returns_boolean
1239
+ assert_equal Topic.new.new_record?, true
1240
+ assert_equal Topic.find(1).new_record?, false
1241
+ end
1242
+
1243
+ def test_clone
1244
+ topic = Topic.find(1)
1245
+ cloned_topic = nil
1246
+ assert_nothing_raised { cloned_topic = topic.clone }
1247
+ assert_equal topic.title, cloned_topic.title
1248
+ assert cloned_topic.new_record?
1249
+
1250
+ # test if the attributes have been cloned
1251
+ topic.title = "a"
1252
+ cloned_topic.title = "b"
1253
+ assert_equal "a", topic.title
1254
+ assert_equal "b", cloned_topic.title
1255
+
1256
+ # test if the attribute values have been cloned
1257
+ topic.title = {"a" => "b"}
1258
+ cloned_topic = topic.clone
1259
+ cloned_topic.title["a"] = "c"
1260
+ assert_equal "b", topic.title["a"]
1261
+
1262
+ #test if attributes set as part of after_initialize are cloned correctly
1263
+ assert_equal topic.author_email_address, cloned_topic.author_email_address
1264
+
1265
+ # test if saved clone object differs from original
1266
+ cloned_topic.save
1267
+ assert !cloned_topic.new_record?
1268
+ assert cloned_topic.id != topic.id
1269
+ end
1270
+
1271
+ def test_clone_with_aggregate_of_same_name_as_attribute
1272
+ dev = DeveloperWithAggregate.find(1)
1273
+ assert_kind_of DeveloperSalary, dev.salary
1274
+
1275
+ clone = nil
1276
+ assert_nothing_raised { clone = dev.clone }
1277
+ assert_kind_of DeveloperSalary, clone.salary
1278
+ assert_equal dev.salary.amount, clone.salary.amount
1279
+ assert clone.new_record?
1280
+
1281
+ # test if the attributes have been cloned
1282
+ original_amount = clone.salary.amount
1283
+ dev.salary.amount = 1
1284
+ assert_equal original_amount, clone.salary.amount
1285
+
1286
+ assert clone.save
1287
+ assert !clone.new_record?
1288
+ assert clone.id != dev.id
1289
+ end
1290
+
1291
+ def test_clone_preserves_subtype
1292
+ clone = nil
1293
+ assert_nothing_raised { clone = Company.find(3).clone }
1294
+ assert_kind_of Client, clone
1295
+ end
1296
+
1297
+ def test_bignum
1298
+ company = Company.find(1)
1299
+ company.rating = 2147483647
1300
+ company.save
1301
+ company = Company.find(1)
1302
+ assert_equal 2147483647, company.rating
1303
+ end
1304
+
1305
+ # TODO: extend defaults tests to other databases!
1306
+ if current_adapter?(:PostgreSQLAdapter)
1307
+ def test_default
1308
+ default = Default.new
1309
+
1310
+ # fixed dates / times
1311
+ assert_equal Date.new(2004, 1, 1), default.fixed_date
1312
+ assert_equal Time.local(2004, 1,1,0,0,0,0), default.fixed_time
1313
+
1314
+ # char types
1315
+ assert_equal 'Y', default.char1
1316
+ assert_equal 'a varchar field', default.char2
1317
+ assert_equal 'a text field', default.char3
1318
+ end
1319
+
1320
+ class Geometric < ActiveRecord::Base; end
1321
+ def test_geometric_content
1322
+
1323
+ # accepted format notes:
1324
+ # ()'s aren't required
1325
+ # values can be a mix of float or integer
1326
+
1327
+ g = Geometric.new(
1328
+ :a_point => '(5.0, 6.1)',
1329
+ #:a_line => '((2.0, 3), (5.5, 7.0))' # line type is currently unsupported in postgresql
1330
+ :a_line_segment => '(2.0, 3), (5.5, 7.0)',
1331
+ :a_box => '2.0, 3, 5.5, 7.0',
1332
+ :a_path => '[(2.0, 3), (5.5, 7.0), (8.5, 11.0)]', # [ ] is an open path
1333
+ :a_polygon => '((2.0, 3), (5.5, 7.0), (8.5, 11.0))',
1334
+ :a_circle => '<(5.3, 10.4), 2>'
1335
+ )
1336
+
1337
+ assert g.save
1338
+
1339
+ # Reload and check that we have all the geometric attributes.
1340
+ h = Geometric.find(g.id)
1341
+
1342
+ assert_equal '(5,6.1)', h.a_point
1343
+ assert_equal '[(2,3),(5.5,7)]', h.a_line_segment
1344
+ assert_equal '(5.5,7),(2,3)', h.a_box # reordered to store upper right corner then bottom left corner
1345
+ assert_equal '[(2,3),(5.5,7),(8.5,11)]', h.a_path
1346
+ assert_equal '((2,3),(5.5,7),(8.5,11))', h.a_polygon
1347
+ assert_equal '<(5.3,10.4),2>', h.a_circle
1348
+
1349
+ # use a geometric function to test for an open path
1350
+ objs = Geometric.find_by_sql ["select isopen(a_path) from geometrics where id = ?", g.id]
1351
+ assert_equal objs[0].isopen, 't'
1352
+
1353
+ # test alternate formats when defining the geometric types
1354
+
1355
+ g = Geometric.new(
1356
+ :a_point => '5.0, 6.1',
1357
+ #:a_line => '((2.0, 3), (5.5, 7.0))' # line type is currently unsupported in postgresql
1358
+ :a_line_segment => '((2.0, 3), (5.5, 7.0))',
1359
+ :a_box => '(2.0, 3), (5.5, 7.0)',
1360
+ :a_path => '((2.0, 3), (5.5, 7.0), (8.5, 11.0))', # ( ) is a closed path
1361
+ :a_polygon => '2.0, 3, 5.5, 7.0, 8.5, 11.0',
1362
+ :a_circle => '((5.3, 10.4), 2)'
1363
+ )
1364
+
1365
+ assert g.save
1366
+
1367
+ # Reload and check that we have all the geometric attributes.
1368
+ h = Geometric.find(g.id)
1369
+
1370
+ assert_equal '(5,6.1)', h.a_point
1371
+ assert_equal '[(2,3),(5.5,7)]', h.a_line_segment
1372
+ assert_equal '(5.5,7),(2,3)', h.a_box # reordered to store upper right corner then bottom left corner
1373
+ assert_equal '((2,3),(5.5,7),(8.5,11))', h.a_path
1374
+ assert_equal '((2,3),(5.5,7),(8.5,11))', h.a_polygon
1375
+ assert_equal '<(5.3,10.4),2>', h.a_circle
1376
+
1377
+ # use a geometric function to test for an closed path
1378
+ objs = Geometric.find_by_sql ["select isclosed(a_path) from geometrics where id = ?", g.id]
1379
+ assert_equal objs[0].isclosed, 't'
1380
+ end
1381
+ end
1382
+
1383
+ class NumericData < ActiveRecord::Base
1384
+ self.table_name = 'numeric_data'
1385
+ end
1386
+
1387
+ def test_numeric_fields
1388
+ m = NumericData.new(
1389
+ :bank_balance => 1586.43,
1390
+ :big_bank_balance => BigDecimal("1000234000567.95"),
1391
+ :world_population => 6000000000,
1392
+ :my_house_population => 3
1393
+ )
1394
+ assert m.save
1395
+
1396
+ m1 = NumericData.find(m.id)
1397
+ assert_not_nil m1
1398
+
1399
+ # As with migration_test.rb, we should make world_population >= 2**62
1400
+ # to cover 64-bit platforms and test it is a Bignum, but the main thing
1401
+ # is that it's an Integer.
1402
+ assert_kind_of Integer, m1.world_population
1403
+ assert_equal 6000000000, m1.world_population
1404
+
1405
+ assert_kind_of Fixnum, m1.my_house_population
1406
+ assert_equal 3, m1.my_house_population
1407
+
1408
+ assert_kind_of BigDecimal, m1.bank_balance
1409
+ assert_equal BigDecimal("1586.43"), m1.bank_balance
1410
+
1411
+ assert_kind_of BigDecimal, m1.big_bank_balance
1412
+ assert_equal BigDecimal("1000234000567.95"), m1.big_bank_balance
1413
+ end
1414
+
1415
+ def test_auto_id
1416
+ auto = AutoId.new
1417
+ auto.save
1418
+ assert (auto.id > 0)
1419
+ end
1420
+
1421
+ def quote_column_name(name)
1422
+ "<#{name}>"
1423
+ end
1424
+
1425
+ def test_quote_keys
1426
+ ar = AutoId.new
1427
+ source = {"foo" => "bar", "baz" => "quux"}
1428
+ actual = ar.send(:quote_columns, self, source)
1429
+ inverted = actual.invert
1430
+ assert_equal("<foo>", inverted["bar"])
1431
+ assert_equal("<baz>", inverted["quux"])
1432
+ end
1433
+
1434
+ def test_sql_injection_via_find
1435
+ assert_raise(ActiveRecord::RecordNotFound, ActiveRecord::StatementInvalid) do
1436
+ Topic.find("123456 OR id > 0")
1437
+ end
1438
+ end
1439
+
1440
+ def test_column_name_properly_quoted
1441
+ col_record = ColumnName.new
1442
+ col_record.references = 40
1443
+ assert col_record.save
1444
+ col_record.references = 41
1445
+ assert col_record.save
1446
+ assert_not_nil c2 = ColumnName.find(col_record.id)
1447
+ assert_equal(41, c2.references)
1448
+ end
1449
+
1450
+ def test_quoting_arrays
1451
+ replies = Reply.find(:all, :conditions => [ "id IN (?)", topics(:first).replies.collect(&:id) ])
1452
+ assert_equal topics(:first).replies.size, replies.size
1453
+
1454
+ replies = Reply.find(:all, :conditions => [ "id IN (?)", [] ])
1455
+ assert_equal 0, replies.size
1456
+ end
1457
+
1458
+ MyObject = Struct.new :attribute1, :attribute2
1459
+
1460
+ def test_serialized_attribute
1461
+ myobj = MyObject.new('value1', 'value2')
1462
+ topic = Topic.create("content" => myobj)
1463
+ Topic.serialize("content", MyObject)
1464
+ assert_equal(myobj, topic.content)
1465
+ end
1466
+
1467
+ def test_serialized_time_attribute
1468
+ myobj = Time.local(2008,1,1,1,0)
1469
+ topic = Topic.create("content" => myobj).reload
1470
+ assert_equal(myobj, topic.content)
1471
+ end
1472
+
1473
+ def test_serialized_string_attribute
1474
+ myobj = "Yes"
1475
+ topic = Topic.create("content" => myobj).reload
1476
+ assert_equal(myobj, topic.content)
1477
+ end
1478
+
1479
+ def test_nil_serialized_attribute_with_class_constraint
1480
+ myobj = MyObject.new('value1', 'value2')
1481
+ topic = Topic.new
1482
+ assert_nil topic.content
1483
+ end
1484
+
1485
+ def test_should_raise_exception_on_serialized_attribute_with_type_mismatch
1486
+ myobj = MyObject.new('value1', 'value2')
1487
+ topic = Topic.new(:content => myobj)
1488
+ assert topic.save
1489
+ Topic.serialize(:content, Hash)
1490
+ assert_raise(ActiveRecord::SerializationTypeMismatch) { Topic.find(topic.id).content }
1491
+ ensure
1492
+ Topic.serialize(:content)
1493
+ end
1494
+
1495
+ def test_serialized_attribute_with_class_constraint
1496
+ settings = { "color" => "blue" }
1497
+ Topic.serialize(:content, Hash)
1498
+ topic = Topic.new(:content => settings)
1499
+ assert topic.save
1500
+ assert_equal(settings, Topic.find(topic.id).content)
1501
+ ensure
1502
+ Topic.serialize(:content)
1503
+ end
1504
+
1505
+ def test_quote
1506
+ author_name = "\\ \001 ' \n \\n \""
1507
+ topic = Topic.create('author_name' => author_name)
1508
+ assert_equal author_name, Topic.find(topic.id).author_name
1509
+ end
1510
+
1511
+ if RUBY_VERSION < '1.9'
1512
+ def test_quote_chars
1513
+ with_kcode('UTF8') do
1514
+ str = 'The Narrator'
1515
+ topic = Topic.create(:author_name => str)
1516
+ assert_equal str, topic.author_name
1517
+
1518
+ assert_kind_of ActiveSupport::Multibyte.proxy_class, str.mb_chars
1519
+ topic = Topic.find_by_author_name(str.mb_chars)
1520
+
1521
+ assert_kind_of Topic, topic
1522
+ assert_equal str, topic.author_name, "The right topic should have been found by name even with name passed as Chars"
1523
+ end
1524
+ end
1525
+ end
1526
+
1527
+ def test_class_level_destroy
1528
+ should_be_destroyed_reply = Reply.create("title" => "hello", "content" => "world")
1529
+ Topic.find(1).replies << should_be_destroyed_reply
1530
+
1531
+ Topic.destroy(1)
1532
+ assert_raise(ActiveRecord::RecordNotFound) { Topic.find(1) }
1533
+ assert_raise(ActiveRecord::RecordNotFound) { Reply.find(should_be_destroyed_reply.id) }
1534
+ end
1535
+
1536
+ def test_class_level_delete
1537
+ should_be_destroyed_reply = Reply.create("title" => "hello", "content" => "world")
1538
+ Topic.find(1).replies << should_be_destroyed_reply
1539
+
1540
+ Topic.delete(1)
1541
+ assert_raise(ActiveRecord::RecordNotFound) { Topic.find(1) }
1542
+ assert_nothing_raised { Reply.find(should_be_destroyed_reply.id) }
1543
+ end
1544
+
1545
+ def test_increment_attribute
1546
+ assert_equal 50, accounts(:signals37).credit_limit
1547
+ accounts(:signals37).increment! :credit_limit
1548
+ assert_equal 51, accounts(:signals37, :reload).credit_limit
1549
+
1550
+ accounts(:signals37).increment(:credit_limit).increment!(:credit_limit)
1551
+ assert_equal 53, accounts(:signals37, :reload).credit_limit
1552
+ end
1553
+
1554
+ def test_increment_nil_attribute
1555
+ assert_nil topics(:first).parent_id
1556
+ topics(:first).increment! :parent_id
1557
+ assert_equal 1, topics(:first).parent_id
1558
+ end
1559
+
1560
+ def test_increment_attribute_by
1561
+ assert_equal 50, accounts(:signals37).credit_limit
1562
+ accounts(:signals37).increment! :credit_limit, 5
1563
+ assert_equal 55, accounts(:signals37, :reload).credit_limit
1564
+
1565
+ accounts(:signals37).increment(:credit_limit, 1).increment!(:credit_limit, 3)
1566
+ assert_equal 59, accounts(:signals37, :reload).credit_limit
1567
+ end
1568
+
1569
+ def test_decrement_attribute
1570
+ assert_equal 50, accounts(:signals37).credit_limit
1571
+
1572
+ accounts(:signals37).decrement!(:credit_limit)
1573
+ assert_equal 49, accounts(:signals37, :reload).credit_limit
1574
+
1575
+ accounts(:signals37).decrement(:credit_limit).decrement!(:credit_limit)
1576
+ assert_equal 47, accounts(:signals37, :reload).credit_limit
1577
+ end
1578
+
1579
+ def test_decrement_attribute_by
1580
+ assert_equal 50, accounts(:signals37).credit_limit
1581
+ accounts(:signals37).decrement! :credit_limit, 5
1582
+ assert_equal 45, accounts(:signals37, :reload).credit_limit
1583
+
1584
+ accounts(:signals37).decrement(:credit_limit, 1).decrement!(:credit_limit, 3)
1585
+ assert_equal 41, accounts(:signals37, :reload).credit_limit
1586
+ end
1587
+
1588
+ def test_toggle_attribute
1589
+ assert !topics(:first).approved?
1590
+ topics(:first).toggle!(:approved)
1591
+ assert topics(:first).approved?
1592
+ topic = topics(:first)
1593
+ topic.toggle(:approved)
1594
+ assert !topic.approved?
1595
+ topic.reload
1596
+ assert topic.approved?
1597
+ end
1598
+
1599
+ def test_reload
1600
+ t1 = Topic.find(1)
1601
+ t2 = Topic.find(1)
1602
+ t1.title = "something else"
1603
+ t1.save
1604
+ t2.reload
1605
+ assert_equal t1.title, t2.title
1606
+ end
1607
+
1608
+ def test_reload_with_exclusive_scope
1609
+ dev = DeveloperCalledDavid.first
1610
+ dev.update_attributes!( :name => "NotDavid" )
1611
+ assert_equal dev, dev.reload
1612
+ end
1613
+
1614
+ def test_define_attr_method_with_value
1615
+ k = Class.new( ActiveRecord::Base )
1616
+ k.send(:define_attr_method, :table_name, "foo")
1617
+ assert_equal "foo", k.table_name
1618
+ end
1619
+
1620
+ def test_define_attr_method_with_block
1621
+ k = Class.new( ActiveRecord::Base )
1622
+ k.send(:define_attr_method, :primary_key) { "sys_" + original_primary_key }
1623
+ assert_equal "sys_id", k.primary_key
1624
+ end
1625
+
1626
+ def test_set_table_name_with_value
1627
+ k = Class.new( ActiveRecord::Base )
1628
+ k.table_name = "foo"
1629
+ assert_equal "foo", k.table_name
1630
+ k.set_table_name "bar"
1631
+ assert_equal "bar", k.table_name
1632
+ end
1633
+
1634
+ def test_set_table_name_with_block
1635
+ k = Class.new( ActiveRecord::Base )
1636
+ k.set_table_name { "ks" }
1637
+ assert_equal "ks", k.table_name
1638
+ end
1639
+
1640
+ def test_set_primary_key_with_value
1641
+ k = Class.new( ActiveRecord::Base )
1642
+ k.primary_key = "foo"
1643
+ assert_equal "foo", k.primary_key
1644
+ k.set_primary_key "bar"
1645
+ assert_equal "bar", k.primary_key
1646
+ end
1647
+
1648
+ def test_set_primary_key_with_block
1649
+ k = Class.new( ActiveRecord::Base )
1650
+ k.set_primary_key { "sys_" + original_primary_key }
1651
+ assert_equal "sys_id", k.primary_key
1652
+ end
1653
+
1654
+ def test_set_inheritance_column_with_value
1655
+ k = Class.new( ActiveRecord::Base )
1656
+ k.inheritance_column = "foo"
1657
+ assert_equal "foo", k.inheritance_column
1658
+ k.set_inheritance_column "bar"
1659
+ assert_equal "bar", k.inheritance_column
1660
+ end
1661
+
1662
+ def test_set_inheritance_column_with_block
1663
+ k = Class.new( ActiveRecord::Base )
1664
+ k.set_inheritance_column { original_inheritance_column + "_id" }
1665
+ assert_equal "type_id", k.inheritance_column
1666
+ end
1667
+
1668
+ def test_count_with_join
1669
+ res = Post.count_by_sql "SELECT COUNT(*) FROM posts LEFT JOIN comments ON posts.id=comments.post_id WHERE posts.#{QUOTED_TYPE} = 'Post'"
1670
+
1671
+ res2 = Post.count(:conditions => "posts.#{QUOTED_TYPE} = 'Post'", :joins => "LEFT JOIN comments ON posts.id=comments.post_id")
1672
+ assert_equal res, res2
1673
+
1674
+ res3 = nil
1675
+ assert_nothing_raised do
1676
+ res3 = Post.count(:conditions => "posts.#{QUOTED_TYPE} = 'Post'",
1677
+ :joins => "LEFT JOIN comments ON posts.id=comments.post_id")
1678
+ end
1679
+ assert_equal res, res3
1680
+
1681
+ res4 = Post.count_by_sql "SELECT COUNT(p.id) FROM posts p, comments co WHERE p.#{QUOTED_TYPE} = 'Post' AND p.id=co.post_id"
1682
+ res5 = nil
1683
+ assert_nothing_raised do
1684
+ res5 = Post.count(:conditions => "p.#{QUOTED_TYPE} = 'Post' AND p.id=co.post_id",
1685
+ :joins => "p, comments co",
1686
+ :select => "p.id")
1687
+ end
1688
+
1689
+ assert_equal res4, res5
1690
+
1691
+ unless current_adapter?(:SQLite2Adapter, :DeprecatedSQLiteAdapter)
1692
+ res6 = Post.count_by_sql "SELECT COUNT(DISTINCT p.id) FROM posts p, comments co WHERE p.#{QUOTED_TYPE} = 'Post' AND p.id=co.post_id"
1693
+ res7 = nil
1694
+ assert_nothing_raised do
1695
+ res7 = Post.count(:conditions => "p.#{QUOTED_TYPE} = 'Post' AND p.id=co.post_id",
1696
+ :joins => "p, comments co",
1697
+ :select => "p.id",
1698
+ :distinct => true)
1699
+ end
1700
+ assert_equal res6, res7
1701
+ end
1702
+ end
1703
+
1704
+ def test_clear_association_cache_stored
1705
+ firm = Firm.find(1)
1706
+ assert_kind_of Firm, firm
1707
+
1708
+ firm.clear_association_cache
1709
+ assert_equal Firm.find(1).clients.collect{ |x| x.name }.sort, firm.clients.collect{ |x| x.name }.sort
1710
+ end
1711
+
1712
+ def test_clear_association_cache_new_record
1713
+ firm = Firm.new
1714
+ client_stored = Client.find(3)
1715
+ client_new = Client.new
1716
+ client_new.name = "The Joneses"
1717
+ clients = [ client_stored, client_new ]
1718
+
1719
+ firm.clients << clients
1720
+ assert_equal clients.map(&:name).to_set, firm.clients.map(&:name).to_set
1721
+
1722
+ firm.clear_association_cache
1723
+ assert_equal clients.map(&:name).to_set, firm.clients.map(&:name).to_set
1724
+ end
1725
+
1726
+ def test_interpolate_sql
1727
+ assert_nothing_raised { Category.new.send(:interpolate_sql, 'foo@bar') }
1728
+ assert_nothing_raised { Category.new.send(:interpolate_sql, 'foo bar) baz') }
1729
+ assert_nothing_raised { Category.new.send(:interpolate_sql, 'foo bar} baz') }
1730
+ end
1731
+
1732
+ def test_scoped_find_conditions
1733
+ scoped_developers = Developer.with_scope(:find => { :conditions => 'salary > 90000' }) do
1734
+ Developer.find(:all, :conditions => 'id < 5')
1735
+ end
1736
+ assert !scoped_developers.include?(developers(:david)) # David's salary is less than 90,000
1737
+ assert_equal 3, scoped_developers.size
1738
+ end
1739
+
1740
+ def test_scoped_find_limit_offset
1741
+ scoped_developers = Developer.with_scope(:find => { :limit => 3, :offset => 2 }) do
1742
+ Developer.find(:all, :order => 'id')
1743
+ end
1744
+ assert !scoped_developers.include?(developers(:david))
1745
+ assert !scoped_developers.include?(developers(:jamis))
1746
+ assert_equal 3, scoped_developers.size
1747
+
1748
+ # Test without scoped find conditions to ensure we get the whole thing
1749
+ developers = Developer.find(:all, :order => 'id')
1750
+ assert_equal Developer.count, developers.size
1751
+ end
1752
+
1753
+ def test_scoped_find_order
1754
+ # Test order in scope
1755
+ scoped_developers = Developer.with_scope(:find => { :limit => 1, :order => 'salary DESC' }) do
1756
+ Developer.find(:all)
1757
+ end
1758
+ assert_equal 'Jamis', scoped_developers.first.name
1759
+ assert scoped_developers.include?(developers(:jamis))
1760
+ # Test scope without order and order in find
1761
+ scoped_developers = Developer.with_scope(:find => { :limit => 1 }) do
1762
+ Developer.find(:all, :order => 'salary DESC')
1763
+ end
1764
+ # Test scope order + find order, find has priority
1765
+ scoped_developers = Developer.with_scope(:find => { :limit => 3, :order => 'id DESC' }) do
1766
+ Developer.find(:all, :order => 'salary ASC')
1767
+ end
1768
+ assert scoped_developers.include?(developers(:poor_jamis))
1769
+ assert scoped_developers.include?(developers(:david))
1770
+ assert scoped_developers.include?(developers(:dev_10))
1771
+ # Test without scoped find conditions to ensure we get the right thing
1772
+ developers = Developer.find(:all, :order => 'id', :limit => 1)
1773
+ assert scoped_developers.include?(developers(:david))
1774
+ end
1775
+
1776
+ def test_scoped_find_limit_offset_including_has_many_association
1777
+ topics = Topic.with_scope(:find => {:limit => 1, :offset => 1, :include => :replies}) do
1778
+ Topic.find(:all, :order => "topics.id")
1779
+ end
1780
+ assert_equal 1, topics.size
1781
+ assert_equal 2, topics.first.id
1782
+ end
1783
+
1784
+ def test_scoped_find_order_including_has_many_association
1785
+ developers = Developer.with_scope(:find => { :order => 'developers.salary DESC', :include => :projects }) do
1786
+ Developer.find(:all)
1787
+ end
1788
+ assert developers.size >= 2
1789
+ for i in 1...developers.size
1790
+ assert developers[i-1].salary >= developers[i].salary
1791
+ end
1792
+ end
1793
+
1794
+ def test_scoped_find_with_group_and_having
1795
+ developers = Developer.with_scope(:find => { :group => 'developers.salary', :having => "SUM(salary) > 10000", :select => "SUM(salary) as salary" }) do
1796
+ Developer.find(:all)
1797
+ end
1798
+ assert_equal 3, developers.size
1799
+ end
1800
+
1801
+ def test_find_last
1802
+ last = Developer.find :last
1803
+ assert_equal last, Developer.find(:first, :order => 'id desc')
1804
+ end
1805
+
1806
+ def test_last
1807
+ assert_equal Developer.find(:first, :order => 'id desc'), Developer.last
1808
+ end
1809
+
1810
+ def test_all_with_conditions
1811
+ assert_equal Developer.find(:all, :order => 'id desc'), Developer.all(:order => 'id desc')
1812
+ end
1813
+
1814
+ def test_find_ordered_last
1815
+ last = Developer.find :last, :order => 'developers.salary ASC'
1816
+ assert_equal last, Developer.find(:all, :order => 'developers.salary ASC').last
1817
+ end
1818
+
1819
+ def test_find_reverse_ordered_last
1820
+ last = Developer.find :last, :order => 'developers.salary DESC'
1821
+ assert_equal last, Developer.find(:all, :order => 'developers.salary DESC').last
1822
+ end
1823
+
1824
+ def test_find_multiple_ordered_last
1825
+ last = Developer.find :last, :order => 'developers.name, developers.salary DESC'
1826
+ assert_equal last, Developer.find(:all, :order => 'developers.name, developers.salary DESC').last
1827
+ end
1828
+
1829
+ def test_find_symbol_ordered_last
1830
+ last = Developer.find :last, :order => :salary
1831
+ assert_equal last, Developer.find(:all, :order => :salary).last
1832
+ end
1833
+
1834
+ def test_find_scoped_ordered_last
1835
+ last_developer = Developer.with_scope(:find => { :order => 'developers.salary ASC' }) do
1836
+ Developer.find(:last)
1837
+ end
1838
+ assert_equal last_developer, Developer.find(:all, :order => 'developers.salary ASC').last
1839
+ end
1840
+
1841
+ def test_abstract_class
1842
+ assert !ActiveRecord::Base.abstract_class?
1843
+ assert LoosePerson.abstract_class?
1844
+ assert !LooseDescendant.abstract_class?
1845
+ end
1846
+
1847
+ def test_base_class
1848
+ assert_equal LoosePerson, LoosePerson.base_class
1849
+ assert_equal LooseDescendant, LooseDescendant.base_class
1850
+ assert_equal TightPerson, TightPerson.base_class
1851
+ assert_equal TightPerson, TightDescendant.base_class
1852
+
1853
+ assert_equal Post, Post.base_class
1854
+ assert_equal Post, SpecialPost.base_class
1855
+ assert_equal Post, StiPost.base_class
1856
+ assert_equal SubStiPost, SubStiPost.base_class
1857
+ end
1858
+
1859
+ def test_descends_from_active_record
1860
+ # Tries to call Object.abstract_class?
1861
+ assert_raise(NoMethodError) do
1862
+ ActiveRecord::Base.descends_from_active_record?
1863
+ end
1864
+
1865
+ # Abstract subclass of AR::Base.
1866
+ assert LoosePerson.descends_from_active_record?
1867
+
1868
+ # Concrete subclass of an abstract class.
1869
+ assert LooseDescendant.descends_from_active_record?
1870
+
1871
+ # Concrete subclass of AR::Base.
1872
+ assert TightPerson.descends_from_active_record?
1873
+
1874
+ # Concrete subclass of a concrete class but has no type column.
1875
+ assert TightDescendant.descends_from_active_record?
1876
+
1877
+ # Concrete subclass of AR::Base.
1878
+ assert Post.descends_from_active_record?
1879
+
1880
+ # Abstract subclass of a concrete class which has a type column.
1881
+ # This is pathological, as you'll never have Sub < Abstract < Concrete.
1882
+ assert !StiPost.descends_from_active_record?
1883
+
1884
+ # Concrete subclasses an abstract class which has a type column.
1885
+ assert !SubStiPost.descends_from_active_record?
1886
+ end
1887
+
1888
+ def test_find_on_abstract_base_class_doesnt_use_type_condition
1889
+ old_class = LooseDescendant
1890
+ Object.send :remove_const, :LooseDescendant
1891
+
1892
+ descendant = old_class.create! :first_name => 'bob'
1893
+ assert_not_nil LoosePerson.find(descendant.id), "Should have found instance of LooseDescendant when finding abstract LoosePerson: #{descendant.inspect}"
1894
+ ensure
1895
+ unless Object.const_defined?(:LooseDescendant)
1896
+ Object.const_set :LooseDescendant, old_class
1897
+ end
1898
+ end
1899
+
1900
+ def test_assert_queries
1901
+ query = lambda { ActiveRecord::Base.connection.execute 'select count(*) from developers' }
1902
+ assert_queries(2) { 2.times { query.call } }
1903
+ assert_queries 1, &query
1904
+ assert_no_queries { assert true }
1905
+ end
1906
+
1907
+ def test_to_xml
1908
+ xml = REXML::Document.new(topics(:first).to_xml(:indent => 0))
1909
+ bonus_time_in_current_timezone = topics(:first).bonus_time.xmlschema
1910
+ written_on_in_current_timezone = topics(:first).written_on.xmlschema
1911
+ last_read_in_current_timezone = topics(:first).last_read.xmlschema
1912
+
1913
+ assert_equal "topic", xml.root.name
1914
+ assert_equal "The First Topic" , xml.elements["//title"].text
1915
+ assert_equal "David" , xml.elements["//author-name"].text
1916
+
1917
+ assert_equal "1", xml.elements["//id"].text
1918
+ assert_equal "integer" , xml.elements["//id"].attributes['type']
1919
+
1920
+ assert_equal "1", xml.elements["//replies-count"].text
1921
+ assert_equal "integer" , xml.elements["//replies-count"].attributes['type']
1922
+
1923
+ assert_equal written_on_in_current_timezone, xml.elements["//written-on"].text
1924
+ assert_equal "datetime" , xml.elements["//written-on"].attributes['type']
1925
+
1926
+ assert_equal "--- Have a nice day\n" , xml.elements["//content"].text
1927
+ assert_equal "yaml" , xml.elements["//content"].attributes['type']
1928
+
1929
+ assert_equal "david@loudthinking.com", xml.elements["//author-email-address"].text
1930
+
1931
+ assert_equal nil, xml.elements["//parent-id"].text
1932
+ assert_equal "integer", xml.elements["//parent-id"].attributes['type']
1933
+ assert_equal "true", xml.elements["//parent-id"].attributes['nil']
1934
+
1935
+ if current_adapter?(:SybaseAdapter, :OracleAdapter)
1936
+ assert_equal last_read_in_current_timezone, xml.elements["//last-read"].text
1937
+ assert_equal "datetime" , xml.elements["//last-read"].attributes['type']
1938
+ else
1939
+ assert_equal "2004-04-15", xml.elements["//last-read"].text
1940
+ assert_equal "date" , xml.elements["//last-read"].attributes['type']
1941
+ end
1942
+
1943
+ # Oracle and DB2 don't have true boolean or time-only fields
1944
+ unless current_adapter?(:OracleAdapter, :DB2Adapter)
1945
+ assert_equal "false", xml.elements["//approved"].text
1946
+ assert_equal "boolean" , xml.elements["//approved"].attributes['type']
1947
+
1948
+ assert_equal bonus_time_in_current_timezone, xml.elements["//bonus-time"].text
1949
+ assert_equal "datetime" , xml.elements["//bonus-time"].attributes['type']
1950
+ end
1951
+ end
1952
+
1953
+ def test_to_xml_skipping_attributes
1954
+ xml = topics(:first).to_xml(:indent => 0, :skip_instruct => true, :except => [:title, :replies_count])
1955
+ assert_equal "<topic>", xml.first(7)
1956
+ assert !xml.include?(%(<title>The First Topic</title>))
1957
+ assert xml.include?(%(<author-name>David</author-name>))
1958
+
1959
+ xml = topics(:first).to_xml(:indent => 0, :skip_instruct => true, :except => [:title, :author_name, :replies_count])
1960
+ assert !xml.include?(%(<title>The First Topic</title>))
1961
+ assert !xml.include?(%(<author-name>David</author-name>))
1962
+ end
1963
+
1964
+ def test_to_xml_including_has_many_association
1965
+ xml = topics(:first).to_xml(:indent => 0, :skip_instruct => true, :include => :replies, :except => :replies_count)
1966
+ assert_equal "<topic>", xml.first(7)
1967
+ assert xml.include?(%(<replies type="array"><reply>))
1968
+ assert xml.include?(%(<title>The Second Topic of the day</title>))
1969
+ end
1970
+
1971
+ def test_array_to_xml_including_has_many_association
1972
+ xml = [ topics(:first), topics(:second) ].to_xml(:indent => 0, :skip_instruct => true, :include => :replies)
1973
+ assert xml.include?(%(<replies type="array"><reply>))
1974
+ end
1975
+
1976
+ def test_array_to_xml_including_methods
1977
+ xml = [ topics(:first), topics(:second) ].to_xml(:indent => 0, :skip_instruct => true, :methods => [ :topic_id ])
1978
+ assert xml.include?(%(<topic-id type="integer">#{topics(:first).topic_id}</topic-id>)), xml
1979
+ assert xml.include?(%(<topic-id type="integer">#{topics(:second).topic_id}</topic-id>)), xml
1980
+ end
1981
+
1982
+ def test_array_to_xml_including_has_one_association
1983
+ xml = [ companies(:first_firm), companies(:rails_core) ].to_xml(:indent => 0, :skip_instruct => true, :include => :account)
1984
+ assert xml.include?(companies(:first_firm).account.to_xml(:indent => 0, :skip_instruct => true))
1985
+ assert xml.include?(companies(:rails_core).account.to_xml(:indent => 0, :skip_instruct => true))
1986
+ end
1987
+
1988
+ def test_array_to_xml_including_belongs_to_association
1989
+ xml = [ companies(:first_client), companies(:second_client), companies(:another_client) ].to_xml(:indent => 0, :skip_instruct => true, :include => :firm)
1990
+ assert xml.include?(companies(:first_client).to_xml(:indent => 0, :skip_instruct => true))
1991
+ assert xml.include?(companies(:second_client).firm.to_xml(:indent => 0, :skip_instruct => true))
1992
+ assert xml.include?(companies(:another_client).firm.to_xml(:indent => 0, :skip_instruct => true))
1993
+ end
1994
+
1995
+ def test_to_xml_including_belongs_to_association
1996
+ xml = companies(:first_client).to_xml(:indent => 0, :skip_instruct => true, :include => :firm)
1997
+ assert !xml.include?("<firm>")
1998
+
1999
+ xml = companies(:second_client).to_xml(:indent => 0, :skip_instruct => true, :include => :firm)
2000
+ assert xml.include?("<firm>")
2001
+ end
2002
+
2003
+ def test_to_xml_including_multiple_associations
2004
+ xml = companies(:first_firm).to_xml(:indent => 0, :skip_instruct => true, :include => [ :clients, :account ])
2005
+ assert_equal "<firm>", xml.first(6)
2006
+ assert xml.include?(%(<account>))
2007
+ assert xml.include?(%(<clients type="array"><client>))
2008
+ end
2009
+
2010
+ def test_to_xml_including_multiple_associations_with_options
2011
+ xml = companies(:first_firm).to_xml(
2012
+ :indent => 0, :skip_instruct => true,
2013
+ :include => { :clients => { :only => :name } }
2014
+ )
2015
+
2016
+ assert_equal "<firm>", xml.first(6)
2017
+ assert xml.include?(%(<client><name>Summit</name></client>))
2018
+ assert xml.include?(%(<clients type="array"><client>))
2019
+ end
2020
+
2021
+ def test_to_xml_including_methods
2022
+ xml = Company.new.to_xml(:methods => :arbitrary_method, :skip_instruct => true)
2023
+ assert_equal "<company>", xml.first(9)
2024
+ assert xml.include?(%(<arbitrary-method>I am Jack's profound disappointment</arbitrary-method>))
2025
+ end
2026
+
2027
+ def test_to_xml_with_block
2028
+ value = "Rockin' the block"
2029
+ xml = Company.new.to_xml(:skip_instruct => true) do |xml|
2030
+ xml.tag! "arbitrary-element", value
2031
+ end
2032
+ assert_equal "<company>", xml.first(9)
2033
+ assert xml.include?(%(<arbitrary-element>#{value}</arbitrary-element>))
2034
+ end
2035
+
2036
+ def test_type_name_with_module_should_handle_beginning
2037
+ assert_equal 'ActiveRecord::Person', ActiveRecord::Base.send(:type_name_with_module, 'Person')
2038
+ assert_equal '::Person', ActiveRecord::Base.send(:type_name_with_module, '::Person')
2039
+ end
2040
+
2041
+ def test_to_param_should_return_string
2042
+ assert_kind_of String, Client.find(:first).to_param
2043
+ end
2044
+
2045
+ def test_inspect_class
2046
+ assert_equal 'ActiveRecord::Base', ActiveRecord::Base.inspect
2047
+ assert_equal 'LoosePerson(abstract)', LoosePerson.inspect
2048
+ assert_match(/^Topic\(id: integer, title: string/, Topic.inspect)
2049
+ end
2050
+
2051
+ def test_inspect_instance
2052
+ topic = topics(:first)
2053
+ assert_equal %(#<Topic id: 1, title: "The First Topic", author_name: "David", author_email_address: "david@loudthinking.com", written_on: "#{topic.written_on.to_s(:db)}", bonus_time: "#{topic.bonus_time.to_s(:db)}", last_read: "#{topic.last_read.to_s(:db)}", content: "Have a nice day", approved: false, replies_count: 1, parent_id: nil, parent_title: nil, type: nil, group: nil>), topic.inspect
2054
+ end
2055
+
2056
+ def test_inspect_new_instance
2057
+ assert_match /Topic id: nil/, Topic.new.inspect
2058
+ end
2059
+
2060
+ def test_inspect_limited_select_instance
2061
+ assert_equal %(#<Topic id: 1>), Topic.find(:first, :select => 'id', :conditions => 'id = 1').inspect
2062
+ assert_equal %(#<Topic id: 1, title: "The First Topic">), Topic.find(:first, :select => 'id, title', :conditions => 'id = 1').inspect
2063
+ end
2064
+
2065
+ def test_inspect_class_without_table
2066
+ assert_equal "NonExistentTable(Table doesn't exist)", NonExistentTable.inspect
2067
+ end
2068
+
2069
+ def test_attribute_for_inspect
2070
+ t = topics(:first)
2071
+ t.title = "The First Topic Now Has A Title With\nNewlines And More Than 50 Characters"
2072
+
2073
+ assert_equal %("#{t.written_on.to_s(:db)}"), t.attribute_for_inspect(:written_on)
2074
+ assert_equal '"The First Topic Now Has A Title With\nNewlines And M..."', t.attribute_for_inspect(:title)
2075
+ end
2076
+
2077
+ def test_becomes
2078
+ assert_kind_of Reply, topics(:first).becomes(Reply)
2079
+ assert_equal "The First Topic", topics(:first).becomes(Reply).title
2080
+ end
2081
+
2082
+ def test_silence_sets_log_level_to_error_in_block
2083
+ original_logger = ActiveRecord::Base.logger
2084
+ log = StringIO.new
2085
+ ActiveRecord::Base.logger = Logger.new(log)
2086
+ ActiveRecord::Base.logger.level = Logger::DEBUG
2087
+ ActiveRecord::Base.silence do
2088
+ ActiveRecord::Base.logger.warn "warn"
2089
+ ActiveRecord::Base.logger.error "error"
2090
+ end
2091
+ assert_equal "error\n", log.string
2092
+ ensure
2093
+ ActiveRecord::Base.logger = original_logger
2094
+ end
2095
+
2096
+ def test_silence_sets_log_level_back_to_level_before_yield
2097
+ original_logger = ActiveRecord::Base.logger
2098
+ log = StringIO.new
2099
+ ActiveRecord::Base.logger = Logger.new(log)
2100
+ ActiveRecord::Base.logger.level = Logger::WARN
2101
+ ActiveRecord::Base.silence do
2102
+ end
2103
+ assert_equal Logger::WARN, ActiveRecord::Base.logger.level
2104
+ ensure
2105
+ ActiveRecord::Base.logger = original_logger
2106
+ end
2107
+
2108
+ def test_benchmark_with_log_level
2109
+ original_logger = ActiveRecord::Base.logger
2110
+ log = StringIO.new
2111
+ ActiveRecord::Base.logger = Logger.new(log)
2112
+ ActiveRecord::Base.logger.level = Logger::WARN
2113
+ ActiveRecord::Base.benchmark("Debug Topic Count", Logger::DEBUG) { Topic.count }
2114
+ ActiveRecord::Base.benchmark("Warn Topic Count", Logger::WARN) { Topic.count }
2115
+ ActiveRecord::Base.benchmark("Error Topic Count", Logger::ERROR) { Topic.count }
2116
+ assert_no_match /Debug Topic Count/, log.string
2117
+ assert_match /Warn Topic Count/, log.string
2118
+ assert_match /Error Topic Count/, log.string
2119
+ ensure
2120
+ ActiveRecord::Base.logger = original_logger
2121
+ end
2122
+
2123
+ def test_benchmark_with_use_silence
2124
+ original_logger = ActiveRecord::Base.logger
2125
+ log = StringIO.new
2126
+ ActiveRecord::Base.logger = Logger.new(log)
2127
+ ActiveRecord::Base.benchmark("Logging", Logger::DEBUG, true) { ActiveRecord::Base.logger.debug "Loud" }
2128
+ ActiveRecord::Base.benchmark("Logging", Logger::DEBUG, false) { ActiveRecord::Base.logger.debug "Quiet" }
2129
+ assert_no_match /Loud/, log.string
2130
+ assert_match /Quiet/, log.string
2131
+ ensure
2132
+ ActiveRecord::Base.logger = original_logger
2133
+ end
2134
+
2135
+ def test_create_with_custom_timestamps
2136
+ custom_datetime = 1.hour.ago.beginning_of_day
2137
+
2138
+ %w(created_at created_on updated_at updated_on).each do |attribute|
2139
+ parrot = LiveParrot.create(:name => "colombian", attribute => custom_datetime)
2140
+ assert_equal custom_datetime, parrot[attribute]
2141
+ end
2142
+ end
2143
+ end