radiant 1.0.0.rc2 → 1.0.0.rc3

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

Potentially problematic release.


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

Files changed (2863) hide show
  1. data/.gitignore +1 -1
  2. data/{CHANGELOG → CHANGELOG.md} +22 -22
  3. data/{CONTRIBUTORS → CONTRIBUTORS.md} +37 -23
  4. data/Gemfile +23 -0
  5. data/Gemfile.lock +30 -0
  6. data/INSTALL.md +42 -0
  7. data/{LICENSE → LICENSE.md} +1 -1
  8. data/{README → README.md} +9 -10
  9. data/Rakefile +1 -1
  10. data/app/controllers/admin/pages_controller.rb +14 -4
  11. data/app/controllers/admin/resource_controller.rb +4 -2
  12. data/app/controllers/site_controller.rb +9 -14
  13. data/app/helpers/application_helper.rb +0 -12
  14. data/app/models/page.rb +2 -0
  15. data/app/models/page_context.rb +8 -1
  16. data/app/models/radiant/config.rb +10 -4
  17. data/app/models/standard_tags.rb +9 -4
  18. data/bin/radiant +5 -3
  19. data/config/boot.rb +5 -62
  20. data/config/environment.rb +3 -13
  21. data/config/environments/cucumber.rb +0 -7
  22. data/config/environments/development.rb +1 -1
  23. data/config/environments/test.rb +0 -6
  24. data/config/initializers/compass.rb +0 -2
  25. data/config/preinitializer.rb +19 -0
  26. data/db/schema.rb +3 -0
  27. data/features/navigation_rendering.feature +30 -0
  28. data/features/page_serving.feature +2 -2
  29. data/features/step_definitions/admin/admin_steps.rb +1 -0
  30. data/features/step_definitions/admin/pages_management_steps.rb +7 -2
  31. data/features/step_definitions/page_serving_steps.rb +1 -1
  32. data/lib/generators/extension/extension_generator.rb +2 -4
  33. data/lib/generators/extension/templates/{README → README.md} +2 -2
  34. data/lib/generators/extension/templates/RSpecRakefile +2 -2
  35. data/lib/generators/extension/templates/Rakefile +2 -2
  36. data/lib/generators/extension/templates/extension.rb +11 -13
  37. data/lib/generators/extension/templates/gemspec.rb +13 -13
  38. data/lib/generators/extension/templates/lib.rb +7 -1
  39. data/lib/generators/instance/instance_generator.rb +18 -7
  40. data/lib/generators/instance/templates/instance_boot.rb +3 -60
  41. data/lib/generators/instance/templates/instance_config.ru +2 -0
  42. data/lib/generators/instance/templates/instance_environment.rb +4 -15
  43. data/lib/generators/instance/templates/instance_gemfile +57 -0
  44. data/lib/generators/instance/templates/instance_generate +3 -15
  45. data/lib/generators/language_extension/templates/RSpecRakefile +2 -2
  46. data/lib/generators/language_extension/templates/Rakefile +2 -2
  47. data/lib/radiant.rb +1 -1
  48. data/lib/radiant/admin_ui.rb +6 -1
  49. data/lib/radiant/available_locales.rb +11 -23
  50. data/lib/radiant/config/definition.rb +2 -2
  51. data/lib/radiant/extension.rb +18 -5
  52. data/lib/radiant/extension/script.rb +4 -2
  53. data/lib/radiant/extension_loader.rb +73 -119
  54. data/lib/radiant/extension_migrator.rb +12 -1
  55. data/lib/radiant/extension_path.rb +192 -0
  56. data/lib/radiant/initializer.rb +286 -181
  57. data/lib/radiant/setup.rb +3 -0
  58. data/lib/radiant/taggable.rb +8 -7
  59. data/lib/tasks/database.rake +43 -1
  60. data/{vendor/plugins/dataset → lib}/tasks/dataset.rake +0 -0
  61. data/lib/tasks/extensions.rake +11 -8
  62. data/lib/tasks/framework.rake +48 -37
  63. data/lib/tasks/release.rake +4 -3
  64. data/lib/tasks/undefine.rake +1 -1
  65. data/{vendor/extensions/clipped/public → public}/flash/ZeroClipboard.swf +0 -0
  66. data/{vendor/extensions/clipped/public → public}/images/admin/assets/add.png +0 -0
  67. data/{vendor/extensions/clipped/public → public}/images/admin/assets/archive_icon.png +0 -0
  68. data/{vendor/extensions/clipped/public → public}/images/admin/assets/audio_icon.png +0 -0
  69. data/{vendor/extensions/clipped/public → public}/images/admin/assets/audio_thumbnail.png +0 -0
  70. data/{vendor/extensions/clipped/public → public}/images/admin/assets/c_icon.png +0 -0
  71. data/{vendor/extensions/clipped/public → public}/images/admin/assets/copy.png +0 -0
  72. data/{vendor/extensions/clipped/public → public}/images/admin/assets/css_icon.png +0 -0
  73. data/{vendor/extensions/clipped/public → public}/images/admin/assets/database_icon.png +0 -0
  74. data/{vendor/extensions/clipped/public → public}/images/admin/assets/delete.png +0 -0
  75. data/{vendor/extensions/clipped/public → public}/images/admin/assets/document_icon.png +0 -0
  76. data/{vendor/extensions/clipped/public → public}/images/admin/assets/document_thumbnail.png +0 -0
  77. data/{vendor/extensions/clipped/public → public}/images/admin/assets/flash_icon.png +0 -0
  78. data/{vendor/extensions/clipped/public → public}/images/admin/assets/flash_thumbnail.png +0 -0
  79. data/{vendor/extensions/clipped/public → public}/images/admin/assets/font_icon.png +0 -0
  80. data/{vendor/extensions/clipped/public → public}/images/admin/assets/gzip_icon.png +0 -0
  81. data/{vendor/extensions/clipped/public → public}/images/admin/assets/html_icon.png +0 -0
  82. data/{vendor/extensions/clipped/public → public}/images/admin/assets/image_icon.png +0 -0
  83. data/{vendor/extensions/clipped/public → public}/images/admin/assets/image_thumbnail.png +0 -0
  84. data/{vendor/extensions/clipped/public → public}/images/admin/assets/java_icon.png +0 -0
  85. data/{vendor/extensions/clipped/public → public}/images/admin/assets/page_edit.png +0 -0
  86. data/{vendor/extensions/clipped/public → public}/images/admin/assets/perl_icon.png +0 -0
  87. data/{vendor/extensions/clipped/public → public}/images/admin/assets/php_icon.png +0 -0
  88. data/{vendor/extensions/clipped/public → public}/images/admin/assets/presentation_icon.png +0 -0
  89. data/{vendor/extensions/clipped/public → public}/images/admin/assets/python_icon.png +0 -0
  90. data/{vendor/extensions/clipped/public → public}/images/admin/assets/reorder_assets.png +0 -0
  91. data/{vendor/extensions/clipped/public → public}/images/admin/assets/ruby_icon.png +0 -0
  92. data/{vendor/extensions/clipped/public → public}/images/admin/assets/script_icon.png +0 -0
  93. data/{vendor/extensions/clipped/public → public}/images/admin/assets/spreadsheet_icon.png +0 -0
  94. data/{vendor/extensions/clipped/public → public}/images/admin/assets/tar_icon.png +0 -0
  95. data/{vendor/extensions/clipped/public → public}/images/admin/assets/unknown_icon.png +0 -0
  96. data/{vendor/extensions/clipped/public → public}/images/admin/assets/unknown_thumbnail.png +0 -0
  97. data/{vendor/extensions/clipped/public → public}/images/admin/assets/video_icon.png +0 -0
  98. data/{vendor/extensions/clipped/public → public}/images/admin/assets/video_thumbnail.png +0 -0
  99. data/{vendor/extensions/clipped/public → public}/images/admin/assets/xml_icon.png +0 -0
  100. data/{vendor/extensions/clipped/public → public}/images/admin/assets/zip_icon.png +0 -0
  101. data/{vendor/extensions/site_templates/public → public}/images/roasters/banner.jpg +0 -0
  102. data/{vendor/extensions/site_templates/public → public}/images/roasters/closelabel.gif +0 -0
  103. data/{vendor/extensions/site_templates/public → public}/images/roasters/comment.png +0 -0
  104. data/{vendor/extensions/site_templates/public → public}/images/roasters/gallery1.jpg +0 -0
  105. data/{vendor/extensions/site_templates/public → public}/images/roasters/gallery2.jpg +0 -0
  106. data/{vendor/extensions/site_templates/public → public}/images/roasters/gallery3.jpg +0 -0
  107. data/{vendor/extensions/site_templates/public → public}/images/roasters/gallery4.jpg +0 -0
  108. data/{vendor/extensions/site_templates/public → public}/images/roasters/gift.gif +0 -0
  109. data/{vendor/extensions/site_templates/public → public}/images/roasters/green.gif +0 -0
  110. data/{vendor/extensions/site_templates/public → public}/images/roasters/nav-background.gif +0 -0
  111. data/{vendor/extensions/site_templates/public → public}/images/roasters/nav-divider.gif +0 -0
  112. data/{vendor/extensions/site_templates/public → public}/images/roasters/nextlabel.gif +0 -0
  113. data/{vendor/extensions/site_templates/public → public}/images/roasters/open.gif +0 -0
  114. data/{vendor/extensions/site_templates/public → public}/images/roasters/preview-1.jpg +0 -0
  115. data/{vendor/extensions/site_templates/public → public}/images/roasters/preview.jpg +0 -0
  116. data/{vendor/extensions/site_templates/public → public}/images/roasters/prevlabel.gif +0 -0
  117. data/{vendor/extensions/site_templates/public → public}/images/roasters/prize.gif +0 -0
  118. data/{vendor/extensions/site_templates/public → public}/images/roasters/recycle.gif +0 -0
  119. data/{vendor/extensions/site_templates/public → public}/images/roasters/rss.gif +0 -0
  120. data/{vendor/extensions/site_templates/public → public}/images/roasters/thumb-grinder.jpg +0 -0
  121. data/{vendor/extensions/site_templates/public → public}/images/roasters/thumb-grower.jpg +0 -0
  122. data/{vendor/extensions/site_templates/public → public}/images/roasters/thumb-roaster.jpg +0 -0
  123. data/{vendor/extensions/site_templates/public → public}/images/roasters/truck.gif +0 -0
  124. data/public/stylesheets/admin/main.css +1 -1
  125. data/public/stylesheets/sass/admin/_base.sass +1 -1
  126. data/radiant.gemspec +36 -18
  127. data/script/about +2 -1
  128. data/script/console +1 -1
  129. data/script/dbconsole +2 -2
  130. data/script/destroy +1 -1
  131. data/script/generate +1 -2
  132. data/script/performance/benchmarker +2 -2
  133. data/script/performance/profiler +2 -2
  134. data/script/plugin +1 -1
  135. data/script/runner +1 -1
  136. data/script/server +2 -2
  137. data/spec/controllers/admin/pages_controller_spec.rb +11 -10
  138. data/spec/controllers/admin/paginated_controller_spec.rb +26 -14
  139. data/spec/controllers/site_controller_spec.rb +7 -7
  140. data/spec/fixtures/example_extension/Rakefile +2 -2
  141. data/spec/fixtures/example_extension/example_extension.rb +1 -1
  142. data/spec/generators/extension_generator_spec.rb +30 -17
  143. data/spec/generators/instance_generator_spec.rb +1 -1
  144. data/spec/helpers/application_helper_spec.rb +0 -7
  145. data/spec/lib/radiant/admin_ui_spec.rb +1 -1
  146. data/spec/lib/radiant/extension/script_spec.rb +37 -9
  147. data/spec/lib/radiant/extension_loader_spec.rb +70 -234
  148. data/spec/lib/radiant/extension_migrator_spec.rb +10 -4
  149. data/spec/lib/radiant/extension_path_spec.rb +132 -0
  150. data/spec/lib/radiant/extension_spec.rb +4 -4
  151. data/spec/lib/radiant/initializer_spec.rb +46 -63
  152. data/spec/lib/radiant/taggable_spec.rb +20 -18
  153. data/spec/models/deprecated_tags_spec.rb +53 -14
  154. data/spec/models/page_context_spec.rb +5 -2
  155. data/spec/models/standard_tags_spec.rb +6 -0
  156. data/spec/spec_helper.rb +20 -6
  157. data/test/fixtures/extensions/replacing/db/migrate/200812131420_create_initial_schema.rb +10 -0
  158. data/test/fixtures/extensions/replacing/db/migrate/201106021232_further_modify_schema.rb +7 -0
  159. data/test/fixtures/extensions/replacing/replacing_extension.rb +3 -0
  160. data/vendor/extensions/{textile_filter/lib/tasks/textile_filter_extension_tasks.rake → .keep} +0 -0
  161. metadata +446 -2925
  162. data/INSTALL +0 -35
  163. data/lib/generators/extension/templates/version.rb +0 -3
  164. data/lib/radiant/extension_gem.rb +0 -12
  165. data/lib/radiant/extension_locator.rb +0 -25
  166. data/lib/radiant/gem_dependency_fix.rb +0 -21
  167. data/lib/radiant/gem_locator.rb +0 -28
  168. data/lib/tasks/ci.rake +0 -17
  169. data/spec/lib/locator_spec.rb +0 -41
  170. data/vendor/extensions/archive/README +0 -29
  171. data/vendor/extensions/archive/Rakefile +0 -109
  172. data/vendor/extensions/archive/app/models/archive_day_index_page.rb +0 -32
  173. data/vendor/extensions/archive/app/models/archive_finder.rb +0 -60
  174. data/vendor/extensions/archive/app/models/archive_month_index_page.rb +0 -32
  175. data/vendor/extensions/archive/app/models/archive_page.rb +0 -77
  176. data/vendor/extensions/archive/app/models/archive_year_index_page.rb +0 -32
  177. data/vendor/extensions/archive/archive_extension.rb +0 -20
  178. data/vendor/extensions/archive/config/initializers/radiant_config.rb +0 -3
  179. data/vendor/extensions/archive/config/locales/en.yml +0 -3
  180. data/vendor/extensions/archive/config/routes.rb +0 -5
  181. data/vendor/extensions/archive/cucumber.yml +0 -1
  182. data/vendor/extensions/archive/features/archive_content.feature +0 -51
  183. data/vendor/extensions/archive/features/step_definitions/web_steps.rb +0 -7
  184. data/vendor/extensions/archive/features/support/datasets_loader.rb +0 -3
  185. data/vendor/extensions/archive/features/support/env.rb +0 -11
  186. data/vendor/extensions/archive/features/support/matchers.rb +0 -3
  187. data/vendor/extensions/archive/features/support/paths.rb +0 -22
  188. data/vendor/extensions/archive/lib/archive_index_tags_and_methods.rb +0 -77
  189. data/vendor/extensions/archive/lib/radiant-archive-extension.rb +0 -2
  190. data/vendor/extensions/archive/lib/radiant-archive-extension/version.rb +0 -3
  191. data/vendor/extensions/archive/lib/tasks/archive_extension_tasks.rake +0 -55
  192. data/vendor/extensions/archive/radiant-archive-extension.gemspec +0 -29
  193. data/vendor/extensions/archive/spec/datasets/archive_dataset.rb +0 -55
  194. data/vendor/extensions/archive/spec/models/archive_day_index_page_spec.rb +0 -30
  195. data/vendor/extensions/archive/spec/models/archive_month_index_page_spec.rb +0 -34
  196. data/vendor/extensions/archive/spec/models/archive_page_spec.rb +0 -56
  197. data/vendor/extensions/archive/spec/models/archive_year_index_page_spec.rb +0 -31
  198. data/vendor/extensions/archive/spec/models/page_spec.rb +0 -6
  199. data/vendor/extensions/archive/spec/spec.opts +0 -6
  200. data/vendor/extensions/archive/spec/spec_helper.rb +0 -36
  201. data/vendor/extensions/archive/tmp/cache/entity/d0/580097d24f3e7cfc7bf9706a0a3a3729a9de3e +0 -6
  202. data/vendor/extensions/archive/tmp/cache/meta/0e/da69d02186242cdfda62e46044566f2bc50f3a +0 -0
  203. data/vendor/extensions/clipped/LICENSE +0 -22
  204. data/vendor/extensions/clipped/README.md +0 -230
  205. data/vendor/extensions/clipped/Rakefile +0 -109
  206. data/vendor/extensions/clipped/app/controllers/admin/assets_controller.rb +0 -59
  207. data/vendor/extensions/clipped/app/controllers/admin/page_attachments_controller.rb +0 -18
  208. data/vendor/extensions/clipped/app/helpers/admin/assets_helper.rb +0 -16
  209. data/vendor/extensions/clipped/app/models/asset.rb +0 -164
  210. data/vendor/extensions/clipped/app/models/asset_tags.rb +0 -361
  211. data/vendor/extensions/clipped/app/models/asset_type.rb +0 -154
  212. data/vendor/extensions/clipped/app/models/old_page_attachment.rb +0 -26
  213. data/vendor/extensions/clipped/app/models/page_attachment.rb +0 -21
  214. data/vendor/extensions/clipped/app/views/admin/assets/_asset.html.haml +0 -12
  215. data/vendor/extensions/clipped/app/views/admin/assets/_asset_table.html.haml +0 -30
  216. data/vendor/extensions/clipped/app/views/admin/assets/_errors.html.haml +0 -3
  217. data/vendor/extensions/clipped/app/views/admin/assets/_form.html.haml +0 -20
  218. data/vendor/extensions/clipped/app/views/admin/assets/_page_assets.html.haml +0 -12
  219. data/vendor/extensions/clipped/app/views/admin/assets/_search.html.haml +0 -17
  220. data/vendor/extensions/clipped/app/views/admin/assets/_search_results.html.haml +0 -17
  221. data/vendor/extensions/clipped/app/views/admin/assets/edit.html.haml +0 -40
  222. data/vendor/extensions/clipped/app/views/admin/assets/index.html.haml +0 -19
  223. data/vendor/extensions/clipped/app/views/admin/assets/new.html.haml +0 -24
  224. data/vendor/extensions/clipped/app/views/admin/assets/refresh.html.haml +0 -14
  225. data/vendor/extensions/clipped/app/views/admin/assets/remove.html.haml +0 -16
  226. data/vendor/extensions/clipped/app/views/admin/configuration/_edit.html.haml +0 -8
  227. data/vendor/extensions/clipped/app/views/admin/configuration/_show.html.haml +0 -12
  228. data/vendor/extensions/clipped/app/views/admin/page_attachments/_attachment.html.haml +0 -25
  229. data/vendor/extensions/clipped/app/views/admin/page_parts/_page_part.html.haml +0 -21
  230. data/vendor/extensions/clipped/app/views/admin/pages/_asset_popups.html.haml +0 -42
  231. data/vendor/extensions/clipped/app/views/admin/pages/_assets.html.haml +0 -11
  232. data/vendor/extensions/clipped/app/views/admin/removed/_assets_bucket.html.haml +0 -8
  233. data/vendor/extensions/clipped/app/views/admin/removed/_assets_container.html.haml +0 -58
  234. data/vendor/extensions/clipped/app/views/admin/removed/_bucket.html.haml +0 -11
  235. data/vendor/extensions/clipped/app/views/admin/removed/_bucket_asset.html.haml +0 -9
  236. data/vendor/extensions/clipped/app/views/admin/removed/_show_bucket_link.html.haml +0 -4
  237. data/vendor/extensions/clipped/app/views/admin/removed/_upload_to_page.html.haml +0 -12
  238. data/vendor/extensions/clipped/app/views/admin/removed/bucket/_iframe.html.haml +0 -1
  239. data/vendor/extensions/clipped/artwork/icons.png +0 -0
  240. data/vendor/extensions/clipped/clipped_extension.rb +0 -86
  241. data/vendor/extensions/clipped/config/initializers/interpolation.rb +0 -6
  242. data/vendor/extensions/clipped/config/initializers/processors.rb +0 -12
  243. data/vendor/extensions/clipped/config/initializers/radiant_config.rb +0 -38
  244. data/vendor/extensions/clipped/config/locales/en.yml +0 -108
  245. data/vendor/extensions/clipped/config/locales/nl.yml +0 -105
  246. data/vendor/extensions/clipped/config/routes.rb +0 -8
  247. data/vendor/extensions/clipped/cucumber.yml +0 -1
  248. data/vendor/extensions/clipped/db/migrate/001_create_assets.rb +0 -12
  249. data/vendor/extensions/clipped/db/migrate/002_create_paperclip_attributes.rb +0 -13
  250. data/vendor/extensions/clipped/db/migrate/003_create_user_observer.rb +0 -13
  251. data/vendor/extensions/clipped/db/migrate/004_create_page_attachments.rb +0 -19
  252. data/vendor/extensions/clipped/db/migrate/005_rename_users.rb +0 -13
  253. data/vendor/extensions/clipped/db/migrate/20090316132151_disable_file_types.rb +0 -20
  254. data/vendor/extensions/clipped/db/migrate/20110513205050_asset_uuid.rb +0 -11
  255. data/vendor/extensions/clipped/features/support/env.rb +0 -11
  256. data/vendor/extensions/clipped/features/support/paths.rb +0 -22
  257. data/vendor/extensions/clipped/lib/clipped_admin_ui.rb +0 -32
  258. data/vendor/extensions/clipped/lib/page_asset_associations.rb +0 -13
  259. data/vendor/extensions/clipped/lib/paperclip/frame_grab.rb +0 -39
  260. data/vendor/extensions/clipped/lib/radiant-clipped-extension.rb +0 -2
  261. data/vendor/extensions/clipped/lib/radiant-clipped-extension/version.rb +0 -3
  262. data/vendor/extensions/clipped/lib/tasks/clipped_extension_tasks.rake +0 -129
  263. data/vendor/extensions/clipped/lib/tasks/paperclip_tasks.rake +0 -79
  264. data/vendor/extensions/clipped/public/javascripts/admin/assets.js +0 -296
  265. data/vendor/extensions/clipped/public/stylesheets/sass/admin/assets.sass +0 -209
  266. data/vendor/extensions/clipped/radiant-clipped-extension.gemspec +0 -33
  267. data/vendor/extensions/clipped/spec/controllers/admin/assets_controller_spec.rb +0 -50
  268. data/vendor/extensions/clipped/spec/controllers/admin/page_attachments_controller_spec.rb +0 -50
  269. data/vendor/extensions/clipped/spec/datasets/assets_dataset.rb +0 -32
  270. data/vendor/extensions/clipped/spec/lib/asset_tags_spec.rb +0 -37
  271. data/vendor/extensions/clipped/spec/models/asset_spec.rb +0 -72
  272. data/vendor/extensions/clipped/spec/models/asset_type_spec.rb +0 -49
  273. data/vendor/extensions/clipped/spec/spec.opts +0 -6
  274. data/vendor/extensions/clipped/spec/spec_helper.rb +0 -36
  275. data/vendor/extensions/clipped/wireframes/edit-page-assets-2.bmml +0 -453
  276. data/vendor/extensions/clipped/wireframes/edit-page-assets-2.png +0 -0
  277. data/vendor/extensions/clipped/wireframes/edit-page-assets-3.bmml +0 -454
  278. data/vendor/extensions/clipped/wireframes/edit-page-assets-3.png +0 -0
  279. data/vendor/extensions/clipped/wireframes/edit-page-assets.bmml +0 -433
  280. data/vendor/extensions/clipped/wireframes/edit-page-assets.png +0 -0
  281. data/vendor/extensions/clipped/wireframes/edit-page.bmml +0 -174
  282. data/vendor/extensions/clipped/wireframes/edit-page.png +0 -0
  283. data/vendor/extensions/debug/README +0 -3
  284. data/vendor/extensions/debug/Rakefile +0 -136
  285. data/vendor/extensions/debug/app/models/env_dump_page.rb +0 -17
  286. data/vendor/extensions/debug/config/locales/en.yml +0 -3
  287. data/vendor/extensions/debug/config/routes.rb +0 -5
  288. data/vendor/extensions/debug/debug_extension.rb +0 -11
  289. data/vendor/extensions/debug/lib/tasks/debug_extension_tasks.rake +0 -55
  290. data/vendor/extensions/debug/spec/models/env_dump_page_spec.rb +0 -18
  291. data/vendor/extensions/debug/spec/spec.opts +0 -6
  292. data/vendor/extensions/debug/spec/spec_helper.rb +0 -36
  293. data/vendor/extensions/dutch_language_pack/README +0 -3
  294. data/vendor/extensions/dutch_language_pack/Rakefile +0 -123
  295. data/vendor/extensions/dutch_language_pack/config/locales/nl.yml +0 -238
  296. data/vendor/extensions/dutch_language_pack/config/locales/nl_available_tags.yml +0 -553
  297. data/vendor/extensions/dutch_language_pack/dutch_language_pack_extension.rb +0 -9
  298. data/vendor/extensions/dutch_language_pack/lib/tasks/i18n_nl_extension_tasks.rake +0 -28
  299. data/vendor/extensions/exporter/README +0 -5
  300. data/vendor/extensions/exporter/Rakefile +0 -116
  301. data/vendor/extensions/exporter/app/controllers/admin/export_controller.rb +0 -5
  302. data/vendor/extensions/exporter/app/models/radiant/exporter.rb +0 -41
  303. data/vendor/extensions/exporter/config/locales/en.yml +0 -3
  304. data/vendor/extensions/exporter/config/routes.rb +0 -6
  305. data/vendor/extensions/exporter/cucumber.yml +0 -1
  306. data/vendor/extensions/exporter/exporter_extension.rb +0 -8
  307. data/vendor/extensions/exporter/features/support/env.rb +0 -16
  308. data/vendor/extensions/exporter/features/support/paths.rb +0 -14
  309. data/vendor/extensions/exporter/lib/tasks/exporter_extension_tasks.rake +0 -55
  310. data/vendor/extensions/exporter/spec/controllers/admin/export_controller_spec.rb +0 -16
  311. data/vendor/extensions/exporter/spec/models/radiant/exporter_spec.rb +0 -29
  312. data/vendor/extensions/exporter/spec/spec.opts +0 -6
  313. data/vendor/extensions/exporter/spec/spec_helper.rb +0 -36
  314. data/vendor/extensions/french_language_pack/README +0 -3
  315. data/vendor/extensions/french_language_pack/Rakefile +0 -123
  316. data/vendor/extensions/french_language_pack/config/locales/fr.yml +0 -190
  317. data/vendor/extensions/french_language_pack/config/locales/fr_available_tags.yml +0 -553
  318. data/vendor/extensions/french_language_pack/french_language_pack_extension.rb +0 -9
  319. data/vendor/extensions/french_language_pack/lib/tasks/i18n_fr_extension_tasks.rake +0 -28
  320. data/vendor/extensions/german_language_pack/README +0 -4
  321. data/vendor/extensions/german_language_pack/Rakefile +0 -123
  322. data/vendor/extensions/german_language_pack/config/locales/de.yml +0 -238
  323. data/vendor/extensions/german_language_pack/config/locales/de_available_tags.yml +0 -624
  324. data/vendor/extensions/german_language_pack/german_language_pack_extension.rb +0 -9
  325. data/vendor/extensions/german_language_pack/lib/tasks/i18n_de_extension_tasks.rake +0 -28
  326. data/vendor/extensions/italian_language_pack/README +0 -3
  327. data/vendor/extensions/italian_language_pack/Rakefile +0 -123
  328. data/vendor/extensions/italian_language_pack/config/locales/it.yml +0 -184
  329. data/vendor/extensions/italian_language_pack/config/locales/it_available_tags.yml +0 -553
  330. data/vendor/extensions/italian_language_pack/italian_language_pack_extension.rb +0 -8
  331. data/vendor/extensions/italian_language_pack/lib/tasks/i18n_it_extension_tasks.rake +0 -28
  332. data/vendor/extensions/japanese_language_pack/README +0 -42
  333. data/vendor/extensions/japanese_language_pack/Rakefile +0 -123
  334. data/vendor/extensions/japanese_language_pack/config/locales/ja.yml +0 -220
  335. data/vendor/extensions/japanese_language_pack/config/locales/ja_available_tags.yml +0 -533
  336. data/vendor/extensions/japanese_language_pack/japanese_language_pack_extension.rb +0 -9
  337. data/vendor/extensions/japanese_language_pack/lib/tasks/i18n_ja_extension_tasks.rake +0 -28
  338. data/vendor/extensions/markdown_filter/README +0 -1
  339. data/vendor/extensions/markdown_filter/Rakefile +0 -120
  340. data/vendor/extensions/markdown_filter/lib/markdown_filter.rb +0 -14
  341. data/vendor/extensions/markdown_filter/lib/markdown_tags.rb +0 -18
  342. data/vendor/extensions/markdown_filter/lib/tasks/markdown_filter_extension_tasks.rake +0 -28
  343. data/vendor/extensions/markdown_filter/markdown.html +0 -123
  344. data/vendor/extensions/markdown_filter/markdown_filter_extension.rb +0 -18
  345. data/vendor/extensions/markdown_filter/spec/models/markdown_filter_spec.rb +0 -22
  346. data/vendor/extensions/markdown_filter/spec/spec.opts +0 -6
  347. data/vendor/extensions/markdown_filter/spec/spec_helper.rb +0 -36
  348. data/vendor/extensions/markdown_filter/test/test_helper.rb +0 -19
  349. data/vendor/extensions/markdown_filter/test/unit/markdown_filter_test.rb +0 -18
  350. data/vendor/extensions/markdown_filter/vendor/kramdown/AUTHORS +0 -1
  351. data/vendor/extensions/markdown_filter/vendor/kramdown/CONTRIBUTERS +0 -5
  352. data/vendor/extensions/markdown_filter/vendor/kramdown/COPYING +0 -24
  353. data/vendor/extensions/markdown_filter/vendor/kramdown/ChangeLog +0 -5206
  354. data/vendor/extensions/markdown_filter/vendor/kramdown/GPL +0 -674
  355. data/vendor/extensions/markdown_filter/vendor/kramdown/README +0 -30
  356. data/vendor/extensions/markdown_filter/vendor/kramdown/Rakefile +0 -342
  357. data/vendor/extensions/markdown_filter/vendor/kramdown/VERSION +0 -1
  358. data/vendor/extensions/markdown_filter/vendor/kramdown/benchmark/benchmark.rb +0 -34
  359. data/vendor/extensions/markdown_filter/vendor/kramdown/benchmark/generate_data.rb +0 -112
  360. data/vendor/extensions/markdown_filter/vendor/kramdown/benchmark/historic-jruby-1.4.0.dat +0 -7
  361. data/vendor/extensions/markdown_filter/vendor/kramdown/benchmark/historic-ruby-1.8.6.dat +0 -7
  362. data/vendor/extensions/markdown_filter/vendor/kramdown/benchmark/historic-ruby-1.8.7.dat +0 -7
  363. data/vendor/extensions/markdown_filter/vendor/kramdown/benchmark/historic-ruby-1.9.1p243.dat +0 -7
  364. data/vendor/extensions/markdown_filter/vendor/kramdown/benchmark/historic-ruby-1.9.2dev.dat +0 -7
  365. data/vendor/extensions/markdown_filter/vendor/kramdown/benchmark/mdbasics.text +0 -306
  366. data/vendor/extensions/markdown_filter/vendor/kramdown/benchmark/mdsyntax.text +0 -888
  367. data/vendor/extensions/markdown_filter/vendor/kramdown/benchmark/static-jruby-1.4.0.dat +0 -7
  368. data/vendor/extensions/markdown_filter/vendor/kramdown/benchmark/static-ruby-1.8.6.dat +0 -7
  369. data/vendor/extensions/markdown_filter/vendor/kramdown/benchmark/static-ruby-1.8.7.dat +0 -7
  370. data/vendor/extensions/markdown_filter/vendor/kramdown/benchmark/static-ruby-1.9.1p243.dat +0 -7
  371. data/vendor/extensions/markdown_filter/vendor/kramdown/benchmark/static-ruby-1.9.2dev.dat +0 -7
  372. data/vendor/extensions/markdown_filter/vendor/kramdown/benchmark/testing.sh +0 -9
  373. data/vendor/extensions/markdown_filter/vendor/kramdown/benchmark/timing.sh +0 -10
  374. data/vendor/extensions/markdown_filter/vendor/kramdown/bin/kramdown +0 -79
  375. data/vendor/extensions/markdown_filter/vendor/kramdown/data/kramdown/document.html +0 -18
  376. data/vendor/extensions/markdown_filter/vendor/kramdown/data/kramdown/document.latex +0 -43
  377. data/vendor/extensions/markdown_filter/vendor/kramdown/doc/default.scss.css +0 -519
  378. data/vendor/extensions/markdown_filter/vendor/kramdown/doc/default.template +0 -80
  379. data/vendor/extensions/markdown_filter/vendor/kramdown/doc/documentation.page +0 -72
  380. data/vendor/extensions/markdown_filter/vendor/kramdown/doc/index.page +0 -96
  381. data/vendor/extensions/markdown_filter/vendor/kramdown/doc/installation.page +0 -90
  382. data/vendor/extensions/markdown_filter/vendor/kramdown/doc/links.markdown +0 -6
  383. data/vendor/extensions/markdown_filter/vendor/kramdown/doc/news.feed +0 -10
  384. data/vendor/extensions/markdown_filter/vendor/kramdown/doc/news.page +0 -28
  385. data/vendor/extensions/markdown_filter/vendor/kramdown/doc/quickref.page +0 -564
  386. data/vendor/extensions/markdown_filter/vendor/kramdown/doc/syntax.page +0 -1615
  387. data/vendor/extensions/markdown_filter/vendor/kramdown/doc/tests.page +0 -51
  388. data/vendor/extensions/markdown_filter/vendor/kramdown/doc/virtual +0 -2
  389. data/vendor/extensions/markdown_filter/vendor/kramdown/lib/kramdown.rb +0 -23
  390. data/vendor/extensions/markdown_filter/vendor/kramdown/lib/kramdown/compatibility.rb +0 -34
  391. data/vendor/extensions/markdown_filter/vendor/kramdown/lib/kramdown/converter.rb +0 -42
  392. data/vendor/extensions/markdown_filter/vendor/kramdown/lib/kramdown/converter/base.rb +0 -111
  393. data/vendor/extensions/markdown_filter/vendor/kramdown/lib/kramdown/converter/html.rb +0 -399
  394. data/vendor/extensions/markdown_filter/vendor/kramdown/lib/kramdown/converter/kramdown.rb +0 -421
  395. data/vendor/extensions/markdown_filter/vendor/kramdown/lib/kramdown/converter/latex.rb +0 -577
  396. data/vendor/extensions/markdown_filter/vendor/kramdown/lib/kramdown/document.rb +0 -168
  397. data/vendor/extensions/markdown_filter/vendor/kramdown/lib/kramdown/error.rb +0 -27
  398. data/vendor/extensions/markdown_filter/vendor/kramdown/lib/kramdown/options.rb +0 -296
  399. data/vendor/extensions/markdown_filter/vendor/kramdown/lib/kramdown/parser.rb +0 -39
  400. data/vendor/extensions/markdown_filter/vendor/kramdown/lib/kramdown/parser/base.rb +0 -94
  401. data/vendor/extensions/markdown_filter/vendor/kramdown/lib/kramdown/parser/html.rb +0 -499
  402. data/vendor/extensions/markdown_filter/vendor/kramdown/lib/kramdown/parser/kramdown.rb +0 -319
  403. data/vendor/extensions/markdown_filter/vendor/kramdown/lib/kramdown/parser/kramdown/abbreviation.rb +0 -66
  404. data/vendor/extensions/markdown_filter/vendor/kramdown/lib/kramdown/parser/kramdown/attribute_list.rb +0 -111
  405. data/vendor/extensions/markdown_filter/vendor/kramdown/lib/kramdown/parser/kramdown/autolink.rb +0 -54
  406. data/vendor/extensions/markdown_filter/vendor/kramdown/lib/kramdown/parser/kramdown/blank_line.rb +0 -43
  407. data/vendor/extensions/markdown_filter/vendor/kramdown/lib/kramdown/parser/kramdown/block_boundary.rb +0 -46
  408. data/vendor/extensions/markdown_filter/vendor/kramdown/lib/kramdown/parser/kramdown/blockquote.rb +0 -46
  409. data/vendor/extensions/markdown_filter/vendor/kramdown/lib/kramdown/parser/kramdown/codeblock.rb +0 -60
  410. data/vendor/extensions/markdown_filter/vendor/kramdown/lib/kramdown/parser/kramdown/codespan.rb +0 -57
  411. data/vendor/extensions/markdown_filter/vendor/kramdown/lib/kramdown/parser/kramdown/emphasis.rb +0 -70
  412. data/vendor/extensions/markdown_filter/vendor/kramdown/lib/kramdown/parser/kramdown/eob.rb +0 -39
  413. data/vendor/extensions/markdown_filter/vendor/kramdown/lib/kramdown/parser/kramdown/escaped_chars.rb +0 -38
  414. data/vendor/extensions/markdown_filter/vendor/kramdown/lib/kramdown/parser/kramdown/extension.rb +0 -116
  415. data/vendor/extensions/markdown_filter/vendor/kramdown/lib/kramdown/parser/kramdown/footnote.rb +0 -74
  416. data/vendor/extensions/markdown_filter/vendor/kramdown/lib/kramdown/parser/kramdown/header.rb +0 -66
  417. data/vendor/extensions/markdown_filter/vendor/kramdown/lib/kramdown/parser/kramdown/horizontal_rule.rb +0 -39
  418. data/vendor/extensions/markdown_filter/vendor/kramdown/lib/kramdown/parser/kramdown/html.rb +0 -175
  419. data/vendor/extensions/markdown_filter/vendor/kramdown/lib/kramdown/parser/kramdown/html_entity.rb +0 -39
  420. data/vendor/extensions/markdown_filter/vendor/kramdown/lib/kramdown/parser/kramdown/line_break.rb +0 -38
  421. data/vendor/extensions/markdown_filter/vendor/kramdown/lib/kramdown/parser/kramdown/link.rb +0 -156
  422. data/vendor/extensions/markdown_filter/vendor/kramdown/lib/kramdown/parser/kramdown/list.rb +0 -239
  423. data/vendor/extensions/markdown_filter/vendor/kramdown/lib/kramdown/parser/kramdown/math.rb +0 -64
  424. data/vendor/extensions/markdown_filter/vendor/kramdown/lib/kramdown/parser/kramdown/paragraph.rb +0 -55
  425. data/vendor/extensions/markdown_filter/vendor/kramdown/lib/kramdown/parser/kramdown/smart_quotes.rb +0 -214
  426. data/vendor/extensions/markdown_filter/vendor/kramdown/lib/kramdown/parser/kramdown/table.rb +0 -134
  427. data/vendor/extensions/markdown_filter/vendor/kramdown/lib/kramdown/parser/kramdown/typographic_symbol.rb +0 -52
  428. data/vendor/extensions/markdown_filter/vendor/kramdown/lib/kramdown/utils.rb +0 -37
  429. data/vendor/extensions/markdown_filter/vendor/kramdown/lib/kramdown/utils/entities.rb +0 -335
  430. data/vendor/extensions/markdown_filter/vendor/kramdown/lib/kramdown/utils/html.rb +0 -75
  431. data/vendor/extensions/markdown_filter/vendor/kramdown/lib/kramdown/utils/ordered_hash.rb +0 -79
  432. data/vendor/extensions/markdown_filter/vendor/kramdown/lib/kramdown/version.rb +0 -28
  433. data/vendor/extensions/markdown_filter/vendor/kramdown/man/man1/kramdown.1 +0 -246
  434. data/vendor/extensions/markdown_filter/vendor/kramdown/setup.rb +0 -1585
  435. data/vendor/extensions/markdown_filter/vendor/kramdown/test/run_tests.rb +0 -59
  436. data/vendor/extensions/markdown_filter/vendor/kramdown/test/test_files.rb +0 -162
  437. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/01_blank_line/spaces.html +0 -1
  438. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/01_blank_line/spaces.text +0 -3
  439. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/01_blank_line/tabs.html +0 -1
  440. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/01_blank_line/tabs.text +0 -6
  441. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/02_eob/beginning.html +0 -1
  442. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/02_eob/beginning.text +0 -3
  443. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/02_eob/end.html +0 -1
  444. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/02_eob/end.text +0 -3
  445. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/02_eob/middle.html +0 -1
  446. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/02_eob/middle.text +0 -5
  447. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/03_paragraph/indented.html +0 -18
  448. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/03_paragraph/indented.text +0 -19
  449. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/03_paragraph/no_newline_at_end.html +0 -5
  450. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/03_paragraph/no_newline_at_end.text +0 -5
  451. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/03_paragraph/one_para.html +0 -1
  452. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/03_paragraph/one_para.text +0 -1
  453. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/03_paragraph/two_para.html +0 -4
  454. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/03_paragraph/two_para.text +0 -4
  455. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/04_header/atx_header.html +0 -37
  456. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/04_header/atx_header.text +0 -34
  457. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/04_header/atx_header_no_newline_at_end.html +0 -1
  458. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/04_header/atx_header_no_newline_at_end.text +0 -1
  459. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/04_header/setext_header.html +0 -30
  460. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/04_header/setext_header.html.19 +0 -30
  461. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/04_header/setext_header.text +0 -36
  462. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/04_header/setext_header_no_newline_at_end.html +0 -1
  463. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/04_header/setext_header_no_newline_at_end.text +0 -2
  464. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/04_header/with_auto_id_prefix.html +0 -3
  465. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/04_header/with_auto_id_prefix.options +0 -2
  466. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/04_header/with_auto_id_prefix.text +0 -3
  467. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/04_header/with_auto_ids.html +0 -17
  468. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/04_header/with_auto_ids.options +0 -1
  469. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/04_header/with_auto_ids.text +0 -19
  470. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/05_blockquote/indented.html +0 -25
  471. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/05_blockquote/indented.text +0 -14
  472. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/05_blockquote/lazy.html +0 -34
  473. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/05_blockquote/lazy.text +0 -20
  474. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/05_blockquote/nested.html +0 -10
  475. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/05_blockquote/nested.text +0 -6
  476. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/05_blockquote/no_newline_at_end.html +0 -4
  477. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/05_blockquote/no_newline_at_end.text +0 -2
  478. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/05_blockquote/with_code_blocks.html +0 -15
  479. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/05_blockquote/with_code_blocks.text +0 -11
  480. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/06_codeblock/error.html +0 -4
  481. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/06_codeblock/error.text +0 -4
  482. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/06_codeblock/lazy.html +0 -4
  483. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/06_codeblock/lazy.text +0 -5
  484. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/06_codeblock/no_newline_at_end.html +0 -2
  485. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/06_codeblock/no_newline_at_end.text +0 -1
  486. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/06_codeblock/no_newline_at_end_1.html +0 -2
  487. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/06_codeblock/no_newline_at_end_1.text +0 -2
  488. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/06_codeblock/normal.html +0 -13
  489. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/06_codeblock/normal.text +0 -10
  490. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/06_codeblock/tilde_syntax.html +0 -7
  491. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/06_codeblock/tilde_syntax.text +0 -9
  492. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/06_codeblock/whitespace.html +0 -3
  493. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/06_codeblock/whitespace.text +0 -3
  494. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/06_codeblock/with_blank_line.html +0 -13
  495. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/06_codeblock/with_blank_line.text +0 -12
  496. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/06_codeblock/with_eob_marker.html +0 -6
  497. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/06_codeblock/with_eob_marker.text +0 -5
  498. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/06_codeblock/with_ial.html +0 -6
  499. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/06_codeblock/with_ial.text +0 -5
  500. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/07_horizontal_rule/error.html +0 -7
  501. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/07_horizontal_rule/error.html.19 +0 -7
  502. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/07_horizontal_rule/error.text +0 -7
  503. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/07_horizontal_rule/normal.html +0 -17
  504. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/07_horizontal_rule/normal.text +0 -17
  505. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/07_horizontal_rule/sepspaces.html +0 -3
  506. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/07_horizontal_rule/sepspaces.text +0 -3
  507. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/07_horizontal_rule/septabs.html +0 -3
  508. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/07_horizontal_rule/septabs.text +0 -3
  509. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/08_list/escaping.html +0 -17
  510. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/08_list/escaping.text +0 -17
  511. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/08_list/item_ial.html +0 -7
  512. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/08_list/item_ial.text +0 -5
  513. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/08_list/lazy.html +0 -39
  514. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/08_list/lazy.text +0 -29
  515. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/08_list/list_and_hr.html +0 -9
  516. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/08_list/list_and_hr.text +0 -5
  517. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/08_list/list_and_others.html +0 -40
  518. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/08_list/list_and_others.text +0 -26
  519. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/08_list/mixed.html +0 -117
  520. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/08_list/mixed.text +0 -66
  521. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/08_list/nested.html +0 -17
  522. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/08_list/nested.text +0 -7
  523. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/08_list/other_first_element.html +0 -39
  524. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/08_list/other_first_element.text +0 -18
  525. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/08_list/simple_ol.html +0 -19
  526. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/08_list/simple_ol.text +0 -13
  527. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/08_list/simple_ul.html +0 -48
  528. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/08_list/simple_ul.text +0 -36
  529. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/08_list/single_item.html +0 -3
  530. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/08_list/single_item.text +0 -1
  531. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/08_list/special_cases.html +0 -55
  532. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/08_list/special_cases.text +0 -35
  533. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/comment.html +0 -18
  534. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/comment.text +0 -15
  535. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/content_model/deflists.html +0 -6
  536. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/content_model/deflists.options +0 -1
  537. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/content_model/deflists.text +0 -6
  538. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/content_model/tables.html +0 -14
  539. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/content_model/tables.options +0 -1
  540. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/content_model/tables.text +0 -14
  541. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/html_and_codeblocks.html +0 -15
  542. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/html_and_codeblocks.options +0 -1
  543. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/html_and_codeblocks.text +0 -13
  544. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/html_to_native/code.html +0 -10
  545. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/html_to_native/code.text +0 -9
  546. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/html_to_native/comment.html +0 -7
  547. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/html_to_native/comment.text +0 -8
  548. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/html_to_native/emphasis.html +0 -3
  549. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/html_to_native/emphasis.text +0 -3
  550. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/html_to_native/entity.html +0 -1
  551. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/html_to_native/entity.text +0 -1
  552. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/html_to_native/header.html +0 -6
  553. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/html_to_native/header.options +0 -2
  554. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/html_to_native/header.text +0 -6
  555. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/html_to_native/list_dl.html +0 -8
  556. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/html_to_native/list_dl.text +0 -8
  557. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/html_to_native/list_ol.html +0 -15
  558. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/html_to_native/list_ol.text +0 -17
  559. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/html_to_native/list_ul.html +0 -19
  560. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/html_to_native/list_ul.text +0 -22
  561. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/html_to_native/options +0 -1
  562. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/html_to_native/paragraph.html +0 -3
  563. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/html_to_native/paragraph.text +0 -4
  564. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/html_to_native/table_normal.html +0 -14
  565. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/html_to_native/table_normal.text +0 -12
  566. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/html_to_native/table_simple.html +0 -48
  567. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/html_to_native/table_simple.text +0 -56
  568. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/html_to_native/typography.html +0 -1
  569. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/html_to_native/typography.html.19 +0 -1
  570. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/html_to_native/typography.text +0 -1
  571. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/invalid_html_1.html +0 -5
  572. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/invalid_html_1.text +0 -5
  573. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/invalid_html_2.html +0 -5
  574. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/invalid_html_2.text +0 -5
  575. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/markdown_attr.html +0 -38
  576. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/markdown_attr.text +0 -38
  577. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/not_parsed.html +0 -24
  578. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/not_parsed.text +0 -24
  579. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/parse_as_raw.html +0 -30
  580. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/parse_as_raw.options +0 -1
  581. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/parse_as_raw.text +0 -29
  582. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/parse_as_span.html +0 -12
  583. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/parse_as_span.options +0 -1
  584. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/parse_as_span.text +0 -9
  585. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/parse_block_html.html +0 -21
  586. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/parse_block_html.options +0 -1
  587. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/parse_block_html.text +0 -17
  588. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/processing_instruction.html +0 -13
  589. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/processing_instruction.text +0 -12
  590. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/simple.html +0 -64
  591. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/simple.html.19 +0 -64
  592. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/simple.options +0 -1
  593. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/simple.text +0 -59
  594. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/10_ald/simple.html +0 -2
  595. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/10_ald/simple.text +0 -8
  596. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/11_ial/auto_id_and_ial.html +0 -1
  597. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/11_ial/auto_id_and_ial.options +0 -1
  598. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/11_ial/auto_id_and_ial.text +0 -2
  599. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/11_ial/simple.html +0 -25
  600. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/11_ial/simple.text +0 -34
  601. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/12_extension/comment.html +0 -8
  602. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/12_extension/comment.text +0 -12
  603. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/12_extension/ignored.html +0 -8
  604. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/12_extension/ignored.text +0 -8
  605. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/12_extension/nomarkdown.html +0 -10
  606. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/12_extension/nomarkdown.kramdown +0 -20
  607. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/12_extension/nomarkdown.latex +0 -13
  608. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/12_extension/nomarkdown.text +0 -21
  609. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/12_extension/options.html +0 -21
  610. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/12_extension/options.text +0 -21
  611. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/12_extension/options2.html +0 -10
  612. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/12_extension/options2.text +0 -5
  613. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/12_extension/options3.html +0 -7
  614. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/12_extension/options3.text +0 -7
  615. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/13_definition_list/definition_at_beginning.html +0 -1
  616. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/13_definition_list/definition_at_beginning.text +0 -1
  617. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/13_definition_list/item_ial.html +0 -12
  618. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/13_definition_list/item_ial.text +0 -8
  619. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/13_definition_list/multiple_terms.html +0 -13
  620. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/13_definition_list/multiple_terms.text +0 -10
  621. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/13_definition_list/no_def_list.html +0 -2
  622. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/13_definition_list/no_def_list.text +0 -2
  623. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/13_definition_list/para_wrapping.html +0 -10
  624. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/13_definition_list/para_wrapping.text +0 -6
  625. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/13_definition_list/separated_by_eob.html +0 -8
  626. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/13_definition_list/separated_by_eob.text +0 -5
  627. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/13_definition_list/simple.html +0 -8
  628. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/13_definition_list/simple.text +0 -7
  629. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/13_definition_list/styled_terms.html +0 -4
  630. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/13_definition_list/styled_terms.text +0 -2
  631. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/13_definition_list/too_much_space.html +0 -3
  632. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/13_definition_list/too_much_space.text +0 -4
  633. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/13_definition_list/with_blocks.html +0 -38
  634. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/13_definition_list/with_blocks.text +0 -24
  635. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/14_table/errors.html +0 -8
  636. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/14_table/errors.text +0 -9
  637. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/14_table/footer.html +0 -65
  638. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/14_table/footer.text +0 -25
  639. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/14_table/header.html +0 -103
  640. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/14_table/header.text +0 -32
  641. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/14_table/no_table.html +0 -3
  642. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/14_table/no_table.text +0 -3
  643. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/14_table/simple.html +0 -139
  644. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/14_table/simple.text +0 -38
  645. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/15_math/normal.html +0 -26
  646. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/15_math/normal.text +0 -28
  647. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/16_toc/no_toc_depth.html +0 -33
  648. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/16_toc/no_toc_depth.options +0 -1
  649. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/16_toc/no_toc_depth.text +0 -16
  650. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/16_toc/toc_depth_2.html +0 -24
  651. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/16_toc/toc_depth_2.options +0 -1
  652. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/16_toc/toc_depth_2.text +0 -16
  653. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/encoding.html +0 -46
  654. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/encoding.text +0 -28
  655. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/01_link/empty.html +0 -5
  656. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/01_link/empty.text +0 -5
  657. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/01_link/image_in_a.html +0 -5
  658. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/01_link/image_in_a.text +0 -5
  659. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/01_link/imagelinks.html +0 -14
  660. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/01_link/imagelinks.text +0 -16
  661. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/01_link/inline.html +0 -46
  662. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/01_link/inline.html.19 +0 -46
  663. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/01_link/inline.text +0 -48
  664. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/01_link/link_defs.html +0 -9
  665. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/01_link/link_defs.text +0 -26
  666. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/01_link/links_with_angle_brackets.html +0 -3
  667. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/01_link/links_with_angle_brackets.text +0 -3
  668. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/01_link/reference.html +0 -35
  669. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/01_link/reference.html.19 +0 -35
  670. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/01_link/reference.text +0 -47
  671. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/02_emphasis/empty.html +0 -3
  672. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/02_emphasis/empty.text +0 -3
  673. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/02_emphasis/errors.html +0 -9
  674. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/02_emphasis/errors.text +0 -9
  675. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/02_emphasis/nesting.html +0 -38
  676. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/02_emphasis/nesting.text +0 -33
  677. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/02_emphasis/normal.html +0 -46
  678. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/02_emphasis/normal.text +0 -46
  679. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/03_codespan/empty.html +0 -5
  680. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/03_codespan/empty.text +0 -5
  681. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/03_codespan/errors.html +0 -1
  682. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/03_codespan/errors.text +0 -1
  683. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/03_codespan/highlighting.html +0 -1
  684. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/03_codespan/highlighting.text +0 -1
  685. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/03_codespan/normal.html +0 -16
  686. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/03_codespan/normal.text +0 -16
  687. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/04_footnote/definitions.html +0 -17
  688. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/04_footnote/definitions.latex +0 -17
  689. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/04_footnote/definitions.text +0 -24
  690. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/04_footnote/footnote_nr.html +0 -12
  691. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/04_footnote/footnote_nr.latex +0 -2
  692. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/04_footnote/footnote_nr.options +0 -1
  693. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/04_footnote/footnote_nr.text +0 -4
  694. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/04_footnote/markers.html +0 -46
  695. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/04_footnote/markers.latex +0 -23
  696. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/04_footnote/markers.text +0 -26
  697. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/05_html/across_lines.html +0 -1
  698. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/05_html/across_lines.text +0 -2
  699. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/05_html/invalid.html +0 -1
  700. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/05_html/invalid.text +0 -1
  701. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/05_html/link_with_mailto.html +0 -1
  702. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/05_html/link_with_mailto.text +0 -1
  703. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/05_html/markdown_attr.html +0 -6
  704. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/05_html/markdown_attr.text +0 -6
  705. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/05_html/normal.html +0 -30
  706. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/05_html/normal.text +0 -30
  707. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/abbreviations/abbrev.html +0 -8
  708. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/abbreviations/abbrev.text +0 -15
  709. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/abbreviations/abbrev_defs.html +0 -2
  710. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/abbreviations/abbrev_defs.text +0 -5
  711. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/autolinks/url_links.html +0 -12
  712. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/autolinks/url_links.text +0 -12
  713. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/escaped_chars/normal.html +0 -43
  714. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/escaped_chars/normal.text +0 -43
  715. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/extension/comment.html +0 -6
  716. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/extension/comment.text +0 -6
  717. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/extension/ignored.html +0 -1
  718. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/extension/ignored.text +0 -1
  719. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/extension/nomarkdown.html +0 -1
  720. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/extension/nomarkdown.text +0 -1
  721. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/extension/options.html +0 -1
  722. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/extension/options.text +0 -1
  723. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/ial/simple.html +0 -6
  724. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/ial/simple.text +0 -6
  725. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/line_breaks/normal.html +0 -11
  726. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/line_breaks/normal.latex +0 -12
  727. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/line_breaks/normal.text +0 -11
  728. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/math/normal.html +0 -5
  729. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/math/normal.text +0 -5
  730. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/text_substitutions/entities.html +0 -4
  731. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/text_substitutions/entities.options +0 -1
  732. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/text_substitutions/entities.text +0 -4
  733. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/text_substitutions/entities_as_char.html +0 -1
  734. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/text_substitutions/entities_as_char.html.19 +0 -1
  735. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/text_substitutions/entities_as_char.options +0 -1
  736. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/text_substitutions/entities_as_char.text +0 -1
  737. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/text_substitutions/entities_as_input.html +0 -1
  738. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/text_substitutions/entities_as_input.options +0 -1
  739. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/text_substitutions/entities_as_input.text +0 -1
  740. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/text_substitutions/entities_numeric.html +0 -1
  741. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/text_substitutions/entities_numeric.options +0 -1
  742. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/text_substitutions/entities_numeric.text +0 -1
  743. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/text_substitutions/entities_symbolic.html +0 -1
  744. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/text_substitutions/entities_symbolic.options +0 -1
  745. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/text_substitutions/entities_symbolic.text +0 -1
  746. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/text_substitutions/greaterthan.html +0 -1
  747. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/text_substitutions/greaterthan.text +0 -1
  748. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/text_substitutions/lowerthan.html +0 -1
  749. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/text_substitutions/lowerthan.text +0 -1
  750. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/text_substitutions/typography.html +0 -18
  751. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/text_substitutions/typography.html.19 +0 -18
  752. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/text_substitutions/typography.text +0 -18
  753. data/vendor/extensions/russian_language_pack/README +0 -5
  754. data/vendor/extensions/russian_language_pack/Rakefile +0 -123
  755. data/vendor/extensions/russian_language_pack/config/locales/ru.yml +0 -189
  756. data/vendor/extensions/russian_language_pack/config/locales/ru_available_tags.yml +0 -551
  757. data/vendor/extensions/russian_language_pack/lib/tasks/i18n_ru_extension_tasks.rake +0 -28
  758. data/vendor/extensions/russian_language_pack/russian_language_pack_extension.rb +0 -9
  759. data/vendor/extensions/sheets/LICENSE +0 -21
  760. data/vendor/extensions/sheets/README.md +0 -33
  761. data/vendor/extensions/sheets/Rakefile +0 -129
  762. data/vendor/extensions/sheets/app/controllers/admin/scripts_controller.rb +0 -13
  763. data/vendor/extensions/sheets/app/controllers/admin/sheet_resource_controller.rb +0 -54
  764. data/vendor/extensions/sheets/app/controllers/admin/styles_controller.rb +0 -13
  765. data/vendor/extensions/sheets/app/helpers/admin/scripts_helper.rb +0 -5
  766. data/vendor/extensions/sheets/app/helpers/admin/styles_helper.rb +0 -5
  767. data/vendor/extensions/sheets/app/models/javascript_page.rb +0 -16
  768. data/vendor/extensions/sheets/app/models/sheet.rb +0 -93
  769. data/vendor/extensions/sheets/app/models/stylesheet_page.rb +0 -16
  770. data/vendor/extensions/sheets/app/views/admin/scripts/edit.html.haml +0 -30
  771. data/vendor/extensions/sheets/app/views/admin/scripts/index.html.haml +0 -31
  772. data/vendor/extensions/sheets/app/views/admin/scripts/new.html.haml +0 -30
  773. data/vendor/extensions/sheets/app/views/admin/sheets/_edit_scripts.html.haml +0 -40
  774. data/vendor/extensions/sheets/app/views/admin/sheets/_upload_script.html.haml +0 -16
  775. data/vendor/extensions/sheets/app/views/admin/styles/edit.html.haml +0 -30
  776. data/vendor/extensions/sheets/app/views/admin/styles/index.html.haml +0 -31
  777. data/vendor/extensions/sheets/app/views/admin/styles/new.html.haml +0 -30
  778. data/vendor/extensions/sheets/config/locales/en.yml +0 -17
  779. data/vendor/extensions/sheets/config/routes.rb +0 -6
  780. data/vendor/extensions/sheets/cucumber.yml +0 -1
  781. data/vendor/extensions/sheets/features/admin/managing_javascripts.feature +0 -65
  782. data/vendor/extensions/sheets/features/admin/managing_stylesheets.feature +0 -65
  783. data/vendor/extensions/sheets/features/support/env.rb +0 -11
  784. data/vendor/extensions/sheets/features/support/paths.rb +0 -11
  785. data/vendor/extensions/sheets/lib/javascript_tags.rb +0 -58
  786. data/vendor/extensions/sheets/lib/radiant-sheets-extension.rb +0 -2
  787. data/vendor/extensions/sheets/lib/radiant-sheets-extension/version.rb +0 -3
  788. data/vendor/extensions/sheets/lib/sass_filter.rb +0 -16
  789. data/vendor/extensions/sheets/lib/stylesheet_tags.rb +0 -61
  790. data/vendor/extensions/sheets/lib/tasks/sheets_extension_tasks.rake +0 -79
  791. data/vendor/extensions/sheets/public/images/admin/javascript.png +0 -0
  792. data/vendor/extensions/sheets/public/images/admin/stylesheet.png +0 -0
  793. data/vendor/extensions/sheets/radiant-sheets-extension.gemspec +0 -29
  794. data/vendor/extensions/sheets/sass.html +0 -82
  795. data/vendor/extensions/sheets/sheets_extension.rb +0 -88
  796. data/vendor/extensions/sheets/spec/controllers/admin/scripts_controller_spec.rb +0 -123
  797. data/vendor/extensions/sheets/spec/controllers/admin/styles_controller_spec.rb +0 -124
  798. data/vendor/extensions/sheets/spec/datasets/javascripts_dataset.rb +0 -12
  799. data/vendor/extensions/sheets/spec/datasets/stylesheets_dataset.rb +0 -17
  800. data/vendor/extensions/sheets/spec/helpers/admin/scripts_helper_spec.rb +0 -5
  801. data/vendor/extensions/sheets/spec/helpers/admin/styles_helper_spec.rb +0 -5
  802. data/vendor/extensions/sheets/spec/lib/javascript_tags_spec.rb +0 -36
  803. data/vendor/extensions/sheets/spec/lib/stylesheet_tags_spec.rb +0 -41
  804. data/vendor/extensions/sheets/spec/models/javascript_page_spec.rb +0 -80
  805. data/vendor/extensions/sheets/spec/models/page_spec.rb +0 -5
  806. data/vendor/extensions/sheets/spec/models/stylesheet_page_spec.rb +0 -80
  807. data/vendor/extensions/sheets/spec/spec.opts +0 -6
  808. data/vendor/extensions/sheets/spec/spec_helper.rb +0 -36
  809. data/vendor/extensions/site_templates/README +0 -3
  810. data/vendor/extensions/site_templates/Rakefile +0 -136
  811. data/vendor/extensions/site_templates/db/templates/empty.yml +0 -2
  812. data/vendor/extensions/site_templates/db/templates/roasters.yml +0 -7826
  813. data/vendor/extensions/site_templates/db/templates/simple-blog.yml +0 -251
  814. data/vendor/extensions/site_templates/db/templates/styled-blog.yml +0 -535
  815. data/vendor/extensions/site_templates/lib/tasks/site_templates_extension_tasks.rake +0 -55
  816. data/vendor/extensions/site_templates/site_templates_extension.rb +0 -8
  817. data/vendor/extensions/smarty_pants_filter/README +0 -1
  818. data/vendor/extensions/smarty_pants_filter/Rakefile +0 -136
  819. data/vendor/extensions/smarty_pants_filter/lib/smarty_pants_filter.rb +0 -7
  820. data/vendor/extensions/smarty_pants_filter/lib/smarty_pants_tags.rb +0 -18
  821. data/vendor/extensions/smarty_pants_filter/lib/tasks/smarty_pants_filter_extension_tasks.rake +0 -28
  822. data/vendor/extensions/smarty_pants_filter/smarty_pants_filter_extension.rb +0 -18
  823. data/vendor/extensions/smarty_pants_filter/smartypants.html +0 -47
  824. data/vendor/extensions/smarty_pants_filter/spec/models/smarty_pants_filter_spec.rb +0 -19
  825. data/vendor/extensions/smarty_pants_filter/spec/spec.opts +0 -6
  826. data/vendor/extensions/smarty_pants_filter/spec/spec_helper.rb +0 -36
  827. data/vendor/extensions/smarty_pants_filter/test/test_helper.rb +0 -19
  828. data/vendor/extensions/smarty_pants_filter/test/unit/smarty_pants_filter_test.rb +0 -14
  829. data/vendor/extensions/smarty_pants_filter/vendor/rubypants/README +0 -114
  830. data/vendor/extensions/smarty_pants_filter/vendor/rubypants/Rakefile +0 -84
  831. data/vendor/extensions/smarty_pants_filter/vendor/rubypants/install.rb +0 -9
  832. data/vendor/extensions/smarty_pants_filter/vendor/rubypants/rubypants.rb +0 -490
  833. data/vendor/extensions/smarty_pants_filter/vendor/rubypants/test_rubypants.rb +0 -162
  834. data/vendor/extensions/textile_filter/README +0 -1
  835. data/vendor/extensions/textile_filter/Rakefile +0 -120
  836. data/vendor/extensions/textile_filter/lib/textile_filter.rb +0 -6
  837. data/vendor/extensions/textile_filter/lib/textile_tags.rb +0 -24
  838. data/vendor/extensions/textile_filter/spec/models/textile_filter_spec.rb +0 -19
  839. data/vendor/extensions/textile_filter/spec/spec.opts +0 -6
  840. data/vendor/extensions/textile_filter/spec/spec_helper.rb +0 -36
  841. data/vendor/extensions/textile_filter/test/test_helper.rb +0 -19
  842. data/vendor/extensions/textile_filter/test/unit/textile_filter_test.rb +0 -13
  843. data/vendor/extensions/textile_filter/textile.html +0 -115
  844. data/vendor/extensions/textile_filter/textile_filter_extension.rb +0 -10
  845. data/vendor/highline/CHANGELOG +0 -222
  846. data/vendor/highline/INSTALL +0 -35
  847. data/vendor/highline/LICENSE +0 -7
  848. data/vendor/highline/README +0 -63
  849. data/vendor/highline/Rakefile +0 -82
  850. data/vendor/highline/TODO +0 -6
  851. data/vendor/highline/examples/ansi_colors.rb +0 -38
  852. data/vendor/highline/examples/asking_for_arrays.rb +0 -18
  853. data/vendor/highline/examples/basic_usage.rb +0 -75
  854. data/vendor/highline/examples/color_scheme.rb +0 -32
  855. data/vendor/highline/examples/limit.rb +0 -12
  856. data/vendor/highline/examples/menus.rb +0 -65
  857. data/vendor/highline/examples/overwrite.rb +0 -19
  858. data/vendor/highline/examples/page_and_wrap.rb +0 -322
  859. data/vendor/highline/examples/password.rb +0 -7
  860. data/vendor/highline/examples/trapping_eof.rb +0 -22
  861. data/vendor/highline/examples/using_readline.rb +0 -17
  862. data/vendor/highline/lib/highline.rb +0 -758
  863. data/vendor/highline/lib/highline/color_scheme.rb +0 -120
  864. data/vendor/highline/lib/highline/compatibility.rb +0 -17
  865. data/vendor/highline/lib/highline/import.rb +0 -43
  866. data/vendor/highline/lib/highline/menu.rb +0 -395
  867. data/vendor/highline/lib/highline/question.rb +0 -463
  868. data/vendor/highline/lib/highline/system_extensions.rb +0 -193
  869. data/vendor/highline/setup.rb +0 -1360
  870. data/vendor/highline/test/tc_color_scheme.rb +0 -56
  871. data/vendor/highline/test/tc_highline.rb +0 -823
  872. data/vendor/highline/test/tc_import.rb +0 -54
  873. data/vendor/highline/test/tc_menu.rb +0 -429
  874. data/vendor/highline/test/ts_all.rb +0 -15
  875. data/vendor/plugins/acts_as_tree/README +0 -26
  876. data/vendor/plugins/acts_as_tree/Rakefile +0 -22
  877. data/vendor/plugins/acts_as_tree/init.rb +0 -1
  878. data/vendor/plugins/acts_as_tree/lib/active_record/acts/tree.rb +0 -96
  879. data/vendor/plugins/acts_as_tree/test/abstract_unit.rb +0 -0
  880. data/vendor/plugins/acts_as_tree/test/acts_as_tree_test.rb +0 -219
  881. data/vendor/plugins/acts_as_tree/test/database.yml +0 -0
  882. data/vendor/plugins/acts_as_tree/test/fixtures/mixin.rb +0 -0
  883. data/vendor/plugins/acts_as_tree/test/fixtures/mixins.yml +0 -0
  884. data/vendor/plugins/acts_as_tree/test/schema.rb +0 -0
  885. data/vendor/rack-cache/CHANGES +0 -128
  886. data/vendor/rack-cache/COPYING +0 -18
  887. data/vendor/rack-cache/README +0 -110
  888. data/vendor/rack-cache/Rakefile +0 -137
  889. data/vendor/rack-cache/TODO +0 -31
  890. data/vendor/rack-cache/doc/configuration.markdown +0 -86
  891. data/vendor/rack-cache/doc/faq.markdown +0 -141
  892. data/vendor/rack-cache/doc/index.markdown +0 -118
  893. data/vendor/rack-cache/doc/layout.html.erb +0 -34
  894. data/vendor/rack-cache/doc/license.markdown +0 -24
  895. data/vendor/rack-cache/doc/rack-cache.css +0 -362
  896. data/vendor/rack-cache/doc/server.ru +0 -34
  897. data/vendor/rack-cache/doc/storage.markdown +0 -162
  898. data/vendor/rack-cache/example/sinatra/app.rb +0 -25
  899. data/vendor/rack-cache/example/sinatra/views/index.erb +0 -44
  900. data/vendor/rack-cache/lib/rack/cache.rb +0 -45
  901. data/vendor/rack-cache/lib/rack/cache/cachecontrol.rb +0 -193
  902. data/vendor/rack-cache/lib/rack/cache/context.rb +0 -233
  903. data/vendor/rack-cache/lib/rack/cache/entitystore.rb +0 -253
  904. data/vendor/rack-cache/lib/rack/cache/key.rb +0 -52
  905. data/vendor/rack-cache/lib/rack/cache/metastore.rb +0 -328
  906. data/vendor/rack-cache/lib/rack/cache/options.rb +0 -150
  907. data/vendor/rack-cache/lib/rack/cache/request.rb +0 -33
  908. data/vendor/rack-cache/lib/rack/cache/response.rb +0 -267
  909. data/vendor/rack-cache/lib/rack/cache/storage.rb +0 -49
  910. data/vendor/rack-cache/rack-cache.gemspec +0 -69
  911. data/vendor/rack-cache/test/cache_test.rb +0 -38
  912. data/vendor/rack-cache/test/cachecontrol_test.rb +0 -139
  913. data/vendor/rack-cache/test/context_test.rb +0 -727
  914. data/vendor/rack-cache/test/entitystore_test.rb +0 -189
  915. data/vendor/rack-cache/test/key_test.rb +0 -50
  916. data/vendor/rack-cache/test/metastore_test.rb +0 -263
  917. data/vendor/rack-cache/test/options_test.rb +0 -78
  918. data/vendor/rack-cache/test/pony.jpg +0 -0
  919. data/vendor/rack-cache/test/request_test.rb +0 -19
  920. data/vendor/rack-cache/test/response_test.rb +0 -178
  921. data/vendor/rack-cache/test/spec_setup.rb +0 -202
  922. data/vendor/rack-cache/test/storage_test.rb +0 -94
  923. data/vendor/radius/CHANGELOG +0 -33
  924. data/vendor/radius/LICENSE +0 -19
  925. data/vendor/radius/QUICKSTART.rdoc +0 -322
  926. data/vendor/radius/README.rdoc +0 -102
  927. data/vendor/radius/Rakefile +0 -8
  928. data/vendor/radius/VERSION +0 -1
  929. data/vendor/radius/lib/radius.rb +0 -10
  930. data/vendor/radius/lib/radius/context.rb +0 -139
  931. data/vendor/radius/lib/radius/delegating_open_struct.rb +0 -31
  932. data/vendor/radius/lib/radius/error.rb +0 -43
  933. data/vendor/radius/lib/radius/parse_tag.rb +0 -24
  934. data/vendor/radius/lib/radius/parser.rb +0 -65
  935. data/vendor/radius/lib/radius/parser/scan.rb +0 -678
  936. data/vendor/radius/lib/radius/parser/scan.rl +0 -124
  937. data/vendor/radius/lib/radius/tag_binding.rb +0 -71
  938. data/vendor/radius/lib/radius/tag_definitions.rb +0 -78
  939. data/vendor/radius/lib/radius/utility.rb +0 -30
  940. data/vendor/radius/lib/radius/version.rb +0 -8
  941. data/vendor/radius/radius.gemspec +0 -71
  942. data/vendor/radius/tasks/jeweler.rake +0 -21
  943. data/vendor/radius/tasks/rdoc.rake +0 -13
  944. data/vendor/radius/tasks/scan.rake +0 -27
  945. data/vendor/radius/tasks/test.rake +0 -7
  946. data/vendor/radius/test/context_test.rb +0 -61
  947. data/vendor/radius/test/parser_test.rb +0 -295
  948. data/vendor/radius/test/quickstart_test.rb +0 -153
  949. data/vendor/radius/test/test_helper.rb +0 -29
  950. data/vendor/rails/Rakefile +0 -83
  951. data/vendor/rails/actionmailer/CHANGELOG +0 -387
  952. data/vendor/rails/actionmailer/MIT-LICENSE +0 -21
  953. data/vendor/rails/actionmailer/README +0 -149
  954. data/vendor/rails/actionmailer/Rakefile +0 -99
  955. data/vendor/rails/actionmailer/install.rb +0 -30
  956. data/vendor/rails/actionmailer/lib/action_mailer.rb +0 -62
  957. data/vendor/rails/actionmailer/lib/action_mailer/adv_attr_accessor.rb +0 -30
  958. data/vendor/rails/actionmailer/lib/action_mailer/base.rb +0 -739
  959. data/vendor/rails/actionmailer/lib/action_mailer/helpers.rb +0 -113
  960. data/vendor/rails/actionmailer/lib/action_mailer/mail_helper.rb +0 -17
  961. data/vendor/rails/actionmailer/lib/action_mailer/part.rb +0 -107
  962. data/vendor/rails/actionmailer/lib/action_mailer/part_container.rb +0 -55
  963. data/vendor/rails/actionmailer/lib/action_mailer/quoting.rb +0 -62
  964. data/vendor/rails/actionmailer/lib/action_mailer/test_case.rb +0 -64
  965. data/vendor/rails/actionmailer/lib/action_mailer/test_helper.rb +0 -68
  966. data/vendor/rails/actionmailer/lib/action_mailer/utils.rb +0 -7
  967. data/vendor/rails/actionmailer/lib/action_mailer/vendor/text-format-0.6.3/text/format.rb +0 -1466
  968. data/vendor/rails/actionmailer/lib/action_mailer/vendor/text_format.rb +0 -10
  969. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail.rb +0 -6
  970. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/Makefile +0 -18
  971. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/address.rb +0 -392
  972. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/attachments.rb +0 -65
  973. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/base64.rb +0 -46
  974. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/compat.rb +0 -41
  975. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/config.rb +0 -67
  976. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/core_extensions.rb +0 -63
  977. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/encode.rb +0 -590
  978. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/header.rb +0 -962
  979. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/index.rb +0 -9
  980. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/interface.rb +0 -1162
  981. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/loader.rb +0 -3
  982. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/mail.rb +0 -578
  983. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/mailbox.rb +0 -496
  984. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/main.rb +0 -6
  985. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/mbox.rb +0 -3
  986. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/net.rb +0 -250
  987. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/obsolete.rb +0 -132
  988. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/parser.rb +0 -1060
  989. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/parser.y +0 -416
  990. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/port.rb +0 -379
  991. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/quoting.rb +0 -164
  992. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/require_arch.rb +0 -58
  993. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/scanner.rb +0 -49
  994. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/scanner_r.rb +0 -262
  995. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/stringio.rb +0 -280
  996. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/utils.rb +0 -362
  997. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/COPYING +0 -504
  998. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/README +0 -12
  999. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet.rb +0 -67
  1000. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/big5freq.rb +0 -927
  1001. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/big5prober.rb +0 -42
  1002. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/chardistribution.rb +0 -238
  1003. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/charsetgroupprober.rb +0 -112
  1004. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/charsetprober.rb +0 -75
  1005. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/codingstatemachine.rb +0 -64
  1006. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/constants.rb +0 -42
  1007. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/escprober.rb +0 -89
  1008. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/escsm.rb +0 -244
  1009. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/eucjpprober.rb +0 -88
  1010. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/euckrfreq.rb +0 -596
  1011. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/euckrprober.rb +0 -42
  1012. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/euctwfreq.rb +0 -430
  1013. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/euctwprober.rb +0 -42
  1014. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/gb2312freq.rb +0 -474
  1015. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/gb2312prober.rb +0 -42
  1016. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/hebrewprober.rb +0 -289
  1017. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/jisfreq.rb +0 -570
  1018. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/jpcntx.rb +0 -229
  1019. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/langbulgarianmodel.rb +0 -229
  1020. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/langcyrillicmodel.rb +0 -330
  1021. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/langgreekmodel.rb +0 -227
  1022. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/langhebrewmodel.rb +0 -202
  1023. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/langhungarianmodel.rb +0 -226
  1024. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/langthaimodel.rb +0 -201
  1025. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/latin1prober.rb +0 -147
  1026. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/mbcharsetprober.rb +0 -89
  1027. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/mbcsgroupprober.rb +0 -45
  1028. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/mbcssm.rb +0 -542
  1029. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/sbcharsetprober.rb +0 -124
  1030. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/sbcsgroupprober.rb +0 -56
  1031. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/sjisprober.rb +0 -88
  1032. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/universaldetector.rb +0 -168
  1033. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/utf8prober.rb +0 -87
  1034. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.7/tmail/version.rb +0 -39
  1035. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail.rb +0 -17
  1036. data/vendor/rails/actionmailer/lib/action_mailer/version.rb +0 -9
  1037. data/vendor/rails/actionmailer/lib/actionmailer.rb +0 -2
  1038. data/vendor/rails/actionmailer/test/abstract_unit.rb +0 -62
  1039. data/vendor/rails/actionmailer/test/asset_host_test.rb +0 -54
  1040. data/vendor/rails/actionmailer/test/delivery_method_test.rb +0 -51
  1041. data/vendor/rails/actionmailer/test/fixtures/asset_host_mailer/email_with_asset.html.erb +0 -1
  1042. data/vendor/rails/actionmailer/test/fixtures/auto_layout_mailer/hello.html.erb +0 -1
  1043. data/vendor/rails/actionmailer/test/fixtures/auto_layout_mailer/multipart.text.html.erb +0 -1
  1044. data/vendor/rails/actionmailer/test/fixtures/auto_layout_mailer/multipart.text.plain.erb +0 -1
  1045. data/vendor/rails/actionmailer/test/fixtures/explicit_layout_mailer/logout.html.erb +0 -1
  1046. data/vendor/rails/actionmailer/test/fixtures/explicit_layout_mailer/signup.html.erb +0 -1
  1047. data/vendor/rails/actionmailer/test/fixtures/first_mailer/share.erb +0 -1
  1048. data/vendor/rails/actionmailer/test/fixtures/helper_mailer/use_example_helper.erb +0 -1
  1049. data/vendor/rails/actionmailer/test/fixtures/helper_mailer/use_helper.erb +0 -1
  1050. data/vendor/rails/actionmailer/test/fixtures/helper_mailer/use_helper_method.erb +0 -1
  1051. data/vendor/rails/actionmailer/test/fixtures/helper_mailer/use_mail_helper.erb +0 -5
  1052. data/vendor/rails/actionmailer/test/fixtures/helpers/example_helper.rb +0 -5
  1053. data/vendor/rails/actionmailer/test/fixtures/layouts/auto_layout_mailer.html.erb +0 -1
  1054. data/vendor/rails/actionmailer/test/fixtures/layouts/auto_layout_mailer.text.erb +0 -1
  1055. data/vendor/rails/actionmailer/test/fixtures/layouts/spam.html.erb +0 -1
  1056. data/vendor/rails/actionmailer/test/fixtures/path.with.dots/funky_path_mailer/multipart_with_template_path_with_dots.erb +0 -1
  1057. data/vendor/rails/actionmailer/test/fixtures/raw_email +0 -14
  1058. data/vendor/rails/actionmailer/test/fixtures/raw_email10 +0 -20
  1059. data/vendor/rails/actionmailer/test/fixtures/raw_email12 +0 -32
  1060. data/vendor/rails/actionmailer/test/fixtures/raw_email13 +0 -29
  1061. data/vendor/rails/actionmailer/test/fixtures/raw_email2 +0 -114
  1062. data/vendor/rails/actionmailer/test/fixtures/raw_email3 +0 -70
  1063. data/vendor/rails/actionmailer/test/fixtures/raw_email4 +0 -59
  1064. data/vendor/rails/actionmailer/test/fixtures/raw_email5 +0 -19
  1065. data/vendor/rails/actionmailer/test/fixtures/raw_email6 +0 -20
  1066. data/vendor/rails/actionmailer/test/fixtures/raw_email7 +0 -66
  1067. data/vendor/rails/actionmailer/test/fixtures/raw_email8 +0 -47
  1068. data/vendor/rails/actionmailer/test/fixtures/raw_email9 +0 -28
  1069. data/vendor/rails/actionmailer/test/fixtures/raw_email_quoted_with_0d0a +0 -14
  1070. data/vendor/rails/actionmailer/test/fixtures/raw_email_with_invalid_characters_in_content_type +0 -104
  1071. data/vendor/rails/actionmailer/test/fixtures/raw_email_with_nested_attachment +0 -100
  1072. data/vendor/rails/actionmailer/test/fixtures/raw_email_with_partially_quoted_subject +0 -14
  1073. data/vendor/rails/actionmailer/test/fixtures/second_mailer/share.erb +0 -1
  1074. data/vendor/rails/actionmailer/test/fixtures/templates/signed_up.erb +0 -3
  1075. data/vendor/rails/actionmailer/test/fixtures/test_mailer/_subtemplate.text.plain.erb +0 -1
  1076. data/vendor/rails/actionmailer/test/fixtures/test_mailer/body_ivar.erb +0 -2
  1077. data/vendor/rails/actionmailer/test/fixtures/test_mailer/custom_templating_extension.text.html.haml +0 -6
  1078. data/vendor/rails/actionmailer/test/fixtures/test_mailer/custom_templating_extension.text.plain.haml +0 -6
  1079. data/vendor/rails/actionmailer/test/fixtures/test_mailer/implicitly_multipart_example.ignored.erb +0 -1
  1080. data/vendor/rails/actionmailer/test/fixtures/test_mailer/implicitly_multipart_example.rhtml.bak +0 -1
  1081. data/vendor/rails/actionmailer/test/fixtures/test_mailer/implicitly_multipart_example.text.html.erb +0 -10
  1082. data/vendor/rails/actionmailer/test/fixtures/test_mailer/implicitly_multipart_example.text.html.erb~ +0 -10
  1083. data/vendor/rails/actionmailer/test/fixtures/test_mailer/implicitly_multipart_example.text.plain.erb +0 -2
  1084. data/vendor/rails/actionmailer/test/fixtures/test_mailer/implicitly_multipart_example.text.yaml.erb +0 -1
  1085. data/vendor/rails/actionmailer/test/fixtures/test_mailer/included_subtemplate.text.plain.erb +0 -1
  1086. data/vendor/rails/actionmailer/test/fixtures/test_mailer/rxml_template.builder +0 -2
  1087. data/vendor/rails/actionmailer/test/fixtures/test_mailer/rxml_template.rxml +0 -2
  1088. data/vendor/rails/actionmailer/test/fixtures/test_mailer/signed_up.html.erb +0 -3
  1089. data/vendor/rails/actionmailer/test/fixtures/test_mailer/signed_up_with_url.erb +0 -5
  1090. data/vendor/rails/actionmailer/test/mail_helper_test.rb +0 -95
  1091. data/vendor/rails/actionmailer/test/mail_layout_test.rb +0 -123
  1092. data/vendor/rails/actionmailer/test/mail_render_test.rb +0 -116
  1093. data/vendor/rails/actionmailer/test/mail_service_test.rb +0 -1145
  1094. data/vendor/rails/actionmailer/test/quoting_test.rb +0 -105
  1095. data/vendor/rails/actionmailer/test/test_helper_test.rb +0 -129
  1096. data/vendor/rails/actionmailer/test/tmail_test.rb +0 -22
  1097. data/vendor/rails/actionmailer/test/url_test.rb +0 -76
  1098. data/vendor/rails/actionpack/CHANGELOG +0 -5250
  1099. data/vendor/rails/actionpack/MIT-LICENSE +0 -21
  1100. data/vendor/rails/actionpack/README +0 -409
  1101. data/vendor/rails/actionpack/RUNNING_UNIT_TESTS +0 -24
  1102. data/vendor/rails/actionpack/Rakefile +0 -160
  1103. data/vendor/rails/actionpack/install.rb +0 -30
  1104. data/vendor/rails/actionpack/lib/action_controller.rb +0 -113
  1105. data/vendor/rails/actionpack/lib/action_controller/assertions/dom_assertions.rb +0 -55
  1106. data/vendor/rails/actionpack/lib/action_controller/assertions/model_assertions.rb +0 -21
  1107. data/vendor/rails/actionpack/lib/action_controller/assertions/response_assertions.rb +0 -169
  1108. data/vendor/rails/actionpack/lib/action_controller/assertions/routing_assertions.rb +0 -146
  1109. data/vendor/rails/actionpack/lib/action_controller/assertions/selector_assertions.rb +0 -638
  1110. data/vendor/rails/actionpack/lib/action_controller/assertions/tag_assertions.rb +0 -127
  1111. data/vendor/rails/actionpack/lib/action_controller/base.rb +0 -1425
  1112. data/vendor/rails/actionpack/lib/action_controller/benchmarking.rb +0 -107
  1113. data/vendor/rails/actionpack/lib/action_controller/caching.rb +0 -71
  1114. data/vendor/rails/actionpack/lib/action_controller/caching/actions.rb +0 -177
  1115. data/vendor/rails/actionpack/lib/action_controller/caching/fragments.rb +0 -120
  1116. data/vendor/rails/actionpack/lib/action_controller/caching/pages.rb +0 -152
  1117. data/vendor/rails/actionpack/lib/action_controller/caching/sweeper.rb +0 -45
  1118. data/vendor/rails/actionpack/lib/action_controller/caching/sweeping.rb +0 -55
  1119. data/vendor/rails/actionpack/lib/action_controller/cgi_ext.rb +0 -15
  1120. data/vendor/rails/actionpack/lib/action_controller/cgi_ext/cookie.rb +0 -112
  1121. data/vendor/rails/actionpack/lib/action_controller/cgi_ext/query_extension.rb +0 -22
  1122. data/vendor/rails/actionpack/lib/action_controller/cgi_ext/stdinput.rb +0 -24
  1123. data/vendor/rails/actionpack/lib/action_controller/cgi_process.rb +0 -77
  1124. data/vendor/rails/actionpack/lib/action_controller/cookies.rb +0 -197
  1125. data/vendor/rails/actionpack/lib/action_controller/dispatcher.rb +0 -133
  1126. data/vendor/rails/actionpack/lib/action_controller/failsafe.rb +0 -87
  1127. data/vendor/rails/actionpack/lib/action_controller/filters.rb +0 -680
  1128. data/vendor/rails/actionpack/lib/action_controller/flash.rb +0 -213
  1129. data/vendor/rails/actionpack/lib/action_controller/headers.rb +0 -33
  1130. data/vendor/rails/actionpack/lib/action_controller/helpers.rb +0 -225
  1131. data/vendor/rails/actionpack/lib/action_controller/http_authentication.rb +0 -309
  1132. data/vendor/rails/actionpack/lib/action_controller/integration.rb +0 -708
  1133. data/vendor/rails/actionpack/lib/action_controller/layout.rb +0 -286
  1134. data/vendor/rails/actionpack/lib/action_controller/middleware_stack.rb +0 -119
  1135. data/vendor/rails/actionpack/lib/action_controller/middlewares.rb +0 -14
  1136. data/vendor/rails/actionpack/lib/action_controller/mime_responds.rb +0 -193
  1137. data/vendor/rails/actionpack/lib/action_controller/mime_type.rb +0 -212
  1138. data/vendor/rails/actionpack/lib/action_controller/mime_types.rb +0 -21
  1139. data/vendor/rails/actionpack/lib/action_controller/params_parser.rb +0 -77
  1140. data/vendor/rails/actionpack/lib/action_controller/performance_test.rb +0 -15
  1141. data/vendor/rails/actionpack/lib/action_controller/polymorphic_routes.rb +0 -189
  1142. data/vendor/rails/actionpack/lib/action_controller/rack_lint_patch.rb +0 -36
  1143. data/vendor/rails/actionpack/lib/action_controller/record_identifier.rb +0 -104
  1144. data/vendor/rails/actionpack/lib/action_controller/reloader.rb +0 -54
  1145. data/vendor/rails/actionpack/lib/action_controller/request.rb +0 -493
  1146. data/vendor/rails/actionpack/lib/action_controller/request_forgery_protection.rb +0 -116
  1147. data/vendor/rails/actionpack/lib/action_controller/rescue.rb +0 -183
  1148. data/vendor/rails/actionpack/lib/action_controller/resources.rb +0 -682
  1149. data/vendor/rails/actionpack/lib/action_controller/response.rb +0 -236
  1150. data/vendor/rails/actionpack/lib/action_controller/routing.rb +0 -388
  1151. data/vendor/rails/actionpack/lib/action_controller/routing/builder.rb +0 -197
  1152. data/vendor/rails/actionpack/lib/action_controller/routing/optimisations.rb +0 -130
  1153. data/vendor/rails/actionpack/lib/action_controller/routing/recognition_optimisation.rb +0 -167
  1154. data/vendor/rails/actionpack/lib/action_controller/routing/route.rb +0 -265
  1155. data/vendor/rails/actionpack/lib/action_controller/routing/route_set.rb +0 -503
  1156. data/vendor/rails/actionpack/lib/action_controller/routing/routing_ext.rb +0 -49
  1157. data/vendor/rails/actionpack/lib/action_controller/routing/segments.rb +0 -343
  1158. data/vendor/rails/actionpack/lib/action_controller/session/abstract_store.rb +0 -275
  1159. data/vendor/rails/actionpack/lib/action_controller/session/cookie_store.rb +0 -240
  1160. data/vendor/rails/actionpack/lib/action_controller/session/mem_cache_store.rb +0 -60
  1161. data/vendor/rails/actionpack/lib/action_controller/session_management.rb +0 -54
  1162. data/vendor/rails/actionpack/lib/action_controller/status_codes.rb +0 -88
  1163. data/vendor/rails/actionpack/lib/action_controller/streaming.rb +0 -181
  1164. data/vendor/rails/actionpack/lib/action_controller/string_coercion.rb +0 -29
  1165. data/vendor/rails/actionpack/lib/action_controller/templates/rescues/_request_and_response.erb +0 -24
  1166. data/vendor/rails/actionpack/lib/action_controller/templates/rescues/_trace.erb +0 -26
  1167. data/vendor/rails/actionpack/lib/action_controller/templates/rescues/diagnostics.erb +0 -11
  1168. data/vendor/rails/actionpack/lib/action_controller/templates/rescues/layout.erb +0 -29
  1169. data/vendor/rails/actionpack/lib/action_controller/templates/rescues/missing_template.erb +0 -2
  1170. data/vendor/rails/actionpack/lib/action_controller/templates/rescues/routing_error.erb +0 -10
  1171. data/vendor/rails/actionpack/lib/action_controller/templates/rescues/template_error.erb +0 -21
  1172. data/vendor/rails/actionpack/lib/action_controller/templates/rescues/unknown_action.erb +0 -2
  1173. data/vendor/rails/actionpack/lib/action_controller/test_case.rb +0 -209
  1174. data/vendor/rails/actionpack/lib/action_controller/test_process.rb +0 -580
  1175. data/vendor/rails/actionpack/lib/action_controller/translation.rb +0 -13
  1176. data/vendor/rails/actionpack/lib/action_controller/uploaded_file.rb +0 -44
  1177. data/vendor/rails/actionpack/lib/action_controller/url_rewriter.rb +0 -229
  1178. data/vendor/rails/actionpack/lib/action_controller/vendor/html-scanner.rb +0 -16
  1179. data/vendor/rails/actionpack/lib/action_controller/vendor/html-scanner/html/document.rb +0 -68
  1180. data/vendor/rails/actionpack/lib/action_controller/vendor/html-scanner/html/node.rb +0 -537
  1181. data/vendor/rails/actionpack/lib/action_controller/vendor/html-scanner/html/sanitizer.rb +0 -173
  1182. data/vendor/rails/actionpack/lib/action_controller/vendor/html-scanner/html/selector.rb +0 -828
  1183. data/vendor/rails/actionpack/lib/action_controller/vendor/html-scanner/html/tokenizer.rb +0 -105
  1184. data/vendor/rails/actionpack/lib/action_controller/vendor/html-scanner/html/version.rb +0 -11
  1185. data/vendor/rails/actionpack/lib/action_controller/verification.rb +0 -130
  1186. data/vendor/rails/actionpack/lib/action_pack.rb +0 -24
  1187. data/vendor/rails/actionpack/lib/action_pack/version.rb +0 -9
  1188. data/vendor/rails/actionpack/lib/action_view.rb +0 -58
  1189. data/vendor/rails/actionpack/lib/action_view/base.rb +0 -362
  1190. data/vendor/rails/actionpack/lib/action_view/helpers.rb +0 -61
  1191. data/vendor/rails/actionpack/lib/action_view/helpers/active_record_helper.rb +0 -305
  1192. data/vendor/rails/actionpack/lib/action_view/helpers/asset_tag_helper.rb +0 -695
  1193. data/vendor/rails/actionpack/lib/action_view/helpers/atom_feed_helper.rb +0 -198
  1194. data/vendor/rails/actionpack/lib/action_view/helpers/benchmark_helper.rb +0 -54
  1195. data/vendor/rails/actionpack/lib/action_view/helpers/cache_helper.rb +0 -39
  1196. data/vendor/rails/actionpack/lib/action_view/helpers/capture_helper.rb +0 -136
  1197. data/vendor/rails/actionpack/lib/action_view/helpers/csrf_helper.rb +0 -14
  1198. data/vendor/rails/actionpack/lib/action_view/helpers/date_helper.rb +0 -989
  1199. data/vendor/rails/actionpack/lib/action_view/helpers/debug_helper.rb +0 -38
  1200. data/vendor/rails/actionpack/lib/action_view/helpers/form_helper.rb +0 -1118
  1201. data/vendor/rails/actionpack/lib/action_view/helpers/form_options_helper.rb +0 -599
  1202. data/vendor/rails/actionpack/lib/action_view/helpers/form_tag_helper.rb +0 -490
  1203. data/vendor/rails/actionpack/lib/action_view/helpers/javascript_helper.rb +0 -208
  1204. data/vendor/rails/actionpack/lib/action_view/helpers/number_helper.rb +0 -308
  1205. data/vendor/rails/actionpack/lib/action_view/helpers/prototype_helper.rb +0 -1305
  1206. data/vendor/rails/actionpack/lib/action_view/helpers/raw_output_helper.rb +0 -9
  1207. data/vendor/rails/actionpack/lib/action_view/helpers/record_identification_helper.rb +0 -20
  1208. data/vendor/rails/actionpack/lib/action_view/helpers/record_tag_helper.rb +0 -58
  1209. data/vendor/rails/actionpack/lib/action_view/helpers/sanitize_helper.rb +0 -251
  1210. data/vendor/rails/actionpack/lib/action_view/helpers/scriptaculous_helper.rb +0 -226
  1211. data/vendor/rails/actionpack/lib/action_view/helpers/tag_helper.rb +0 -151
  1212. data/vendor/rails/actionpack/lib/action_view/helpers/text_helper.rb +0 -597
  1213. data/vendor/rails/actionpack/lib/action_view/helpers/translation_helper.rb +0 -67
  1214. data/vendor/rails/actionpack/lib/action_view/helpers/url_helper.rb +0 -637
  1215. data/vendor/rails/actionpack/lib/action_view/inline_template.rb +0 -19
  1216. data/vendor/rails/actionpack/lib/action_view/locale/en.yml +0 -117
  1217. data/vendor/rails/actionpack/lib/action_view/partials.rb +0 -241
  1218. data/vendor/rails/actionpack/lib/action_view/paths.rb +0 -77
  1219. data/vendor/rails/actionpack/lib/action_view/reloadable_template.rb +0 -117
  1220. data/vendor/rails/actionpack/lib/action_view/renderable.rb +0 -109
  1221. data/vendor/rails/actionpack/lib/action_view/renderable_partial.rb +0 -53
  1222. data/vendor/rails/actionpack/lib/action_view/template.rb +0 -252
  1223. data/vendor/rails/actionpack/lib/action_view/template_error.rb +0 -99
  1224. data/vendor/rails/actionpack/lib/action_view/template_handler.rb +0 -34
  1225. data/vendor/rails/actionpack/lib/action_view/template_handlers.rb +0 -48
  1226. data/vendor/rails/actionpack/lib/action_view/template_handlers/builder.rb +0 -17
  1227. data/vendor/rails/actionpack/lib/action_view/template_handlers/erb.rb +0 -25
  1228. data/vendor/rails/actionpack/lib/action_view/template_handlers/rjs.rb +0 -13
  1229. data/vendor/rails/actionpack/lib/action_view/test_case.rb +0 -162
  1230. data/vendor/rails/actionpack/lib/actionpack.rb +0 -2
  1231. data/vendor/rails/actionpack/test/abstract_unit.rb +0 -78
  1232. data/vendor/rails/actionpack/test/active_record_unit.rb +0 -104
  1233. data/vendor/rails/actionpack/test/activerecord/active_record_store_test.rb +0 -221
  1234. data/vendor/rails/actionpack/test/activerecord/render_partial_with_record_identification_test.rb +0 -188
  1235. data/vendor/rails/actionpack/test/adv_attr_test.rb +0 -20
  1236. data/vendor/rails/actionpack/test/controller/action_pack_assertions_test.rb +0 -545
  1237. data/vendor/rails/actionpack/test/controller/addresses_render_test.rb +0 -37
  1238. data/vendor/rails/actionpack/test/controller/assert_select_test.rb +0 -735
  1239. data/vendor/rails/actionpack/test/controller/base_test.rb +0 -217
  1240. data/vendor/rails/actionpack/test/controller/benchmark_test.rb +0 -32
  1241. data/vendor/rails/actionpack/test/controller/caching_test.rb +0 -743
  1242. data/vendor/rails/actionpack/test/controller/capture_test.rb +0 -66
  1243. data/vendor/rails/actionpack/test/controller/content_type_test.rb +0 -168
  1244. data/vendor/rails/actionpack/test/controller/controller_fixtures/app/controllers/admin/user_controller.rb +0 -0
  1245. data/vendor/rails/actionpack/test/controller/controller_fixtures/app/controllers/user_controller.rb +0 -0
  1246. data/vendor/rails/actionpack/test/controller/controller_fixtures/vendor/plugins/bad_plugin/lib/plugin_controller.rb +0 -0
  1247. data/vendor/rails/actionpack/test/controller/cookie_test.rb +0 -208
  1248. data/vendor/rails/actionpack/test/controller/deprecation/deprecated_base_methods_test.rb +0 -32
  1249. data/vendor/rails/actionpack/test/controller/dispatcher_test.rb +0 -144
  1250. data/vendor/rails/actionpack/test/controller/dom_assertions_test.rb +0 -53
  1251. data/vendor/rails/actionpack/test/controller/failsafe_test.rb +0 -60
  1252. data/vendor/rails/actionpack/test/controller/fake_controllers.rb +0 -33
  1253. data/vendor/rails/actionpack/test/controller/fake_models.rb +0 -19
  1254. data/vendor/rails/actionpack/test/controller/filter_params_test.rb +0 -52
  1255. data/vendor/rails/actionpack/test/controller/filters_test.rb +0 -885
  1256. data/vendor/rails/actionpack/test/controller/flash_test.rb +0 -174
  1257. data/vendor/rails/actionpack/test/controller/header_test.rb +0 -14
  1258. data/vendor/rails/actionpack/test/controller/helper_test.rb +0 -224
  1259. data/vendor/rails/actionpack/test/controller/html-scanner/cdata_node_test.rb +0 -15
  1260. data/vendor/rails/actionpack/test/controller/html-scanner/document_test.rb +0 -148
  1261. data/vendor/rails/actionpack/test/controller/html-scanner/node_test.rb +0 -89
  1262. data/vendor/rails/actionpack/test/controller/html-scanner/sanitizer_test.rb +0 -274
  1263. data/vendor/rails/actionpack/test/controller/html-scanner/tag_node_test.rb +0 -238
  1264. data/vendor/rails/actionpack/test/controller/html-scanner/text_node_test.rb +0 -50
  1265. data/vendor/rails/actionpack/test/controller/html-scanner/tokenizer_test.rb +0 -131
  1266. data/vendor/rails/actionpack/test/controller/http_basic_authentication_test.rb +0 -113
  1267. data/vendor/rails/actionpack/test/controller/http_digest_authentication_test.rb +0 -254
  1268. data/vendor/rails/actionpack/test/controller/integration_test.rb +0 -526
  1269. data/vendor/rails/actionpack/test/controller/layout_test.rb +0 -215
  1270. data/vendor/rails/actionpack/test/controller/localized_templates_test.rb +0 -24
  1271. data/vendor/rails/actionpack/test/controller/logging_test.rb +0 -46
  1272. data/vendor/rails/actionpack/test/controller/middleware_stack_test.rb +0 -90
  1273. data/vendor/rails/actionpack/test/controller/mime_responds_test.rb +0 -536
  1274. data/vendor/rails/actionpack/test/controller/mime_type_test.rb +0 -93
  1275. data/vendor/rails/actionpack/test/controller/output_escaping_test.rb +0 -19
  1276. data/vendor/rails/actionpack/test/controller/polymorphic_routes_test.rb +0 -297
  1277. data/vendor/rails/actionpack/test/controller/rack_test.rb +0 -308
  1278. data/vendor/rails/actionpack/test/controller/record_identifier_test.rb +0 -139
  1279. data/vendor/rails/actionpack/test/controller/redirect_test.rb +0 -285
  1280. data/vendor/rails/actionpack/test/controller/reloader_test.rb +0 -125
  1281. data/vendor/rails/actionpack/test/controller/render_test.rb +0 -1783
  1282. data/vendor/rails/actionpack/test/controller/request/json_params_parsing_test.rb +0 -65
  1283. data/vendor/rails/actionpack/test/controller/request/multipart_params_parsing_test.rb +0 -177
  1284. data/vendor/rails/actionpack/test/controller/request/query_string_parsing_test.rb +0 -120
  1285. data/vendor/rails/actionpack/test/controller/request/test_request_test.rb +0 -35
  1286. data/vendor/rails/actionpack/test/controller/request/url_encoded_params_parsing_test.rb +0 -146
  1287. data/vendor/rails/actionpack/test/controller/request/xml_params_parsing_test.rb +0 -103
  1288. data/vendor/rails/actionpack/test/controller/request_forgery_protection_test.rb +0 -233
  1289. data/vendor/rails/actionpack/test/controller/request_test.rb +0 -395
  1290. data/vendor/rails/actionpack/test/controller/rescue_test.rb +0 -541
  1291. data/vendor/rails/actionpack/test/controller/resources_test.rb +0 -1393
  1292. data/vendor/rails/actionpack/test/controller/routing_test.rb +0 -2592
  1293. data/vendor/rails/actionpack/test/controller/selector_test.rb +0 -628
  1294. data/vendor/rails/actionpack/test/controller/send_file_test.rb +0 -171
  1295. data/vendor/rails/actionpack/test/controller/session/cookie_store_test.rb +0 -310
  1296. data/vendor/rails/actionpack/test/controller/session/mem_cache_store_test.rb +0 -187
  1297. data/vendor/rails/actionpack/test/controller/session/test_session_test.rb +0 -58
  1298. data/vendor/rails/actionpack/test/controller/test_test.rb +0 -700
  1299. data/vendor/rails/actionpack/test/controller/translation_test.rb +0 -26
  1300. data/vendor/rails/actionpack/test/controller/url_rewriter_test.rb +0 -395
  1301. data/vendor/rails/actionpack/test/controller/verification_test.rb +0 -270
  1302. data/vendor/rails/actionpack/test/controller/view_paths_test.rb +0 -141
  1303. data/vendor/rails/actionpack/test/controller/webservice_test.rb +0 -260
  1304. data/vendor/rails/actionpack/test/fixtures/_top_level_partial.html.erb +0 -1
  1305. data/vendor/rails/actionpack/test/fixtures/_top_level_partial_only.erb +0 -1
  1306. data/vendor/rails/actionpack/test/fixtures/addresses/list.erb +0 -1
  1307. data/vendor/rails/actionpack/test/fixtures/alternate_helpers/foo_helper.rb +0 -3
  1308. data/vendor/rails/actionpack/test/fixtures/bad_customers/_bad_customer.html.erb +0 -1
  1309. data/vendor/rails/actionpack/test/fixtures/companies.yml +0 -24
  1310. data/vendor/rails/actionpack/test/fixtures/company.rb +0 -10
  1311. data/vendor/rails/actionpack/test/fixtures/content_type/render_default_content_types_for_respond_to.rhtml +0 -1
  1312. data/vendor/rails/actionpack/test/fixtures/content_type/render_default_for_rhtml.rhtml +0 -1
  1313. data/vendor/rails/actionpack/test/fixtures/content_type/render_default_for_rjs.rjs +0 -1
  1314. data/vendor/rails/actionpack/test/fixtures/content_type/render_default_for_rxml.rxml +0 -1
  1315. data/vendor/rails/actionpack/test/fixtures/customers/_customer.html.erb +0 -1
  1316. data/vendor/rails/actionpack/test/fixtures/db_definitions/sqlite.sql +0 -49
  1317. data/vendor/rails/actionpack/test/fixtures/developer.rb +0 -9
  1318. data/vendor/rails/actionpack/test/fixtures/developers.yml +0 -21
  1319. data/vendor/rails/actionpack/test/fixtures/developers/_developer.erb +0 -1
  1320. data/vendor/rails/actionpack/test/fixtures/developers_projects.yml +0 -13
  1321. data/vendor/rails/actionpack/test/fixtures/failsafe/500.html +0 -1
  1322. data/vendor/rails/actionpack/test/fixtures/fun/games/_game.erb +0 -1
  1323. data/vendor/rails/actionpack/test/fixtures/fun/games/hello_world.erb +0 -1
  1324. data/vendor/rails/actionpack/test/fixtures/fun/serious/games/_game.erb +0 -1
  1325. data/vendor/rails/actionpack/test/fixtures/functional_caching/_partial.erb +0 -3
  1326. data/vendor/rails/actionpack/test/fixtures/functional_caching/formatted_fragment_cached.html.erb +0 -3
  1327. data/vendor/rails/actionpack/test/fixtures/functional_caching/formatted_fragment_cached.js.rjs +0 -6
  1328. data/vendor/rails/actionpack/test/fixtures/functional_caching/formatted_fragment_cached.xml.builder +0 -5
  1329. data/vendor/rails/actionpack/test/fixtures/functional_caching/fragment_cached.html.erb +0 -2
  1330. data/vendor/rails/actionpack/test/fixtures/functional_caching/html_fragment_cached_with_partial.html.erb +0 -1
  1331. data/vendor/rails/actionpack/test/fixtures/functional_caching/inline_fragment_cached.html.erb +0 -2
  1332. data/vendor/rails/actionpack/test/fixtures/functional_caching/js_fragment_cached_with_partial.js.rjs +0 -1
  1333. data/vendor/rails/actionpack/test/fixtures/good_customers/_good_customer.html.erb +0 -1
  1334. data/vendor/rails/actionpack/test/fixtures/helpers/abc_helper.rb +0 -5
  1335. data/vendor/rails/actionpack/test/fixtures/helpers/fun/games_helper.rb +0 -3
  1336. data/vendor/rails/actionpack/test/fixtures/helpers/fun/pdf_helper.rb +0 -3
  1337. data/vendor/rails/actionpack/test/fixtures/layout_tests/abs_path_layout.rhtml +0 -1
  1338. data/vendor/rails/actionpack/test/fixtures/layout_tests/alt/hello.rhtml +0 -1
  1339. data/vendor/rails/actionpack/test/fixtures/layout_tests/alt/layouts/alt.rhtml +0 -0
  1340. data/vendor/rails/actionpack/test/fixtures/layout_tests/layouts/controller_name_space/nested.rhtml +0 -1
  1341. data/vendor/rails/actionpack/test/fixtures/layout_tests/layouts/item.rhtml +0 -1
  1342. data/vendor/rails/actionpack/test/fixtures/layout_tests/layouts/layout_test.rhtml +0 -1
  1343. data/vendor/rails/actionpack/test/fixtures/layout_tests/layouts/multiple_extensions.html.erb +0 -1
  1344. data/vendor/rails/actionpack/test/fixtures/layout_tests/layouts/third_party_template_library.mab +0 -1
  1345. data/vendor/rails/actionpack/test/fixtures/layout_tests/views/hello.rhtml +0 -1
  1346. data/vendor/rails/actionpack/test/fixtures/layouts/_column.html.erb +0 -2
  1347. data/vendor/rails/actionpack/test/fixtures/layouts/block_with_layout.erb +0 -3
  1348. data/vendor/rails/actionpack/test/fixtures/layouts/builder.builder +0 -3
  1349. data/vendor/rails/actionpack/test/fixtures/layouts/default_html.html.erb +0 -1
  1350. data/vendor/rails/actionpack/test/fixtures/layouts/partial_with_layout.erb +0 -3
  1351. data/vendor/rails/actionpack/test/fixtures/layouts/standard.erb +0 -1
  1352. data/vendor/rails/actionpack/test/fixtures/layouts/talk_from_action.erb +0 -2
  1353. data/vendor/rails/actionpack/test/fixtures/layouts/xhr.html.erb +0 -2
  1354. data/vendor/rails/actionpack/test/fixtures/layouts/yield.erb +0 -2
  1355. data/vendor/rails/actionpack/test/fixtures/localized/hello_world.de.html +0 -1
  1356. data/vendor/rails/actionpack/test/fixtures/localized/hello_world.en.html +0 -1
  1357. data/vendor/rails/actionpack/test/fixtures/mascot.rb +0 -3
  1358. data/vendor/rails/actionpack/test/fixtures/mascots.yml +0 -4
  1359. data/vendor/rails/actionpack/test/fixtures/mascots/_mascot.html.erb +0 -1
  1360. data/vendor/rails/actionpack/test/fixtures/multipart/binary_file +0 -0
  1361. data/vendor/rails/actionpack/test/fixtures/multipart/boundary_problem_file +0 -10
  1362. data/vendor/rails/actionpack/test/fixtures/multipart/bracketed_param +0 -5
  1363. data/vendor/rails/actionpack/test/fixtures/multipart/empty +0 -10
  1364. data/vendor/rails/actionpack/test/fixtures/multipart/hello.txt +0 -1
  1365. data/vendor/rails/actionpack/test/fixtures/multipart/large_text_file +0 -10
  1366. data/vendor/rails/actionpack/test/fixtures/multipart/mixed_files +0 -0
  1367. data/vendor/rails/actionpack/test/fixtures/multipart/mona_lisa.jpg +0 -0
  1368. data/vendor/rails/actionpack/test/fixtures/multipart/none +0 -9
  1369. data/vendor/rails/actionpack/test/fixtures/multipart/single_parameter +0 -5
  1370. data/vendor/rails/actionpack/test/fixtures/multipart/text_file +0 -10
  1371. data/vendor/rails/actionpack/test/fixtures/override/test/hello_world.erb +0 -1
  1372. data/vendor/rails/actionpack/test/fixtures/override2/layouts/test/sub.erb +0 -1
  1373. data/vendor/rails/actionpack/test/fixtures/post_test/layouts/post.html.erb +0 -1
  1374. data/vendor/rails/actionpack/test/fixtures/post_test/layouts/super_post.iphone.erb +0 -1
  1375. data/vendor/rails/actionpack/test/fixtures/post_test/post/index.html.erb +0 -1
  1376. data/vendor/rails/actionpack/test/fixtures/post_test/post/index.iphone.erb +0 -1
  1377. data/vendor/rails/actionpack/test/fixtures/post_test/super_post/index.html.erb +0 -1
  1378. data/vendor/rails/actionpack/test/fixtures/post_test/super_post/index.iphone.erb +0 -1
  1379. data/vendor/rails/actionpack/test/fixtures/project.rb +0 -3
  1380. data/vendor/rails/actionpack/test/fixtures/projects.yml +0 -7
  1381. data/vendor/rails/actionpack/test/fixtures/projects/_project.erb +0 -1
  1382. data/vendor/rails/actionpack/test/fixtures/public/404.html +0 -1
  1383. data/vendor/rails/actionpack/test/fixtures/public/500.da.html +0 -1
  1384. data/vendor/rails/actionpack/test/fixtures/public/500.html +0 -1
  1385. data/vendor/rails/actionpack/test/fixtures/public/absolute/test.css +0 -23
  1386. data/vendor/rails/actionpack/test/fixtures/public/absolute/test.js +0 -63
  1387. data/vendor/rails/actionpack/test/fixtures/public/images/rails.png +0 -0
  1388. data/vendor/rails/actionpack/test/fixtures/public/javascripts/application.js +0 -1
  1389. data/vendor/rails/actionpack/test/fixtures/public/javascripts/bank.js +0 -1
  1390. data/vendor/rails/actionpack/test/fixtures/public/javascripts/controls.js +0 -1
  1391. data/vendor/rails/actionpack/test/fixtures/public/javascripts/dragdrop.js +0 -1
  1392. data/vendor/rails/actionpack/test/fixtures/public/javascripts/effects.js +0 -1
  1393. data/vendor/rails/actionpack/test/fixtures/public/javascripts/prototype.js +0 -1
  1394. data/vendor/rails/actionpack/test/fixtures/public/javascripts/robber.js +0 -1
  1395. data/vendor/rails/actionpack/test/fixtures/public/javascripts/subdir/subdir.js +0 -1
  1396. data/vendor/rails/actionpack/test/fixtures/public/javascripts/version.1.0.js +0 -1
  1397. data/vendor/rails/actionpack/test/fixtures/public/stylesheets/bank.css +0 -1
  1398. data/vendor/rails/actionpack/test/fixtures/public/stylesheets/robber.css +0 -1
  1399. data/vendor/rails/actionpack/test/fixtures/public/stylesheets/subdir/subdir.css +0 -1
  1400. data/vendor/rails/actionpack/test/fixtures/public/stylesheets/version.1.0.css +0 -1
  1401. data/vendor/rails/actionpack/test/fixtures/quiz/questions/_question.html.erb +0 -1
  1402. data/vendor/rails/actionpack/test/fixtures/replies.yml +0 -15
  1403. data/vendor/rails/actionpack/test/fixtures/replies/_reply.erb +0 -1
  1404. data/vendor/rails/actionpack/test/fixtures/reply.rb +0 -7
  1405. data/vendor/rails/actionpack/test/fixtures/respond_to/all_types_with_layout.html.erb +0 -1
  1406. data/vendor/rails/actionpack/test/fixtures/respond_to/all_types_with_layout.js.rjs +0 -1
  1407. data/vendor/rails/actionpack/test/fixtures/respond_to/custom_constant_handling_without_block.mobile.erb +0 -1
  1408. data/vendor/rails/actionpack/test/fixtures/respond_to/iphone_with_html_response_type.html.erb +0 -1
  1409. data/vendor/rails/actionpack/test/fixtures/respond_to/iphone_with_html_response_type.iphone.erb +0 -1
  1410. data/vendor/rails/actionpack/test/fixtures/respond_to/layouts/missing.html.erb +0 -1
  1411. data/vendor/rails/actionpack/test/fixtures/respond_to/layouts/standard.html.erb +0 -1
  1412. data/vendor/rails/actionpack/test/fixtures/respond_to/layouts/standard.iphone.erb +0 -1
  1413. data/vendor/rails/actionpack/test/fixtures/respond_to/using_defaults.html.erb +0 -1
  1414. data/vendor/rails/actionpack/test/fixtures/respond_to/using_defaults.js.rjs +0 -1
  1415. data/vendor/rails/actionpack/test/fixtures/respond_to/using_defaults.xml.builder +0 -1
  1416. data/vendor/rails/actionpack/test/fixtures/respond_to/using_defaults_with_type_list.html.erb +0 -1
  1417. data/vendor/rails/actionpack/test/fixtures/respond_to/using_defaults_with_type_list.js.rjs +0 -1
  1418. data/vendor/rails/actionpack/test/fixtures/respond_to/using_defaults_with_type_list.xml.builder +0 -1
  1419. data/vendor/rails/actionpack/test/fixtures/scope/test/modgreet.erb +0 -1
  1420. data/vendor/rails/actionpack/test/fixtures/session_autoload_test/session_autoload_test/foo.rb +0 -10
  1421. data/vendor/rails/actionpack/test/fixtures/shared.html.erb +0 -1
  1422. data/vendor/rails/actionpack/test/fixtures/symlink_parent/symlinked_layout.erb +0 -5
  1423. data/vendor/rails/actionpack/test/fixtures/test/_counter.html.erb +0 -1
  1424. data/vendor/rails/actionpack/test/fixtures/test/_customer.erb +0 -1
  1425. data/vendor/rails/actionpack/test/fixtures/test/_customer_counter.erb +0 -1
  1426. data/vendor/rails/actionpack/test/fixtures/test/_customer_counter_with_as.erb +0 -1
  1427. data/vendor/rails/actionpack/test/fixtures/test/_customer_greeting.erb +0 -1
  1428. data/vendor/rails/actionpack/test/fixtures/test/_customer_with_var.erb +0 -1
  1429. data/vendor/rails/actionpack/test/fixtures/test/_form.erb +0 -1
  1430. data/vendor/rails/actionpack/test/fixtures/test/_from_helper.erb +0 -1
  1431. data/vendor/rails/actionpack/test/fixtures/test/_hash_greeting.erb +0 -1
  1432. data/vendor/rails/actionpack/test/fixtures/test/_hash_object.erb +0 -2
  1433. data/vendor/rails/actionpack/test/fixtures/test/_hello.builder +0 -1
  1434. data/vendor/rails/actionpack/test/fixtures/test/_labelling_form.erb +0 -1
  1435. data/vendor/rails/actionpack/test/fixtures/test/_layout_for_block_with_args.html.erb +0 -3
  1436. data/vendor/rails/actionpack/test/fixtures/test/_layout_for_partial.html.erb +0 -3
  1437. data/vendor/rails/actionpack/test/fixtures/test/_local_inspector.html.erb +0 -1
  1438. data/vendor/rails/actionpack/test/fixtures/test/_one.html.erb +0 -1
  1439. data/vendor/rails/actionpack/test/fixtures/test/_partial.erb +0 -1
  1440. data/vendor/rails/actionpack/test/fixtures/test/_partial.html.erb +0 -1
  1441. data/vendor/rails/actionpack/test/fixtures/test/_partial.js.erb +0 -1
  1442. data/vendor/rails/actionpack/test/fixtures/test/_partial_for_use_in_layout.html.erb +0 -1
  1443. data/vendor/rails/actionpack/test/fixtures/test/_partial_only.erb +0 -1
  1444. data/vendor/rails/actionpack/test/fixtures/test/_partial_with_only_html_version.html.erb +0 -1
  1445. data/vendor/rails/actionpack/test/fixtures/test/_person.erb +0 -2
  1446. data/vendor/rails/actionpack/test/fixtures/test/_raise.html.erb +0 -1
  1447. data/vendor/rails/actionpack/test/fixtures/test/_two.html.erb +0 -1
  1448. data/vendor/rails/actionpack/test/fixtures/test/_utf8_partial.html.erb +0 -1
  1449. data/vendor/rails/actionpack/test/fixtures/test/_utf8_partial_magic.html.erb +0 -2
  1450. data/vendor/rails/actionpack/test/fixtures/test/action_talk_to_layout.erb +0 -2
  1451. data/vendor/rails/actionpack/test/fixtures/test/array_translation.erb +0 -1
  1452. data/vendor/rails/actionpack/test/fixtures/test/calling_partial_with_layout.html.erb +0 -1
  1453. data/vendor/rails/actionpack/test/fixtures/test/capturing.erb +0 -4
  1454. data/vendor/rails/actionpack/test/fixtures/test/content_for.erb +0 -2
  1455. data/vendor/rails/actionpack/test/fixtures/test/content_for_concatenated.erb +0 -3
  1456. data/vendor/rails/actionpack/test/fixtures/test/content_for_with_parameter.erb +0 -2
  1457. data/vendor/rails/actionpack/test/fixtures/test/delete_with_js.rjs +0 -2
  1458. data/vendor/rails/actionpack/test/fixtures/test/dont_pick_me +0 -1
  1459. data/vendor/rails/actionpack/test/fixtures/test/dot.directory/render_file_with_ivar.erb +0 -1
  1460. data/vendor/rails/actionpack/test/fixtures/test/enum_rjs_test.rjs +0 -6
  1461. data/vendor/rails/actionpack/test/fixtures/test/formatted_html_erb.html.erb +0 -1
  1462. data/vendor/rails/actionpack/test/fixtures/test/formatted_xml_erb.builder +0 -1
  1463. data/vendor/rails/actionpack/test/fixtures/test/formatted_xml_erb.html.erb +0 -1
  1464. data/vendor/rails/actionpack/test/fixtures/test/formatted_xml_erb.xml.erb +0 -1
  1465. data/vendor/rails/actionpack/test/fixtures/test/greeting.erb +0 -1
  1466. data/vendor/rails/actionpack/test/fixtures/test/greeting.js.rjs +0 -1
  1467. data/vendor/rails/actionpack/test/fixtures/test/hello.builder +0 -4
  1468. data/vendor/rails/actionpack/test/fixtures/test/hello_world.da.html.erb +0 -1
  1469. data/vendor/rails/actionpack/test/fixtures/test/hello_world.erb +0 -1
  1470. data/vendor/rails/actionpack/test/fixtures/test/hello_world.erb~ +0 -1
  1471. data/vendor/rails/actionpack/test/fixtures/test/hello_world.pt-BR.html.erb +0 -1
  1472. data/vendor/rails/actionpack/test/fixtures/test/hello_world_container.builder +0 -3
  1473. data/vendor/rails/actionpack/test/fixtures/test/hello_world_from_rxml.builder +0 -4
  1474. data/vendor/rails/actionpack/test/fixtures/test/hello_world_with_layout_false.erb +0 -1
  1475. data/vendor/rails/actionpack/test/fixtures/test/hello_xml_world.builder +0 -11
  1476. data/vendor/rails/actionpack/test/fixtures/test/hyphen-ated.erb +0 -1
  1477. data/vendor/rails/actionpack/test/fixtures/test/implicit_content_type.atom.builder +0 -2
  1478. data/vendor/rails/actionpack/test/fixtures/test/list.erb +0 -1
  1479. data/vendor/rails/actionpack/test/fixtures/test/malformed/malformed.en.html.erb~ +0 -1
  1480. data/vendor/rails/actionpack/test/fixtures/test/malformed/malformed.erb~ +0 -1
  1481. data/vendor/rails/actionpack/test/fixtures/test/malformed/malformed.html.erb~ +0 -1
  1482. data/vendor/rails/actionpack/test/fixtures/test/nested_layout.erb +0 -3
  1483. data/vendor/rails/actionpack/test/fixtures/test/non_erb_block_content_for.builder +0 -4
  1484. data/vendor/rails/actionpack/test/fixtures/test/potential_conflicts.erb +0 -4
  1485. data/vendor/rails/actionpack/test/fixtures/test/render_explicit_html_template.js.rjs +0 -1
  1486. data/vendor/rails/actionpack/test/fixtures/test/render_file_from_template.html.erb +0 -1
  1487. data/vendor/rails/actionpack/test/fixtures/test/render_file_with_ivar.erb +0 -1
  1488. data/vendor/rails/actionpack/test/fixtures/test/render_file_with_locals.erb +0 -1
  1489. data/vendor/rails/actionpack/test/fixtures/test/render_implicit_html_template.js.rjs +0 -1
  1490. data/vendor/rails/actionpack/test/fixtures/test/render_implicit_html_template_from_xhr_request.da.html.erb +0 -1
  1491. data/vendor/rails/actionpack/test/fixtures/test/render_implicit_html_template_from_xhr_request.html.erb +0 -1
  1492. data/vendor/rails/actionpack/test/fixtures/test/render_implicit_js_template_without_layout.js.erb +0 -1
  1493. data/vendor/rails/actionpack/test/fixtures/test/render_to_string_test.erb +0 -1
  1494. data/vendor/rails/actionpack/test/fixtures/test/scoped_array_translation.erb +0 -1
  1495. data/vendor/rails/actionpack/test/fixtures/test/sub_template_raise.html.erb +0 -1
  1496. data/vendor/rails/actionpack/test/fixtures/test/template.erb +0 -1
  1497. data/vendor/rails/actionpack/test/fixtures/test/translation.erb +0 -1
  1498. data/vendor/rails/actionpack/test/fixtures/test/update_element_with_capture.erb +0 -9
  1499. data/vendor/rails/actionpack/test/fixtures/test/using_layout_around_block.html.erb +0 -1
  1500. data/vendor/rails/actionpack/test/fixtures/test/using_layout_around_block_with_args.html.erb +0 -1
  1501. data/vendor/rails/actionpack/test/fixtures/test/utf8.html.erb +0 -4
  1502. data/vendor/rails/actionpack/test/fixtures/test/utf8_magic.html.erb +0 -5
  1503. data/vendor/rails/actionpack/test/fixtures/test/utf8_magic_with_bare_partial.html.erb +0 -5
  1504. data/vendor/rails/actionpack/test/fixtures/topic.rb +0 -3
  1505. data/vendor/rails/actionpack/test/fixtures/topics.yml +0 -22
  1506. data/vendor/rails/actionpack/test/fixtures/topics/_topic.html.erb +0 -1
  1507. data/vendor/rails/actionpack/test/template/active_record_helper_i18n_test.rb +0 -51
  1508. data/vendor/rails/actionpack/test/template/active_record_helper_test.rb +0 -302
  1509. data/vendor/rails/actionpack/test/template/asset_tag_helper_test.rb +0 -770
  1510. data/vendor/rails/actionpack/test/template/atom_feed_helper_test.rb +0 -315
  1511. data/vendor/rails/actionpack/test/template/benchmark_helper_test.rb +0 -86
  1512. data/vendor/rails/actionpack/test/template/compiled_templates_test.rb +0 -204
  1513. data/vendor/rails/actionpack/test/template/date_helper_i18n_test.rb +0 -121
  1514. data/vendor/rails/actionpack/test/template/date_helper_test.rb +0 -2603
  1515. data/vendor/rails/actionpack/test/template/erb_util_test.rb +0 -36
  1516. data/vendor/rails/actionpack/test/template/form_helper_test.rb +0 -1447
  1517. data/vendor/rails/actionpack/test/template/form_options_helper_i18n_test.rb +0 -27
  1518. data/vendor/rails/actionpack/test/template/form_options_helper_test.rb +0 -811
  1519. data/vendor/rails/actionpack/test/template/form_tag_helper_test.rb +0 -356
  1520. data/vendor/rails/actionpack/test/template/javascript_helper_test.rb +0 -106
  1521. data/vendor/rails/actionpack/test/template/number_helper_i18n_test.rb +0 -69
  1522. data/vendor/rails/actionpack/test/template/number_helper_test.rb +0 -132
  1523. data/vendor/rails/actionpack/test/template/prototype_helper_test.rb +0 -639
  1524. data/vendor/rails/actionpack/test/template/raw_output_helper_test.rb +0 -21
  1525. data/vendor/rails/actionpack/test/template/record_tag_helper_test.rb +0 -58
  1526. data/vendor/rails/actionpack/test/template/render_test.rb +0 -329
  1527. data/vendor/rails/actionpack/test/template/sanitize_helper_test.rb +0 -57
  1528. data/vendor/rails/actionpack/test/template/scriptaculous_helper_test.rb +0 -90
  1529. data/vendor/rails/actionpack/test/template/tag_helper_test.rb +0 -98
  1530. data/vendor/rails/actionpack/test/template/template_test.rb +0 -32
  1531. data/vendor/rails/actionpack/test/template/test_test.rb +0 -54
  1532. data/vendor/rails/actionpack/test/template/text_helper_test.rb +0 -597
  1533. data/vendor/rails/actionpack/test/template/translation_helper_test.rb +0 -95
  1534. data/vendor/rails/actionpack/test/template/url_helper_test.rb +0 -641
  1535. data/vendor/rails/actionpack/test/testing_sandbox.rb +0 -15
  1536. data/vendor/rails/actionpack/test/view/test_case_test.rb +0 -176
  1537. data/vendor/rails/activemodel/CHANGES +0 -12
  1538. data/vendor/rails/activemodel/README +0 -21
  1539. data/vendor/rails/activemodel/Rakefile +0 -24
  1540. data/vendor/rails/activemodel/lib/active_model.rb +0 -5
  1541. data/vendor/rails/activemodel/lib/active_model/base.rb +0 -8
  1542. data/vendor/rails/activemodel/lib/active_model/callbacks.rb +0 -7
  1543. data/vendor/rails/activemodel/lib/active_model/core.rb +0 -7
  1544. data/vendor/rails/activemodel/lib/active_model/deprecated_error_methods.rb +0 -38
  1545. data/vendor/rails/activemodel/lib/active_model/errors.rb +0 -82
  1546. data/vendor/rails/activemodel/lib/active_model/observing.rb +0 -98
  1547. data/vendor/rails/activemodel/lib/active_model/state_machine.rb +0 -68
  1548. data/vendor/rails/activemodel/lib/active_model/state_machine/event.rb +0 -64
  1549. data/vendor/rails/activemodel/lib/active_model/state_machine/machine.rb +0 -78
  1550. data/vendor/rails/activemodel/lib/active_model/state_machine/state.rb +0 -47
  1551. data/vendor/rails/activemodel/lib/active_model/state_machine/state_transition.rb +0 -40
  1552. data/vendor/rails/activemodel/lib/active_model/validations.rb +0 -126
  1553. data/vendor/rails/activemodel/lib/active_model/validations/acceptance.rb +0 -45
  1554. data/vendor/rails/activemodel/lib/active_model/validations/associated.rb +0 -46
  1555. data/vendor/rails/activemodel/lib/active_model/validations/confirmation.rb +0 -44
  1556. data/vendor/rails/activemodel/lib/active_model/validations/exclusion.rb +0 -37
  1557. data/vendor/rails/activemodel/lib/active_model/validations/format.rb +0 -39
  1558. data/vendor/rails/activemodel/lib/active_model/validations/inclusion.rb +0 -37
  1559. data/vendor/rails/activemodel/lib/active_model/validations/length.rb +0 -95
  1560. data/vendor/rails/activemodel/lib/active_model/validations/numericality.rb +0 -80
  1561. data/vendor/rails/activemodel/lib/active_model/validations/presence.rb +0 -42
  1562. data/vendor/rails/activemodel/lib/active_model/validations/uniqueness.rb +0 -104
  1563. data/vendor/rails/activemodel/test/observing_test.rb +0 -121
  1564. data/vendor/rails/activemodel/test/state_machine/event_test.rb +0 -49
  1565. data/vendor/rails/activemodel/test/state_machine/machine_test.rb +0 -43
  1566. data/vendor/rails/activemodel/test/state_machine/state_test.rb +0 -72
  1567. data/vendor/rails/activemodel/test/state_machine/state_transition_test.rb +0 -84
  1568. data/vendor/rails/activemodel/test/state_machine_test.rb +0 -312
  1569. data/vendor/rails/activemodel/test/test_helper.rb +0 -21
  1570. data/vendor/rails/activerecord/CHANGELOG +0 -5904
  1571. data/vendor/rails/activerecord/MIT-LICENSE +0 -20
  1572. data/vendor/rails/activerecord/README +0 -351
  1573. data/vendor/rails/activerecord/RUNNING_UNIT_TESTS +0 -36
  1574. data/vendor/rails/activerecord/Rakefile +0 -270
  1575. data/vendor/rails/activerecord/examples/associations.png +0 -0
  1576. data/vendor/rails/activerecord/examples/performance.rb +0 -198
  1577. data/vendor/rails/activerecord/install.rb +0 -30
  1578. data/vendor/rails/activerecord/lib/active_record.rb +0 -83
  1579. data/vendor/rails/activerecord/lib/active_record/aggregations.rb +0 -261
  1580. data/vendor/rails/activerecord/lib/active_record/association_preload.rb +0 -406
  1581. data/vendor/rails/activerecord/lib/active_record/associations.rb +0 -2251
  1582. data/vendor/rails/activerecord/lib/active_record/associations/association_collection.rb +0 -533
  1583. data/vendor/rails/activerecord/lib/active_record/associations/association_proxy.rb +0 -288
  1584. data/vendor/rails/activerecord/lib/active_record/associations/belongs_to_association.rb +0 -86
  1585. data/vendor/rails/activerecord/lib/active_record/associations/belongs_to_polymorphic_association.rb +0 -77
  1586. data/vendor/rails/activerecord/lib/active_record/associations/has_and_belongs_to_many_association.rb +0 -143
  1587. data/vendor/rails/activerecord/lib/active_record/associations/has_many_association.rb +0 -127
  1588. data/vendor/rails/activerecord/lib/active_record/associations/has_many_through_association.rb +0 -266
  1589. data/vendor/rails/activerecord/lib/active_record/associations/has_one_association.rb +0 -142
  1590. data/vendor/rails/activerecord/lib/active_record/associations/has_one_through_association.rb +0 -37
  1591. data/vendor/rails/activerecord/lib/active_record/attribute_methods.rb +0 -388
  1592. data/vendor/rails/activerecord/lib/active_record/autosave_association.rb +0 -395
  1593. data/vendor/rails/activerecord/lib/active_record/base.rb +0 -3218
  1594. data/vendor/rails/activerecord/lib/active_record/batches.rb +0 -85
  1595. data/vendor/rails/activerecord/lib/active_record/calculations.rb +0 -321
  1596. data/vendor/rails/activerecord/lib/active_record/callbacks.rb +0 -360
  1597. data/vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb +0 -371
  1598. data/vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/connection_specification.rb +0 -139
  1599. data/vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/database_limits.rb +0 -57
  1600. data/vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/database_statements.rb +0 -289
  1601. data/vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/query_cache.rb +0 -94
  1602. data/vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/quoting.rb +0 -65
  1603. data/vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/schema_definitions.rb +0 -722
  1604. data/vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/schema_statements.rb +0 -490
  1605. data/vendor/rails/activerecord/lib/active_record/connection_adapters/abstract_adapter.rb +0 -249
  1606. data/vendor/rails/activerecord/lib/active_record/connection_adapters/mysql_adapter.rb +0 -662
  1607. data/vendor/rails/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb +0 -1078
  1608. data/vendor/rails/activerecord/lib/active_record/connection_adapters/sqlite3_adapter.rb +0 -34
  1609. data/vendor/rails/activerecord/lib/active_record/connection_adapters/sqlite_adapter.rb +0 -454
  1610. data/vendor/rails/activerecord/lib/active_record/dirty.rb +0 -183
  1611. data/vendor/rails/activerecord/lib/active_record/dynamic_finder_match.rb +0 -41
  1612. data/vendor/rails/activerecord/lib/active_record/dynamic_scope_match.rb +0 -25
  1613. data/vendor/rails/activerecord/lib/active_record/fixtures.rb +0 -997
  1614. data/vendor/rails/activerecord/lib/active_record/locale/en.yml +0 -58
  1615. data/vendor/rails/activerecord/lib/active_record/locking/optimistic.rb +0 -182
  1616. data/vendor/rails/activerecord/lib/active_record/locking/pessimistic.rb +0 -55
  1617. data/vendor/rails/activerecord/lib/active_record/migration.rb +0 -571
  1618. data/vendor/rails/activerecord/lib/active_record/named_scope.rb +0 -197
  1619. data/vendor/rails/activerecord/lib/active_record/nested_attributes.rb +0 -404
  1620. data/vendor/rails/activerecord/lib/active_record/observer.rb +0 -197
  1621. data/vendor/rails/activerecord/lib/active_record/query_cache.rb +0 -33
  1622. data/vendor/rails/activerecord/lib/active_record/reflection.rb +0 -385
  1623. data/vendor/rails/activerecord/lib/active_record/schema.rb +0 -55
  1624. data/vendor/rails/activerecord/lib/active_record/schema_dumper.rb +0 -185
  1625. data/vendor/rails/activerecord/lib/active_record/serialization.rb +0 -101
  1626. data/vendor/rails/activerecord/lib/active_record/serializers/json_serializer.rb +0 -91
  1627. data/vendor/rails/activerecord/lib/active_record/serializers/xml_serializer.rb +0 -357
  1628. data/vendor/rails/activerecord/lib/active_record/session_store.rb +0 -334
  1629. data/vendor/rails/activerecord/lib/active_record/test_case.rb +0 -66
  1630. data/vendor/rails/activerecord/lib/active_record/timestamp.rb +0 -71
  1631. data/vendor/rails/activerecord/lib/active_record/transactions.rb +0 -235
  1632. data/vendor/rails/activerecord/lib/active_record/validations.rb +0 -1147
  1633. data/vendor/rails/activerecord/lib/active_record/version.rb +0 -9
  1634. data/vendor/rails/activerecord/lib/activerecord.rb +0 -2
  1635. data/vendor/rails/activerecord/test/assets/example.log +0 -1
  1636. data/vendor/rails/activerecord/test/assets/flowers.jpg +0 -0
  1637. data/vendor/rails/activerecord/test/cases/aaa_create_tables_test.rb +0 -24
  1638. data/vendor/rails/activerecord/test/cases/active_schema_test_mysql.rb +0 -122
  1639. data/vendor/rails/activerecord/test/cases/active_schema_test_postgresql.rb +0 -24
  1640. data/vendor/rails/activerecord/test/cases/adapter_test.rb +0 -144
  1641. data/vendor/rails/activerecord/test/cases/aggregations_test.rb +0 -167
  1642. data/vendor/rails/activerecord/test/cases/ar_schema_test.rb +0 -32
  1643. data/vendor/rails/activerecord/test/cases/associations/belongs_to_associations_test.rb +0 -438
  1644. data/vendor/rails/activerecord/test/cases/associations/callbacks_test.rb +0 -161
  1645. data/vendor/rails/activerecord/test/cases/associations/cascaded_eager_loading_test.rb +0 -131
  1646. data/vendor/rails/activerecord/test/cases/associations/eager_load_includes_full_sti_class_test.rb +0 -36
  1647. data/vendor/rails/activerecord/test/cases/associations/eager_load_nested_include_test.rb +0 -131
  1648. data/vendor/rails/activerecord/test/cases/associations/eager_load_nested_polymorphic_include.rb +0 -19
  1649. data/vendor/rails/activerecord/test/cases/associations/eager_singularization_test.rb +0 -145
  1650. data/vendor/rails/activerecord/test/cases/associations/eager_test.rb +0 -852
  1651. data/vendor/rails/activerecord/test/cases/associations/extension_test.rb +0 -62
  1652. data/vendor/rails/activerecord/test/cases/associations/habtm_join_table_test.rb +0 -56
  1653. data/vendor/rails/activerecord/test/cases/associations/has_and_belongs_to_many_associations_test.rb +0 -827
  1654. data/vendor/rails/activerecord/test/cases/associations/has_many_associations_test.rb +0 -1264
  1655. data/vendor/rails/activerecord/test/cases/associations/has_many_through_associations_test.rb +0 -360
  1656. data/vendor/rails/activerecord/test/cases/associations/has_one_associations_test.rb +0 -330
  1657. data/vendor/rails/activerecord/test/cases/associations/has_one_through_associations_test.rb +0 -209
  1658. data/vendor/rails/activerecord/test/cases/associations/inner_join_association_test.rb +0 -93
  1659. data/vendor/rails/activerecord/test/cases/associations/inverse_associations_test.rb +0 -566
  1660. data/vendor/rails/activerecord/test/cases/associations/join_model_test.rb +0 -712
  1661. data/vendor/rails/activerecord/test/cases/associations_test.rb +0 -282
  1662. data/vendor/rails/activerecord/test/cases/attribute_methods_test.rb +0 -305
  1663. data/vendor/rails/activerecord/test/cases/autosave_association_test.rb +0 -1218
  1664. data/vendor/rails/activerecord/test/cases/base_test.rb +0 -2143
  1665. data/vendor/rails/activerecord/test/cases/batches_test.rb +0 -81
  1666. data/vendor/rails/activerecord/test/cases/binary_test.rb +0 -30
  1667. data/vendor/rails/activerecord/test/cases/calculations_test.rb +0 -360
  1668. data/vendor/rails/activerecord/test/cases/callbacks_observers_test.rb +0 -38
  1669. data/vendor/rails/activerecord/test/cases/callbacks_test.rb +0 -438
  1670. data/vendor/rails/activerecord/test/cases/class_inheritable_attributes_test.rb +0 -32
  1671. data/vendor/rails/activerecord/test/cases/column_alias_test.rb +0 -17
  1672. data/vendor/rails/activerecord/test/cases/column_definition_test.rb +0 -70
  1673. data/vendor/rails/activerecord/test/cases/connection_pool_test.rb +0 -25
  1674. data/vendor/rails/activerecord/test/cases/connection_test_firebird.rb +0 -8
  1675. data/vendor/rails/activerecord/test/cases/connection_test_mysql.rb +0 -65
  1676. data/vendor/rails/activerecord/test/cases/copy_table_test_sqlite.rb +0 -80
  1677. data/vendor/rails/activerecord/test/cases/counter_cache_test.rb +0 -84
  1678. data/vendor/rails/activerecord/test/cases/database_statements_test.rb +0 -12
  1679. data/vendor/rails/activerecord/test/cases/datatype_test_postgresql.rb +0 -204
  1680. data/vendor/rails/activerecord/test/cases/date_time_test.rb +0 -37
  1681. data/vendor/rails/activerecord/test/cases/default_test_firebird.rb +0 -16
  1682. data/vendor/rails/activerecord/test/cases/defaults_test.rb +0 -111
  1683. data/vendor/rails/activerecord/test/cases/deprecated_finder_test.rb +0 -30
  1684. data/vendor/rails/activerecord/test/cases/dirty_test.rb +0 -316
  1685. data/vendor/rails/activerecord/test/cases/finder_respond_to_test.rb +0 -76
  1686. data/vendor/rails/activerecord/test/cases/finder_test.rb +0 -1070
  1687. data/vendor/rails/activerecord/test/cases/fixtures_test.rb +0 -661
  1688. data/vendor/rails/activerecord/test/cases/helper.rb +0 -68
  1689. data/vendor/rails/activerecord/test/cases/i18n_test.rb +0 -46
  1690. data/vendor/rails/activerecord/test/cases/inheritance_test.rb +0 -262
  1691. data/vendor/rails/activerecord/test/cases/invalid_date_test.rb +0 -24
  1692. data/vendor/rails/activerecord/test/cases/json_serialization_test.rb +0 -219
  1693. data/vendor/rails/activerecord/test/cases/lifecycle_test.rb +0 -193
  1694. data/vendor/rails/activerecord/test/cases/locking_test.rb +0 -350
  1695. data/vendor/rails/activerecord/test/cases/method_scoping_test.rb +0 -704
  1696. data/vendor/rails/activerecord/test/cases/migration_test.rb +0 -1649
  1697. data/vendor/rails/activerecord/test/cases/migration_test_firebird.rb +0 -124
  1698. data/vendor/rails/activerecord/test/cases/mixin_test.rb +0 -96
  1699. data/vendor/rails/activerecord/test/cases/modules_test.rb +0 -109
  1700. data/vendor/rails/activerecord/test/cases/multiple_db_test.rb +0 -85
  1701. data/vendor/rails/activerecord/test/cases/named_scope_test.rb +0 -372
  1702. data/vendor/rails/activerecord/test/cases/nested_attributes_test.rb +0 -840
  1703. data/vendor/rails/activerecord/test/cases/pk_test.rb +0 -119
  1704. data/vendor/rails/activerecord/test/cases/pooled_connections_test.rb +0 -103
  1705. data/vendor/rails/activerecord/test/cases/query_cache_test.rb +0 -129
  1706. data/vendor/rails/activerecord/test/cases/readonly_test.rb +0 -107
  1707. data/vendor/rails/activerecord/test/cases/reflection_test.rb +0 -234
  1708. data/vendor/rails/activerecord/test/cases/reload_models_test.rb +0 -22
  1709. data/vendor/rails/activerecord/test/cases/repair_helper.rb +0 -50
  1710. data/vendor/rails/activerecord/test/cases/reserved_word_test_mysql.rb +0 -176
  1711. data/vendor/rails/activerecord/test/cases/sanitize_test.rb +0 -25
  1712. data/vendor/rails/activerecord/test/cases/schema_authorization_test_postgresql.rb +0 -75
  1713. data/vendor/rails/activerecord/test/cases/schema_dumper_test.rb +0 -211
  1714. data/vendor/rails/activerecord/test/cases/schema_test_postgresql.rb +0 -178
  1715. data/vendor/rails/activerecord/test/cases/serialization_test.rb +0 -47
  1716. data/vendor/rails/activerecord/test/cases/sp_test_mysql.rb +0 -16
  1717. data/vendor/rails/activerecord/test/cases/synonym_test_oracle.rb +0 -17
  1718. data/vendor/rails/activerecord/test/cases/timestamp_test.rb +0 -75
  1719. data/vendor/rails/activerecord/test/cases/transactions_test.rb +0 -543
  1720. data/vendor/rails/activerecord/test/cases/unconnected_test.rb +0 -32
  1721. data/vendor/rails/activerecord/test/cases/validations_i18n_test.rb +0 -925
  1722. data/vendor/rails/activerecord/test/cases/validations_test.rb +0 -1684
  1723. data/vendor/rails/activerecord/test/cases/xml_serialization_test.rb +0 -240
  1724. data/vendor/rails/activerecord/test/cases/yaml_serialization_test.rb +0 -11
  1725. data/vendor/rails/activerecord/test/config.rb +0 -5
  1726. data/vendor/rails/activerecord/test/connections/jdbc_jdbcderby/connection.rb +0 -18
  1727. data/vendor/rails/activerecord/test/connections/jdbc_jdbch2/connection.rb +0 -18
  1728. data/vendor/rails/activerecord/test/connections/jdbc_jdbchsqldb/connection.rb +0 -18
  1729. data/vendor/rails/activerecord/test/connections/jdbc_jdbcmysql/connection.rb +0 -26
  1730. data/vendor/rails/activerecord/test/connections/jdbc_jdbcpostgresql/connection.rb +0 -26
  1731. data/vendor/rails/activerecord/test/connections/jdbc_jdbcsqlite3/connection.rb +0 -25
  1732. data/vendor/rails/activerecord/test/connections/native_db2/connection.rb +0 -25
  1733. data/vendor/rails/activerecord/test/connections/native_firebird/connection.rb +0 -26
  1734. data/vendor/rails/activerecord/test/connections/native_frontbase/connection.rb +0 -27
  1735. data/vendor/rails/activerecord/test/connections/native_mysql/connection.rb +0 -25
  1736. data/vendor/rails/activerecord/test/connections/native_openbase/connection.rb +0 -21
  1737. data/vendor/rails/activerecord/test/connections/native_oracle/connection.rb +0 -27
  1738. data/vendor/rails/activerecord/test/connections/native_postgresql/connection.rb +0 -21
  1739. data/vendor/rails/activerecord/test/connections/native_sqlite/connection.rb +0 -25
  1740. data/vendor/rails/activerecord/test/connections/native_sqlite3/connection.rb +0 -25
  1741. data/vendor/rails/activerecord/test/connections/native_sqlite3/in_memory_connection.rb +0 -18
  1742. data/vendor/rails/activerecord/test/connections/native_sybase/connection.rb +0 -23
  1743. data/vendor/rails/activerecord/test/fixtures/accounts.yml +0 -29
  1744. data/vendor/rails/activerecord/test/fixtures/all/developers.yml +0 -0
  1745. data/vendor/rails/activerecord/test/fixtures/all/people.csv +0 -0
  1746. data/vendor/rails/activerecord/test/fixtures/all/tasks.yml +0 -0
  1747. data/vendor/rails/activerecord/test/fixtures/author_addresses.yml +0 -5
  1748. data/vendor/rails/activerecord/test/fixtures/author_favorites.yml +0 -4
  1749. data/vendor/rails/activerecord/test/fixtures/authors.yml +0 -9
  1750. data/vendor/rails/activerecord/test/fixtures/binaries.yml +0 -132
  1751. data/vendor/rails/activerecord/test/fixtures/books.yml +0 -7
  1752. data/vendor/rails/activerecord/test/fixtures/categories.yml +0 -14
  1753. data/vendor/rails/activerecord/test/fixtures/categories/special_categories.yml +0 -9
  1754. data/vendor/rails/activerecord/test/fixtures/categories/subsubdir/arbitrary_filename.yml +0 -4
  1755. data/vendor/rails/activerecord/test/fixtures/categories_ordered.yml +0 -7
  1756. data/vendor/rails/activerecord/test/fixtures/categories_posts.yml +0 -23
  1757. data/vendor/rails/activerecord/test/fixtures/categorizations.yml +0 -17
  1758. data/vendor/rails/activerecord/test/fixtures/clubs.yml +0 -6
  1759. data/vendor/rails/activerecord/test/fixtures/comments.yml +0 -59
  1760. data/vendor/rails/activerecord/test/fixtures/companies.yml +0 -56
  1761. data/vendor/rails/activerecord/test/fixtures/computers.yml +0 -4
  1762. data/vendor/rails/activerecord/test/fixtures/courses.yml +0 -7
  1763. data/vendor/rails/activerecord/test/fixtures/customers.yml +0 -26
  1764. data/vendor/rails/activerecord/test/fixtures/developers.yml +0 -21
  1765. data/vendor/rails/activerecord/test/fixtures/developers_projects.yml +0 -17
  1766. data/vendor/rails/activerecord/test/fixtures/edges.yml +0 -6
  1767. data/vendor/rails/activerecord/test/fixtures/entrants.yml +0 -14
  1768. data/vendor/rails/activerecord/test/fixtures/faces.yml +0 -11
  1769. data/vendor/rails/activerecord/test/fixtures/fk_test_has_fk.yml +0 -3
  1770. data/vendor/rails/activerecord/test/fixtures/fk_test_has_pk.yml +0 -2
  1771. data/vendor/rails/activerecord/test/fixtures/funny_jokes.yml +0 -10
  1772. data/vendor/rails/activerecord/test/fixtures/interests.yml +0 -33
  1773. data/vendor/rails/activerecord/test/fixtures/items.yml +0 -4
  1774. data/vendor/rails/activerecord/test/fixtures/jobs.yml +0 -7
  1775. data/vendor/rails/activerecord/test/fixtures/legacy_things.yml +0 -3
  1776. data/vendor/rails/activerecord/test/fixtures/mateys.yml +0 -4
  1777. data/vendor/rails/activerecord/test/fixtures/member_types.yml +0 -6
  1778. data/vendor/rails/activerecord/test/fixtures/members.yml +0 -6
  1779. data/vendor/rails/activerecord/test/fixtures/memberships.yml +0 -20
  1780. data/vendor/rails/activerecord/test/fixtures/men.yml +0 -5
  1781. data/vendor/rails/activerecord/test/fixtures/minimalistics.yml +0 -2
  1782. data/vendor/rails/activerecord/test/fixtures/mixed_case_monkeys.yml +0 -6
  1783. data/vendor/rails/activerecord/test/fixtures/mixins.yml +0 -29
  1784. data/vendor/rails/activerecord/test/fixtures/movies.yml +0 -7
  1785. data/vendor/rails/activerecord/test/fixtures/naked/csv/accounts.csv +0 -1
  1786. data/vendor/rails/activerecord/test/fixtures/naked/yml/accounts.yml +0 -1
  1787. data/vendor/rails/activerecord/test/fixtures/naked/yml/companies.yml +0 -1
  1788. data/vendor/rails/activerecord/test/fixtures/naked/yml/courses.yml +0 -1
  1789. data/vendor/rails/activerecord/test/fixtures/organizations.yml +0 -5
  1790. data/vendor/rails/activerecord/test/fixtures/owners.yml +0 -7
  1791. data/vendor/rails/activerecord/test/fixtures/parrots.yml +0 -27
  1792. data/vendor/rails/activerecord/test/fixtures/parrots_pirates.yml +0 -7
  1793. data/vendor/rails/activerecord/test/fixtures/people.yml +0 -15
  1794. data/vendor/rails/activerecord/test/fixtures/pets.yml +0 -14
  1795. data/vendor/rails/activerecord/test/fixtures/pirates.yml +0 -9
  1796. data/vendor/rails/activerecord/test/fixtures/polymorphic_designs.yml +0 -19
  1797. data/vendor/rails/activerecord/test/fixtures/polymorphic_prices.yml +0 -19
  1798. data/vendor/rails/activerecord/test/fixtures/posts.yml +0 -52
  1799. data/vendor/rails/activerecord/test/fixtures/price_estimates.yml +0 -7
  1800. data/vendor/rails/activerecord/test/fixtures/projects.yml +0 -7
  1801. data/vendor/rails/activerecord/test/fixtures/readers.yml +0 -9
  1802. data/vendor/rails/activerecord/test/fixtures/references.yml +0 -17
  1803. data/vendor/rails/activerecord/test/fixtures/reserved_words/distinct.yml +0 -5
  1804. data/vendor/rails/activerecord/test/fixtures/reserved_words/distincts_selects.yml +0 -11
  1805. data/vendor/rails/activerecord/test/fixtures/reserved_words/group.yml +0 -14
  1806. data/vendor/rails/activerecord/test/fixtures/reserved_words/select.yml +0 -8
  1807. data/vendor/rails/activerecord/test/fixtures/reserved_words/values.yml +0 -7
  1808. data/vendor/rails/activerecord/test/fixtures/ships.yml +0 -5
  1809. data/vendor/rails/activerecord/test/fixtures/sponsors.yml +0 -9
  1810. data/vendor/rails/activerecord/test/fixtures/subscribers.yml +0 -7
  1811. data/vendor/rails/activerecord/test/fixtures/subscriptions.yml +0 -12
  1812. data/vendor/rails/activerecord/test/fixtures/taggings.yml +0 -28
  1813. data/vendor/rails/activerecord/test/fixtures/tags.yml +0 -7
  1814. data/vendor/rails/activerecord/test/fixtures/tasks.yml +0 -7
  1815. data/vendor/rails/activerecord/test/fixtures/tees.yml +0 -4
  1816. data/vendor/rails/activerecord/test/fixtures/ties.yml +0 -4
  1817. data/vendor/rails/activerecord/test/fixtures/topics.yml +0 -42
  1818. data/vendor/rails/activerecord/test/fixtures/toys.yml +0 -4
  1819. data/vendor/rails/activerecord/test/fixtures/treasures.yml +0 -10
  1820. data/vendor/rails/activerecord/test/fixtures/vertices.yml +0 -4
  1821. data/vendor/rails/activerecord/test/fixtures/warehouse-things.yml +0 -3
  1822. data/vendor/rails/activerecord/test/fixtures/zines.yml +0 -5
  1823. data/vendor/rails/activerecord/test/migrations/broken/100_migration_that_raises_exception.rb +0 -10
  1824. data/vendor/rails/activerecord/test/migrations/decimal/1_give_me_big_numbers.rb +0 -15
  1825. data/vendor/rails/activerecord/test/migrations/duplicate/1_people_have_last_names.rb +0 -9
  1826. data/vendor/rails/activerecord/test/migrations/duplicate/2_we_need_reminders.rb +0 -12
  1827. data/vendor/rails/activerecord/test/migrations/duplicate/3_foo.rb +0 -7
  1828. data/vendor/rails/activerecord/test/migrations/duplicate/3_innocent_jointable.rb +0 -12
  1829. data/vendor/rails/activerecord/test/migrations/duplicate_names/20080507052938_chunky.rb +0 -7
  1830. data/vendor/rails/activerecord/test/migrations/duplicate_names/20080507053028_chunky.rb +0 -7
  1831. data/vendor/rails/activerecord/test/migrations/interleaved/pass_1/3_innocent_jointable.rb +0 -12
  1832. data/vendor/rails/activerecord/test/migrations/interleaved/pass_2/1_people_have_last_names.rb +0 -9
  1833. data/vendor/rails/activerecord/test/migrations/interleaved/pass_2/3_innocent_jointable.rb +0 -12
  1834. data/vendor/rails/activerecord/test/migrations/interleaved/pass_3/1_people_have_last_names.rb +0 -9
  1835. data/vendor/rails/activerecord/test/migrations/interleaved/pass_3/2_i_raise_on_down.rb +0 -8
  1836. data/vendor/rails/activerecord/test/migrations/interleaved/pass_3/3_innocent_jointable.rb +0 -12
  1837. data/vendor/rails/activerecord/test/migrations/missing/1000_people_have_middle_names.rb +0 -9
  1838. data/vendor/rails/activerecord/test/migrations/missing/1_people_have_last_names.rb +0 -9
  1839. data/vendor/rails/activerecord/test/migrations/missing/3_we_need_reminders.rb +0 -12
  1840. data/vendor/rails/activerecord/test/migrations/missing/4_innocent_jointable.rb +0 -12
  1841. data/vendor/rails/activerecord/test/migrations/valid/1_people_have_last_names.rb +0 -9
  1842. data/vendor/rails/activerecord/test/migrations/valid/2_we_need_reminders.rb +0 -12
  1843. data/vendor/rails/activerecord/test/migrations/valid/3_innocent_jointable.rb +0 -12
  1844. data/vendor/rails/activerecord/test/models/author.rb +0 -151
  1845. data/vendor/rails/activerecord/test/models/auto_id.rb +0 -4
  1846. data/vendor/rails/activerecord/test/models/binary.rb +0 -2
  1847. data/vendor/rails/activerecord/test/models/bird.rb +0 -9
  1848. data/vendor/rails/activerecord/test/models/book.rb +0 -4
  1849. data/vendor/rails/activerecord/test/models/categorization.rb +0 -5
  1850. data/vendor/rails/activerecord/test/models/category.rb +0 -34
  1851. data/vendor/rails/activerecord/test/models/citation.rb +0 -6
  1852. data/vendor/rails/activerecord/test/models/club.rb +0 -13
  1853. data/vendor/rails/activerecord/test/models/column_name.rb +0 -3
  1854. data/vendor/rails/activerecord/test/models/comment.rb +0 -29
  1855. data/vendor/rails/activerecord/test/models/company.rb +0 -173
  1856. data/vendor/rails/activerecord/test/models/company_in_module.rb +0 -78
  1857. data/vendor/rails/activerecord/test/models/computer.rb +0 -3
  1858. data/vendor/rails/activerecord/test/models/contact.rb +0 -16
  1859. data/vendor/rails/activerecord/test/models/contract.rb +0 -5
  1860. data/vendor/rails/activerecord/test/models/course.rb +0 -3
  1861. data/vendor/rails/activerecord/test/models/customer.rb +0 -73
  1862. data/vendor/rails/activerecord/test/models/default.rb +0 -2
  1863. data/vendor/rails/activerecord/test/models/developer.rb +0 -101
  1864. data/vendor/rails/activerecord/test/models/edge.rb +0 -5
  1865. data/vendor/rails/activerecord/test/models/entrant.rb +0 -3
  1866. data/vendor/rails/activerecord/test/models/essay.rb +0 -3
  1867. data/vendor/rails/activerecord/test/models/event.rb +0 -3
  1868. data/vendor/rails/activerecord/test/models/event_author.rb +0 -8
  1869. data/vendor/rails/activerecord/test/models/face.rb +0 -7
  1870. data/vendor/rails/activerecord/test/models/guid.rb +0 -2
  1871. data/vendor/rails/activerecord/test/models/interest.rb +0 -5
  1872. data/vendor/rails/activerecord/test/models/invoice.rb +0 -4
  1873. data/vendor/rails/activerecord/test/models/item.rb +0 -7
  1874. data/vendor/rails/activerecord/test/models/job.rb +0 -5
  1875. data/vendor/rails/activerecord/test/models/joke.rb +0 -3
  1876. data/vendor/rails/activerecord/test/models/keyboard.rb +0 -3
  1877. data/vendor/rails/activerecord/test/models/legacy_thing.rb +0 -3
  1878. data/vendor/rails/activerecord/test/models/line_item.rb +0 -3
  1879. data/vendor/rails/activerecord/test/models/man.rb +0 -9
  1880. data/vendor/rails/activerecord/test/models/matey.rb +0 -4
  1881. data/vendor/rails/activerecord/test/models/member.rb +0 -12
  1882. data/vendor/rails/activerecord/test/models/member_detail.rb +0 -5
  1883. data/vendor/rails/activerecord/test/models/member_type.rb +0 -3
  1884. data/vendor/rails/activerecord/test/models/membership.rb +0 -9
  1885. data/vendor/rails/activerecord/test/models/minimalistic.rb +0 -2
  1886. data/vendor/rails/activerecord/test/models/mixed_case_monkey.rb +0 -3
  1887. data/vendor/rails/activerecord/test/models/movie.rb +0 -5
  1888. data/vendor/rails/activerecord/test/models/order.rb +0 -4
  1889. data/vendor/rails/activerecord/test/models/organization.rb +0 -6
  1890. data/vendor/rails/activerecord/test/models/owner.rb +0 -5
  1891. data/vendor/rails/activerecord/test/models/parrot.rb +0 -22
  1892. data/vendor/rails/activerecord/test/models/person.rb +0 -16
  1893. data/vendor/rails/activerecord/test/models/pet.rb +0 -5
  1894. data/vendor/rails/activerecord/test/models/pirate.rb +0 -80
  1895. data/vendor/rails/activerecord/test/models/polymorphic_design.rb +0 -3
  1896. data/vendor/rails/activerecord/test/models/polymorphic_price.rb +0 -3
  1897. data/vendor/rails/activerecord/test/models/post.rb +0 -102
  1898. data/vendor/rails/activerecord/test/models/price_estimate.rb +0 -3
  1899. data/vendor/rails/activerecord/test/models/project.rb +0 -30
  1900. data/vendor/rails/activerecord/test/models/reader.rb +0 -4
  1901. data/vendor/rails/activerecord/test/models/reference.rb +0 -4
  1902. data/vendor/rails/activerecord/test/models/reply.rb +0 -46
  1903. data/vendor/rails/activerecord/test/models/ship.rb +0 -19
  1904. data/vendor/rails/activerecord/test/models/ship_part.rb +0 -7
  1905. data/vendor/rails/activerecord/test/models/sponsor.rb +0 -4
  1906. data/vendor/rails/activerecord/test/models/subject.rb +0 -4
  1907. data/vendor/rails/activerecord/test/models/subscriber.rb +0 -8
  1908. data/vendor/rails/activerecord/test/models/subscription.rb +0 -4
  1909. data/vendor/rails/activerecord/test/models/tag.rb +0 -7
  1910. data/vendor/rails/activerecord/test/models/tagging.rb +0 -10
  1911. data/vendor/rails/activerecord/test/models/task.rb +0 -3
  1912. data/vendor/rails/activerecord/test/models/tee.rb +0 -4
  1913. data/vendor/rails/activerecord/test/models/tie.rb +0 -4
  1914. data/vendor/rails/activerecord/test/models/topic.rb +0 -80
  1915. data/vendor/rails/activerecord/test/models/toy.rb +0 -6
  1916. data/vendor/rails/activerecord/test/models/treasure.rb +0 -8
  1917. data/vendor/rails/activerecord/test/models/vertex.rb +0 -9
  1918. data/vendor/rails/activerecord/test/models/warehouse_thing.rb +0 -5
  1919. data/vendor/rails/activerecord/test/models/zine.rb +0 -3
  1920. data/vendor/rails/activerecord/test/schema/mysql_specific_schema.rb +0 -31
  1921. data/vendor/rails/activerecord/test/schema/postgresql_specific_schema.rb +0 -114
  1922. data/vendor/rails/activerecord/test/schema/schema.rb +0 -550
  1923. data/vendor/rails/activerecord/test/schema/schema2.rb +0 -6
  1924. data/vendor/rails/activerecord/test/schema/sqlite_specific_schema.rb +0 -25
  1925. data/vendor/rails/activeresource/CHANGELOG +0 -306
  1926. data/vendor/rails/activeresource/MIT-LICENSE +0 -20
  1927. data/vendor/rails/activeresource/README +0 -165
  1928. data/vendor/rails/activeresource/Rakefile +0 -139
  1929. data/vendor/rails/activeresource/lib/active_resource.rb +0 -44
  1930. data/vendor/rails/activeresource/lib/active_resource/base.rb +0 -1166
  1931. data/vendor/rails/activeresource/lib/active_resource/connection.rb +0 -283
  1932. data/vendor/rails/activeresource/lib/active_resource/custom_methods.rb +0 -120
  1933. data/vendor/rails/activeresource/lib/active_resource/exceptions.rb +0 -66
  1934. data/vendor/rails/activeresource/lib/active_resource/formats.rb +0 -14
  1935. data/vendor/rails/activeresource/lib/active_resource/formats/json_format.rb +0 -23
  1936. data/vendor/rails/activeresource/lib/active_resource/formats/xml_format.rb +0 -34
  1937. data/vendor/rails/activeresource/lib/active_resource/http_mock.rb +0 -302
  1938. data/vendor/rails/activeresource/lib/active_resource/validations.rb +0 -290
  1939. data/vendor/rails/activeresource/lib/active_resource/version.rb +0 -9
  1940. data/vendor/rails/activeresource/lib/activeresource.rb +0 -2
  1941. data/vendor/rails/activeresource/test/abstract_unit.rb +0 -21
  1942. data/vendor/rails/activeresource/test/authorization_test.rb +0 -122
  1943. data/vendor/rails/activeresource/test/base/custom_methods_test.rb +0 -100
  1944. data/vendor/rails/activeresource/test/base/equality_test.rb +0 -52
  1945. data/vendor/rails/activeresource/test/base/load_test.rb +0 -161
  1946. data/vendor/rails/activeresource/test/base_errors_test.rb +0 -98
  1947. data/vendor/rails/activeresource/test/base_test.rb +0 -1087
  1948. data/vendor/rails/activeresource/test/connection_test.rb +0 -238
  1949. data/vendor/rails/activeresource/test/fixtures/beast.rb +0 -14
  1950. data/vendor/rails/activeresource/test/fixtures/customer.rb +0 -3
  1951. data/vendor/rails/activeresource/test/fixtures/person.rb +0 -3
  1952. data/vendor/rails/activeresource/test/fixtures/proxy.rb +0 -4
  1953. data/vendor/rails/activeresource/test/fixtures/street_address.rb +0 -4
  1954. data/vendor/rails/activeresource/test/format_test.rb +0 -112
  1955. data/vendor/rails/activeresource/test/http_mock_test.rb +0 -155
  1956. data/vendor/rails/activeresource/test/setter_trap.rb +0 -26
  1957. data/vendor/rails/activesupport/CHANGELOG +0 -1383
  1958. data/vendor/rails/activesupport/MIT-LICENSE +0 -20
  1959. data/vendor/rails/activesupport/README +0 -43
  1960. data/vendor/rails/activesupport/Rakefile +0 -175
  1961. data/vendor/rails/activesupport/bin/generate_tables +0 -147
  1962. data/vendor/rails/activesupport/install.rb +0 -30
  1963. data/vendor/rails/activesupport/lib/active_support.rb +0 -60
  1964. data/vendor/rails/activesupport/lib/active_support/all.rb +0 -8
  1965. data/vendor/rails/activesupport/lib/active_support/backtrace_cleaner.rb +0 -72
  1966. data/vendor/rails/activesupport/lib/active_support/base64.rb +0 -33
  1967. data/vendor/rails/activesupport/lib/active_support/basic_object.rb +0 -21
  1968. data/vendor/rails/activesupport/lib/active_support/buffered_logger.rb +0 -129
  1969. data/vendor/rails/activesupport/lib/active_support/cache.rb +0 -248
  1970. data/vendor/rails/activesupport/lib/active_support/cache/compressed_mem_cache_store.rb +0 -20
  1971. data/vendor/rails/activesupport/lib/active_support/cache/drb_store.rb +0 -14
  1972. data/vendor/rails/activesupport/lib/active_support/cache/file_store.rb +0 -72
  1973. data/vendor/rails/activesupport/lib/active_support/cache/mem_cache_store.rb +0 -143
  1974. data/vendor/rails/activesupport/lib/active_support/cache/memory_store.rb +0 -58
  1975. data/vendor/rails/activesupport/lib/active_support/cache/strategy/local_cache.rb +0 -104
  1976. data/vendor/rails/activesupport/lib/active_support/cache/synchronized_memory_store.rb +0 -47
  1977. data/vendor/rails/activesupport/lib/active_support/callbacks.rb +0 -279
  1978. data/vendor/rails/activesupport/lib/active_support/core_ext.rb +0 -8
  1979. data/vendor/rails/activesupport/lib/active_support/core_ext/array.rb +0 -15
  1980. data/vendor/rails/activesupport/lib/active_support/core_ext/array/access.rb +0 -53
  1981. data/vendor/rails/activesupport/lib/active_support/core_ext/array/conversions.rb +0 -197
  1982. data/vendor/rails/activesupport/lib/active_support/core_ext/array/extract_options.rb +0 -20
  1983. data/vendor/rails/activesupport/lib/active_support/core_ext/array/grouping.rb +0 -106
  1984. data/vendor/rails/activesupport/lib/active_support/core_ext/array/random_access.rb +0 -42
  1985. data/vendor/rails/activesupport/lib/active_support/core_ext/array/wrapper.rb +0 -24
  1986. data/vendor/rails/activesupport/lib/active_support/core_ext/base64.rb +0 -4
  1987. data/vendor/rails/activesupport/lib/active_support/core_ext/base64/encoding.rb +0 -16
  1988. data/vendor/rails/activesupport/lib/active_support/core_ext/benchmark.rb +0 -19
  1989. data/vendor/rails/activesupport/lib/active_support/core_ext/bigdecimal.rb +0 -6
  1990. data/vendor/rails/activesupport/lib/active_support/core_ext/bigdecimal/conversions.rb +0 -37
  1991. data/vendor/rails/activesupport/lib/active_support/core_ext/blank.rb +0 -2
  1992. data/vendor/rails/activesupport/lib/active_support/core_ext/cgi.rb +0 -5
  1993. data/vendor/rails/activesupport/lib/active_support/core_ext/cgi/escape_skipping_slashes.rb +0 -23
  1994. data/vendor/rails/activesupport/lib/active_support/core_ext/class.rb +0 -5
  1995. data/vendor/rails/activesupport/lib/active_support/core_ext/class/attribute.rb +0 -67
  1996. data/vendor/rails/activesupport/lib/active_support/core_ext/class/attribute_accessors.rb +0 -61
  1997. data/vendor/rails/activesupport/lib/active_support/core_ext/class/delegating_attributes.rb +0 -47
  1998. data/vendor/rails/activesupport/lib/active_support/core_ext/class/inheritable_attributes.rb +0 -140
  1999. data/vendor/rails/activesupport/lib/active_support/core_ext/class/removal.rb +0 -50
  2000. data/vendor/rails/activesupport/lib/active_support/core_ext/date.rb +0 -10
  2001. data/vendor/rails/activesupport/lib/active_support/core_ext/date/behavior.rb +0 -42
  2002. data/vendor/rails/activesupport/lib/active_support/core_ext/date/calculations.rb +0 -241
  2003. data/vendor/rails/activesupport/lib/active_support/core_ext/date/conversions.rb +0 -107
  2004. data/vendor/rails/activesupport/lib/active_support/core_ext/date_time.rb +0 -12
  2005. data/vendor/rails/activesupport/lib/active_support/core_ext/date_time/calculations.rb +0 -126
  2006. data/vendor/rails/activesupport/lib/active_support/core_ext/date_time/conversions.rb +0 -107
  2007. data/vendor/rails/activesupport/lib/active_support/core_ext/duplicable.rb +0 -43
  2008. data/vendor/rails/activesupport/lib/active_support/core_ext/enumerable.rb +0 -120
  2009. data/vendor/rails/activesupport/lib/active_support/core_ext/exception.rb +0 -45
  2010. data/vendor/rails/activesupport/lib/active_support/core_ext/file.rb +0 -5
  2011. data/vendor/rails/activesupport/lib/active_support/core_ext/file/atomic.rb +0 -47
  2012. data/vendor/rails/activesupport/lib/active_support/core_ext/float.rb +0 -7
  2013. data/vendor/rails/activesupport/lib/active_support/core_ext/float/rounding.rb +0 -24
  2014. data/vendor/rails/activesupport/lib/active_support/core_ext/float/time.rb +0 -27
  2015. data/vendor/rails/activesupport/lib/active_support/core_ext/hash.rb +0 -14
  2016. data/vendor/rails/activesupport/lib/active_support/core_ext/hash/conversions.rb +0 -247
  2017. data/vendor/rails/activesupport/lib/active_support/core_ext/hash/deep_merge.rb +0 -23
  2018. data/vendor/rails/activesupport/lib/active_support/core_ext/hash/diff.rb +0 -19
  2019. data/vendor/rails/activesupport/lib/active_support/core_ext/hash/except.rb +0 -25
  2020. data/vendor/rails/activesupport/lib/active_support/core_ext/hash/indifferent_access.rb +0 -143
  2021. data/vendor/rails/activesupport/lib/active_support/core_ext/hash/keys.rb +0 -52
  2022. data/vendor/rails/activesupport/lib/active_support/core_ext/hash/reverse_merge.rb +0 -35
  2023. data/vendor/rails/activesupport/lib/active_support/core_ext/hash/slice.rb +0 -40
  2024. data/vendor/rails/activesupport/lib/active_support/core_ext/integer.rb +0 -9
  2025. data/vendor/rails/activesupport/lib/active_support/core_ext/integer/even_odd.rb +0 -29
  2026. data/vendor/rails/activesupport/lib/active_support/core_ext/integer/inflections.rb +0 -20
  2027. data/vendor/rails/activesupport/lib/active_support/core_ext/integer/time.rb +0 -45
  2028. data/vendor/rails/activesupport/lib/active_support/core_ext/kernel.rb +0 -5
  2029. data/vendor/rails/activesupport/lib/active_support/core_ext/kernel/agnostics.rb +0 -11
  2030. data/vendor/rails/activesupport/lib/active_support/core_ext/kernel/daemonizing.rb +0 -7
  2031. data/vendor/rails/activesupport/lib/active_support/core_ext/kernel/debugger.rb +0 -16
  2032. data/vendor/rails/activesupport/lib/active_support/core_ext/kernel/reporting.rb +0 -59
  2033. data/vendor/rails/activesupport/lib/active_support/core_ext/kernel/requires.rb +0 -24
  2034. data/vendor/rails/activesupport/lib/active_support/core_ext/kernel/singleton_class.rb +0 -13
  2035. data/vendor/rails/activesupport/lib/active_support/core_ext/load_error.rb +0 -38
  2036. data/vendor/rails/activesupport/lib/active_support/core_ext/logger.rb +0 -145
  2037. data/vendor/rails/activesupport/lib/active_support/core_ext/module.rb +0 -23
  2038. data/vendor/rails/activesupport/lib/active_support/core_ext/module/aliasing.rb +0 -74
  2039. data/vendor/rails/activesupport/lib/active_support/core_ext/module/attr_accessor_with_default.rb +0 -31
  2040. data/vendor/rails/activesupport/lib/active_support/core_ext/module/attr_internal.rb +0 -32
  2041. data/vendor/rails/activesupport/lib/active_support/core_ext/module/attribute_accessors.rb +0 -67
  2042. data/vendor/rails/activesupport/lib/active_support/core_ext/module/delegation.rb +0 -135
  2043. data/vendor/rails/activesupport/lib/active_support/core_ext/module/inclusion.rb +0 -30
  2044. data/vendor/rails/activesupport/lib/active_support/core_ext/module/introspection.rb +0 -90
  2045. data/vendor/rails/activesupport/lib/active_support/core_ext/module/loading.rb +0 -23
  2046. data/vendor/rails/activesupport/lib/active_support/core_ext/module/model_naming.rb +0 -25
  2047. data/vendor/rails/activesupport/lib/active_support/core_ext/module/remove_method.rb +0 -6
  2048. data/vendor/rails/activesupport/lib/active_support/core_ext/module/synchronization.rb +0 -39
  2049. data/vendor/rails/activesupport/lib/active_support/core_ext/name_error.rb +0 -19
  2050. data/vendor/rails/activesupport/lib/active_support/core_ext/numeric.rb +0 -9
  2051. data/vendor/rails/activesupport/lib/active_support/core_ext/numeric/bytes.rb +0 -50
  2052. data/vendor/rails/activesupport/lib/active_support/core_ext/numeric/conversions.rb +0 -19
  2053. data/vendor/rails/activesupport/lib/active_support/core_ext/numeric/time.rb +0 -81
  2054. data/vendor/rails/activesupport/lib/active_support/core_ext/object.rb +0 -7
  2055. data/vendor/rails/activesupport/lib/active_support/core_ext/object/blank.rb +0 -76
  2056. data/vendor/rails/activesupport/lib/active_support/core_ext/object/conversions.rb +0 -15
  2057. data/vendor/rails/activesupport/lib/active_support/core_ext/object/extending.rb +0 -80
  2058. data/vendor/rails/activesupport/lib/active_support/core_ext/object/instance_variables.rb +0 -74
  2059. data/vendor/rails/activesupport/lib/active_support/core_ext/object/metaclass.rb +0 -14
  2060. data/vendor/rails/activesupport/lib/active_support/core_ext/object/misc.rb +0 -93
  2061. data/vendor/rails/activesupport/lib/active_support/core_ext/object/singleton_class.rb +0 -13
  2062. data/vendor/rails/activesupport/lib/active_support/core_ext/pathname.rb +0 -7
  2063. data/vendor/rails/activesupport/lib/active_support/core_ext/pathname/clean_within.rb +0 -14
  2064. data/vendor/rails/activesupport/lib/active_support/core_ext/proc.rb +0 -12
  2065. data/vendor/rails/activesupport/lib/active_support/core_ext/process.rb +0 -1
  2066. data/vendor/rails/activesupport/lib/active_support/core_ext/process/daemon.rb +0 -25
  2067. data/vendor/rails/activesupport/lib/active_support/core_ext/range.rb +0 -11
  2068. data/vendor/rails/activesupport/lib/active_support/core_ext/range/blockless_step.rb +0 -32
  2069. data/vendor/rails/activesupport/lib/active_support/core_ext/range/conversions.rb +0 -27
  2070. data/vendor/rails/activesupport/lib/active_support/core_ext/range/include_range.rb +0 -30
  2071. data/vendor/rails/activesupport/lib/active_support/core_ext/range/overlaps.rb +0 -15
  2072. data/vendor/rails/activesupport/lib/active_support/core_ext/rexml.rb +0 -41
  2073. data/vendor/rails/activesupport/lib/active_support/core_ext/string.rb +0 -24
  2074. data/vendor/rails/activesupport/lib/active_support/core_ext/string/access.rb +0 -106
  2075. data/vendor/rails/activesupport/lib/active_support/core_ext/string/behavior.rb +0 -13
  2076. data/vendor/rails/activesupport/lib/active_support/core_ext/string/bytesize.rb +0 -5
  2077. data/vendor/rails/activesupport/lib/active_support/core_ext/string/conversions.rb +0 -28
  2078. data/vendor/rails/activesupport/lib/active_support/core_ext/string/filters.rb +0 -26
  2079. data/vendor/rails/activesupport/lib/active_support/core_ext/string/inflections.rb +0 -167
  2080. data/vendor/rails/activesupport/lib/active_support/core_ext/string/iterators.rb +0 -23
  2081. data/vendor/rails/activesupport/lib/active_support/core_ext/string/multibyte.rb +0 -81
  2082. data/vendor/rails/activesupport/lib/active_support/core_ext/string/output_safety.rb +0 -101
  2083. data/vendor/rails/activesupport/lib/active_support/core_ext/string/starts_ends_with.rb +0 -33
  2084. data/vendor/rails/activesupport/lib/active_support/core_ext/string/xchar.rb +0 -11
  2085. data/vendor/rails/activesupport/lib/active_support/core_ext/symbol.rb +0 -14
  2086. data/vendor/rails/activesupport/lib/active_support/core_ext/time.rb +0 -46
  2087. data/vendor/rails/activesupport/lib/active_support/core_ext/time/behavior.rb +0 -13
  2088. data/vendor/rails/activesupport/lib/active_support/core_ext/time/calculations.rb +0 -313
  2089. data/vendor/rails/activesupport/lib/active_support/core_ext/time/conversions.rb +0 -90
  2090. data/vendor/rails/activesupport/lib/active_support/core_ext/time/zones.rb +0 -86
  2091. data/vendor/rails/activesupport/lib/active_support/core_ext/try.rb +0 -36
  2092. data/vendor/rails/activesupport/lib/active_support/core_ext/uri.rb +0 -16
  2093. data/vendor/rails/activesupport/lib/active_support/dependencies.rb +0 -651
  2094. data/vendor/rails/activesupport/lib/active_support/deprecation.rb +0 -204
  2095. data/vendor/rails/activesupport/lib/active_support/duration.rb +0 -100
  2096. data/vendor/rails/activesupport/lib/active_support/gzip.rb +0 -25
  2097. data/vendor/rails/activesupport/lib/active_support/inflections.rb +0 -56
  2098. data/vendor/rails/activesupport/lib/active_support/inflector.rb +0 -409
  2099. data/vendor/rails/activesupport/lib/active_support/json.rb +0 -2
  2100. data/vendor/rails/activesupport/lib/active_support/json/backends/jsongem.rb +0 -37
  2101. data/vendor/rails/activesupport/lib/active_support/json/backends/yajl.rb +0 -40
  2102. data/vendor/rails/activesupport/lib/active_support/json/backends/yaml.rb +0 -87
  2103. data/vendor/rails/activesupport/lib/active_support/json/decoding.rb +0 -50
  2104. data/vendor/rails/activesupport/lib/active_support/json/encoders/date.rb +0 -22
  2105. data/vendor/rails/activesupport/lib/active_support/json/encoders/date_time.rb +0 -22
  2106. data/vendor/rails/activesupport/lib/active_support/json/encoders/enumerable.rb +0 -17
  2107. data/vendor/rails/activesupport/lib/active_support/json/encoders/false_class.rb +0 -7
  2108. data/vendor/rails/activesupport/lib/active_support/json/encoders/hash.rb +0 -56
  2109. data/vendor/rails/activesupport/lib/active_support/json/encoders/nil_class.rb +0 -7
  2110. data/vendor/rails/activesupport/lib/active_support/json/encoders/numeric.rb +0 -21
  2111. data/vendor/rails/activesupport/lib/active_support/json/encoders/object.rb +0 -10
  2112. data/vendor/rails/activesupport/lib/active_support/json/encoders/regexp.rb +0 -9
  2113. data/vendor/rails/activesupport/lib/active_support/json/encoders/string.rb +0 -9
  2114. data/vendor/rails/activesupport/lib/active_support/json/encoders/symbol.rb +0 -5
  2115. data/vendor/rails/activesupport/lib/active_support/json/encoders/time.rb +0 -22
  2116. data/vendor/rails/activesupport/lib/active_support/json/encoders/true_class.rb +0 -7
  2117. data/vendor/rails/activesupport/lib/active_support/json/encoding.rb +0 -111
  2118. data/vendor/rails/activesupport/lib/active_support/json/variable.rb +0 -10
  2119. data/vendor/rails/activesupport/lib/active_support/locale/en.yml +0 -36
  2120. data/vendor/rails/activesupport/lib/active_support/memoizable.rb +0 -102
  2121. data/vendor/rails/activesupport/lib/active_support/message_encryptor.rb +0 -70
  2122. data/vendor/rails/activesupport/lib/active_support/message_verifier.rb +0 -79
  2123. data/vendor/rails/activesupport/lib/active_support/multibyte.rb +0 -57
  2124. data/vendor/rails/activesupport/lib/active_support/multibyte/chars.rb +0 -707
  2125. data/vendor/rails/activesupport/lib/active_support/multibyte/exceptions.rb +0 -8
  2126. data/vendor/rails/activesupport/lib/active_support/multibyte/unicode_database.rb +0 -71
  2127. data/vendor/rails/activesupport/lib/active_support/multibyte/utils.rb +0 -60
  2128. data/vendor/rails/activesupport/lib/active_support/option_merger.rb +0 -23
  2129. data/vendor/rails/activesupport/lib/active_support/ordered_hash.rb +0 -164
  2130. data/vendor/rails/activesupport/lib/active_support/ordered_options.rb +0 -19
  2131. data/vendor/rails/activesupport/lib/active_support/rescuable.rb +0 -108
  2132. data/vendor/rails/activesupport/lib/active_support/secure_random.rb +0 -199
  2133. data/vendor/rails/activesupport/lib/active_support/string_inquirer.rb +0 -21
  2134. data/vendor/rails/activesupport/lib/active_support/test_case.rb +0 -40
  2135. data/vendor/rails/activesupport/lib/active_support/testing/assertions.rb +0 -79
  2136. data/vendor/rails/activesupport/lib/active_support/testing/declarative.rb +0 -21
  2137. data/vendor/rails/activesupport/lib/active_support/testing/default.rb +0 -9
  2138. data/vendor/rails/activesupport/lib/active_support/testing/deprecation.rb +0 -57
  2139. data/vendor/rails/activesupport/lib/active_support/testing/performance.rb +0 -452
  2140. data/vendor/rails/activesupport/lib/active_support/testing/setup_and_teardown.rb +0 -91
  2141. data/vendor/rails/activesupport/lib/active_support/time_with_zone.rb +0 -335
  2142. data/vendor/rails/activesupport/lib/active_support/values/time_zone.rb +0 -416
  2143. data/vendor/rails/activesupport/lib/active_support/values/unicode_tables.dat +0 -0
  2144. data/vendor/rails/activesupport/lib/active_support/vendor.rb +0 -36
  2145. data/vendor/rails/activesupport/lib/active_support/vendor/builder-2.1.2/blankslate.rb +0 -113
  2146. data/vendor/rails/activesupport/lib/active_support/vendor/builder-2.1.2/builder.rb +0 -13
  2147. data/vendor/rails/activesupport/lib/active_support/vendor/builder-2.1.2/builder/blankslate.rb +0 -20
  2148. data/vendor/rails/activesupport/lib/active_support/vendor/builder-2.1.2/builder/css.rb +0 -250
  2149. data/vendor/rails/activesupport/lib/active_support/vendor/builder-2.1.2/builder/xchar.rb +0 -115
  2150. data/vendor/rails/activesupport/lib/active_support/vendor/builder-2.1.2/builder/xmlbase.rb +0 -139
  2151. data/vendor/rails/activesupport/lib/active_support/vendor/builder-2.1.2/builder/xmlevents.rb +0 -63
  2152. data/vendor/rails/activesupport/lib/active_support/vendor/builder-2.1.2/builder/xmlmarkup.rb +0 -328
  2153. data/vendor/rails/activesupport/lib/active_support/vendor/i18n-0.4.1/i18n.rb +0 -322
  2154. data/vendor/rails/activesupport/lib/active_support/vendor/i18n-0.4.1/i18n/backend.rb +0 -20
  2155. data/vendor/rails/activesupport/lib/active_support/vendor/i18n-0.4.1/i18n/backend/active_record.rb +0 -61
  2156. data/vendor/rails/activesupport/lib/active_support/vendor/i18n-0.4.1/i18n/backend/active_record/missing.rb +0 -65
  2157. data/vendor/rails/activesupport/lib/active_support/vendor/i18n-0.4.1/i18n/backend/active_record/store_procs.rb +0 -38
  2158. data/vendor/rails/activesupport/lib/active_support/vendor/i18n-0.4.1/i18n/backend/active_record/translation.rb +0 -93
  2159. data/vendor/rails/activesupport/lib/active_support/vendor/i18n-0.4.1/i18n/backend/base.rb +0 -237
  2160. data/vendor/rails/activesupport/lib/active_support/vendor/i18n-0.4.1/i18n/backend/cache.rb +0 -77
  2161. data/vendor/rails/activesupport/lib/active_support/vendor/i18n-0.4.1/i18n/backend/cascade.rb +0 -57
  2162. data/vendor/rails/activesupport/lib/active_support/vendor/i18n-0.4.1/i18n/backend/chain.rb +0 -77
  2163. data/vendor/rails/activesupport/lib/active_support/vendor/i18n-0.4.1/i18n/backend/cldr.rb +0 -100
  2164. data/vendor/rails/activesupport/lib/active_support/vendor/i18n-0.4.1/i18n/backend/fallbacks.rb +0 -69
  2165. data/vendor/rails/activesupport/lib/active_support/vendor/i18n-0.4.1/i18n/backend/flatten.rb +0 -113
  2166. data/vendor/rails/activesupport/lib/active_support/vendor/i18n-0.4.1/i18n/backend/gettext.rb +0 -75
  2167. data/vendor/rails/activesupport/lib/active_support/vendor/i18n-0.4.1/i18n/backend/interpolation_compiler.rb +0 -123
  2168. data/vendor/rails/activesupport/lib/active_support/vendor/i18n-0.4.1/i18n/backend/key_value.rb +0 -102
  2169. data/vendor/rails/activesupport/lib/active_support/vendor/i18n-0.4.1/i18n/backend/memoize.rb +0 -48
  2170. data/vendor/rails/activesupport/lib/active_support/vendor/i18n-0.4.1/i18n/backend/metadata.rb +0 -65
  2171. data/vendor/rails/activesupport/lib/active_support/vendor/i18n-0.4.1/i18n/backend/pluralization.rb +0 -57
  2172. data/vendor/rails/activesupport/lib/active_support/vendor/i18n-0.4.1/i18n/backend/simple.rb +0 -87
  2173. data/vendor/rails/activesupport/lib/active_support/vendor/i18n-0.4.1/i18n/backend/transliterator.rb +0 -98
  2174. data/vendor/rails/activesupport/lib/active_support/vendor/i18n-0.4.1/i18n/config.rb +0 -84
  2175. data/vendor/rails/activesupport/lib/active_support/vendor/i18n-0.4.1/i18n/core_ext/hash.rb +0 -28
  2176. data/vendor/rails/activesupport/lib/active_support/vendor/i18n-0.4.1/i18n/core_ext/string/interpolate.rb +0 -98
  2177. data/vendor/rails/activesupport/lib/active_support/vendor/i18n-0.4.1/i18n/exceptions.rb +0 -61
  2178. data/vendor/rails/activesupport/lib/active_support/vendor/i18n-0.4.1/i18n/gettext.rb +0 -27
  2179. data/vendor/rails/activesupport/lib/active_support/vendor/i18n-0.4.1/i18n/gettext/helpers.rb +0 -65
  2180. data/vendor/rails/activesupport/lib/active_support/vendor/i18n-0.4.1/i18n/gettext/po_parser.rb +0 -329
  2181. data/vendor/rails/activesupport/lib/active_support/vendor/i18n-0.4.1/i18n/locale.rb +0 -6
  2182. data/vendor/rails/activesupport/lib/active_support/vendor/i18n-0.4.1/i18n/locale/fallbacks.rb +0 -98
  2183. data/vendor/rails/activesupport/lib/active_support/vendor/i18n-0.4.1/i18n/locale/tag.rb +0 -28
  2184. data/vendor/rails/activesupport/lib/active_support/vendor/i18n-0.4.1/i18n/locale/tag/parents.rb +0 -24
  2185. data/vendor/rails/activesupport/lib/active_support/vendor/i18n-0.4.1/i18n/locale/tag/rfc4646.rb +0 -76
  2186. data/vendor/rails/activesupport/lib/active_support/vendor/i18n-0.4.1/i18n/locale/tag/simple.rb +0 -41
  2187. data/vendor/rails/activesupport/lib/active_support/vendor/i18n-0.4.1/i18n/version.rb +0 -3
  2188. data/vendor/rails/activesupport/lib/active_support/vendor/memcache-client-1.7.4/memcache.rb +0 -1107
  2189. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo.rb +0 -33
  2190. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/data_timezone.rb +0 -47
  2191. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/data_timezone_info.rb +0 -228
  2192. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Africa/Algiers.rb +0 -55
  2193. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Africa/Cairo.rb +0 -219
  2194. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Africa/Casablanca.rb +0 -40
  2195. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Africa/Harare.rb +0 -18
  2196. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Africa/Johannesburg.rb +0 -25
  2197. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Africa/Monrovia.rb +0 -22
  2198. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Africa/Nairobi.rb +0 -23
  2199. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Argentina/Buenos_Aires.rb +0 -166
  2200. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Argentina/San_Juan.rb +0 -86
  2201. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Bogota.rb +0 -23
  2202. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Caracas.rb +0 -23
  2203. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Chicago.rb +0 -283
  2204. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Chihuahua.rb +0 -136
  2205. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Denver.rb +0 -204
  2206. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Godthab.rb +0 -161
  2207. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Guatemala.rb +0 -27
  2208. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Halifax.rb +0 -274
  2209. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Indiana/Indianapolis.rb +0 -149
  2210. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Juneau.rb +0 -194
  2211. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/La_Paz.rb +0 -22
  2212. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Lima.rb +0 -35
  2213. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Los_Angeles.rb +0 -232
  2214. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Mazatlan.rb +0 -139
  2215. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Mexico_City.rb +0 -144
  2216. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Monterrey.rb +0 -131
  2217. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/New_York.rb +0 -282
  2218. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Phoenix.rb +0 -30
  2219. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Regina.rb +0 -74
  2220. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Santiago.rb +0 -205
  2221. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Sao_Paulo.rb +0 -171
  2222. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/St_Johns.rb +0 -288
  2223. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Tijuana.rb +0 -196
  2224. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Almaty.rb +0 -67
  2225. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Baghdad.rb +0 -73
  2226. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Baku.rb +0 -161
  2227. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Bangkok.rb +0 -20
  2228. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Chongqing.rb +0 -33
  2229. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Colombo.rb +0 -30
  2230. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Dhaka.rb +0 -27
  2231. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Hong_Kong.rb +0 -87
  2232. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Irkutsk.rb +0 -165
  2233. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Jakarta.rb +0 -30
  2234. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Jerusalem.rb +0 -163
  2235. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Kabul.rb +0 -20
  2236. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Kamchatka.rb +0 -163
  2237. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Karachi.rb +0 -30
  2238. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Katmandu.rb +0 -20
  2239. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Kolkata.rb +0 -25
  2240. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Krasnoyarsk.rb +0 -163
  2241. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Kuala_Lumpur.rb +0 -31
  2242. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Kuwait.rb +0 -18
  2243. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Magadan.rb +0 -163
  2244. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Muscat.rb +0 -18
  2245. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Novosibirsk.rb +0 -164
  2246. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Rangoon.rb +0 -24
  2247. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Riyadh.rb +0 -18
  2248. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Seoul.rb +0 -34
  2249. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Shanghai.rb +0 -35
  2250. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Singapore.rb +0 -33
  2251. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Taipei.rb +0 -59
  2252. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Tashkent.rb +0 -47
  2253. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Tbilisi.rb +0 -78
  2254. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Tehran.rb +0 -121
  2255. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Tokyo.rb +0 -30
  2256. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Ulaanbaatar.rb +0 -65
  2257. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Urumqi.rb +0 -33
  2258. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Vladivostok.rb +0 -164
  2259. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Yakutsk.rb +0 -163
  2260. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Yekaterinburg.rb +0 -165
  2261. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Yerevan.rb +0 -165
  2262. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Atlantic/Azores.rb +0 -270
  2263. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Atlantic/Cape_Verde.rb +0 -23
  2264. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Atlantic/South_Georgia.rb +0 -18
  2265. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Australia/Adelaide.rb +0 -187
  2266. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Australia/Brisbane.rb +0 -35
  2267. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Australia/Darwin.rb +0 -29
  2268. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Australia/Hobart.rb +0 -193
  2269. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Australia/Melbourne.rb +0 -185
  2270. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Australia/Perth.rb +0 -37
  2271. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Australia/Sydney.rb +0 -185
  2272. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Etc/UTC.rb +0 -16
  2273. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Amsterdam.rb +0 -228
  2274. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Athens.rb +0 -185
  2275. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Belgrade.rb +0 -163
  2276. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Berlin.rb +0 -188
  2277. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Bratislava.rb +0 -13
  2278. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Brussels.rb +0 -232
  2279. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Bucharest.rb +0 -181
  2280. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Budapest.rb +0 -197
  2281. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Copenhagen.rb +0 -179
  2282. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Dublin.rb +0 -276
  2283. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Helsinki.rb +0 -163
  2284. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Istanbul.rb +0 -218
  2285. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Kiev.rb +0 -168
  2286. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Lisbon.rb +0 -268
  2287. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Ljubljana.rb +0 -13
  2288. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/London.rb +0 -288
  2289. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Madrid.rb +0 -211
  2290. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Minsk.rb +0 -170
  2291. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Moscow.rb +0 -181
  2292. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Paris.rb +0 -232
  2293. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Prague.rb +0 -187
  2294. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Riga.rb +0 -176
  2295. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Rome.rb +0 -215
  2296. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Sarajevo.rb +0 -13
  2297. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Skopje.rb +0 -13
  2298. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Sofia.rb +0 -173
  2299. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Stockholm.rb +0 -165
  2300. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Tallinn.rb +0 -172
  2301. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Vienna.rb +0 -183
  2302. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Vilnius.rb +0 -170
  2303. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Warsaw.rb +0 -212
  2304. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Zagreb.rb +0 -13
  2305. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Pacific/Auckland.rb +0 -202
  2306. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Pacific/Fiji.rb +0 -23
  2307. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Pacific/Guam.rb +0 -22
  2308. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Pacific/Honolulu.rb +0 -28
  2309. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Pacific/Majuro.rb +0 -20
  2310. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Pacific/Midway.rb +0 -25
  2311. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Pacific/Noumea.rb +0 -25
  2312. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Pacific/Pago_Pago.rb +0 -26
  2313. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Pacific/Port_Moresby.rb +0 -20
  2314. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Pacific/Tongatapu.rb +0 -27
  2315. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/info_timezone.rb +0 -52
  2316. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/linked_timezone.rb +0 -51
  2317. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/linked_timezone_info.rb +0 -44
  2318. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/offset_rationals.rb +0 -98
  2319. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/ruby_core_support.rb +0 -56
  2320. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/time_or_datetime.rb +0 -292
  2321. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/timezone.rb +0 -508
  2322. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/timezone_definition.rb +0 -56
  2323. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/timezone_info.rb +0 -40
  2324. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/timezone_offset_info.rb +0 -94
  2325. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/timezone_period.rb +0 -198
  2326. data/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/timezone_transition_info.rb +0 -129
  2327. data/vendor/rails/activesupport/lib/active_support/version.rb +0 -9
  2328. data/vendor/rails/activesupport/lib/active_support/whiny_nil.rb +0 -64
  2329. data/vendor/rails/activesupport/lib/active_support/xml_mini.rb +0 -31
  2330. data/vendor/rails/activesupport/lib/active_support/xml_mini/jdom.rb +0 -162
  2331. data/vendor/rails/activesupport/lib/active_support/xml_mini/libxml.rb +0 -73
  2332. data/vendor/rails/activesupport/lib/active_support/xml_mini/libxmlsax.rb +0 -74
  2333. data/vendor/rails/activesupport/lib/active_support/xml_mini/nokogiri.rb +0 -72
  2334. data/vendor/rails/activesupport/lib/active_support/xml_mini/nokogirisax.rb +0 -73
  2335. data/vendor/rails/activesupport/lib/active_support/xml_mini/rexml.rb +0 -108
  2336. data/vendor/rails/activesupport/lib/activesupport.rb +0 -2
  2337. data/vendor/rails/activesupport/test/abstract_unit.rb +0 -37
  2338. data/vendor/rails/activesupport/test/autoloading_fixtures/a/b.rb +0 -2
  2339. data/vendor/rails/activesupport/test/autoloading_fixtures/a/c/d.rb +0 -2
  2340. data/vendor/rails/activesupport/test/autoloading_fixtures/a/c/e/f.rb +0 -2
  2341. data/vendor/rails/activesupport/test/autoloading_fixtures/application.rb +0 -1
  2342. data/vendor/rails/activesupport/test/autoloading_fixtures/class_folder.rb +0 -3
  2343. data/vendor/rails/activesupport/test/autoloading_fixtures/class_folder/class_folder_subclass.rb +0 -3
  2344. data/vendor/rails/activesupport/test/autoloading_fixtures/class_folder/inline_class.rb +0 -2
  2345. data/vendor/rails/activesupport/test/autoloading_fixtures/class_folder/nested_class.rb +0 -7
  2346. data/vendor/rails/activesupport/test/autoloading_fixtures/conflict.rb +0 -1
  2347. data/vendor/rails/activesupport/test/autoloading_fixtures/counting_loader.rb +0 -5
  2348. data/vendor/rails/activesupport/test/autoloading_fixtures/cross_site_dependency.rb +0 -2
  2349. data/vendor/rails/activesupport/test/autoloading_fixtures/e.rb +0 -2
  2350. data/vendor/rails/activesupport/test/autoloading_fixtures/module_folder/inline_class.rb +0 -2
  2351. data/vendor/rails/activesupport/test/autoloading_fixtures/module_folder/nested_class.rb +0 -4
  2352. data/vendor/rails/activesupport/test/autoloading_fixtures/module_folder/nested_sibling.rb +0 -2
  2353. data/vendor/rails/activesupport/test/autoloading_fixtures/module_with_custom_const_missing/a/b.rb +0 -1
  2354. data/vendor/rails/activesupport/test/autoloading_fixtures/multiple_constant_file.rb +0 -2
  2355. data/vendor/rails/activesupport/test/autoloading_fixtures/raises_name_error.rb +0 -3
  2356. data/vendor/rails/activesupport/test/autoloading_fixtures/raises_no_method_error.rb +0 -3
  2357. data/vendor/rails/activesupport/test/buffered_logger_test.rb +0 -146
  2358. data/vendor/rails/activesupport/test/caching_test.rb +0 -355
  2359. data/vendor/rails/activesupport/test/callbacks_test.rb +0 -188
  2360. data/vendor/rails/activesupport/test/clean_backtrace_test.rb +0 -47
  2361. data/vendor/rails/activesupport/test/clean_logger_test.rb +0 -57
  2362. data/vendor/rails/activesupport/test/core_ext/array_ext_test.rb +0 -394
  2363. data/vendor/rails/activesupport/test/core_ext/base64_ext_test.rb +0 -8
  2364. data/vendor/rails/activesupport/test/core_ext/bigdecimal.rb +0 -10
  2365. data/vendor/rails/activesupport/test/core_ext/blank_test.rb +0 -21
  2366. data/vendor/rails/activesupport/test/core_ext/cgi_ext_test.rb +0 -14
  2367. data/vendor/rails/activesupport/test/core_ext/class/attribute_accessor_test.rb +0 -38
  2368. data/vendor/rails/activesupport/test/core_ext/class/class_inheritable_attributes_test.rb +0 -224
  2369. data/vendor/rails/activesupport/test/core_ext/class/delegating_attributes_test.rb +0 -115
  2370. data/vendor/rails/activesupport/test/core_ext/class_test.rb +0 -46
  2371. data/vendor/rails/activesupport/test/core_ext/date_ext_test.rb +0 -286
  2372. data/vendor/rails/activesupport/test/core_ext/date_time_ext_test.rb +0 -363
  2373. data/vendor/rails/activesupport/test/core_ext/duplicable_test.rb +0 -22
  2374. data/vendor/rails/activesupport/test/core_ext/duration_test.rb +0 -121
  2375. data/vendor/rails/activesupport/test/core_ext/enumerable_test.rb +0 -102
  2376. data/vendor/rails/activesupport/test/core_ext/exception_test.rb +0 -68
  2377. data/vendor/rails/activesupport/test/core_ext/file_test.rb +0 -67
  2378. data/vendor/rails/activesupport/test/core_ext/float_ext_test.rb +0 -25
  2379. data/vendor/rails/activesupport/test/core_ext/hash_ext_test.rb +0 -1016
  2380. data/vendor/rails/activesupport/test/core_ext/integer_ext_test.rb +0 -37
  2381. data/vendor/rails/activesupport/test/core_ext/kernel_test.rb +0 -43
  2382. data/vendor/rails/activesupport/test/core_ext/load_error_test.rb +0 -16
  2383. data/vendor/rails/activesupport/test/core_ext/module/attr_accessor_with_default_test.rb +0 -30
  2384. data/vendor/rails/activesupport/test/core_ext/module/attr_internal_test.rb +0 -52
  2385. data/vendor/rails/activesupport/test/core_ext/module/attribute_accessor_test.rb +0 -39
  2386. data/vendor/rails/activesupport/test/core_ext/module/attribute_aliasing_test.rb +0 -58
  2387. data/vendor/rails/activesupport/test/core_ext/module/model_naming_test.rb +0 -27
  2388. data/vendor/rails/activesupport/test/core_ext/module/synchronization_test.rb +0 -86
  2389. data/vendor/rails/activesupport/test/core_ext/module_test.rb +0 -363
  2390. data/vendor/rails/activesupport/test/core_ext/name_error_test.rb +0 -20
  2391. data/vendor/rails/activesupport/test/core_ext/numeric_ext_test.rb +0 -168
  2392. data/vendor/rails/activesupport/test/core_ext/object_and_class_ext_test.rb +0 -294
  2393. data/vendor/rails/activesupport/test/core_ext/object_ext_test.rb +0 -8
  2394. data/vendor/rails/activesupport/test/core_ext/pathname_test.rb +0 -9
  2395. data/vendor/rails/activesupport/test/core_ext/proc_test.rb +0 -11
  2396. data/vendor/rails/activesupport/test/core_ext/range_ext_test.rb +0 -63
  2397. data/vendor/rails/activesupport/test/core_ext/string_ext_test.rb +0 -402
  2398. data/vendor/rails/activesupport/test/core_ext/symbol_test.rb +0 -9
  2399. data/vendor/rails/activesupport/test/core_ext/time_ext_test.rb +0 -771
  2400. data/vendor/rails/activesupport/test/core_ext/time_with_zone_test.rb +0 -851
  2401. data/vendor/rails/activesupport/test/core_ext/uri_ext_test.rb +0 -12
  2402. data/vendor/rails/activesupport/test/dependencies/check_warnings.rb +0 -2
  2403. data/vendor/rails/activesupport/test/dependencies/conflict.rb +0 -1
  2404. data/vendor/rails/activesupport/test/dependencies/cross_site_depender.rb +0 -3
  2405. data/vendor/rails/activesupport/test/dependencies/mutual_one.rb +0 -4
  2406. data/vendor/rails/activesupport/test/dependencies/mutual_two.rb +0 -4
  2407. data/vendor/rails/activesupport/test/dependencies/raises_exception.rb +0 -3
  2408. data/vendor/rails/activesupport/test/dependencies/requires_nonexistent0.rb +0 -1
  2409. data/vendor/rails/activesupport/test/dependencies/requires_nonexistent1.rb +0 -1
  2410. data/vendor/rails/activesupport/test/dependencies/service_one.rb +0 -5
  2411. data/vendor/rails/activesupport/test/dependencies/service_two.rb +0 -2
  2412. data/vendor/rails/activesupport/test/dependencies_test.rb +0 -789
  2413. data/vendor/rails/activesupport/test/deprecation/proxy_wrappers_test.rb +0 -22
  2414. data/vendor/rails/activesupport/test/deprecation_test.rb +0 -167
  2415. data/vendor/rails/activesupport/test/empty_bool.rb +0 -7
  2416. data/vendor/rails/activesupport/test/flush_cache_on_private_memoization_test.rb +0 -43
  2417. data/vendor/rails/activesupport/test/gzip_test.rb +0 -7
  2418. data/vendor/rails/activesupport/test/i18n_test.rb +0 -98
  2419. data/vendor/rails/activesupport/test/inflector_test.rb +0 -298
  2420. data/vendor/rails/activesupport/test/inflector_test_cases.rb +0 -262
  2421. data/vendor/rails/activesupport/test/json/decoding_test.rb +0 -79
  2422. data/vendor/rails/activesupport/test/json/encoding_test.rb +0 -162
  2423. data/vendor/rails/activesupport/test/memoizable_test.rb +0 -261
  2424. data/vendor/rails/activesupport/test/message_encryptor_test.rb +0 -55
  2425. data/vendor/rails/activesupport/test/message_verifier_test.rb +0 -31
  2426. data/vendor/rails/activesupport/test/multibyte_chars_test.rb +0 -606
  2427. data/vendor/rails/activesupport/test/multibyte_conformance.rb +0 -129
  2428. data/vendor/rails/activesupport/test/multibyte_test_helpers.rb +0 -19
  2429. data/vendor/rails/activesupport/test/multibyte_unicode_database_test.rb +0 -22
  2430. data/vendor/rails/activesupport/test/multibyte_utils_test.rb +0 -137
  2431. data/vendor/rails/activesupport/test/option_merger_test.rb +0 -85
  2432. data/vendor/rails/activesupport/test/ordered_hash_test.rb +0 -237
  2433. data/vendor/rails/activesupport/test/ordered_options_test.rb +0 -53
  2434. data/vendor/rails/activesupport/test/rescuable_test.rb +0 -75
  2435. data/vendor/rails/activesupport/test/safe_buffer_test.rb +0 -36
  2436. data/vendor/rails/activesupport/test/secure_random_test.rb +0 -19
  2437. data/vendor/rails/activesupport/test/string_inquirer_test.rb +0 -15
  2438. data/vendor/rails/activesupport/test/test_case_test.rb +0 -57
  2439. data/vendor/rails/activesupport/test/test_test.rb +0 -188
  2440. data/vendor/rails/activesupport/test/time_zone_test.rb +0 -285
  2441. data/vendor/rails/activesupport/test/whiny_nil_test.rb +0 -50
  2442. data/vendor/rails/activesupport/test/xml_mini/jdom_engine_test.rb +0 -153
  2443. data/vendor/rails/activesupport/test/xml_mini/libxml_engine_test.rb +0 -204
  2444. data/vendor/rails/activesupport/test/xml_mini/libxmlsax_engine_test.rb +0 -181
  2445. data/vendor/rails/activesupport/test/xml_mini/nokogiri_engine_test.rb +0 -204
  2446. data/vendor/rails/activesupport/test/xml_mini/nokogirisax_engine_test.rb +0 -217
  2447. data/vendor/rails/activesupport/test/xml_mini/rexml_engine_test.rb +0 -15
  2448. data/vendor/rails/railties/CHANGELOG +0 -2193
  2449. data/vendor/rails/railties/MIT-LICENSE +0 -20
  2450. data/vendor/rails/railties/README +0 -243
  2451. data/vendor/rails/railties/Rakefile +0 -367
  2452. data/vendor/rails/railties/bin/about +0 -4
  2453. data/vendor/rails/railties/bin/console +0 -3
  2454. data/vendor/rails/railties/bin/dbconsole +0 -3
  2455. data/vendor/rails/railties/bin/destroy +0 -3
  2456. data/vendor/rails/railties/bin/generate +0 -3
  2457. data/vendor/rails/railties/bin/performance/benchmarker +0 -3
  2458. data/vendor/rails/railties/bin/performance/profiler +0 -3
  2459. data/vendor/rails/railties/bin/plugin +0 -3
  2460. data/vendor/rails/railties/bin/rails +0 -21
  2461. data/vendor/rails/railties/bin/runner +0 -3
  2462. data/vendor/rails/railties/bin/server +0 -3
  2463. data/vendor/rails/railties/builtin/rails_info/rails/info.rb +0 -131
  2464. data/vendor/rails/railties/builtin/rails_info/rails/info_controller.rb +0 -9
  2465. data/vendor/rails/railties/builtin/rails_info/rails/info_helper.rb +0 -2
  2466. data/vendor/rails/railties/builtin/rails_info/rails_info_controller.rb +0 -2
  2467. data/vendor/rails/railties/configs/databases/frontbase.yml +0 -28
  2468. data/vendor/rails/railties/configs/databases/ibm_db.yml +0 -62
  2469. data/vendor/rails/railties/configs/databases/mysql.yml +0 -60
  2470. data/vendor/rails/railties/configs/databases/oracle.yml +0 -39
  2471. data/vendor/rails/railties/configs/databases/postgresql.yml +0 -51
  2472. data/vendor/rails/railties/configs/databases/sqlite2.yml +0 -19
  2473. data/vendor/rails/railties/configs/databases/sqlite3.yml +0 -22
  2474. data/vendor/rails/railties/configs/empty.log +0 -0
  2475. data/vendor/rails/railties/configs/initializers/backtrace_silencers.rb +0 -7
  2476. data/vendor/rails/railties/configs/initializers/cookie_verification_secret.rb +0 -7
  2477. data/vendor/rails/railties/configs/initializers/inflections.rb +0 -10
  2478. data/vendor/rails/railties/configs/initializers/mime_types.rb +0 -5
  2479. data/vendor/rails/railties/configs/initializers/new_rails_defaults.rb +0 -21
  2480. data/vendor/rails/railties/configs/initializers/session_store.rb +0 -15
  2481. data/vendor/rails/railties/configs/locales/en.yml +0 -5
  2482. data/vendor/rails/railties/configs/routes.rb +0 -43
  2483. data/vendor/rails/railties/configs/seeds.rb +0 -7
  2484. data/vendor/rails/railties/dispatches/config.ru +0 -7
  2485. data/vendor/rails/railties/dispatches/dispatch.fcgi +0 -24
  2486. data/vendor/rails/railties/dispatches/dispatch.rb +0 -10
  2487. data/vendor/rails/railties/dispatches/gateway.cgi +0 -97
  2488. data/vendor/rails/railties/doc/README_FOR_APP +0 -2
  2489. data/vendor/rails/railties/environments/boot.rb +0 -114
  2490. data/vendor/rails/railties/environments/development.rb +0 -17
  2491. data/vendor/rails/railties/environments/environment.rb +0 -41
  2492. data/vendor/rails/railties/environments/production.rb +0 -28
  2493. data/vendor/rails/railties/environments/test.rb +0 -28
  2494. data/vendor/rails/railties/fresh_rakefile +0 -10
  2495. data/vendor/rails/railties/guides/files/javascripts/code_highlighter.js +0 -188
  2496. data/vendor/rails/railties/guides/files/javascripts/guides.js +0 -8
  2497. data/vendor/rails/railties/guides/files/javascripts/highlighters.js +0 -90
  2498. data/vendor/rails/railties/guides/files/stylesheets/main.css +0 -441
  2499. data/vendor/rails/railties/guides/files/stylesheets/print.css +0 -52
  2500. data/vendor/rails/railties/guides/files/stylesheets/reset.css +0 -43
  2501. data/vendor/rails/railties/guides/files/stylesheets/style.css +0 -13
  2502. data/vendor/rails/railties/guides/files/stylesheets/syntax.css +0 -31
  2503. data/vendor/rails/railties/guides/images/belongs_to.png +0 -0
  2504. data/vendor/rails/railties/guides/images/book_icon.gif +0 -0
  2505. data/vendor/rails/railties/guides/images/bullet.gif +0 -0
  2506. data/vendor/rails/railties/guides/images/chapters_icon.gif +0 -0
  2507. data/vendor/rails/railties/guides/images/check_bullet.gif +0 -0
  2508. data/vendor/rails/railties/guides/images/credits_pic_blank.gif +0 -0
  2509. data/vendor/rails/railties/guides/images/csrf.png +0 -0
  2510. data/vendor/rails/railties/guides/images/customized_error_messages.png +0 -0
  2511. data/vendor/rails/railties/guides/images/error_messages.png +0 -0
  2512. data/vendor/rails/railties/guides/images/feature_tile.gif +0 -0
  2513. data/vendor/rails/railties/guides/images/footer_tile.gif +0 -0
  2514. data/vendor/rails/railties/guides/images/fxn.jpg +0 -0
  2515. data/vendor/rails/railties/guides/images/grey_bullet.gif +0 -0
  2516. data/vendor/rails/railties/guides/images/habtm.png +0 -0
  2517. data/vendor/rails/railties/guides/images/has_many.png +0 -0
  2518. data/vendor/rails/railties/guides/images/has_many_through.png +0 -0
  2519. data/vendor/rails/railties/guides/images/has_one.png +0 -0
  2520. data/vendor/rails/railties/guides/images/has_one_through.png +0 -0
  2521. data/vendor/rails/railties/guides/images/header_backdrop.png +0 -0
  2522. data/vendor/rails/railties/guides/images/header_tile.gif +0 -0
  2523. data/vendor/rails/railties/guides/images/i18n/demo_localized_pirate.png +0 -0
  2524. data/vendor/rails/railties/guides/images/i18n/demo_translated_en.png +0 -0
  2525. data/vendor/rails/railties/guides/images/i18n/demo_translated_pirate.png +0 -0
  2526. data/vendor/rails/railties/guides/images/i18n/demo_translation_missing.png +0 -0
  2527. data/vendor/rails/railties/guides/images/i18n/demo_untranslated.png +0 -0
  2528. data/vendor/rails/railties/guides/images/icons/README +0 -5
  2529. data/vendor/rails/railties/guides/images/icons/callouts/1.png +0 -0
  2530. data/vendor/rails/railties/guides/images/icons/callouts/10.png +0 -0
  2531. data/vendor/rails/railties/guides/images/icons/callouts/11.png +0 -0
  2532. data/vendor/rails/railties/guides/images/icons/callouts/12.png +0 -0
  2533. data/vendor/rails/railties/guides/images/icons/callouts/13.png +0 -0
  2534. data/vendor/rails/railties/guides/images/icons/callouts/14.png +0 -0
  2535. data/vendor/rails/railties/guides/images/icons/callouts/15.png +0 -0
  2536. data/vendor/rails/railties/guides/images/icons/callouts/2.png +0 -0
  2537. data/vendor/rails/railties/guides/images/icons/callouts/3.png +0 -0
  2538. data/vendor/rails/railties/guides/images/icons/callouts/4.png +0 -0
  2539. data/vendor/rails/railties/guides/images/icons/callouts/5.png +0 -0
  2540. data/vendor/rails/railties/guides/images/icons/callouts/6.png +0 -0
  2541. data/vendor/rails/railties/guides/images/icons/callouts/7.png +0 -0
  2542. data/vendor/rails/railties/guides/images/icons/callouts/8.png +0 -0
  2543. data/vendor/rails/railties/guides/images/icons/callouts/9.png +0 -0
  2544. data/vendor/rails/railties/guides/images/icons/caution.png +0 -0
  2545. data/vendor/rails/railties/guides/images/icons/example.png +0 -0
  2546. data/vendor/rails/railties/guides/images/icons/home.png +0 -0
  2547. data/vendor/rails/railties/guides/images/icons/important.png +0 -0
  2548. data/vendor/rails/railties/guides/images/icons/next.png +0 -0
  2549. data/vendor/rails/railties/guides/images/icons/note.png +0 -0
  2550. data/vendor/rails/railties/guides/images/icons/prev.png +0 -0
  2551. data/vendor/rails/railties/guides/images/icons/tip.png +0 -0
  2552. data/vendor/rails/railties/guides/images/icons/up.png +0 -0
  2553. data/vendor/rails/railties/guides/images/icons/warning.png +0 -0
  2554. data/vendor/rails/railties/guides/images/nav_arrow.gif +0 -0
  2555. data/vendor/rails/railties/guides/images/polymorphic.png +0 -0
  2556. data/vendor/rails/railties/guides/images/posts_index.png +0 -0
  2557. data/vendor/rails/railties/guides/images/rails_guides_logo.gif +0 -0
  2558. data/vendor/rails/railties/guides/images/rails_logo_remix.gif +0 -0
  2559. data/vendor/rails/railties/guides/images/rails_welcome.png +0 -0
  2560. data/vendor/rails/railties/guides/images/session_fixation.png +0 -0
  2561. data/vendor/rails/railties/guides/images/tab_grey.gif +0 -0
  2562. data/vendor/rails/railties/guides/images/tab_info.gif +0 -0
  2563. data/vendor/rails/railties/guides/images/tab_note.gif +0 -0
  2564. data/vendor/rails/railties/guides/images/tab_red.gif +0 -0
  2565. data/vendor/rails/railties/guides/images/tab_yellow.gif +0 -0
  2566. data/vendor/rails/railties/guides/images/tab_yellow.png +0 -0
  2567. data/vendor/rails/railties/guides/images/validation_error_messages.png +0 -0
  2568. data/vendor/rails/railties/guides/rails_guides.rb +0 -31
  2569. data/vendor/rails/railties/guides/rails_guides/generator.rb +0 -258
  2570. data/vendor/rails/railties/guides/rails_guides/helpers.rb +0 -34
  2571. data/vendor/rails/railties/guides/rails_guides/indexer.rb +0 -68
  2572. data/vendor/rails/railties/guides/rails_guides/levenshtein.rb +0 -31
  2573. data/vendor/rails/railties/guides/rails_guides/textile_extensions.rb +0 -41
  2574. data/vendor/rails/railties/guides/source/2_2_release_notes.textile +0 -422
  2575. data/vendor/rails/railties/guides/source/2_3_release_notes.textile +0 -610
  2576. data/vendor/rails/railties/guides/source/action_controller_overview.textile +0 -776
  2577. data/vendor/rails/railties/guides/source/action_mailer_basics.textile +0 -441
  2578. data/vendor/rails/railties/guides/source/active_record_basics.textile +0 -135
  2579. data/vendor/rails/railties/guides/source/active_record_querying.textile +0 -969
  2580. data/vendor/rails/railties/guides/source/activerecord_validations_callbacks.textile +0 -1086
  2581. data/vendor/rails/railties/guides/source/association_basics.textile +0 -1781
  2582. data/vendor/rails/railties/guides/source/caching_with_rails.textile +0 -524
  2583. data/vendor/rails/railties/guides/source/command_line.textile +0 -589
  2584. data/vendor/rails/railties/guides/source/configuring.textile +0 -234
  2585. data/vendor/rails/railties/guides/source/contribute.textile +0 -71
  2586. data/vendor/rails/railties/guides/source/contributing_to_rails.textile +0 -239
  2587. data/vendor/rails/railties/guides/source/credits.html.erb +0 -52
  2588. data/vendor/rails/railties/guides/source/debugging_rails_applications.textile +0 -709
  2589. data/vendor/rails/railties/guides/source/form_helpers.textile +0 -766
  2590. data/vendor/rails/railties/guides/source/getting_started.textile +0 -1297
  2591. data/vendor/rails/railties/guides/source/i18n.textile +0 -912
  2592. data/vendor/rails/railties/guides/source/index.html.erb +0 -125
  2593. data/vendor/rails/railties/guides/source/layout.html.erb +0 -103
  2594. data/vendor/rails/railties/guides/source/layouts_and_rendering.textile +0 -979
  2595. data/vendor/rails/railties/guides/source/migrations.textile +0 -591
  2596. data/vendor/rails/railties/guides/source/nested_model_forms.textile +0 -222
  2597. data/vendor/rails/railties/guides/source/performance_testing.textile +0 -531
  2598. data/vendor/rails/railties/guides/source/plugins.textile +0 -1512
  2599. data/vendor/rails/railties/guides/source/rails_on_rack.textile +0 -309
  2600. data/vendor/rails/railties/guides/source/routing.textile +0 -903
  2601. data/vendor/rails/railties/guides/source/security.textile +0 -986
  2602. data/vendor/rails/railties/guides/source/testing.textile +0 -951
  2603. data/vendor/rails/railties/helpers/application_controller.rb +0 -10
  2604. data/vendor/rails/railties/helpers/application_helper.rb +0 -3
  2605. data/vendor/rails/railties/helpers/performance_test.rb +0 -9
  2606. data/vendor/rails/railties/helpers/test_helper.rb +0 -38
  2607. data/vendor/rails/railties/html/404.html +0 -30
  2608. data/vendor/rails/railties/html/422.html +0 -30
  2609. data/vendor/rails/railties/html/500.html +0 -30
  2610. data/vendor/rails/railties/html/favicon.ico +0 -0
  2611. data/vendor/rails/railties/html/images/rails.png +0 -0
  2612. data/vendor/rails/railties/html/index.html +0 -275
  2613. data/vendor/rails/railties/html/javascripts/application.js +0 -2
  2614. data/vendor/rails/railties/html/javascripts/controls.js +0 -963
  2615. data/vendor/rails/railties/html/javascripts/dragdrop.js +0 -973
  2616. data/vendor/rails/railties/html/javascripts/effects.js +0 -1128
  2617. data/vendor/rails/railties/html/javascripts/prototype.js +0 -4320
  2618. data/vendor/rails/railties/html/robots.txt +0 -5
  2619. data/vendor/rails/railties/lib/code_statistics.rb +0 -107
  2620. data/vendor/rails/railties/lib/commands.rb +0 -17
  2621. data/vendor/rails/railties/lib/commands/about.rb +0 -3
  2622. data/vendor/rails/railties/lib/commands/console.rb +0 -45
  2623. data/vendor/rails/railties/lib/commands/dbconsole.rb +0 -87
  2624. data/vendor/rails/railties/lib/commands/destroy.rb +0 -6
  2625. data/vendor/rails/railties/lib/commands/generate.rb +0 -6
  2626. data/vendor/rails/railties/lib/commands/ncgi/listener +0 -86
  2627. data/vendor/rails/railties/lib/commands/ncgi/tracker +0 -69
  2628. data/vendor/rails/railties/lib/commands/performance/benchmarker.rb +0 -24
  2629. data/vendor/rails/railties/lib/commands/performance/profiler.rb +0 -50
  2630. data/vendor/rails/railties/lib/commands/plugin.rb +0 -968
  2631. data/vendor/rails/railties/lib/commands/runner.rb +0 -54
  2632. data/vendor/rails/railties/lib/commands/server.rb +0 -114
  2633. data/vendor/rails/railties/lib/commands/update.rb +0 -4
  2634. data/vendor/rails/railties/lib/console_app.rb +0 -30
  2635. data/vendor/rails/railties/lib/console_sandbox.rb +0 -6
  2636. data/vendor/rails/railties/lib/console_with_helpers.rb +0 -5
  2637. data/vendor/rails/railties/lib/dispatcher.rb +0 -24
  2638. data/vendor/rails/railties/lib/fcgi_handler.rb +0 -239
  2639. data/vendor/rails/railties/lib/initializer.rb +0 -1152
  2640. data/vendor/rails/railties/lib/performance_test_help.rb +0 -5
  2641. data/vendor/rails/railties/lib/rails/backtrace_cleaner.rb +0 -54
  2642. data/vendor/rails/railties/lib/rails/gem_builder.rb +0 -21
  2643. data/vendor/rails/railties/lib/rails/gem_dependency.rb +0 -320
  2644. data/vendor/rails/railties/lib/rails/plugin.rb +0 -179
  2645. data/vendor/rails/railties/lib/rails/plugin/loader.rb +0 -198
  2646. data/vendor/rails/railties/lib/rails/plugin/locator.rb +0 -100
  2647. data/vendor/rails/railties/lib/rails/rack.rb +0 -8
  2648. data/vendor/rails/railties/lib/rails/rack/debugger.rb +0 -23
  2649. data/vendor/rails/railties/lib/rails/rack/log_tailer.rb +0 -35
  2650. data/vendor/rails/railties/lib/rails/rack/metal.rb +0 -51
  2651. data/vendor/rails/railties/lib/rails/rack/static.rb +0 -46
  2652. data/vendor/rails/railties/lib/rails/vendor_gem_source_index.rb +0 -140
  2653. data/vendor/rails/railties/lib/rails/version.rb +0 -9
  2654. data/vendor/rails/railties/lib/rails_generator.rb +0 -46
  2655. data/vendor/rails/railties/lib/rails_generator/base.rb +0 -266
  2656. data/vendor/rails/railties/lib/rails_generator/commands.rb +0 -621
  2657. data/vendor/rails/railties/lib/rails_generator/generated_attribute.rb +0 -47
  2658. data/vendor/rails/railties/lib/rails_generator/generators/applications/app/USAGE +0 -9
  2659. data/vendor/rails/railties/lib/rails_generator/generators/applications/app/app_generator.rb +0 -266
  2660. data/vendor/rails/railties/lib/rails_generator/generators/applications/app/scm/git.rb +0 -18
  2661. data/vendor/rails/railties/lib/rails_generator/generators/applications/app/scm/scm.rb +0 -8
  2662. data/vendor/rails/railties/lib/rails_generator/generators/applications/app/scm/svn.rb +0 -7
  2663. data/vendor/rails/railties/lib/rails_generator/generators/applications/app/template_runner.rb +0 -401
  2664. data/vendor/rails/railties/lib/rails_generator/generators/components/controller/USAGE +0 -30
  2665. data/vendor/rails/railties/lib/rails_generator/generators/components/controller/controller_generator.rb +0 -43
  2666. data/vendor/rails/railties/lib/rails_generator/generators/components/controller/templates/controller.rb +0 -7
  2667. data/vendor/rails/railties/lib/rails_generator/generators/components/controller/templates/functional_test.rb +0 -8
  2668. data/vendor/rails/railties/lib/rails_generator/generators/components/controller/templates/helper.rb +0 -2
  2669. data/vendor/rails/railties/lib/rails_generator/generators/components/controller/templates/helper_test.rb +0 -4
  2670. data/vendor/rails/railties/lib/rails_generator/generators/components/controller/templates/view.html.erb +0 -2
  2671. data/vendor/rails/railties/lib/rails_generator/generators/components/helper/USAGE +0 -24
  2672. data/vendor/rails/railties/lib/rails_generator/generators/components/helper/helper_generator.rb +0 -25
  2673. data/vendor/rails/railties/lib/rails_generator/generators/components/helper/templates/helper.rb +0 -2
  2674. data/vendor/rails/railties/lib/rails_generator/generators/components/helper/templates/helper_test.rb +0 -4
  2675. data/vendor/rails/railties/lib/rails_generator/generators/components/integration_test/USAGE +0 -8
  2676. data/vendor/rails/railties/lib/rails_generator/generators/components/integration_test/integration_test_generator.rb +0 -16
  2677. data/vendor/rails/railties/lib/rails_generator/generators/components/integration_test/templates/integration_test.rb +0 -10
  2678. data/vendor/rails/railties/lib/rails_generator/generators/components/mailer/USAGE +0 -16
  2679. data/vendor/rails/railties/lib/rails_generator/generators/components/mailer/mailer_generator.rb +0 -30
  2680. data/vendor/rails/railties/lib/rails_generator/generators/components/mailer/templates/fixture.erb +0 -3
  2681. data/vendor/rails/railties/lib/rails_generator/generators/components/mailer/templates/fixture.rhtml +0 -0
  2682. data/vendor/rails/railties/lib/rails_generator/generators/components/mailer/templates/mailer.rb +0 -15
  2683. data/vendor/rails/railties/lib/rails_generator/generators/components/mailer/templates/unit_test.rb +0 -20
  2684. data/vendor/rails/railties/lib/rails_generator/generators/components/mailer/templates/view.erb +0 -3
  2685. data/vendor/rails/railties/lib/rails_generator/generators/components/mailer/templates/view.rhtml +0 -0
  2686. data/vendor/rails/railties/lib/rails_generator/generators/components/metal/USAGE +0 -8
  2687. data/vendor/rails/railties/lib/rails_generator/generators/components/metal/metal_generator.rb +0 -8
  2688. data/vendor/rails/railties/lib/rails_generator/generators/components/metal/templates/metal.rb +0 -12
  2689. data/vendor/rails/railties/lib/rails_generator/generators/components/migration/USAGE +0 -29
  2690. data/vendor/rails/railties/lib/rails_generator/generators/components/migration/migration_generator.rb +0 -20
  2691. data/vendor/rails/railties/lib/rails_generator/generators/components/migration/templates/migration.rb +0 -11
  2692. data/vendor/rails/railties/lib/rails_generator/generators/components/model/USAGE +0 -27
  2693. data/vendor/rails/railties/lib/rails_generator/generators/components/model/model_generator.rb +0 -52
  2694. data/vendor/rails/railties/lib/rails_generator/generators/components/model/templates/fixtures.yml +0 -23
  2695. data/vendor/rails/railties/lib/rails_generator/generators/components/model/templates/migration.rb +0 -16
  2696. data/vendor/rails/railties/lib/rails_generator/generators/components/model/templates/model.rb +0 -5
  2697. data/vendor/rails/railties/lib/rails_generator/generators/components/model/templates/unit_test.rb +0 -8
  2698. data/vendor/rails/railties/lib/rails_generator/generators/components/observer/USAGE +0 -13
  2699. data/vendor/rails/railties/lib/rails_generator/generators/components/observer/observer_generator.rb +0 -16
  2700. data/vendor/rails/railties/lib/rails_generator/generators/components/observer/templates/observer.rb +0 -2
  2701. data/vendor/rails/railties/lib/rails_generator/generators/components/observer/templates/unit_test.rb +0 -8
  2702. data/vendor/rails/railties/lib/rails_generator/generators/components/performance_test/USAGE +0 -8
  2703. data/vendor/rails/railties/lib/rails_generator/generators/components/performance_test/performance_test_generator.rb +0 -16
  2704. data/vendor/rails/railties/lib/rails_generator/generators/components/performance_test/templates/performance_test.rb +0 -9
  2705. data/vendor/rails/railties/lib/rails_generator/generators/components/plugin/USAGE +0 -25
  2706. data/vendor/rails/railties/lib/rails_generator/generators/components/plugin/plugin_generator.rb +0 -39
  2707. data/vendor/rails/railties/lib/rails_generator/generators/components/plugin/templates/MIT-LICENSE +0 -20
  2708. data/vendor/rails/railties/lib/rails_generator/generators/components/plugin/templates/README +0 -13
  2709. data/vendor/rails/railties/lib/rails_generator/generators/components/plugin/templates/Rakefile +0 -23
  2710. data/vendor/rails/railties/lib/rails_generator/generators/components/plugin/templates/USAGE +0 -8
  2711. data/vendor/rails/railties/lib/rails_generator/generators/components/plugin/templates/generator.rb +0 -8
  2712. data/vendor/rails/railties/lib/rails_generator/generators/components/plugin/templates/init.rb +0 -1
  2713. data/vendor/rails/railties/lib/rails_generator/generators/components/plugin/templates/install.rb +0 -1
  2714. data/vendor/rails/railties/lib/rails_generator/generators/components/plugin/templates/plugin.rb +0 -1
  2715. data/vendor/rails/railties/lib/rails_generator/generators/components/plugin/templates/tasks.rake +0 -4
  2716. data/vendor/rails/railties/lib/rails_generator/generators/components/plugin/templates/test_helper.rb +0 -4
  2717. data/vendor/rails/railties/lib/rails_generator/generators/components/plugin/templates/uninstall.rb +0 -1
  2718. data/vendor/rails/railties/lib/rails_generator/generators/components/plugin/templates/unit_test.rb +0 -8
  2719. data/vendor/rails/railties/lib/rails_generator/generators/components/resource/USAGE +0 -23
  2720. data/vendor/rails/railties/lib/rails_generator/generators/components/resource/resource_generator.rb +0 -76
  2721. data/vendor/rails/railties/lib/rails_generator/generators/components/resource/templates/controller.rb +0 -2
  2722. data/vendor/rails/railties/lib/rails_generator/generators/components/resource/templates/functional_test.rb +0 -8
  2723. data/vendor/rails/railties/lib/rails_generator/generators/components/resource/templates/helper.rb +0 -2
  2724. data/vendor/rails/railties/lib/rails_generator/generators/components/resource/templates/helper_test.rb +0 -4
  2725. data/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/USAGE +0 -29
  2726. data/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/scaffold_generator.rb +0 -103
  2727. data/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/templates/controller.rb +0 -83
  2728. data/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/templates/functional_test.rb +0 -45
  2729. data/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/templates/helper.rb +0 -2
  2730. data/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/templates/helper_test.rb +0 -4
  2731. data/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/templates/layout.html.erb +0 -17
  2732. data/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/templates/style.css +0 -54
  2733. data/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/templates/view_edit.html.erb +0 -18
  2734. data/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/templates/view_index.html.erb +0 -24
  2735. data/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/templates/view_new.html.erb +0 -17
  2736. data/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/templates/view_show.html.erb +0 -10
  2737. data/vendor/rails/railties/lib/rails_generator/generators/components/session_migration/USAGE +0 -10
  2738. data/vendor/rails/railties/lib/rails_generator/generators/components/session_migration/session_migration_generator.rb +0 -18
  2739. data/vendor/rails/railties/lib/rails_generator/generators/components/session_migration/templates/migration.rb +0 -16
  2740. data/vendor/rails/railties/lib/rails_generator/lookup.rb +0 -249
  2741. data/vendor/rails/railties/lib/rails_generator/manifest.rb +0 -53
  2742. data/vendor/rails/railties/lib/rails_generator/options.rb +0 -150
  2743. data/vendor/rails/railties/lib/rails_generator/scripts.rb +0 -89
  2744. data/vendor/rails/railties/lib/rails_generator/scripts/destroy.rb +0 -29
  2745. data/vendor/rails/railties/lib/rails_generator/scripts/generate.rb +0 -7
  2746. data/vendor/rails/railties/lib/rails_generator/scripts/update.rb +0 -12
  2747. data/vendor/rails/railties/lib/rails_generator/secret_key_generator.rb +0 -24
  2748. data/vendor/rails/railties/lib/rails_generator/simple_logger.rb +0 -46
  2749. data/vendor/rails/railties/lib/rails_generator/spec.rb +0 -44
  2750. data/vendor/rails/railties/lib/railties_path.rb +0 -1
  2751. data/vendor/rails/railties/lib/ruby_version_check.rb +0 -17
  2752. data/vendor/rails/railties/lib/rubyprof_ext.rb +0 -35
  2753. data/vendor/rails/railties/lib/source_annotation_extractor.rb +0 -102
  2754. data/vendor/rails/railties/lib/tasks/annotations.rake +0 -20
  2755. data/vendor/rails/railties/lib/tasks/databases.rake +0 -436
  2756. data/vendor/rails/railties/lib/tasks/documentation.rake +0 -88
  2757. data/vendor/rails/railties/lib/tasks/framework.rake +0 -146
  2758. data/vendor/rails/railties/lib/tasks/gems.rake +0 -78
  2759. data/vendor/rails/railties/lib/tasks/log.rake +0 -9
  2760. data/vendor/rails/railties/lib/tasks/middleware.rake +0 -7
  2761. data/vendor/rails/railties/lib/tasks/misc.rake +0 -63
  2762. data/vendor/rails/railties/lib/tasks/rails.rb +0 -14
  2763. data/vendor/rails/railties/lib/tasks/routes.rake +0 -18
  2764. data/vendor/rails/railties/lib/tasks/statistics.rake +0 -17
  2765. data/vendor/rails/railties/lib/tasks/testing.rake +0 -139
  2766. data/vendor/rails/railties/lib/tasks/tmp.rake +0 -37
  2767. data/vendor/rails/railties/lib/test_help.rb +0 -38
  2768. data/vendor/rails/railties/lib/webrick_server.rb +0 -156
  2769. data/vendor/rails/railties/test/abstract_unit.rb +0 -27
  2770. data/vendor/rails/railties/test/backtrace_cleaner_test.rb +0 -61
  2771. data/vendor/rails/railties/test/boot_test.rb +0 -178
  2772. data/vendor/rails/railties/test/console_app_test.rb +0 -42
  2773. data/vendor/rails/railties/test/fcgi_dispatcher_test.rb +0 -266
  2774. data/vendor/rails/railties/test/fixtures/about_yml_plugins/bad_about_yml/about.yml +0 -1
  2775. data/vendor/rails/railties/test/fixtures/about_yml_plugins/bad_about_yml/init.rb +0 -1
  2776. data/vendor/rails/railties/test/fixtures/about_yml_plugins/plugin_without_about_yml/init.rb +0 -1
  2777. data/vendor/rails/railties/test/fixtures/eager/zoo.rb +0 -3
  2778. data/vendor/rails/railties/test/fixtures/eager/zoo/reptile_house.rb +0 -2
  2779. data/vendor/rails/railties/test/fixtures/environment_with_constant.rb +0 -1
  2780. data/vendor/rails/railties/test/fixtures/lib/generators/missing_class/missing_class_generator.rb +0 -0
  2781. data/vendor/rails/railties/test/fixtures/lib/generators/working/working_generator.rb +0 -2
  2782. data/vendor/rails/railties/test/fixtures/metal/multiplemetals/app/metal/metal_a.rb +0 -5
  2783. data/vendor/rails/railties/test/fixtures/metal/multiplemetals/app/metal/metal_b.rb +0 -5
  2784. data/vendor/rails/railties/test/fixtures/metal/pluralmetal/app/metal/legacy_routes.rb +0 -5
  2785. data/vendor/rails/railties/test/fixtures/metal/singlemetal/app/metal/foo_metal.rb +0 -5
  2786. data/vendor/rails/railties/test/fixtures/metal/subfolders/app/metal/Folder/metal_a.rb +0 -7
  2787. data/vendor/rails/railties/test/fixtures/metal/subfolders/app/metal/Folder/metal_b.rb +0 -7
  2788. data/vendor/rails/railties/test/fixtures/plugins/alternate/a/generators/a_generator/a_generator.rb +0 -4
  2789. data/vendor/rails/railties/test/fixtures/plugins/default/gemlike/init.rb +0 -1
  2790. data/vendor/rails/railties/test/fixtures/plugins/default/gemlike/lib/gemlike.rb +0 -2
  2791. data/vendor/rails/railties/test/fixtures/plugins/default/gemlike/rails/init.rb +0 -7
  2792. data/vendor/rails/railties/test/fixtures/plugins/default/plugin_with_no_lib_dir/init.rb +0 -0
  2793. data/vendor/rails/railties/test/fixtures/plugins/default/stubby/about.yml +0 -2
  2794. data/vendor/rails/railties/test/fixtures/plugins/default/stubby/generators/stubby_generator/stubby_generator.rb +0 -4
  2795. data/vendor/rails/railties/test/fixtures/plugins/default/stubby/init.rb +0 -7
  2796. data/vendor/rails/railties/test/fixtures/plugins/default/stubby/lib/stubby_mixin.rb +0 -2
  2797. data/vendor/rails/railties/test/fixtures/plugins/engines/engine/app/controllers/engine_controller.rb +0 -2
  2798. data/vendor/rails/railties/test/fixtures/plugins/engines/engine/app/metal/engine_metal.rb +0 -9
  2799. data/vendor/rails/railties/test/fixtures/plugins/engines/engine/app/models/engine_model.rb +0 -2
  2800. data/vendor/rails/railties/test/fixtures/plugins/engines/engine/config/locales/en.yml +0 -2
  2801. data/vendor/rails/railties/test/fixtures/plugins/engines/engine/config/routes.rb +0 -3
  2802. data/vendor/rails/railties/test/fixtures/plugins/engines/engine/init.rb +0 -3
  2803. data/vendor/rails/railties/test/fixtures/public/foo/bar.html +0 -1
  2804. data/vendor/rails/railties/test/fixtures/public/foo/index.html +0 -1
  2805. data/vendor/rails/railties/test/fixtures/public/index.html +0 -1
  2806. data/vendor/rails/railties/test/gem_dependency_test.rb +0 -227
  2807. data/vendor/rails/railties/test/generator_lookup_test.rb +0 -40
  2808. data/vendor/rails/railties/test/generators/generated_attribute_test.rb +0 -38
  2809. data/vendor/rails/railties/test/generators/generator_test_helper.rb +0 -322
  2810. data/vendor/rails/railties/test/generators/rails_controller_generator_test.rb +0 -44
  2811. data/vendor/rails/railties/test/generators/rails_helper_generator_test.rb +0 -36
  2812. data/vendor/rails/railties/test/generators/rails_mailer_generator_test.rb +0 -29
  2813. data/vendor/rails/railties/test/generators/rails_model_generator_test.rb +0 -96
  2814. data/vendor/rails/railties/test/generators/rails_resource_generator_test.rb +0 -29
  2815. data/vendor/rails/railties/test/generators/rails_scaffold_generator_test.rb +0 -151
  2816. data/vendor/rails/railties/test/generators/rails_template_runner_test.rb +0 -216
  2817. data/vendor/rails/railties/test/initializer_test.rb +0 -437
  2818. data/vendor/rails/railties/test/metal_test.rb +0 -72
  2819. data/vendor/rails/railties/test/mocks/routes.rb +0 -6
  2820. data/vendor/rails/railties/test/plugin_loader_test.rb +0 -172
  2821. data/vendor/rails/railties/test/plugin_locator_test.rb +0 -62
  2822. data/vendor/rails/railties/test/plugin_test.rb +0 -162
  2823. data/vendor/rails/railties/test/plugin_test_helper.rb +0 -29
  2824. data/vendor/rails/railties/test/rack_static_test.rb +0 -47
  2825. data/vendor/rails/railties/test/rails_generator_test.rb +0 -145
  2826. data/vendor/rails/railties/test/rails_info_controller_test.rb +0 -52
  2827. data/vendor/rails/railties/test/rails_info_test.rb +0 -99
  2828. data/vendor/rails/railties/test/secret_key_generation_test.rb +0 -38
  2829. data/vendor/rails/railties/test/vendor/gems/dummy-gem-a-0.4.0/lib/dummy-gem-a.rb +0 -1
  2830. data/vendor/rails/railties/test/vendor/gems/dummy-gem-b-0.4.0/lib/dummy-gem-b.rb +0 -1
  2831. data/vendor/rails/railties/test/vendor/gems/dummy-gem-b-0.6.0/lib/dummy-gem-b.rb +0 -1
  2832. data/vendor/rails/railties/test/vendor/gems/dummy-gem-c-0.4.0/lib/dummy-gem-c.rb +0 -1
  2833. data/vendor/rails/railties/test/vendor/gems/dummy-gem-c-0.6.0/lib/dummy-gem-c.rb +0 -1
  2834. data/vendor/rails/railties/test/vendor/gems/dummy-gem-d-1.0.0/lib/dummy-gem-d.rb +0 -1
  2835. data/vendor/rails/railties/test/vendor/gems/dummy-gem-e-1.0.0/lib/dummy-gem-e.rb +0 -1
  2836. data/vendor/rails/railties/test/vendor/gems/dummy-gem-f-1.0.0/lib/dummy-gem-f.rb +0 -1
  2837. data/vendor/rails/railties/test/vendor/gems/dummy-gem-g-1.0.0/lib/dummy-gem-g.rb +0 -1
  2838. data/vendor/rails/railties/test/vendor/gems/dummy-gem-h-1.0.0/lib/dummy-gem-h.rb +0 -1
  2839. data/vendor/rails/railties/test/vendor/gems/dummy-gem-i-1.0.0/ext/dummy-gem-i/Makefile +0 -0
  2840. data/vendor/rails/railties/test/vendor/gems/dummy-gem-i-1.0.0/lib/dummy-gem-i.rb +0 -1
  2841. data/vendor/rails/railties/test/vendor/gems/dummy-gem-j-1.0.0/lib/dummy-gem-j.rb +0 -1
  2842. data/vendor/rails/railties/test/vendor/gems/dummy-gem-k-1.0.0/lib/dummy-gem-k.rb +0 -1
  2843. data/vendor/rails/railties/test/vendor/gems/dummy-gem-l-1.0.0-x86-mswin32/lib/dummy-gem-l.rb +0 -1
  2844. data/vendor/redcloth/Rakefile +0 -196
  2845. data/vendor/redcloth/bin/redcloth +0 -3
  2846. data/vendor/redcloth/doc/CHANGELOG +0 -160
  2847. data/vendor/redcloth/doc/COPYING +0 -25
  2848. data/vendor/redcloth/doc/README +0 -106
  2849. data/vendor/redcloth/doc/REFERENCE +0 -216
  2850. data/vendor/redcloth/doc/make.rb +0 -359
  2851. data/vendor/redcloth/lib/rctodb.rb +0 -1107
  2852. data/vendor/redcloth/lib/redcloth.rb +0 -1130
  2853. data/vendor/redcloth/run-tests.rb +0 -28
  2854. data/vendor/redcloth/setup.rb +0 -1376
  2855. data/vendor/redcloth/tests/code.yml +0 -105
  2856. data/vendor/redcloth/tests/images.yml +0 -171
  2857. data/vendor/redcloth/tests/instiki.yml +0 -39
  2858. data/vendor/redcloth/tests/links.yml +0 -155
  2859. data/vendor/redcloth/tests/lists.yml +0 -77
  2860. data/vendor/redcloth/tests/markdown.yml +0 -218
  2861. data/vendor/redcloth/tests/poignant.yml +0 -64
  2862. data/vendor/redcloth/tests/table.yml +0 -198
  2863. data/vendor/redcloth/tests/textism.yml +0 -406
@@ -1,395 +0,0 @@
1
- module ActiveRecord
2
- # AutosaveAssociation is a module that takes care of automatically saving
3
- # your associations when the parent is saved. In addition to saving, it
4
- # also destroys any associations that were marked for destruction.
5
- # (See mark_for_destruction and marked_for_destruction?)
6
- #
7
- # Saving of the parent, its associations, and the destruction of marked
8
- # associations, all happen inside 1 transaction. This should never leave the
9
- # database in an inconsistent state after, for instance, mass assigning
10
- # attributes and saving them.
11
- #
12
- # If validations for any of the associations fail, their error messages will
13
- # be applied to the parent.
14
- #
15
- # Note that it also means that associations marked for destruction won't
16
- # be destroyed directly. They will however still be marked for destruction.
17
- #
18
- # === One-to-one Example
19
- #
20
- # Consider a Post model with one Author:
21
- #
22
- # class Post
23
- # has_one :author, :autosave => true
24
- # end
25
- #
26
- # Saving changes to the parent and its associated model can now be performed
27
- # automatically _and_ atomically:
28
- #
29
- # post = Post.find(1)
30
- # post.title # => "The current global position of migrating ducks"
31
- # post.author.name # => "alloy"
32
- #
33
- # post.title = "On the migration of ducks"
34
- # post.author.name = "Eloy Duran"
35
- #
36
- # post.save
37
- # post.reload
38
- # post.title # => "On the migration of ducks"
39
- # post.author.name # => "Eloy Duran"
40
- #
41
- # Destroying an associated model, as part of the parent's save action, is as
42
- # simple as marking it for destruction:
43
- #
44
- # post.author.mark_for_destruction
45
- # post.author.marked_for_destruction? # => true
46
- #
47
- # Note that the model is _not_ yet removed from the database:
48
- # id = post.author.id
49
- # Author.find_by_id(id).nil? # => false
50
- #
51
- # post.save
52
- # post.reload.author # => nil
53
- #
54
- # Now it _is_ removed from the database:
55
- # Author.find_by_id(id).nil? # => true
56
- #
57
- # === One-to-many Example
58
- #
59
- # Consider a Post model with many Comments:
60
- #
61
- # class Post
62
- # has_many :comments, :autosave => true
63
- # end
64
- #
65
- # Saving changes to the parent and its associated model can now be performed
66
- # automatically _and_ atomically:
67
- #
68
- # post = Post.find(1)
69
- # post.title # => "The current global position of migrating ducks"
70
- # post.comments.first.body # => "Wow, awesome info thanks!"
71
- # post.comments.last.body # => "Actually, your article should be named differently."
72
- #
73
- # post.title = "On the migration of ducks"
74
- # post.comments.last.body = "Actually, your article should be named differently. [UPDATED]: You are right, thanks."
75
- #
76
- # post.save
77
- # post.reload
78
- # post.title # => "On the migration of ducks"
79
- # post.comments.last.body # => "Actually, your article should be named differently. [UPDATED]: You are right, thanks."
80
- #
81
- # Destroying one of the associated models members, as part of the parent's
82
- # save action, is as simple as marking it for destruction:
83
- #
84
- # post.comments.last.mark_for_destruction
85
- # post.comments.last.marked_for_destruction? # => true
86
- # post.comments.length # => 2
87
- #
88
- # Note that the model is _not_ yet removed from the database:
89
- # id = post.comments.last.id
90
- # Comment.find_by_id(id).nil? # => false
91
- #
92
- # post.save
93
- # post.reload.comments.length # => 1
94
- #
95
- # Now it _is_ removed from the database:
96
- # Comment.find_by_id(id).nil? # => true
97
- #
98
- # === Validation
99
- #
100
- # Validation is performed on the parent as usual, but also on all autosave
101
- # enabled associations. If any of the associations fail validation, its
102
- # error messages will be applied on the parents errors object and validation
103
- # of the parent will fail.
104
- #
105
- # Consider a Post model with Author which validates the presence of its name
106
- # attribute:
107
- #
108
- # class Post
109
- # has_one :author, :autosave => true
110
- # end
111
- #
112
- # class Author
113
- # validates_presence_of :name
114
- # end
115
- #
116
- # post = Post.find(1)
117
- # post.author.name = ''
118
- # post.save # => false
119
- # post.errors # => #<ActiveRecord::Errors:0x174498c @errors={"author_name"=>["can't be blank"]}, @base=#<Post ...>>
120
- #
121
- # No validations will be performed on the associated models when validations
122
- # are skipped for the parent:
123
- #
124
- # post = Post.find(1)
125
- # post.author.name = ''
126
- # post.save(false) # => true
127
- module AutosaveAssociation
128
- ASSOCIATION_TYPES = %w{ has_one belongs_to has_many has_and_belongs_to_many }
129
-
130
- def self.included(base)
131
- base.class_eval do
132
- base.extend(ClassMethods)
133
- alias_method_chain :reload, :autosave_associations
134
-
135
- ASSOCIATION_TYPES.each do |type|
136
- base.send("valid_keys_for_#{type}_association") << :autosave
137
- end
138
- end
139
- end
140
-
141
- module ClassMethods
142
- private
143
-
144
- # def belongs_to(name, options = {})
145
- # super
146
- # add_autosave_association_callbacks(reflect_on_association(name))
147
- # end
148
- ASSOCIATION_TYPES.each do |type|
149
- module_eval <<-CODE, __FILE__, __LINE__ + 1
150
- def #{type}(name, options = {})
151
- super
152
- add_autosave_association_callbacks(reflect_on_association(name))
153
- end
154
- CODE
155
- end
156
-
157
- # Adds a validate and save callback for the association as specified by
158
- # the +reflection+.
159
- #
160
- # For performance reasons, we don't check whether to validate at runtime,
161
- # but instead only define the method and callback when needed. However,
162
- # this can change, for instance, when using nested attributes, which is
163
- # called _after_ the association has been defined. Since we don't want
164
- # the callbacks to get defined multiple times, there are guards that
165
- # check if the save or validation methods have already been defined
166
- # before actually defining them.
167
- def add_autosave_association_callbacks(reflection)
168
- save_method = :"autosave_associated_records_for_#{reflection.name}"
169
- validation_method = :"validate_associated_records_for_#{reflection.name}"
170
- collection = reflection.collection?
171
-
172
- unless method_defined?(save_method)
173
- if collection
174
- before_save :before_save_collection_association
175
-
176
- define_method(save_method) { save_collection_association(reflection) }
177
- # Doesn't use after_save as that would save associations added in after_create/after_update twice
178
- after_create save_method
179
- after_update save_method
180
- else
181
- if reflection.macro == :has_one
182
- define_method(save_method) { save_has_one_association(reflection) }
183
- after_save save_method
184
- else
185
- define_method(save_method) { save_belongs_to_association(reflection) }
186
- before_save save_method
187
- end
188
- end
189
- end
190
-
191
- if reflection.validate? && !method_defined?(validation_method)
192
- method = (collection ? :validate_collection_association : :validate_single_association)
193
- define_method(validation_method) { send(method, reflection) }
194
- validate validation_method
195
- end
196
- end
197
- end
198
-
199
- # Reloads the attributes of the object as usual and removes a mark for destruction.
200
- def reload_with_autosave_associations(options = nil)
201
- @marked_for_destruction = false
202
- reload_without_autosave_associations(options)
203
- end
204
-
205
- # Marks this record to be destroyed as part of the parents save transaction.
206
- # This does _not_ actually destroy the record yet, rather it will be destroyed when <tt>parent.save</tt> is called.
207
- #
208
- # Only useful if the <tt>:autosave</tt> option on the parent is enabled for this associated model.
209
- def mark_for_destruction
210
- @marked_for_destruction = true
211
- end
212
-
213
- # Returns whether or not this record will be destroyed as part of the parents save transaction.
214
- #
215
- # Only useful if the <tt>:autosave</tt> option on the parent is enabled for this associated model.
216
- def marked_for_destruction?
217
- @marked_for_destruction
218
- end
219
-
220
- # Returns whether or not this record has been changed in any way (including whether
221
- # any of its nested autosave associations are likewise changed)
222
- def changed_for_autosave?
223
- new_record? || changed? || marked_for_destruction? || nested_records_changed_for_autosave?
224
- end
225
-
226
- private
227
-
228
- # Returns the record for an association collection that should be validated
229
- # or saved. If +autosave+ is +false+ only new records will be returned,
230
- # unless the parent is/was a new record itself.
231
- def associated_records_to_validate_or_save(association, new_record, autosave)
232
- if new_record
233
- association
234
- elsif autosave
235
- association.target.select { |record| record.changed_for_autosave? }
236
- else
237
- association.target.select { |record| record.new_record? }
238
- end
239
- end
240
-
241
- # go through nested autosave associations that are loaded in memory (without loading
242
- # any new ones), and return true if is changed for autosave
243
- def nested_records_changed_for_autosave?
244
- self.class.reflect_on_all_autosave_associations.each do |reflection|
245
- if association = association_instance_get(reflection.name)
246
- if [:belongs_to, :has_one].include?(reflection.macro)
247
- return true if association.target && association.target.changed_for_autosave?
248
- else
249
- association.target.each {|record| return true if record.changed_for_autosave? }
250
- end
251
- end
252
- end
253
- false
254
- end
255
-
256
- # Validate the association if <tt>:validate</tt> or <tt>:autosave</tt> is
257
- # turned on for the association specified by +reflection+.
258
- def validate_single_association(reflection)
259
- if (association = association_instance_get(reflection.name)) && !association.target.nil?
260
- association_valid?(reflection, association)
261
- end
262
- end
263
-
264
- # Validate the associated records if <tt>:validate</tt> or
265
- # <tt>:autosave</tt> is turned on for the association specified by
266
- # +reflection+.
267
- def validate_collection_association(reflection)
268
- if association = association_instance_get(reflection.name)
269
- if records = associated_records_to_validate_or_save(association, new_record?, reflection.options[:autosave])
270
- records.each { |record| association_valid?(reflection, record) }
271
- end
272
- end
273
- end
274
-
275
- # Returns whether or not the association is valid and applies any errors to
276
- # the parent, <tt>self</tt>, if it wasn't. Skips any <tt>:autosave</tt>
277
- # enabled records if they're marked_for_destruction? or destroyed.
278
- def association_valid?(reflection, association)
279
- return true if association.destroyed? || association.marked_for_destruction?
280
-
281
- unless valid = association.valid?
282
- if reflection.options[:autosave]
283
- association.errors.each_error do |attribute, error|
284
- attribute = "#{reflection.name}.#{attribute}"
285
- errors.add(attribute, error.dup) unless errors.on(attribute)
286
- end
287
- else
288
- errors.add(reflection.name)
289
- end
290
- end
291
- valid
292
- end
293
-
294
- # Is used as a before_save callback to check while saving a collection
295
- # association whether or not the parent was a new record before saving.
296
- def before_save_collection_association
297
- @new_record_before_save = new_record?
298
- true
299
- end
300
-
301
- # Saves any new associated records, or all loaded autosave associations if
302
- # <tt>:autosave</tt> is enabled on the association.
303
- #
304
- # In addition, it destroys all children that were marked for destruction
305
- # with mark_for_destruction.
306
- #
307
- # This all happens inside a transaction, _if_ the Transactions module is included into
308
- # ActiveRecord::Base after the AutosaveAssociation module, which it does by default.
309
- def save_collection_association(reflection)
310
- if association = association_instance_get(reflection.name)
311
- autosave = reflection.options[:autosave]
312
-
313
- if records = associated_records_to_validate_or_save(association, @new_record_before_save, autosave)
314
- records.each do |record|
315
- next if record.destroyed?
316
-
317
- if autosave && record.marked_for_destruction?
318
- association.destroy(record)
319
- elsif autosave != false && (@new_record_before_save || record.new_record?)
320
- if autosave
321
- saved = association.send(:insert_record, record, false, false)
322
- else
323
- association.send(:insert_record, record)
324
- end
325
- elsif autosave
326
- saved = record.save(false)
327
- end
328
-
329
- raise ActiveRecord::Rollback if saved == false
330
- end
331
- end
332
-
333
- # reconstruct the SQL queries now that we know the owner's id
334
- association.send(:construct_sql) if association.respond_to?(:construct_sql)
335
- end
336
- end
337
-
338
- # Saves the associated record if it's new or <tt>:autosave</tt> is enabled
339
- # on the association.
340
- #
341
- # In addition, it will destroy the association if it was marked for
342
- # destruction with mark_for_destruction.
343
- #
344
- # This all happens inside a transaction, _if_ the Transactions module is included into
345
- # ActiveRecord::Base after the AutosaveAssociation module, which it does by default.
346
- def save_has_one_association(reflection)
347
- if (association = association_instance_get(reflection.name)) && !association.target.nil? && !association.destroyed?
348
- autosave = reflection.options[:autosave]
349
-
350
- if autosave && association.marked_for_destruction?
351
- association.destroy
352
- else
353
- key = reflection.options[:primary_key] ? send(reflection.options[:primary_key]) : id
354
- if autosave != false && (new_record? || association.new_record? || association[reflection.primary_key_name] != key || autosave)
355
- association[reflection.primary_key_name] = key
356
- saved = association.save(!autosave)
357
- raise ActiveRecord::Rollback if !saved && autosave
358
- saved
359
- end
360
- end
361
- end
362
- end
363
-
364
- # Saves the associated record if it's new or <tt>:autosave</tt> is enabled
365
- # on the association.
366
- #
367
- # In addition, it will destroy the association if it was marked for
368
- # destruction with mark_for_destruction.
369
- #
370
- # This all happens inside a transaction, _if_ the Transactions module is included into
371
- # ActiveRecord::Base after the AutosaveAssociation module, which it does by default.
372
- def save_belongs_to_association(reflection)
373
- if (association = association_instance_get(reflection.name)) && !association.destroyed?
374
- autosave = reflection.options[:autosave]
375
-
376
- if autosave && association.marked_for_destruction?
377
- association.destroy
378
- elsif autosave != false
379
- saved = association.save(!autosave) if association.new_record? || autosave
380
-
381
- if association.updated?
382
- association_id = association.send(reflection.options[:primary_key] || :id)
383
- self[reflection.primary_key_name] = association_id
384
- # TODO: Removing this code doesn't seem to matter…
385
- if reflection.options[:polymorphic]
386
- self[reflection.options[:foreign_type]] = association.class.base_class.name.to_s
387
- end
388
- end
389
-
390
- saved if autosave
391
- end
392
- end
393
- end
394
- end
395
- end
@@ -1,3218 +0,0 @@
1
- require 'yaml'
2
- require 'set'
3
- require 'active_support/core_ext/class/attribute'
4
-
5
- module ActiveRecord #:nodoc:
6
- # Generic Active Record exception class.
7
- class ActiveRecordError < StandardError
8
- end
9
-
10
- # Raised when the single-table inheritance mechanism fails to locate the subclass
11
- # (for example due to improper usage of column that +inheritance_column+ points to).
12
- class SubclassNotFound < ActiveRecordError #:nodoc:
13
- end
14
-
15
- # Raised when an object assigned to an association has an incorrect type.
16
- #
17
- # class Ticket < ActiveRecord::Base
18
- # has_many :patches
19
- # end
20
- #
21
- # class Patch < ActiveRecord::Base
22
- # belongs_to :ticket
23
- # end
24
- #
25
- # # Comments are not patches, this assignment raises AssociationTypeMismatch.
26
- # @ticket.patches << Comment.new(:content => "Please attach tests to your patch.")
27
- class AssociationTypeMismatch < ActiveRecordError
28
- end
29
-
30
- # Raised when unserialized object's type mismatches one specified for serializable field.
31
- class SerializationTypeMismatch < ActiveRecordError
32
- end
33
-
34
- # Raised when adapter not specified on connection (or configuration file <tt>config/database.yml</tt> misses adapter field).
35
- class AdapterNotSpecified < ActiveRecordError
36
- end
37
-
38
- # Raised when Active Record cannot find database adapter specified in <tt>config/database.yml</tt> or programmatically.
39
- class AdapterNotFound < ActiveRecordError
40
- end
41
-
42
- # Raised when connection to the database could not been established (for example when <tt>connection=</tt> is given a nil object).
43
- class ConnectionNotEstablished < ActiveRecordError
44
- end
45
-
46
- # Raised when Active Record cannot find record by given id or set of ids.
47
- class RecordNotFound < ActiveRecordError
48
- end
49
-
50
- # Raised by ActiveRecord::Base.save! and ActiveRecord::Base.create! methods when record cannot be
51
- # saved because record is invalid.
52
- class RecordNotSaved < ActiveRecordError
53
- end
54
-
55
- # Raised when SQL statement cannot be executed by the database (for example, it's often the case for MySQL when Ruby driver used is too old).
56
- class StatementInvalid < ActiveRecordError
57
- end
58
-
59
- # Raised when number of bind variables in statement given to <tt>:condition</tt> key (for example, when using +find+ method)
60
- # does not match number of expected variables.
61
- #
62
- # For example, in
63
- #
64
- # Location.find :all, :conditions => ["lat = ? AND lng = ?", 53.7362]
65
- #
66
- # two placeholders are given but only one variable to fill them.
67
- class PreparedStatementInvalid < ActiveRecordError
68
- end
69
-
70
- # Raised on attempt to save stale record. Record is stale when it's being saved in another query after
71
- # instantiation, for example, when two users edit the same wiki page and one starts editing and saves
72
- # the page before the other.
73
- #
74
- # Read more about optimistic locking in ActiveRecord::Locking module RDoc.
75
- class StaleObjectError < ActiveRecordError
76
- end
77
-
78
- # Raised when association is being configured improperly or
79
- # user tries to use offset and limit together with has_many or has_and_belongs_to_many associations.
80
- class ConfigurationError < ActiveRecordError
81
- end
82
-
83
- # Raised on attempt to update record that is instantiated as read only.
84
- class ReadOnlyRecord < ActiveRecordError
85
- end
86
-
87
- # ActiveRecord::Transactions::ClassMethods.transaction uses this exception
88
- # to distinguish a deliberate rollback from other exceptional situations.
89
- # Normally, raising an exception will cause the +transaction+ method to rollback
90
- # the database transaction *and* pass on the exception. But if you raise an
91
- # ActiveRecord::Rollback exception, then the database transaction will be rolled back,
92
- # without passing on the exception.
93
- #
94
- # For example, you could do this in your controller to rollback a transaction:
95
- #
96
- # class BooksController < ActionController::Base
97
- # def create
98
- # Book.transaction do
99
- # book = Book.new(params[:book])
100
- # book.save!
101
- # if today_is_friday?
102
- # # The system must fail on Friday so that our support department
103
- # # won't be out of job. We silently rollback this transaction
104
- # # without telling the user.
105
- # raise ActiveRecord::Rollback, "Call tech support!"
106
- # end
107
- # end
108
- # # ActiveRecord::Rollback is the only exception that won't be passed on
109
- # # by ActiveRecord::Base.transaction, so this line will still be reached
110
- # # even on Friday.
111
- # redirect_to root_url
112
- # end
113
- # end
114
- class Rollback < ActiveRecordError
115
- end
116
-
117
- # Raised when attribute has a name reserved by Active Record (when attribute has name of one of Active Record instance methods).
118
- class DangerousAttributeError < ActiveRecordError
119
- end
120
-
121
- # Raised when you've tried to access a column which wasn't loaded by your finder.
122
- # Typically this is because <tt>:select</tt> has been specified.
123
- class MissingAttributeError < NoMethodError
124
- end
125
-
126
- # Raised when unknown attributes are supplied via mass assignment.
127
- class UnknownAttributeError < NoMethodError
128
- end
129
-
130
- # Raised when an error occurred while doing a mass assignment to an attribute through the
131
- # <tt>attributes=</tt> method. The exception has an +attribute+ property that is the name of the
132
- # offending attribute.
133
- class AttributeAssignmentError < ActiveRecordError
134
- attr_reader :exception, :attribute
135
- def initialize(message, exception, attribute)
136
- @exception = exception
137
- @attribute = attribute
138
- @message = message
139
- end
140
- end
141
-
142
- # Raised when there are multiple errors while doing a mass assignment through the +attributes+
143
- # method. The exception has an +errors+ property that contains an array of AttributeAssignmentError
144
- # objects, each corresponding to the error while assigning to an attribute.
145
- class MultiparameterAssignmentErrors < ActiveRecordError
146
- attr_reader :errors
147
- def initialize(errors)
148
- @errors = errors
149
- end
150
- end
151
-
152
- # Active Record objects don't specify their attributes directly, but rather infer them from the table definition with
153
- # which they're linked. Adding, removing, and changing attributes and their type is done directly in the database. Any change
154
- # is instantly reflected in the Active Record objects. The mapping that binds a given Active Record class to a certain
155
- # database table will happen automatically in most common cases, but can be overwritten for the uncommon ones.
156
- #
157
- # See the mapping rules in table_name and the full example in link:files/README.html for more insight.
158
- #
159
- # == Creation
160
- #
161
- # Active Records accept constructor parameters either in a hash or as a block. The hash method is especially useful when
162
- # you're receiving the data from somewhere else, like an HTTP request. It works like this:
163
- #
164
- # user = User.new(:name => "David", :occupation => "Code Artist")
165
- # user.name # => "David"
166
- #
167
- # You can also use block initialization:
168
- #
169
- # user = User.new do |u|
170
- # u.name = "David"
171
- # u.occupation = "Code Artist"
172
- # end
173
- #
174
- # And of course you can just create a bare object and specify the attributes after the fact:
175
- #
176
- # user = User.new
177
- # user.name = "David"
178
- # user.occupation = "Code Artist"
179
- #
180
- # == Conditions
181
- #
182
- # Conditions can either be specified as a string, array, or hash representing the WHERE-part of an SQL statement.
183
- # The array form is to be used when the condition input is tainted and requires sanitization. The string form can
184
- # be used for statements that don't involve tainted data. The hash form works much like the array form, except
185
- # only equality and range is possible. Examples:
186
- #
187
- # class User < ActiveRecord::Base
188
- # def self.authenticate_unsafely(user_name, password)
189
- # find(:first, :conditions => "user_name = '#{user_name}' AND password = '#{password}'")
190
- # end
191
- #
192
- # def self.authenticate_safely(user_name, password)
193
- # find(:first, :conditions => [ "user_name = ? AND password = ?", user_name, password ])
194
- # end
195
- #
196
- # def self.authenticate_safely_simply(user_name, password)
197
- # find(:first, :conditions => { :user_name => user_name, :password => password })
198
- # end
199
- # end
200
- #
201
- # The <tt>authenticate_unsafely</tt> method inserts the parameters directly into the query and is thus susceptible to SQL-injection
202
- # attacks if the <tt>user_name</tt> and +password+ parameters come directly from an HTTP request. The <tt>authenticate_safely</tt> and
203
- # <tt>authenticate_safely_simply</tt> both will sanitize the <tt>user_name</tt> and +password+ before inserting them in the query,
204
- # which will ensure that an attacker can't escape the query and fake the login (or worse).
205
- #
206
- # When using multiple parameters in the conditions, it can easily become hard to read exactly what the fourth or fifth
207
- # question mark is supposed to represent. In those cases, you can resort to named bind variables instead. That's done by replacing
208
- # the question marks with symbols and supplying a hash with values for the matching symbol keys:
209
- #
210
- # Company.find(:first, :conditions => [
211
- # "id = :id AND name = :name AND division = :division AND created_at > :accounting_date",
212
- # { :id => 3, :name => "37signals", :division => "First", :accounting_date => '2005-01-01' }
213
- # ])
214
- #
215
- # Similarly, a simple hash without a statement will generate conditions based on equality with the SQL AND
216
- # operator. For instance:
217
- #
218
- # Student.find(:all, :conditions => { :first_name => "Harvey", :status => 1 })
219
- # Student.find(:all, :conditions => params[:student])
220
- #
221
- # A range may be used in the hash to use the SQL BETWEEN operator:
222
- #
223
- # Student.find(:all, :conditions => { :grade => 9..12 })
224
- #
225
- # An array may be used in the hash to use the SQL IN operator:
226
- #
227
- # Student.find(:all, :conditions => { :grade => [9,11,12] })
228
- #
229
- # == Overwriting default accessors
230
- #
231
- # All column values are automatically available through basic accessors on the Active Record object, but sometimes you
232
- # want to specialize this behavior. This can be done by overwriting the default accessors (using the same
233
- # name as the attribute) and calling <tt>read_attribute(attr_name)</tt> and <tt>write_attribute(attr_name, value)</tt> to actually change things.
234
- # Example:
235
- #
236
- # class Song < ActiveRecord::Base
237
- # # Uses an integer of seconds to hold the length of the song
238
- #
239
- # def length=(minutes)
240
- # write_attribute(:length, minutes.to_i * 60)
241
- # end
242
- #
243
- # def length
244
- # read_attribute(:length) / 60
245
- # end
246
- # end
247
- #
248
- # You can alternatively use <tt>self[:attribute]=(value)</tt> and <tt>self[:attribute]</tt> instead of <tt>write_attribute(:attribute, value)</tt> and
249
- # <tt>read_attribute(:attribute)</tt> as a shorter form.
250
- #
251
- # == Attribute query methods
252
- #
253
- # In addition to the basic accessors, query methods are also automatically available on the Active Record object.
254
- # Query methods allow you to test whether an attribute value is present.
255
- #
256
- # For example, an Active Record User with the <tt>name</tt> attribute has a <tt>name?</tt> method that you can call
257
- # to determine whether the user has a name:
258
- #
259
- # user = User.new(:name => "David")
260
- # user.name? # => true
261
- #
262
- # anonymous = User.new(:name => "")
263
- # anonymous.name? # => false
264
- #
265
- # == Accessing attributes before they have been typecasted
266
- #
267
- # Sometimes you want to be able to read the raw attribute data without having the column-determined typecast run its course first.
268
- # That can be done by using the <tt><attribute>_before_type_cast</tt> accessors that all attributes have. For example, if your Account model
269
- # has a <tt>balance</tt> attribute, you can call <tt>account.balance_before_type_cast</tt> or <tt>account.id_before_type_cast</tt>.
270
- #
271
- # This is especially useful in validation situations where the user might supply a string for an integer field and you want to display
272
- # the original string back in an error message. Accessing the attribute normally would typecast the string to 0, which isn't what you
273
- # want.
274
- #
275
- # == Dynamic attribute-based finders
276
- #
277
- # Dynamic attribute-based finders are a cleaner way of getting (and/or creating) objects by simple queries without turning to SQL. They work by
278
- # appending the name of an attribute to <tt>find_by_</tt>, <tt>find_last_by_</tt>, or <tt>find_all_by_</tt>, so you get finders like <tt>Person.find_by_user_name</tt>,
279
- # <tt>Person.find_all_by_last_name</tt>, and <tt>Payment.find_by_transaction_id</tt>. So instead of writing
280
- # <tt>Person.find(:first, :conditions => ["user_name = ?", user_name])</tt>, you just do <tt>Person.find_by_user_name(user_name)</tt>.
281
- # And instead of writing <tt>Person.find(:all, :conditions => ["last_name = ?", last_name])</tt>, you just do <tt>Person.find_all_by_last_name(last_name)</tt>.
282
- #
283
- # It's also possible to use multiple attributes in the same find by separating them with "_and_", so you get finders like
284
- # <tt>Person.find_by_user_name_and_password</tt> or even <tt>Payment.find_by_purchaser_and_state_and_country</tt>. So instead of writing
285
- # <tt>Person.find(:first, :conditions => ["user_name = ? AND password = ?", user_name, password])</tt>, you just do
286
- # <tt>Person.find_by_user_name_and_password(user_name, password)</tt>.
287
- #
288
- # It's even possible to use all the additional parameters to find. For example, the full interface for <tt>Payment.find_all_by_amount</tt>
289
- # is actually <tt>Payment.find_all_by_amount(amount, options)</tt>. And the full interface to <tt>Person.find_by_user_name</tt> is
290
- # actually <tt>Person.find_by_user_name(user_name, options)</tt>. So you could call <tt>Payment.find_all_by_amount(50, :order => "created_on")</tt>.
291
- # Also you may call <tt>Payment.find_last_by_amount(amount, options)</tt> returning the last record matching that amount and options.
292
- #
293
- # The same dynamic finder style can be used to create the object if it doesn't already exist. This dynamic finder is called with
294
- # <tt>find_or_create_by_</tt> and will return the object if it already exists and otherwise creates it, then returns it. Protected attributes won't be set unless they are given in a block. For example:
295
- #
296
- # # No 'Summer' tag exists
297
- # Tag.find_or_create_by_name("Summer") # equal to Tag.create(:name => "Summer")
298
- #
299
- # # Now the 'Summer' tag does exist
300
- # Tag.find_or_create_by_name("Summer") # equal to Tag.find_by_name("Summer")
301
- #
302
- # # Now 'Bob' exist and is an 'admin'
303
- # User.find_or_create_by_name('Bob', :age => 40) { |u| u.admin = true }
304
- #
305
- # Use the <tt>find_or_initialize_by_</tt> finder if you want to return a new record without saving it first. Protected attributes won't be set unless they are given in a block. For example:
306
- #
307
- # # No 'Winter' tag exists
308
- # winter = Tag.find_or_initialize_by_name("Winter")
309
- # winter.new_record? # true
310
- #
311
- # To find by a subset of the attributes to be used for instantiating a new object, pass a hash instead of
312
- # a list of parameters. For example:
313
- #
314
- # Tag.find_or_create_by_name(:name => "rails", :creator => current_user)
315
- #
316
- # That will either find an existing tag named "rails", or create a new one while setting the user that created it.
317
- #
318
- # == Saving arrays, hashes, and other non-mappable objects in text columns
319
- #
320
- # Active Record can serialize any object in text columns using YAML. To do so, you must specify this with a call to the class method +serialize+.
321
- # This makes it possible to store arrays, hashes, and other non-mappable objects without doing any additional work. Example:
322
- #
323
- # class User < ActiveRecord::Base
324
- # serialize :preferences
325
- # end
326
- #
327
- # user = User.create(:preferences => { "background" => "black", "display" => large })
328
- # User.find(user.id).preferences # => { "background" => "black", "display" => large }
329
- #
330
- # You can also specify a class option as the second parameter that'll raise an exception if a serialized object is retrieved as a
331
- # descendant of a class not in the hierarchy. Example:
332
- #
333
- # class User < ActiveRecord::Base
334
- # serialize :preferences, Hash
335
- # end
336
- #
337
- # user = User.create(:preferences => %w( one two three ))
338
- # User.find(user.id).preferences # raises SerializationTypeMismatch
339
- #
340
- # == Single table inheritance
341
- #
342
- # Active Record allows inheritance by storing the name of the class in a column that by default is named "type" (can be changed
343
- # by overwriting <tt>Base.inheritance_column</tt>). This means that an inheritance looking like this:
344
- #
345
- # class Company < ActiveRecord::Base; end
346
- # class Firm < Company; end
347
- # class Client < Company; end
348
- # class PriorityClient < Client; end
349
- #
350
- # When you do <tt>Firm.create(:name => "37signals")</tt>, this record will be saved in the companies table with type = "Firm". You can then
351
- # fetch this row again using <tt>Company.find(:first, "name = '37signals'")</tt> and it will return a Firm object.
352
- #
353
- # If you don't have a type column defined in your table, single-table inheritance won't be triggered. In that case, it'll work just
354
- # like normal subclasses with no special magic for differentiating between them or reloading the right type with find.
355
- #
356
- # Note, all the attributes for all the cases are kept in the same table. Read more:
357
- # http://www.martinfowler.com/eaaCatalog/singleTableInheritance.html
358
- #
359
- # == Connection to multiple databases in different models
360
- #
361
- # Connections are usually created through ActiveRecord::Base.establish_connection and retrieved by ActiveRecord::Base.connection.
362
- # All classes inheriting from ActiveRecord::Base will use this connection. But you can also set a class-specific connection.
363
- # For example, if Course is an ActiveRecord::Base, but resides in a different database, you can just say <tt>Course.establish_connection</tt>
364
- # and Course and all of its subclasses will use this connection instead.
365
- #
366
- # This feature is implemented by keeping a connection pool in ActiveRecord::Base that is a Hash indexed by the class. If a connection is
367
- # requested, the retrieve_connection method will go up the class-hierarchy until a connection is found in the connection pool.
368
- #
369
- # == Exceptions
370
- #
371
- # * ActiveRecordError - Generic error class and superclass of all other errors raised by Active Record.
372
- # * AdapterNotSpecified - The configuration hash used in <tt>establish_connection</tt> didn't include an
373
- # <tt>:adapter</tt> key.
374
- # * AdapterNotFound - The <tt>:adapter</tt> key used in <tt>establish_connection</tt> specified a non-existent adapter
375
- # (or a bad spelling of an existing one).
376
- # * AssociationTypeMismatch - The object assigned to the association wasn't of the type specified in the association definition.
377
- # * SerializationTypeMismatch - The serialized object wasn't of the class specified as the second parameter.
378
- # * ConnectionNotEstablished+ - No connection has been established. Use <tt>establish_connection</tt> before querying.
379
- # * RecordNotFound - No record responded to the +find+ method. Either the row with the given ID doesn't exist
380
- # or the row didn't meet the additional restrictions. Some +find+ calls do not raise this exception to signal
381
- # nothing was found, please check its documentation for further details.
382
- # * StatementInvalid - The database server rejected the SQL statement. The precise error is added in the message.
383
- # * MultiparameterAssignmentErrors - Collection of errors that occurred during a mass assignment using the
384
- # <tt>attributes=</tt> method. The +errors+ property of this exception contains an array of AttributeAssignmentError
385
- # objects that should be inspected to determine which attributes triggered the errors.
386
- # * AttributeAssignmentError - An error occurred while doing a mass assignment through the <tt>attributes=</tt> method.
387
- # You can inspect the +attribute+ property of the exception object to determine which attribute triggered the error.
388
- #
389
- # *Note*: The attributes listed are class-level attributes (accessible from both the class and instance level).
390
- # So it's possible to assign a logger to the class through <tt>Base.logger=</tt> which will then be used by all
391
- # instances in the current object space.
392
- class Base
393
- ##
394
- # :singleton-method:
395
- # Accepts a logger conforming to the interface of Log4r or the default Ruby 1.8+ Logger class, which is then passed
396
- # on to any new database connections made and which can be retrieved on both a class and instance level by calling +logger+.
397
- cattr_accessor :logger, :instance_writer => false
398
-
399
- def self.inherited(child) #:nodoc:
400
- @@subclasses[self] ||= []
401
- @@subclasses[self] << child
402
- super
403
- end
404
-
405
- def self.reset_subclasses #:nodoc:
406
- nonreloadables = []
407
- subclasses.each do |klass|
408
- unless ActiveSupport::Dependencies.autoloaded? klass
409
- nonreloadables << klass
410
- next
411
- end
412
- klass.instance_variables.each { |var| klass.send(:remove_instance_variable, var) }
413
- klass.instance_methods(false).each { |m| klass.send :undef_method, m }
414
- end
415
- @@subclasses = {}
416
- nonreloadables.each { |klass| (@@subclasses[klass.superclass] ||= []) << klass }
417
- end
418
-
419
- @@subclasses = {}
420
-
421
- ##
422
- # :singleton-method:
423
- # Contains the database configuration - as is typically stored in config/database.yml -
424
- # as a Hash.
425
- #
426
- # For example, the following database.yml...
427
- #
428
- # development:
429
- # adapter: sqlite3
430
- # database: db/development.sqlite3
431
- #
432
- # production:
433
- # adapter: sqlite3
434
- # database: db/production.sqlite3
435
- #
436
- # ...would result in ActiveRecord::Base.configurations to look like this:
437
- #
438
- # {
439
- # 'development' => {
440
- # 'adapter' => 'sqlite3',
441
- # 'database' => 'db/development.sqlite3'
442
- # },
443
- # 'production' => {
444
- # 'adapter' => 'sqlite3',
445
- # 'database' => 'db/production.sqlite3'
446
- # }
447
- # }
448
- cattr_accessor :configurations, :instance_writer => false
449
- @@configurations = {}
450
-
451
- ##
452
- # :singleton-method:
453
- # Accessor for the prefix type that will be prepended to every primary key column name. The options are :table_name and
454
- # :table_name_with_underscore. If the first is specified, the Product class will look for "productid" instead of "id" as
455
- # the primary column. If the latter is specified, the Product class will look for "product_id" instead of "id". Remember
456
- # that this is a global setting for all Active Records.
457
- cattr_accessor :primary_key_prefix_type, :instance_writer => false
458
- @@primary_key_prefix_type = nil
459
-
460
- ##
461
- # :singleton-method:
462
- # Accessor for the name of the prefix string to prepend to every table name. So if set to "basecamp_", all
463
- # table names will be named like "basecamp_projects", "basecamp_people", etc. This is a convenient way of creating a namespace
464
- # for tables in a shared database. By default, the prefix is the empty string.
465
- #
466
- # If you are organising your models within modules you can add a prefix to the models within a namespace by defining
467
- # a singleton method in the parent module called table_name_prefix which returns your chosen prefix.
468
- cattr_accessor :table_name_prefix, :instance_writer => false
469
- @@table_name_prefix = ""
470
-
471
- ##
472
- # :singleton-method:
473
- # Works like +table_name_prefix+, but appends instead of prepends (set to "_basecamp" gives "projects_basecamp",
474
- # "people_basecamp"). By default, the suffix is the empty string.
475
- cattr_accessor :table_name_suffix, :instance_writer => false
476
- @@table_name_suffix = ""
477
-
478
- ##
479
- # :singleton-method:
480
- # Indicates whether table names should be the pluralized versions of the corresponding class names.
481
- # If true, the default table name for a Product class will be +products+. If false, it would just be +product+.
482
- # See table_name for the full rules on table/class naming. This is true, by default.
483
- cattr_accessor :pluralize_table_names, :instance_writer => false
484
- @@pluralize_table_names = true
485
-
486
- ##
487
- # :singleton-method:
488
- # Determines whether to use ANSI codes to colorize the logging statements committed by the connection adapter. These colors
489
- # make it much easier to overview things during debugging (when used through a reader like +tail+ and on a black background), but
490
- # may complicate matters if you use software like syslog. This is true, by default.
491
- cattr_accessor :colorize_logging, :instance_writer => false
492
- @@colorize_logging = true
493
-
494
- ##
495
- # :singleton-method:
496
- # Determines whether to use Time.local (using :local) or Time.utc (using :utc) when pulling dates and times from the database.
497
- # This is set to :local by default.
498
- cattr_accessor :default_timezone, :instance_writer => false
499
- @@default_timezone = :local
500
-
501
- ##
502
- # :singleton-method:
503
- # Specifies the format to use when dumping the database schema with Rails'
504
- # Rakefile. If :sql, the schema is dumped as (potentially database-
505
- # specific) SQL statements. If :ruby, the schema is dumped as an
506
- # ActiveRecord::Schema file which can be loaded into any database that
507
- # supports migrations. Use :ruby if you want to have different database
508
- # adapters for, e.g., your development and test environments.
509
- cattr_accessor :schema_format , :instance_writer => false
510
- @@schema_format = :ruby
511
-
512
- ##
513
- # :singleton-method:
514
- # Specify whether or not to use timestamps for migration numbers
515
- cattr_accessor :timestamped_migrations , :instance_writer => false
516
- @@timestamped_migrations = true
517
-
518
- # Determine whether to store the full constant name including namespace when using STI
519
- class_attribute :store_full_sti_class
520
- self.store_full_sti_class = false
521
-
522
- # Stores the default scope for the class
523
- class_inheritable_accessor :default_scoping, :instance_writer => false
524
- self.default_scoping = []
525
-
526
- class << self # Class methods
527
- # Find operates with four different retrieval approaches:
528
- #
529
- # * Find by id - This can either be a specific id (1), a list of ids (1, 5, 6), or an array of ids ([5, 6, 10]).
530
- # If no record can be found for all of the listed ids, then RecordNotFound will be raised.
531
- # * Find first - This will return the first record matched by the options used. These options can either be specific
532
- # conditions or merely an order. If no record can be matched, +nil+ is returned. Use
533
- # <tt>Model.find(:first, *args)</tt> or its shortcut <tt>Model.first(*args)</tt>.
534
- # * Find last - This will return the last record matched by the options used. These options can either be specific
535
- # conditions or merely an order. If no record can be matched, +nil+ is returned. Use
536
- # <tt>Model.find(:last, *args)</tt> or its shortcut <tt>Model.last(*args)</tt>.
537
- # * Find all - This will return all the records matched by the options used.
538
- # If no records are found, an empty array is returned. Use
539
- # <tt>Model.find(:all, *args)</tt> or its shortcut <tt>Model.all(*args)</tt>.
540
- #
541
- # All approaches accept an options hash as their last parameter.
542
- #
543
- # ==== Parameters
544
- #
545
- # * <tt>:conditions</tt> - An SQL fragment like "administrator = 1", <tt>[ "user_name = ?", username ]</tt>, or <tt>["user_name = :user_name", { :user_name => user_name }]</tt>. See conditions in the intro.
546
- # * <tt>:order</tt> - An SQL fragment like "created_at DESC, name".
547
- # * <tt>:group</tt> - An attribute name by which the result should be grouped. Uses the <tt>GROUP BY</tt> SQL-clause.
548
- # * <tt>:having</tt> - Combined with +:group+ this can be used to filter the records that a <tt>GROUP BY</tt> returns. Uses the <tt>HAVING</tt> SQL-clause.
549
- # * <tt>:limit</tt> - An integer determining the limit on the number of rows that should be returned.
550
- # * <tt>:offset</tt> - An integer determining the offset from where the rows should be fetched. So at 5, it would skip rows 0 through 4.
551
- # * <tt>:joins</tt> - Either an SQL fragment for additional joins like "LEFT JOIN comments ON comments.post_id = id" (rarely needed),
552
- # named associations in the same form used for the <tt>:include</tt> option, which will perform an <tt>INNER JOIN</tt> on the associated table(s),
553
- # or an array containing a mixture of both strings and named associations.
554
- # If the value is a string, then the records will be returned read-only since they will have attributes that do not correspond to the table's columns.
555
- # Pass <tt>:readonly => false</tt> to override.
556
- # * <tt>:include</tt> - Names associations that should be loaded alongside. The symbols named refer
557
- # to already defined associations. See eager loading under Associations.
558
- # * <tt>:select</tt> - By default, this is "*" as in "SELECT * FROM", but can be changed if you, for example, want to do a join but not
559
- # include the joined columns. Takes a string with the SELECT SQL fragment (e.g. "id, name").
560
- # * <tt>:from</tt> - By default, this is the table name of the class, but can be changed to an alternate table name (or even the name
561
- # of a database view).
562
- # * <tt>:readonly</tt> - Mark the returned records read-only so they cannot be saved or updated.
563
- # * <tt>:lock</tt> - An SQL fragment like "FOR UPDATE" or "LOCK IN SHARE MODE".
564
- # <tt>:lock => true</tt> gives connection's default exclusive lock, usually "FOR UPDATE".
565
- #
566
- # ==== Examples
567
- #
568
- # # find by id
569
- # Person.find(1) # returns the object for ID = 1
570
- # Person.find(1, 2, 6) # returns an array for objects with IDs in (1, 2, 6)
571
- # Person.find([7, 17]) # returns an array for objects with IDs in (7, 17)
572
- # Person.find([1]) # returns an array for the object with ID = 1
573
- # Person.find(1, :conditions => "administrator = 1", :order => "created_on DESC")
574
- #
575
- # Note that returned records may not be in the same order as the ids you
576
- # provide since database rows are unordered. Give an explicit <tt>:order</tt>
577
- # to ensure the results are sorted.
578
- #
579
- # ==== Examples
580
- #
581
- # # find first
582
- # Person.find(:first) # returns the first object fetched by SELECT * FROM people
583
- # Person.find(:first, :conditions => [ "user_name = ?", user_name])
584
- # Person.find(:first, :conditions => [ "user_name = :u", { :u => user_name }])
585
- # Person.find(:first, :order => "created_on DESC", :offset => 5)
586
- #
587
- # # find last
588
- # Person.find(:last) # returns the last object fetched by SELECT * FROM people
589
- # Person.find(:last, :conditions => [ "user_name = ?", user_name])
590
- # Person.find(:last, :order => "created_on DESC", :offset => 5)
591
- #
592
- # # find all
593
- # Person.find(:all) # returns an array of objects for all the rows fetched by SELECT * FROM people
594
- # Person.find(:all, :conditions => [ "category IN (?)", categories], :limit => 50)
595
- # Person.find(:all, :conditions => { :friends => ["Bob", "Steve", "Fred"] }
596
- # Person.find(:all, :offset => 10, :limit => 10)
597
- # Person.find(:all, :include => [ :account, :friends ])
598
- # Person.find(:all, :group => "category")
599
- #
600
- # Example for find with a lock: Imagine two concurrent transactions:
601
- # each will read <tt>person.visits == 2</tt>, add 1 to it, and save, resulting
602
- # in two saves of <tt>person.visits = 3</tt>. By locking the row, the second
603
- # transaction has to wait until the first is finished; we get the
604
- # expected <tt>person.visits == 4</tt>.
605
- #
606
- # Person.transaction do
607
- # person = Person.find(1, :lock => true)
608
- # person.visits += 1
609
- # person.save!
610
- # end
611
- def find(*args)
612
- options = args.extract_options!
613
- validate_find_options(options)
614
- set_readonly_option!(options)
615
-
616
- case args.first
617
- when :first then find_initial(options)
618
- when :last then find_last(options)
619
- when :all then find_every(options)
620
- else find_from_ids(args, options)
621
- end
622
- end
623
-
624
- # A convenience wrapper for <tt>find(:first, *args)</tt>. You can pass in all the
625
- # same arguments to this method as you can to <tt>find(:first)</tt>.
626
- def first(*args)
627
- find(:first, *args)
628
- end
629
-
630
- # A convenience wrapper for <tt>find(:last, *args)</tt>. You can pass in all the
631
- # same arguments to this method as you can to <tt>find(:last)</tt>.
632
- def last(*args)
633
- find(:last, *args)
634
- end
635
-
636
- # This is an alias for find(:all). You can pass in all the same arguments to this method as you can
637
- # to find(:all)
638
- def all(*args)
639
- find(:all, *args)
640
- end
641
-
642
- # Executes a custom SQL query against your database and returns all the results. The results will
643
- # be returned as an array with columns requested encapsulated as attributes of the model you call
644
- # this method from. If you call <tt>Product.find_by_sql</tt> then the results will be returned in
645
- # a Product object with the attributes you specified in the SQL query.
646
- #
647
- # If you call a complicated SQL query which spans multiple tables the columns specified by the
648
- # SELECT will be attributes of the model, whether or not they are columns of the corresponding
649
- # table.
650
- #
651
- # The +sql+ parameter is a full SQL query as a string. It will be called as is, there will be
652
- # no database agnostic conversions performed. This should be a last resort because using, for example,
653
- # MySQL specific terms will lock you to using that particular database engine or require you to
654
- # change your call if you switch engines.
655
- #
656
- # ==== Examples
657
- # # A simple SQL query spanning multiple tables
658
- # Post.find_by_sql "SELECT p.title, c.author FROM posts p, comments c WHERE p.id = c.post_id"
659
- # > [#<Post:0x36bff9c @attributes={"title"=>"Ruby Meetup", "first_name"=>"Quentin"}>, ...]
660
- #
661
- # # You can use the same string replacement techniques as you can with ActiveRecord#find
662
- # Post.find_by_sql ["SELECT title FROM posts WHERE author = ? AND created > ?", author_id, start_date]
663
- # > [#<Post:0x36bff9c @attributes={"first_name"=>"The Cheap Man Buys Twice"}>, ...]
664
- def find_by_sql(sql)
665
- connection.select_all(sanitize_sql(sql), "#{name} Load").collect! { |record| instantiate(record) }
666
- end
667
-
668
- # Returns true if a record exists in the table that matches the +id+ or
669
- # conditions given, or false otherwise. The argument can take five forms:
670
- #
671
- # * Integer - Finds the record with this primary key.
672
- # * String - Finds the record with a primary key corresponding to this
673
- # string (such as <tt>'5'</tt>).
674
- # * Array - Finds the record that matches these +find+-style conditions
675
- # (such as <tt>['color = ?', 'red']</tt>).
676
- # * Hash - Finds the record that matches these +find+-style conditions
677
- # (such as <tt>{:color => 'red'}</tt>).
678
- # * No args - Returns false if the table is empty, true otherwise.
679
- #
680
- # For more information about specifying conditions as a Hash or Array,
681
- # see the Conditions section in the introduction to ActiveRecord::Base.
682
- #
683
- # Note: You can't pass in a condition as a string (like <tt>name =
684
- # 'Jamie'</tt>), since it would be sanitized and then queried against
685
- # the primary key column, like <tt>id = 'name = \'Jamie\''</tt>.
686
- #
687
- # ==== Examples
688
- # Person.exists?(5)
689
- # Person.exists?('5')
690
- # Person.exists?(:name => "David")
691
- # Person.exists?(['name LIKE ?', "%#{query}%"])
692
- # Person.exists?
693
- def exists?(id_or_conditions = {})
694
- find_initial(
695
- :select => "#{quoted_table_name}.#{primary_key}",
696
- :conditions => expand_id_conditions(id_or_conditions)) ? true : false
697
- end
698
-
699
- # Creates an object (or multiple objects) and saves it to the database, if validations pass.
700
- # The resulting object is returned whether the object was saved successfully to the database or not.
701
- #
702
- # The +attributes+ parameter can be either be a Hash or an Array of Hashes. These Hashes describe the
703
- # attributes on the objects that are to be created.
704
- #
705
- # ==== Examples
706
- # # Create a single new object
707
- # User.create(:first_name => 'Jamie')
708
- #
709
- # # Create an Array of new objects
710
- # User.create([{ :first_name => 'Jamie' }, { :first_name => 'Jeremy' }])
711
- #
712
- # # Create a single object and pass it into a block to set other attributes.
713
- # User.create(:first_name => 'Jamie') do |u|
714
- # u.is_admin = false
715
- # end
716
- #
717
- # # Creating an Array of new objects using a block, where the block is executed for each object:
718
- # User.create([{ :first_name => 'Jamie' }, { :first_name => 'Jeremy' }]) do |u|
719
- # u.is_admin = false
720
- # end
721
- def create(attributes = nil, &block)
722
- if attributes.is_a?(Array)
723
- attributes.collect { |attr| create(attr, &block) }
724
- else
725
- object = new(attributes)
726
- yield(object) if block_given?
727
- object.save
728
- object
729
- end
730
- end
731
-
732
- # Updates an object (or multiple objects) and saves it to the database, if validations pass.
733
- # The resulting object is returned whether the object was saved successfully to the database or not.
734
- #
735
- # ==== Parameters
736
- #
737
- # * +id+ - This should be the id or an array of ids to be updated.
738
- # * +attributes+ - This should be a hash of attributes to be set on the object, or an array of hashes.
739
- #
740
- # ==== Examples
741
- #
742
- # # Updating one record:
743
- # Person.update(15, :user_name => 'Samuel', :group => 'expert')
744
- #
745
- # # Updating multiple records:
746
- # people = { 1 => { "first_name" => "David" }, 2 => { "first_name" => "Jeremy" } }
747
- # Person.update(people.keys, people.values)
748
- def update(id, attributes)
749
- if id.is_a?(Array)
750
- idx = -1
751
- id.collect { |one_id| idx += 1; update(one_id, attributes[idx]) }
752
- else
753
- object = find(id)
754
- object.update_attributes(attributes)
755
- object
756
- end
757
- end
758
-
759
- # Deletes the row with a primary key matching the +id+ argument, using a
760
- # SQL +DELETE+ statement, and returns the number of rows deleted. Active
761
- # Record objects are not instantiated, so the object's callbacks are not
762
- # executed, including any <tt>:dependent</tt> association options or
763
- # Observer methods.
764
- #
765
- # You can delete multiple rows at once by passing an Array of <tt>id</tt>s.
766
- #
767
- # Note: Although it is often much faster than the alternative,
768
- # <tt>#destroy</tt>, skipping callbacks might bypass business logic in
769
- # your application that ensures referential integrity or performs other
770
- # essential jobs.
771
- #
772
- # ==== Examples
773
- #
774
- # # Delete a single row
775
- # Todo.delete(1)
776
- #
777
- # # Delete multiple rows
778
- # Todo.delete([2,3,4])
779
- def delete(id)
780
- delete_all([ "#{connection.quote_column_name(primary_key)} IN (?)", id ])
781
- end
782
-
783
- # Destroy an object (or multiple objects) that has the given id, the object is instantiated first,
784
- # therefore all callbacks and filters are fired off before the object is deleted. This method is
785
- # less efficient than ActiveRecord#delete but allows cleanup methods and other actions to be run.
786
- #
787
- # This essentially finds the object (or multiple objects) with the given id, creates a new object
788
- # from the attributes, and then calls destroy on it.
789
- #
790
- # ==== Parameters
791
- #
792
- # * +id+ - Can be either an Integer or an Array of Integers.
793
- #
794
- # ==== Examples
795
- #
796
- # # Destroy a single object
797
- # Todo.destroy(1)
798
- #
799
- # # Destroy multiple objects
800
- # todos = [1,2,3]
801
- # Todo.destroy(todos)
802
- def destroy(id)
803
- if id.is_a?(Array)
804
- id.map { |one_id| destroy(one_id) }
805
- else
806
- find(id).destroy
807
- end
808
- end
809
-
810
- # Updates all records with details given if they match a set of conditions supplied, limits and order can
811
- # also be supplied. This method constructs a single SQL UPDATE statement and sends it straight to the
812
- # database. It does not instantiate the involved models and it does not trigger Active Record callbacks.
813
- #
814
- # ==== Parameters
815
- #
816
- # * +updates+ - A string of column and value pairs that will be set on any records that match conditions. This creates the SET clause of the generated SQL.
817
- # * +conditions+ - An SQL fragment like "administrator = 1" or [ "user_name = ?", username ]. See conditions in the intro for more info.
818
- # * +options+ - Additional options are <tt>:limit</tt> and <tt>:order</tt>, see the examples for usage.
819
- #
820
- # ==== Examples
821
- #
822
- # # Update all billing objects with the 3 different attributes given
823
- # Billing.update_all( "category = 'authorized', approved = 1, author = 'David'" )
824
- #
825
- # # Update records that match our conditions
826
- # Billing.update_all( "author = 'David'", "title LIKE '%Rails%'" )
827
- #
828
- # # Update records that match our conditions but limit it to 5 ordered by date
829
- # Billing.update_all( "author = 'David'", "title LIKE '%Rails%'",
830
- # :order => 'created_at', :limit => 5 )
831
- def update_all(updates, conditions = nil, options = {})
832
- sql = "UPDATE #{quoted_table_name} SET #{sanitize_sql_for_assignment(updates)} "
833
-
834
- scope = scope(:find)
835
-
836
- select_sql = ""
837
- add_conditions!(select_sql, conditions, scope)
838
-
839
- if options.has_key?(:limit) || (scope && scope[:limit])
840
- # Only take order from scope if limit is also provided by scope, this
841
- # is useful for updating a has_many association with a limit.
842
- add_order!(select_sql, options[:order], scope)
843
-
844
- add_limit!(select_sql, options, scope)
845
- sql.concat(connection.limited_update_conditions(select_sql, quoted_table_name, connection.quote_column_name(primary_key)))
846
- else
847
- add_order!(select_sql, options[:order], nil)
848
- sql.concat(select_sql)
849
- end
850
-
851
- connection.update(sql, "#{name} Update")
852
- end
853
-
854
- # Destroys the records matching +conditions+ by instantiating each
855
- # record and calling its +destroy+ method. Each object's callbacks are
856
- # executed (including <tt>:dependent</tt> association options and
857
- # +before_destroy+/+after_destroy+ Observer methods). Returns the
858
- # collection of objects that were destroyed; each will be frozen, to
859
- # reflect that no changes should be made (since they can't be
860
- # persisted).
861
- #
862
- # Note: Instantiation, callback execution, and deletion of each
863
- # record can be time consuming when you're removing many records at
864
- # once. It generates at least one SQL +DELETE+ query per record (or
865
- # possibly more, to enforce your callbacks). If you want to delete many
866
- # rows quickly, without concern for their associations or callbacks, use
867
- # +delete_all+ instead.
868
- #
869
- # ==== Parameters
870
- #
871
- # * +conditions+ - A string, array, or hash that specifies which records
872
- # to destroy. If omitted, all records are destroyed. See the
873
- # Conditions section in the introduction to ActiveRecord::Base for
874
- # more information.
875
- #
876
- # ==== Examples
877
- #
878
- # Person.destroy_all("last_login < '2004-04-04'")
879
- # Person.destroy_all(:status => "inactive")
880
- def destroy_all(conditions = nil)
881
- find(:all, :conditions => conditions).each { |object| object.destroy }
882
- end
883
-
884
- # Deletes the records matching +conditions+ without instantiating the records first, and hence not
885
- # calling the +destroy+ method nor invoking callbacks. This is a single SQL DELETE statement that
886
- # goes straight to the database, much more efficient than +destroy_all+. Be careful with relations
887
- # though, in particular <tt>:dependent</tt> rules defined on associations are not honored. Returns
888
- # the number of rows affected.
889
- #
890
- # ==== Parameters
891
- #
892
- # * +conditions+ - Conditions are specified the same way as with +find+ method.
893
- #
894
- # ==== Example
895
- #
896
- # Post.delete_all("person_id = 5 AND (category = 'Something' OR category = 'Else')")
897
- # Post.delete_all(["person_id = ? AND (category = ? OR category = ?)", 5, 'Something', 'Else'])
898
- #
899
- # Both calls delete the affected posts all at once with a single DELETE statement. If you need to destroy dependent
900
- # associations or call your <tt>before_*</tt> or +after_destroy+ callbacks, use the +destroy_all+ method instead.
901
- def delete_all(conditions = nil)
902
- sql = "DELETE FROM #{quoted_table_name} "
903
- add_conditions!(sql, conditions, scope(:find))
904
- connection.delete(sql, "#{name} Delete all")
905
- end
906
-
907
- # Returns the result of an SQL statement that should only include a COUNT(*) in the SELECT part.
908
- # The use of this method should be restricted to complicated SQL queries that can't be executed
909
- # using the ActiveRecord::Calculations class methods. Look into those before using this.
910
- #
911
- # ==== Parameters
912
- #
913
- # * +sql+ - An SQL statement which should return a count query from the database, see the example below.
914
- #
915
- # ==== Examples
916
- #
917
- # Product.count_by_sql "SELECT COUNT(*) FROM sales s, customers c WHERE s.customer_id = c.id"
918
- def count_by_sql(sql)
919
- sql = sanitize_conditions(sql)
920
- connection.select_value(sql, "#{name} Count").to_i
921
- end
922
-
923
- # Resets one or more counter caches to their correct value using an SQL
924
- # count query. This is useful when adding new counter caches, or if the
925
- # counter has been corrupted or modified directly by SQL.
926
- #
927
- # ==== Parameters
928
- #
929
- # * +id+ - The id of the object you wish to reset a counter on.
930
- # * +counters+ - One or more counter names to reset
931
- #
932
- # ==== Examples
933
- #
934
- # # For Post with id #1 records reset the comments_count
935
- # Post.reset_counters(1, :comments)
936
- def reset_counters(id, *counters)
937
- object = find(id)
938
- counters.each do |association|
939
- child_class = reflect_on_association(association.to_sym).klass
940
- belongs_name = self.name.demodulize.underscore.to_sym
941
- counter_name = child_class.reflect_on_association(belongs_name).counter_cache_column
942
- value = object.send(association).count
943
-
944
- connection.update(<<-CMD, "#{name} UPDATE")
945
- UPDATE #{quoted_table_name}
946
- SET #{connection.quote_column_name(counter_name)} = #{value}
947
- WHERE #{connection.quote_column_name(primary_key)} = #{quote_value(object.id)}
948
- CMD
949
- end
950
- return true
951
- end
952
-
953
- # A generic "counter updater" implementation, intended primarily to be
954
- # used by increment_counter and decrement_counter, but which may also
955
- # be useful on its own. It simply does a direct SQL update for the record
956
- # with the given ID, altering the given hash of counters by the amount
957
- # given by the corresponding value:
958
- #
959
- # ==== Parameters
960
- #
961
- # * +id+ - The id of the object you wish to update a counter on or an Array of ids.
962
- # * +counters+ - An Array of Hashes containing the names of the fields
963
- # to update as keys and the amount to update the field by as values.
964
- #
965
- # ==== Examples
966
- #
967
- # # For the Post with id of 5, decrement the comment_count by 1, and
968
- # # increment the action_count by 1
969
- # Post.update_counters 5, :comment_count => -1, :action_count => 1
970
- # # Executes the following SQL:
971
- # # UPDATE posts
972
- # # SET comment_count = comment_count - 1,
973
- # # action_count = action_count + 1
974
- # # WHERE id = 5
975
- #
976
- # # For the Posts with id of 10 and 15, increment the comment_count by 1
977
- # Post.update_counters [10, 15], :comment_count => 1
978
- # # Executes the following SQL:
979
- # # UPDATE posts
980
- # # SET comment_count = comment_count + 1,
981
- # # WHERE id IN (10, 15)
982
- def update_counters(id, counters)
983
- updates = counters.map do |counter_name, value|
984
- operator = value < 0 ? '-' : '+'
985
- quoted_column = connection.quote_column_name(counter_name)
986
- "#{quoted_column} = COALESCE(#{quoted_column}, 0) #{operator} #{value.abs}"
987
- end
988
-
989
- update_all(updates.join(', '), primary_key => id )
990
- end
991
-
992
- # Increment a number field by one, usually representing a count.
993
- #
994
- # This is used for caching aggregate values, so that they don't need to be computed every time.
995
- # For example, a DiscussionBoard may cache post_count and comment_count otherwise every time the board is
996
- # shown it would have to run an SQL query to find how many posts and comments there are.
997
- #
998
- # ==== Parameters
999
- #
1000
- # * +counter_name+ - The name of the field that should be incremented.
1001
- # * +id+ - The id of the object that should be incremented.
1002
- #
1003
- # ==== Examples
1004
- #
1005
- # # Increment the post_count column for the record with an id of 5
1006
- # DiscussionBoard.increment_counter(:post_count, 5)
1007
- def increment_counter(counter_name, id)
1008
- update_counters(id, counter_name => 1)
1009
- end
1010
-
1011
- # Decrement a number field by one, usually representing a count.
1012
- #
1013
- # This works the same as increment_counter but reduces the column value by 1 instead of increasing it.
1014
- #
1015
- # ==== Parameters
1016
- #
1017
- # * +counter_name+ - The name of the field that should be decremented.
1018
- # * +id+ - The id of the object that should be decremented.
1019
- #
1020
- # ==== Examples
1021
- #
1022
- # # Decrement the post_count column for the record with an id of 5
1023
- # DiscussionBoard.decrement_counter(:post_count, 5)
1024
- def decrement_counter(counter_name, id)
1025
- update_counters(id, counter_name => -1)
1026
- end
1027
-
1028
- # Attributes named in this macro are protected from mass-assignment,
1029
- # such as <tt>new(attributes)</tt>,
1030
- # <tt>update_attributes(attributes)</tt>, or
1031
- # <tt>attributes=(attributes)</tt>.
1032
- #
1033
- # Mass-assignment to these attributes will simply be ignored, to assign
1034
- # to them you can use direct writer methods. This is meant to protect
1035
- # sensitive attributes from being overwritten by malicious users
1036
- # tampering with URLs or forms.
1037
- #
1038
- # class Customer < ActiveRecord::Base
1039
- # attr_protected :credit_rating
1040
- # end
1041
- #
1042
- # customer = Customer.new("name" => David, "credit_rating" => "Excellent")
1043
- # customer.credit_rating # => nil
1044
- # customer.attributes = { "description" => "Jolly fellow", "credit_rating" => "Superb" }
1045
- # customer.credit_rating # => nil
1046
- #
1047
- # customer.credit_rating = "Average"
1048
- # customer.credit_rating # => "Average"
1049
- #
1050
- # To start from an all-closed default and enable attributes as needed,
1051
- # have a look at +attr_accessible+.
1052
- def attr_protected(*attributes)
1053
- write_inheritable_attribute(:attr_protected, Set.new(attributes.map(&:to_s)) + (protected_attributes || []))
1054
- end
1055
-
1056
- # Returns an array of all the attributes that have been protected from mass-assignment.
1057
- def protected_attributes # :nodoc:
1058
- read_inheritable_attribute(:attr_protected)
1059
- end
1060
-
1061
- # Specifies a white list of model attributes that can be set via
1062
- # mass-assignment, such as <tt>new(attributes)</tt>,
1063
- # <tt>update_attributes(attributes)</tt>, or
1064
- # <tt>attributes=(attributes)</tt>
1065
- #
1066
- # This is the opposite of the +attr_protected+ macro: Mass-assignment
1067
- # will only set attributes in this list, to assign to the rest of
1068
- # attributes you can use direct writer methods. This is meant to protect
1069
- # sensitive attributes from being overwritten by malicious users
1070
- # tampering with URLs or forms. If you'd rather start from an all-open
1071
- # default and restrict attributes as needed, have a look at
1072
- # +attr_protected+.
1073
- #
1074
- # class Customer < ActiveRecord::Base
1075
- # attr_accessible :name, :nickname
1076
- # end
1077
- #
1078
- # customer = Customer.new(:name => "David", :nickname => "Dave", :credit_rating => "Excellent")
1079
- # customer.credit_rating # => nil
1080
- # customer.attributes = { :name => "Jolly fellow", :credit_rating => "Superb" }
1081
- # customer.credit_rating # => nil
1082
- #
1083
- # customer.credit_rating = "Average"
1084
- # customer.credit_rating # => "Average"
1085
- def attr_accessible(*attributes)
1086
- write_inheritable_attribute(:attr_accessible, Set.new(attributes.map(&:to_s)) + (accessible_attributes || []))
1087
- end
1088
-
1089
- # Returns an array of all the attributes that have been made accessible to mass-assignment.
1090
- def accessible_attributes # :nodoc:
1091
- read_inheritable_attribute(:attr_accessible)
1092
- end
1093
-
1094
- # Attributes listed as readonly can be set for a new record, but will be ignored in database updates afterwards.
1095
- def attr_readonly(*attributes)
1096
- write_inheritable_attribute(:attr_readonly, Set.new(attributes.map(&:to_s)) + (readonly_attributes || []))
1097
- end
1098
-
1099
- # Returns an array of all the attributes that have been specified as readonly.
1100
- def readonly_attributes
1101
- read_inheritable_attribute(:attr_readonly)
1102
- end
1103
-
1104
- # If you have an attribute that needs to be saved to the database as an object, and retrieved as the same object,
1105
- # then specify the name of that attribute using this method and it will be handled automatically.
1106
- # The serialization is done through YAML. If +class_name+ is specified, the serialized object must be of that
1107
- # class on retrieval or SerializationTypeMismatch will be raised.
1108
- #
1109
- # ==== Parameters
1110
- #
1111
- # * +attr_name+ - The field name that should be serialized.
1112
- # * +class_name+ - Optional, class name that the object type should be equal to.
1113
- #
1114
- # ==== Example
1115
- # # Serialize a preferences attribute
1116
- # class User
1117
- # serialize :preferences
1118
- # end
1119
- def serialize(attr_name, class_name = Object)
1120
- serialized_attributes[attr_name.to_s] = class_name
1121
- end
1122
-
1123
- # Returns a hash of all the attributes that have been specified for serialization as keys and their class restriction as values.
1124
- def serialized_attributes
1125
- read_inheritable_attribute(:attr_serialized) or write_inheritable_attribute(:attr_serialized, {})
1126
- end
1127
-
1128
- # Guesses the table name (in forced lower-case) based on the name of the class in the inheritance hierarchy descending
1129
- # directly from ActiveRecord::Base. So if the hierarchy looks like: Reply < Message < ActiveRecord::Base, then Message is used
1130
- # to guess the table name even when called on Reply. The rules used to do the guess are handled by the Inflector class
1131
- # in Active Support, which knows almost all common English inflections. You can add new inflections in config/initializers/inflections.rb.
1132
- #
1133
- # Nested classes are given table names prefixed by the singular form of
1134
- # the parent's table name. Enclosing modules are not considered.
1135
- #
1136
- # ==== Examples
1137
- #
1138
- # class Invoice < ActiveRecord::Base; end;
1139
- # file class table_name
1140
- # invoice.rb Invoice invoices
1141
- #
1142
- # class Invoice < ActiveRecord::Base; class Lineitem < ActiveRecord::Base; end; end;
1143
- # file class table_name
1144
- # invoice.rb Invoice::Lineitem invoice_lineitems
1145
- #
1146
- # module Invoice; class Lineitem < ActiveRecord::Base; end; end;
1147
- # file class table_name
1148
- # invoice/lineitem.rb Invoice::Lineitem lineitems
1149
- #
1150
- # Additionally, the class-level +table_name_prefix+ is prepended and the
1151
- # +table_name_suffix+ is appended. So if you have "myapp_" as a prefix,
1152
- # the table name guess for an Invoice class becomes "myapp_invoices".
1153
- # Invoice::Lineitem becomes "myapp_invoice_lineitems".
1154
- #
1155
- # You can also overwrite this class method to allow for unguessable
1156
- # links, such as a Mouse class with a link to a "mice" table. Example:
1157
- #
1158
- # class Mouse < ActiveRecord::Base
1159
- # set_table_name "mice"
1160
- # end
1161
- def table_name
1162
- reset_table_name
1163
- end
1164
-
1165
- def reset_table_name #:nodoc:
1166
- base = base_class
1167
-
1168
- name =
1169
- # STI subclasses always use their superclass' table.
1170
- unless self == base
1171
- base.table_name
1172
- else
1173
- # Nested classes are prefixed with singular parent table name.
1174
- if parent < ActiveRecord::Base && !parent.abstract_class?
1175
- contained = parent.table_name
1176
- contained = contained.singularize if parent.pluralize_table_names
1177
- contained << '_'
1178
- end
1179
- name = "#{full_table_name_prefix}#{contained}#{undecorated_table_name(base.name)}#{table_name_suffix}"
1180
- end
1181
-
1182
- set_table_name(name)
1183
- name
1184
- end
1185
-
1186
- # Defines the primary key field -- can be overridden in subclasses. Overwriting will negate any effect of the
1187
- # primary_key_prefix_type setting, though.
1188
- def primary_key
1189
- reset_primary_key
1190
- end
1191
-
1192
- def reset_primary_key #:nodoc:
1193
- key = get_primary_key(base_class.name)
1194
- set_primary_key(key)
1195
- key
1196
- end
1197
-
1198
- def get_primary_key(base_name) #:nodoc:
1199
- key = 'id'
1200
- case primary_key_prefix_type
1201
- when :table_name
1202
- key = base_name.to_s.foreign_key(false)
1203
- when :table_name_with_underscore
1204
- key = base_name.to_s.foreign_key
1205
- end
1206
- key
1207
- end
1208
-
1209
- def full_table_name_prefix #:nodoc:
1210
- (parents.detect{ |p| p.respond_to?(:table_name_prefix) } || self).table_name_prefix
1211
- end
1212
-
1213
- # Defines the column name for use with single table inheritance
1214
- # -- can be set in subclasses like so: self.inheritance_column = "type_id"
1215
- def inheritance_column
1216
- @inheritance_column ||= "type".freeze
1217
- end
1218
-
1219
- # Lazy-set the sequence name to the connection's default. This method
1220
- # is only ever called once since set_sequence_name overrides it.
1221
- def sequence_name #:nodoc:
1222
- reset_sequence_name
1223
- end
1224
-
1225
- def reset_sequence_name #:nodoc:
1226
- default = connection.default_sequence_name(table_name, primary_key)
1227
- set_sequence_name(default)
1228
- default
1229
- end
1230
-
1231
- # Sets the table name to use to the given value, or (if the value
1232
- # is nil or false) to the value returned by the given block.
1233
- #
1234
- # class Project < ActiveRecord::Base
1235
- # set_table_name "project"
1236
- # end
1237
- def set_table_name(value = nil, &block)
1238
- define_attr_method :table_name, value, &block
1239
- end
1240
- alias :table_name= :set_table_name
1241
-
1242
- # Sets the name of the primary key column to use to the given value,
1243
- # or (if the value is nil or false) to the value returned by the given
1244
- # block.
1245
- #
1246
- # class Project < ActiveRecord::Base
1247
- # set_primary_key "sysid"
1248
- # end
1249
- def set_primary_key(value = nil, &block)
1250
- define_attr_method :primary_key, value, &block
1251
- end
1252
- alias :primary_key= :set_primary_key
1253
-
1254
- # Sets the name of the inheritance column to use to the given value,
1255
- # or (if the value # is nil or false) to the value returned by the
1256
- # given block.
1257
- #
1258
- # class Project < ActiveRecord::Base
1259
- # set_inheritance_column do
1260
- # original_inheritance_column + "_id"
1261
- # end
1262
- # end
1263
- def set_inheritance_column(value = nil, &block)
1264
- define_attr_method :inheritance_column, value, &block
1265
- end
1266
- alias :inheritance_column= :set_inheritance_column
1267
-
1268
- # Sets the name of the sequence to use when generating ids to the given
1269
- # value, or (if the value is nil or false) to the value returned by the
1270
- # given block. This is required for Oracle and is useful for any
1271
- # database which relies on sequences for primary key generation.
1272
- #
1273
- # If a sequence name is not explicitly set when using Oracle or Firebird,
1274
- # it will default to the commonly used pattern of: #{table_name}_seq
1275
- #
1276
- # If a sequence name is not explicitly set when using PostgreSQL, it
1277
- # will discover the sequence corresponding to your primary key for you.
1278
- #
1279
- # class Project < ActiveRecord::Base
1280
- # set_sequence_name "projectseq" # default would have been "project_seq"
1281
- # end
1282
- def set_sequence_name(value = nil, &block)
1283
- define_attr_method :sequence_name, value, &block
1284
- end
1285
- alias :sequence_name= :set_sequence_name
1286
-
1287
- # Turns the +table_name+ back into a class name following the reverse rules of +table_name+.
1288
- def class_name(table_name = table_name) # :nodoc:
1289
- ActiveSupport::Deprecation.warn("ActiveRecord::Base#class_name is deprecated and will be removed in Rails 2.3.9.", caller)
1290
-
1291
- # remove any prefix and/or suffix from the table name
1292
- class_name = table_name[table_name_prefix.length..-(table_name_suffix.length + 1)].camelize
1293
- class_name = class_name.singularize if pluralize_table_names
1294
- class_name
1295
- end
1296
-
1297
- # Indicates whether the table associated with this class exists
1298
- def table_exists?
1299
- connection.table_exists?(table_name)
1300
- end
1301
-
1302
- # Returns an array of column objects for the table associated with this class.
1303
- def columns
1304
- unless defined?(@columns) && @columns
1305
- @columns = connection.columns(table_name, "#{name} Columns")
1306
- @columns.each { |column| column.primary = column.name == primary_key }
1307
- end
1308
- @columns
1309
- end
1310
-
1311
- # Returns a hash of column objects for the table associated with this class.
1312
- def columns_hash
1313
- @columns_hash ||= columns.inject({}) { |hash, column| hash[column.name] = column; hash }
1314
- end
1315
-
1316
- # Returns an array of column names as strings.
1317
- def column_names
1318
- @column_names ||= columns.map { |column| column.name }
1319
- end
1320
-
1321
- # Returns an array of column objects where the primary id, all columns ending in "_id" or "_count",
1322
- # and columns used for single table inheritance have been removed.
1323
- def content_columns
1324
- @content_columns ||= columns.reject { |c| c.primary || c.name =~ /(_id|_count)$/ || c.name == inheritance_column }
1325
- end
1326
-
1327
- # Returns a hash of all the methods added to query each of the columns in the table with the name of the method as the key
1328
- # and true as the value. This makes it possible to do O(1) lookups in respond_to? to check if a given method for attribute
1329
- # is available.
1330
- def column_methods_hash #:nodoc:
1331
- @dynamic_methods_hash ||= column_names.inject(Hash.new(false)) do |methods, attr|
1332
- attr_name = attr.to_s
1333
- methods[attr.to_sym] = attr_name
1334
- methods["#{attr}=".to_sym] = attr_name
1335
- methods["#{attr}?".to_sym] = attr_name
1336
- methods["#{attr}_before_type_cast".to_sym] = attr_name
1337
- methods
1338
- end
1339
- end
1340
-
1341
- # Resets all the cached information about columns, which will cause them
1342
- # to be reloaded on the next request.
1343
- #
1344
- # The most common usage pattern for this method is probably in a migration,
1345
- # when just after creating a table you want to populate it with some default
1346
- # values, eg:
1347
- #
1348
- # class CreateJobLevels < ActiveRecord::Migration
1349
- # def self.up
1350
- # create_table :job_levels do |t|
1351
- # t.integer :id
1352
- # t.string :name
1353
- #
1354
- # t.timestamps
1355
- # end
1356
- #
1357
- # JobLevel.reset_column_information
1358
- # %w{assistant executive manager director}.each do |type|
1359
- # JobLevel.create(:name => type)
1360
- # end
1361
- # end
1362
- #
1363
- # def self.down
1364
- # drop_table :job_levels
1365
- # end
1366
- # end
1367
- def reset_column_information
1368
- generated_methods.each { |name| undef_method(name) }
1369
- @column_names = @columns = @columns_hash = @content_columns = @dynamic_methods_hash = @generated_methods = @inheritance_column = nil
1370
- end
1371
-
1372
- def reset_column_information_and_inheritable_attributes_for_all_subclasses#:nodoc:
1373
- subclasses.each { |klass| klass.reset_inheritable_attributes; klass.reset_column_information }
1374
- end
1375
-
1376
- def self_and_descendants_from_active_record#nodoc:
1377
- klass = self
1378
- classes = [klass]
1379
- while klass != klass.base_class
1380
- classes << klass = klass.superclass
1381
- end
1382
- classes
1383
- rescue
1384
- # OPTIMIZE this rescue is to fix this test: ./test/cases/reflection_test.rb:56:in `test_human_name_for_column'
1385
- # Appearantly the method base_class causes some trouble.
1386
- # It now works for sure.
1387
- [self]
1388
- end
1389
-
1390
- # Transforms attribute key names into a more humane format, such as "First name" instead of "first_name". Example:
1391
- # Person.human_attribute_name("first_name") # => "First name"
1392
- # This used to be depricated in favor of humanize, but is now preferred, because it automatically uses the I18n
1393
- # module now.
1394
- # Specify +options+ with additional translating options.
1395
- def human_attribute_name(attribute_key_name, options = {})
1396
- defaults = self_and_descendants_from_active_record.map do |klass|
1397
- :"#{klass.name.underscore}.#{attribute_key_name}"
1398
- end
1399
- defaults << options[:default] if options[:default]
1400
- defaults.flatten!
1401
- defaults << attribute_key_name.to_s.humanize
1402
- options[:count] ||= 1
1403
- I18n.translate(defaults.shift, options.merge(:default => defaults, :scope => [:activerecord, :attributes]))
1404
- end
1405
-
1406
- # Transform the modelname into a more humane format, using I18n.
1407
- # Defaults to the basic humanize method.
1408
- # Default scope of the translation is activerecord.models
1409
- # Specify +options+ with additional translating options.
1410
- def human_name(options = {})
1411
- defaults = self_and_descendants_from_active_record.map do |klass|
1412
- :"#{klass.name.underscore}"
1413
- end
1414
- defaults << self.name.humanize
1415
- I18n.translate(defaults.shift, {:scope => [:activerecord, :models], :count => 1, :default => defaults}.merge(options))
1416
- end
1417
-
1418
- # True if this isn't a concrete subclass needing a STI type condition.
1419
- def descends_from_active_record?
1420
- if superclass.abstract_class?
1421
- superclass.descends_from_active_record?
1422
- else
1423
- superclass == Base || !columns_hash.include?(inheritance_column)
1424
- end
1425
- end
1426
-
1427
- def finder_needs_type_condition? #:nodoc:
1428
- # This is like this because benchmarking justifies the strange :false stuff
1429
- :true == (@finder_needs_type_condition ||= descends_from_active_record? ? :false : :true)
1430
- end
1431
-
1432
- # Returns a string like 'Post id:integer, title:string, body:text'
1433
- def inspect
1434
- if self == Base
1435
- super
1436
- elsif abstract_class?
1437
- "#{super}(abstract)"
1438
- elsif table_exists?
1439
- attr_list = columns.map { |c| "#{c.name}: #{c.type}" } * ', '
1440
- "#{super}(#{attr_list})"
1441
- else
1442
- "#{super}(Table doesn't exist)"
1443
- end
1444
- end
1445
-
1446
- def quote_value(value, column = nil) #:nodoc:
1447
- connection.quote(value,column)
1448
- end
1449
-
1450
- # Used to sanitize objects before they're used in an SQL SELECT statement. Delegates to <tt>connection.quote</tt>.
1451
- def sanitize(object) #:nodoc:
1452
- connection.quote(object)
1453
- end
1454
-
1455
- # Log and benchmark multiple statements in a single block. Example:
1456
- #
1457
- # Project.benchmark("Creating project") do
1458
- # project = Project.create("name" => "stuff")
1459
- # project.create_manager("name" => "David")
1460
- # project.milestones << Milestone.find(:all)
1461
- # end
1462
- #
1463
- # The benchmark is only recorded if the current level of the logger is less than or equal to the <tt>log_level</tt>,
1464
- # which makes it easy to include benchmarking statements in production software that will remain inexpensive because
1465
- # the benchmark will only be conducted if the log level is low enough.
1466
- #
1467
- # The logging of the multiple statements is turned off unless <tt>use_silence</tt> is set to false.
1468
- def benchmark(title, log_level = Logger::DEBUG, use_silence = true)
1469
- if logger && logger.level <= log_level
1470
- result = nil
1471
- ms = Benchmark.ms { result = use_silence ? silence { yield } : yield }
1472
- logger.add(log_level, '%s (%.1fms)' % [title, ms])
1473
- result
1474
- else
1475
- yield
1476
- end
1477
- end
1478
-
1479
- # Silences the logger for the duration of the block.
1480
- def silence
1481
- old_logger_level, logger.level = logger.level, Logger::ERROR if logger
1482
- yield
1483
- ensure
1484
- logger.level = old_logger_level if logger
1485
- end
1486
-
1487
- # Overwrite the default class equality method to provide support for association proxies.
1488
- def ===(object)
1489
- object.is_a?(self)
1490
- end
1491
-
1492
- # Returns the base AR subclass that this class descends from. If A
1493
- # extends AR::Base, A.base_class will return A. If B descends from A
1494
- # through some arbitrarily deep hierarchy, B.base_class will return A.
1495
- def base_class
1496
- class_of_active_record_descendant(self)
1497
- end
1498
-
1499
- # Set this to true if this is an abstract class (see <tt>abstract_class?</tt>).
1500
- attr_accessor :abstract_class
1501
-
1502
- # Returns whether this class is a base AR class. If A is a base class and
1503
- # B descends from A, then B.base_class will return B.
1504
- def abstract_class?
1505
- defined?(@abstract_class) && @abstract_class == true
1506
- end
1507
-
1508
- def respond_to?(method_id, include_private = false)
1509
- if match = DynamicFinderMatch.match(method_id)
1510
- return true if all_attributes_exists?(match.attribute_names)
1511
- elsif match = DynamicScopeMatch.match(method_id)
1512
- return true if all_attributes_exists?(match.attribute_names)
1513
- end
1514
-
1515
- super
1516
- end
1517
-
1518
- def sti_name
1519
- store_full_sti_class ? name : name.demodulize
1520
- end
1521
-
1522
- # Merges conditions so that the result is a valid +condition+
1523
- def merge_conditions(*conditions)
1524
- segments = []
1525
-
1526
- conditions.each do |condition|
1527
- unless condition.blank?
1528
- sql = sanitize_sql(condition)
1529
- segments << sql unless sql.blank?
1530
- end
1531
- end
1532
-
1533
- "(#{segments.join(') AND (')})" unless segments.empty?
1534
- end
1535
-
1536
- private
1537
- def find_initial(options)
1538
- options.update(:limit => 1)
1539
- find_every(options).first
1540
- end
1541
-
1542
- def find_last(options)
1543
- order = options[:order]
1544
-
1545
- if order
1546
- order = reverse_sql_order(order)
1547
- elsif !scoped?(:find, :order)
1548
- order = "#{table_name}.#{primary_key} DESC"
1549
- end
1550
-
1551
- if scoped?(:find, :order)
1552
- scope = scope(:find)
1553
- original_scoped_order = scope[:order]
1554
- scope[:order] = reverse_sql_order(original_scoped_order)
1555
- end
1556
-
1557
- begin
1558
- find_initial(options.merge({ :order => order }))
1559
- ensure
1560
- scope[:order] = original_scoped_order if original_scoped_order
1561
- end
1562
- end
1563
-
1564
- def reverse_sql_order(order_query)
1565
- reversed_query = order_query.to_s.split(/,/).each { |s|
1566
- if s.match(/\s(asc|ASC)$/)
1567
- s.gsub!(/\s(asc|ASC)$/, ' DESC')
1568
- elsif s.match(/\s(desc|DESC)$/)
1569
- s.gsub!(/\s(desc|DESC)$/, ' ASC')
1570
- elsif !s.match(/\s(asc|ASC|desc|DESC)$/)
1571
- s.concat(' DESC')
1572
- end
1573
- }.join(',')
1574
- end
1575
-
1576
- def find_every(options)
1577
- include_associations = merge_includes(scope(:find, :include), options[:include])
1578
-
1579
- if include_associations.any? && references_eager_loaded_tables?(options)
1580
- records = find_with_associations(options)
1581
- else
1582
- records = find_by_sql(construct_finder_sql(options))
1583
- if include_associations.any?
1584
- preload_associations(records, include_associations)
1585
- end
1586
- end
1587
-
1588
- records.each { |record| record.readonly! } if options[:readonly]
1589
-
1590
- records
1591
- end
1592
-
1593
- def find_from_ids(ids, options)
1594
- expects_array = ids.first.kind_of?(Array)
1595
- return ids.first if expects_array && ids.first.empty?
1596
-
1597
- ids = ids.flatten.compact.uniq
1598
-
1599
- case ids.size
1600
- when 0
1601
- raise RecordNotFound, "Couldn't find #{name} without an ID"
1602
- when 1
1603
- result = find_one(ids.first, options)
1604
- expects_array ? [ result ] : result
1605
- else
1606
- find_some(ids, options)
1607
- end
1608
- end
1609
-
1610
- def find_one(id, options)
1611
- conditions = " AND (#{sanitize_sql(options[:conditions])})" if options[:conditions]
1612
- options.update :conditions => "#{quoted_table_name}.#{connection.quote_column_name(primary_key)} = #{quote_value(id,columns_hash[primary_key])}#{conditions}"
1613
-
1614
- # Use find_every(options).first since the primary key condition
1615
- # already ensures we have a single record. Using find_initial adds
1616
- # a superfluous :limit => 1.
1617
- if result = find_every(options).first
1618
- result
1619
- else
1620
- raise RecordNotFound, "Couldn't find #{name} with ID=#{id}#{conditions}"
1621
- end
1622
- end
1623
-
1624
- def find_some(ids, options)
1625
- conditions = " AND (#{sanitize_sql(options[:conditions])})" if options[:conditions]
1626
- ids_list = ids.map { |id| quote_value(id,columns_hash[primary_key]) }.join(',')
1627
- options.update :conditions => "#{quoted_table_name}.#{connection.quote_column_name(primary_key)} IN (#{ids_list})#{conditions}"
1628
-
1629
- result = find_every(options)
1630
-
1631
- # Determine expected size from limit and offset, not just ids.size.
1632
- expected_size =
1633
- if options[:limit] && ids.size > options[:limit]
1634
- options[:limit]
1635
- else
1636
- ids.size
1637
- end
1638
-
1639
- # 11 ids with limit 3, offset 9 should give 2 results.
1640
- if options[:offset] && (ids.size - options[:offset] < expected_size)
1641
- expected_size = ids.size - options[:offset]
1642
- end
1643
-
1644
- if result.size == expected_size
1645
- result
1646
- else
1647
- raise RecordNotFound, "Couldn't find all #{name.pluralize} with IDs (#{ids_list})#{conditions} (found #{result.size} results, but was looking for #{expected_size})"
1648
- end
1649
- end
1650
-
1651
- # Finder methods must instantiate through this method to work with the
1652
- # single-table inheritance model that makes it possible to create
1653
- # objects of different types from the same table.
1654
- def instantiate(record)
1655
- object =
1656
- if subclass_name = record[inheritance_column]
1657
- # No type given.
1658
- if subclass_name.empty?
1659
- allocate
1660
-
1661
- else
1662
- # Ignore type if no column is present since it was probably
1663
- # pulled in from a sloppy join.
1664
- unless columns_hash.include?(inheritance_column)
1665
- allocate
1666
-
1667
- else
1668
- begin
1669
- compute_type(subclass_name).allocate
1670
- rescue NameError
1671
- raise SubclassNotFound,
1672
- "The single-table inheritance mechanism failed to locate the subclass: '#{record[inheritance_column]}'. " +
1673
- "This error is raised because the column '#{inheritance_column}' is reserved for storing the class in case of inheritance. " +
1674
- "Please rename this column if you didn't intend it to be used for storing the inheritance class " +
1675
- "or overwrite #{self.to_s}.inheritance_column to use another column for that information."
1676
- end
1677
- end
1678
- end
1679
- else
1680
- allocate
1681
- end
1682
-
1683
- object.instance_variable_set("@attributes", record)
1684
- object.instance_variable_set("@attributes_cache", Hash.new)
1685
-
1686
- if object.respond_to_without_attributes?(:after_find)
1687
- object.send(:callback, :after_find)
1688
- end
1689
-
1690
- if object.respond_to_without_attributes?(:after_initialize)
1691
- object.send(:callback, :after_initialize)
1692
- end
1693
-
1694
- object
1695
- end
1696
-
1697
- # Nest the type name in the same module as this class.
1698
- # Bar is "MyApp::Business::Bar" relative to MyApp::Business::Foo
1699
- def type_name_with_module(type_name)
1700
- if store_full_sti_class
1701
- type_name
1702
- else
1703
- (/^::/ =~ type_name) ? type_name : "#{parent.name}::#{type_name}"
1704
- end
1705
- end
1706
-
1707
- def default_select(qualified)
1708
- if qualified
1709
- quoted_table_name + '.*'
1710
- else
1711
- '*'
1712
- end
1713
- end
1714
-
1715
- def construct_finder_sql(options)
1716
- scope = scope(:find)
1717
- sql = "SELECT #{options[:select] || (scope && scope[:select]) || default_select(options[:joins] || (scope && scope[:joins]))} "
1718
- sql << "FROM #{options[:from] || (scope && scope[:from]) || quoted_table_name} "
1719
-
1720
- add_joins!(sql, options[:joins], scope)
1721
- add_conditions!(sql, options[:conditions], scope)
1722
-
1723
- add_group!(sql, options[:group], options[:having], scope)
1724
- add_order!(sql, options[:order], scope)
1725
- add_limit!(sql, options, scope)
1726
- add_lock!(sql, options, scope)
1727
-
1728
- sql
1729
- end
1730
-
1731
- # Merges includes so that the result is a valid +include+
1732
- def merge_includes(first, second)
1733
- (safe_to_array(first) + safe_to_array(second)).uniq
1734
- end
1735
-
1736
- def merge_joins(*joins)
1737
- if joins.any?{|j| j.is_a?(String) || array_of_strings?(j) }
1738
- joins = joins.collect do |join|
1739
- join = [join] if join.is_a?(String)
1740
- unless array_of_strings?(join)
1741
- join_dependency = ActiveRecord::Associations::ClassMethods::InnerJoinDependency.new(self, join, nil)
1742
- join = join_dependency.join_associations.collect { |assoc| assoc.association_join }
1743
- end
1744
- join
1745
- end
1746
- joins.flatten.map{|j| j.strip}.uniq
1747
- else
1748
- joins.collect{|j| safe_to_array(j)}.flatten.uniq
1749
- end
1750
- end
1751
-
1752
- # Object#to_a is deprecated, though it does have the desired behavior
1753
- def safe_to_array(o)
1754
- case o
1755
- when NilClass
1756
- []
1757
- when Array
1758
- o
1759
- else
1760
- [o]
1761
- end
1762
- end
1763
-
1764
- def array_of_strings?(o)
1765
- o.is_a?(Array) && o.all?{|obj| obj.is_a?(String)}
1766
- end
1767
-
1768
- def add_order!(sql, order, scope = :auto)
1769
- scope = scope(:find) if :auto == scope
1770
- scoped_order = scope[:order] if scope
1771
- if order
1772
- sql << " ORDER BY #{order}"
1773
- if scoped_order && scoped_order != order
1774
- sql << ", #{scoped_order}"
1775
- end
1776
- else
1777
- sql << " ORDER BY #{scoped_order}" if scoped_order
1778
- end
1779
- end
1780
-
1781
- def add_group!(sql, group, having, scope = :auto)
1782
- if group
1783
- sql << " GROUP BY #{group}"
1784
- sql << " HAVING #{sanitize_sql_for_conditions(having)}" if having
1785
- else
1786
- scope = scope(:find) if :auto == scope
1787
- if scope && (scoped_group = scope[:group])
1788
- sql << " GROUP BY #{scoped_group}"
1789
- sql << " HAVING #{sanitize_sql_for_conditions(scope[:having])}" if scope[:having]
1790
- end
1791
- end
1792
- end
1793
-
1794
- # The optional scope argument is for the current <tt>:find</tt> scope.
1795
- def add_limit!(sql, options, scope = :auto)
1796
- scope = scope(:find) if :auto == scope
1797
-
1798
- if scope
1799
- options[:limit] ||= scope[:limit]
1800
- options[:offset] ||= scope[:offset]
1801
- end
1802
-
1803
- connection.add_limit_offset!(sql, options)
1804
- end
1805
-
1806
- # The optional scope argument is for the current <tt>:find</tt> scope.
1807
- # The <tt>:lock</tt> option has precedence over a scoped <tt>:lock</tt>.
1808
- def add_lock!(sql, options, scope = :auto)
1809
- scope = scope(:find) if :auto == scope
1810
- options = options.reverse_merge(:lock => scope[:lock]) if scope
1811
- connection.add_lock!(sql, options)
1812
- end
1813
-
1814
- # The optional scope argument is for the current <tt>:find</tt> scope.
1815
- def add_joins!(sql, joins, scope = :auto)
1816
- scope = scope(:find) if :auto == scope
1817
- merged_joins = scope && scope[:joins] && joins ? merge_joins(scope[:joins], joins) : (joins || scope && scope[:joins])
1818
- case merged_joins
1819
- when Symbol, Hash, Array
1820
- if array_of_strings?(merged_joins)
1821
- sql << merged_joins.join(' ') + " "
1822
- else
1823
- join_dependency = ActiveRecord::Associations::ClassMethods::InnerJoinDependency.new(self, merged_joins, nil)
1824
- sql << " #{join_dependency.join_associations.collect { |assoc| assoc.association_join }.join} "
1825
- end
1826
- when String
1827
- sql << " #{merged_joins} "
1828
- end
1829
- end
1830
-
1831
- # Adds a sanitized version of +conditions+ to the +sql+ string. Note that the passed-in +sql+ string is changed.
1832
- # The optional scope argument is for the current <tt>:find</tt> scope.
1833
- def add_conditions!(sql, conditions, scope = :auto)
1834
- scope = scope(:find) if :auto == scope
1835
- conditions = [conditions]
1836
- conditions << scope[:conditions] if scope
1837
- conditions << type_condition if finder_needs_type_condition?
1838
- merged_conditions = merge_conditions(*conditions)
1839
- sql << "WHERE #{merged_conditions} " unless merged_conditions.blank?
1840
- end
1841
-
1842
- def type_condition(table_alias=nil)
1843
- quoted_table_alias = self.connection.quote_table_name(table_alias || table_name)
1844
- quoted_inheritance_column = connection.quote_column_name(inheritance_column)
1845
- type_condition = subclasses.inject("#{quoted_table_alias}.#{quoted_inheritance_column} = '#{sti_name}' ") do |condition, subclass|
1846
- condition << "OR #{quoted_table_alias}.#{quoted_inheritance_column} = '#{subclass.sti_name}' "
1847
- end
1848
-
1849
- " (#{type_condition}) "
1850
- end
1851
-
1852
- # Guesses the table name, but does not decorate it with prefix and suffix information.
1853
- def undecorated_table_name(class_name = base_class.name)
1854
- table_name = class_name.to_s.demodulize.underscore
1855
- table_name = table_name.pluralize if pluralize_table_names
1856
- table_name
1857
- end
1858
-
1859
- # Enables dynamic finders like <tt>find_by_user_name(user_name)</tt> and <tt>find_by_user_name_and_password(user_name, password)</tt>
1860
- # that are turned into <tt>find(:first, :conditions => ["user_name = ?", user_name])</tt> and
1861
- # <tt>find(:first, :conditions => ["user_name = ? AND password = ?", user_name, password])</tt> respectively. Also works for
1862
- # <tt>find(:all)</tt> by using <tt>find_all_by_amount(50)</tt> that is turned into <tt>find(:all, :conditions => ["amount = ?", 50])</tt>.
1863
- #
1864
- # It's even possible to use all the additional parameters to +find+. For example, the full interface for +find_all_by_amount+
1865
- # is actually <tt>find_all_by_amount(amount, options)</tt>.
1866
- #
1867
- # Also enables dynamic scopes like scoped_by_user_name(user_name) and scoped_by_user_name_and_password(user_name, password) that
1868
- # are turned into scoped(:conditions => ["user_name = ?", user_name]) and scoped(:conditions => ["user_name = ? AND password = ?", user_name, password])
1869
- # respectively.
1870
- #
1871
- # Each dynamic finder, scope or initializer/creator is also defined in the class after it is first invoked, so that future
1872
- # attempts to use it do not run through method_missing.
1873
- def method_missing(method_id, *arguments, &block)
1874
- if match = DynamicFinderMatch.match(method_id)
1875
- attribute_names = match.attribute_names
1876
- super unless all_attributes_exists?(attribute_names)
1877
- if match.finder?
1878
- finder = match.finder
1879
- bang = match.bang?
1880
- # def self.find_by_login_and_activated(*args)
1881
- # options = args.extract_options!
1882
- # attributes = construct_attributes_from_arguments(
1883
- # [:login,:activated],
1884
- # args
1885
- # )
1886
- # finder_options = { :conditions => attributes }
1887
- # validate_find_options(options)
1888
- # set_readonly_option!(options)
1889
- #
1890
- # if options[:conditions]
1891
- # with_scope(:find => finder_options) do
1892
- # find(:first, options)
1893
- # end
1894
- # else
1895
- # find(:first, options.merge(finder_options))
1896
- # end
1897
- # end
1898
- self.class_eval <<-EOS, __FILE__, __LINE__ + 1
1899
- def self.#{method_id}(*args)
1900
- options = args.extract_options!
1901
- attributes = construct_attributes_from_arguments(
1902
- [:#{attribute_names.join(',:')}],
1903
- args
1904
- )
1905
- finder_options = { :conditions => attributes }
1906
- validate_find_options(options)
1907
- set_readonly_option!(options)
1908
-
1909
- #{'result = ' if bang}if options[:conditions]
1910
- with_scope(:find => finder_options) do
1911
- find(:#{finder}, options)
1912
- end
1913
- else
1914
- find(:#{finder}, options.merge(finder_options))
1915
- end
1916
- #{'result || raise(RecordNotFound, "Couldn\'t find #{name} with #{attributes.to_a.collect {|pair| "#{pair.first} = #{pair.second}"}.join(\', \')}")' if bang}
1917
- end
1918
- EOS
1919
- send(method_id, *arguments)
1920
- elsif match.instantiator?
1921
- instantiator = match.instantiator
1922
- # def self.find_or_create_by_user_id(*args)
1923
- # guard_protected_attributes = false
1924
- #
1925
- # if args[0].is_a?(Hash)
1926
- # guard_protected_attributes = true
1927
- # attributes = args[0].with_indifferent_access
1928
- # find_attributes = attributes.slice(*[:user_id])
1929
- # else
1930
- # find_attributes = attributes = construct_attributes_from_arguments([:user_id], args)
1931
- # end
1932
- #
1933
- # options = { :conditions => find_attributes }
1934
- # set_readonly_option!(options)
1935
- #
1936
- # record = find(:first, options)
1937
- #
1938
- # if record.nil?
1939
- # record = self.new { |r| r.send(:attributes=, attributes, guard_protected_attributes) }
1940
- # yield(record) if block_given?
1941
- # record.save
1942
- # record
1943
- # else
1944
- # record
1945
- # end
1946
- # end
1947
- self.class_eval <<-EOS, __FILE__, __LINE__ + 1
1948
- def self.#{method_id}(*args)
1949
- attributes = [:#{attribute_names.join(',:')}]
1950
- protected_attributes_for_create, unprotected_attributes_for_create = {}, {}
1951
- args.each_with_index do |arg, i|
1952
- if arg.is_a?(Hash)
1953
- protected_attributes_for_create = args[i].with_indifferent_access
1954
- else
1955
- unprotected_attributes_for_create[attributes[i]] = args[i]
1956
- end
1957
- end
1958
-
1959
- find_attributes = (protected_attributes_for_create.merge(unprotected_attributes_for_create)).slice(*attributes)
1960
-
1961
- options = { :conditions => find_attributes }
1962
- set_readonly_option!(options)
1963
-
1964
- record = find(:first, options)
1965
-
1966
- if record.nil?
1967
- record = self.new do |r|
1968
- r.send(:attributes=, protected_attributes_for_create, true) unless protected_attributes_for_create.empty?
1969
- r.send(:attributes=, unprotected_attributes_for_create, false) unless unprotected_attributes_for_create.empty?
1970
- end
1971
- #{'yield(record) if block_given?'}
1972
- #{'record.save' if instantiator == :create}
1973
- record
1974
- else
1975
- record
1976
- end
1977
- end
1978
- EOS
1979
- send(method_id, *arguments, &block)
1980
- end
1981
- elsif match = DynamicScopeMatch.match(method_id)
1982
- attribute_names = match.attribute_names
1983
- super unless all_attributes_exists?(attribute_names)
1984
- if match.scope?
1985
- self.class_eval <<-EOS, __FILE__, __LINE__ + 1
1986
- def self.#{method_id}(*args) # def self.scoped_by_user_name_and_password(*args)
1987
- options = args.extract_options! # options = args.extract_options!
1988
- attributes = construct_attributes_from_arguments( # attributes = construct_attributes_from_arguments(
1989
- [:#{attribute_names.join(',:')}], args # [:user_name, :password], args
1990
- ) # )
1991
- #
1992
- scoped(:conditions => attributes) # scoped(:conditions => attributes)
1993
- end # end
1994
- EOS
1995
- send(method_id, *arguments)
1996
- end
1997
- else
1998
- super
1999
- end
2000
- end
2001
-
2002
- def construct_attributes_from_arguments(attribute_names, arguments)
2003
- attributes = {}
2004
- attribute_names.each_with_index { |name, idx| attributes[name] = arguments[idx] }
2005
- attributes
2006
- end
2007
-
2008
- # Similar in purpose to +expand_hash_conditions_for_aggregates+.
2009
- def expand_attribute_names_for_aggregates(attribute_names)
2010
- expanded_attribute_names = []
2011
- attribute_names.each do |attribute_name|
2012
- unless (aggregation = reflect_on_aggregation(attribute_name.to_sym)).nil?
2013
- aggregate_mapping(aggregation).each do |field_attr, aggregate_attr|
2014
- expanded_attribute_names << field_attr
2015
- end
2016
- else
2017
- expanded_attribute_names << attribute_name
2018
- end
2019
- end
2020
- expanded_attribute_names
2021
- end
2022
-
2023
- def all_attributes_exists?(attribute_names)
2024
- attribute_names = expand_attribute_names_for_aggregates(attribute_names)
2025
- attribute_names.all? { |name| column_methods_hash.include?(name.to_sym) }
2026
- end
2027
-
2028
- def attribute_condition(quoted_column_name, argument)
2029
- case argument
2030
- when nil then "#{quoted_column_name} IS ?"
2031
- when Array, ActiveRecord::Associations::AssociationCollection, ActiveRecord::NamedScope::Scope then "#{quoted_column_name} IN (?)"
2032
- when Range then if argument.exclude_end?
2033
- "#{quoted_column_name} >= ? AND #{quoted_column_name} < ?"
2034
- else
2035
- "#{quoted_column_name} BETWEEN ? AND ?"
2036
- end
2037
- else "#{quoted_column_name} = ?"
2038
- end
2039
- end
2040
-
2041
- # Interpret Array and Hash as conditions and anything else as an id.
2042
- def expand_id_conditions(id_or_conditions)
2043
- case id_or_conditions
2044
- when Array, Hash then id_or_conditions
2045
- else sanitize_sql(primary_key => id_or_conditions)
2046
- end
2047
- end
2048
-
2049
- # Defines an "attribute" method (like +inheritance_column+ or
2050
- # +table_name+). A new (class) method will be created with the
2051
- # given name. If a value is specified, the new method will
2052
- # return that value (as a string). Otherwise, the given block
2053
- # will be used to compute the value of the method.
2054
- #
2055
- # The original method will be aliased, with the new name being
2056
- # prefixed with "original_". This allows the new method to
2057
- # access the original value.
2058
- #
2059
- # Example:
2060
- #
2061
- # class A < ActiveRecord::Base
2062
- # define_attr_method :primary_key, "sysid"
2063
- # define_attr_method( :inheritance_column ) do
2064
- # original_inheritance_column + "_id"
2065
- # end
2066
- # end
2067
- def define_attr_method(name, value=nil, &block)
2068
- sing = class << self; self; end
2069
- sing.send :alias_method, "original_#{name}", name
2070
- if block_given?
2071
- sing.send :define_method, name, &block
2072
- else
2073
- # use eval instead of a block to work around a memory leak in dev
2074
- # mode in fcgi
2075
- sing.class_eval "def #{name}; #{value.to_s.inspect}; end"
2076
- end
2077
- end
2078
-
2079
- protected
2080
- # Scope parameters to method calls within the block. Takes a hash of method_name => parameters hash.
2081
- # method_name may be <tt>:find</tt> or <tt>:create</tt>. <tt>:find</tt> parameters may include the <tt>:conditions</tt>, <tt>:joins</tt>,
2082
- # <tt>:include</tt>, <tt>:offset</tt>, <tt>:limit</tt>, and <tt>:readonly</tt> options. <tt>:create</tt> parameters are an attributes hash.
2083
- #
2084
- # class Article < ActiveRecord::Base
2085
- # def self.create_with_scope
2086
- # with_scope(:find => { :conditions => "blog_id = 1" }, :create => { :blog_id => 1 }) do
2087
- # find(1) # => SELECT * from articles WHERE blog_id = 1 AND id = 1
2088
- # a = create(1)
2089
- # a.blog_id # => 1
2090
- # end
2091
- # end
2092
- # end
2093
- #
2094
- # In nested scopings, all previous parameters are overwritten by the innermost rule, with the exception of
2095
- # <tt>:conditions</tt>, <tt>:include</tt>, and <tt>:joins</tt> options in <tt>:find</tt>, which are merged.
2096
- #
2097
- # <tt>:joins</tt> options are uniqued so multiple scopes can join in the same table without table aliasing
2098
- # problems. If you need to join multiple tables, but still want one of the tables to be uniqued, use the
2099
- # array of strings format for your joins.
2100
- #
2101
- # class Article < ActiveRecord::Base
2102
- # def self.find_with_scope
2103
- # with_scope(:find => { :conditions => "blog_id = 1", :limit => 1 }, :create => { :blog_id => 1 }) do
2104
- # with_scope(:find => { :limit => 10 })
2105
- # find(:all) # => SELECT * from articles WHERE blog_id = 1 LIMIT 10
2106
- # end
2107
- # with_scope(:find => { :conditions => "author_id = 3" })
2108
- # find(:all) # => SELECT * from articles WHERE blog_id = 1 AND author_id = 3 LIMIT 1
2109
- # end
2110
- # end
2111
- # end
2112
- # end
2113
- #
2114
- # You can ignore any previous scopings by using the <tt>with_exclusive_scope</tt> method.
2115
- #
2116
- # class Article < ActiveRecord::Base
2117
- # def self.find_with_exclusive_scope
2118
- # with_scope(:find => { :conditions => "blog_id = 1", :limit => 1 }) do
2119
- # with_exclusive_scope(:find => { :limit => 10 })
2120
- # find(:all) # => SELECT * from articles LIMIT 10
2121
- # end
2122
- # end
2123
- # end
2124
- # end
2125
- #
2126
- # *Note*: the +:find+ scope also has effect on update and deletion methods,
2127
- # like +update_all+ and +delete_all+.
2128
- def with_scope(method_scoping = {}, action = :merge, &block)
2129
- method_scoping = method_scoping.method_scoping if method_scoping.respond_to?(:method_scoping)
2130
-
2131
- # Dup first and second level of hash (method and params).
2132
- method_scoping = method_scoping.inject({}) do |hash, (method, params)|
2133
- hash[method] = (params == true) ? params : params.dup
2134
- hash
2135
- end
2136
-
2137
- method_scoping.assert_valid_keys([ :find, :create ])
2138
-
2139
- if f = method_scoping[:find]
2140
- f.assert_valid_keys(VALID_FIND_OPTIONS)
2141
- set_readonly_option! f
2142
- end
2143
-
2144
- # Merge scopings
2145
- if [:merge, :reverse_merge].include?(action) && current_scoped_methods
2146
- method_scoping = current_scoped_methods.inject(method_scoping) do |hash, (method, params)|
2147
- case hash[method]
2148
- when Hash
2149
- if method == :find
2150
- (hash[method].keys + params.keys).uniq.each do |key|
2151
- merge = hash[method][key] && params[key] # merge if both scopes have the same key
2152
- if key == :conditions && merge
2153
- if params[key].is_a?(Hash) && hash[method][key].is_a?(Hash)
2154
- hash[method][key] = merge_conditions(hash[method][key].deep_merge(params[key]))
2155
- else
2156
- hash[method][key] = merge_conditions(params[key], hash[method][key])
2157
- end
2158
- elsif key == :include && merge
2159
- hash[method][key] = merge_includes(hash[method][key], params[key]).uniq
2160
- elsif key == :joins && merge
2161
- hash[method][key] = merge_joins(params[key], hash[method][key])
2162
- else
2163
- hash[method][key] = hash[method][key] || params[key]
2164
- end
2165
- end
2166
- else
2167
- if action == :reverse_merge
2168
- hash[method] = hash[method].merge(params)
2169
- else
2170
- hash[method] = params.merge(hash[method])
2171
- end
2172
- end
2173
- else
2174
- hash[method] = params
2175
- end
2176
- hash
2177
- end
2178
- end
2179
-
2180
- self.scoped_methods << method_scoping
2181
- begin
2182
- yield
2183
- ensure
2184
- self.scoped_methods.pop
2185
- end
2186
- end
2187
-
2188
- # Works like with_scope, but discards any nested properties.
2189
- def with_exclusive_scope(method_scoping = {}, &block)
2190
- with_scope(method_scoping, :overwrite, &block)
2191
- end
2192
-
2193
- def subclasses #:nodoc:
2194
- @@subclasses[self] ||= []
2195
- @@subclasses[self] + extra = @@subclasses[self].inject([]) {|list, subclass| list + subclass.subclasses }
2196
- end
2197
-
2198
- # Sets the default options for the model. The format of the
2199
- # <tt>options</tt> argument is the same as in find.
2200
- #
2201
- # class Person < ActiveRecord::Base
2202
- # default_scope :order => 'last_name, first_name'
2203
- # end
2204
- def default_scope(options = {})
2205
- self.default_scoping << { :find => options, :create => options[:conditions].is_a?(Hash) ? options[:conditions] : {} }
2206
- end
2207
-
2208
- # Test whether the given method and optional key are scoped.
2209
- def scoped?(method, key = nil) #:nodoc:
2210
- if current_scoped_methods && (scope = current_scoped_methods[method])
2211
- !key || !scope[key].nil?
2212
- end
2213
- end
2214
-
2215
- # Retrieve the scope for the given method and optional key.
2216
- def scope(method, key = nil) #:nodoc:
2217
- if current_scoped_methods && (scope = current_scoped_methods[method])
2218
- key ? scope[key] : scope
2219
- end
2220
- end
2221
-
2222
- def scoped_methods #:nodoc:
2223
- Thread.current[:"#{self}_scoped_methods"] ||= self.default_scoping.dup
2224
- end
2225
-
2226
- def current_scoped_methods #:nodoc:
2227
- scoped_methods.last
2228
- end
2229
-
2230
- # Returns the class type of the record using the current module as a prefix. So descendants of
2231
- # MyApp::Business::Account would appear as MyApp::Business::AccountSubclass.
2232
- def compute_type(type_name)
2233
- modularized_name = type_name_with_module(type_name)
2234
- silence_warnings do
2235
- begin
2236
- class_eval(modularized_name, __FILE__)
2237
- rescue NameError
2238
- class_eval(type_name, __FILE__)
2239
- end
2240
- end
2241
- end
2242
-
2243
- # Returns the class descending directly from ActiveRecord::Base or an
2244
- # abstract class, if any, in the inheritance hierarchy.
2245
- def class_of_active_record_descendant(klass)
2246
- if klass.superclass == Base || klass.superclass.abstract_class?
2247
- klass
2248
- elsif klass.superclass.nil?
2249
- raise ActiveRecordError, "#{name} doesn't belong in a hierarchy descending from ActiveRecord"
2250
- else
2251
- class_of_active_record_descendant(klass.superclass)
2252
- end
2253
- end
2254
-
2255
- # Returns the name of the class descending directly from Active Record in the inheritance hierarchy.
2256
- def class_name_of_active_record_descendant(klass) #:nodoc:
2257
- klass.base_class.name
2258
- end
2259
-
2260
- # Accepts an array, hash, or string of SQL conditions and sanitizes
2261
- # them into a valid SQL fragment for a WHERE clause.
2262
- # ["name='%s' and group_id='%s'", "foo'bar", 4] returns "name='foo''bar' and group_id='4'"
2263
- # { :name => "foo'bar", :group_id => 4 } returns "name='foo''bar' and group_id='4'"
2264
- # "name='foo''bar' and group_id='4'" returns "name='foo''bar' and group_id='4'"
2265
- def sanitize_sql_for_conditions(condition, table_name = quoted_table_name)
2266
- return nil if condition.blank?
2267
-
2268
- case condition
2269
- when Array; sanitize_sql_array(condition)
2270
- when Hash; sanitize_sql_hash_for_conditions(condition, table_name)
2271
- else condition
2272
- end
2273
- end
2274
- alias_method :sanitize_sql, :sanitize_sql_for_conditions
2275
-
2276
- # Accepts an array, hash, or string of SQL conditions and sanitizes
2277
- # them into a valid SQL fragment for a SET clause.
2278
- # { :name => nil, :group_id => 4 } returns "name = NULL , group_id='4'"
2279
- def sanitize_sql_for_assignment(assignments)
2280
- case assignments
2281
- when Array; sanitize_sql_array(assignments)
2282
- when Hash; sanitize_sql_hash_for_assignment(assignments)
2283
- else assignments
2284
- end
2285
- end
2286
-
2287
- def aggregate_mapping(reflection)
2288
- mapping = reflection.options[:mapping] || [reflection.name, reflection.name]
2289
- mapping.first.is_a?(Array) ? mapping : [mapping]
2290
- end
2291
-
2292
- # Accepts a hash of SQL conditions and replaces those attributes
2293
- # that correspond to a +composed_of+ relationship with their expanded
2294
- # aggregate attribute values.
2295
- # Given:
2296
- # class Person < ActiveRecord::Base
2297
- # composed_of :address, :class_name => "Address",
2298
- # :mapping => [%w(address_street street), %w(address_city city)]
2299
- # end
2300
- # Then:
2301
- # { :address => Address.new("813 abc st.", "chicago") }
2302
- # # => { :address_street => "813 abc st.", :address_city => "chicago" }
2303
- def expand_hash_conditions_for_aggregates(attrs)
2304
- expanded_attrs = {}
2305
- attrs.each do |attr, value|
2306
- unless (aggregation = reflect_on_aggregation(attr.to_sym)).nil?
2307
- mapping = aggregate_mapping(aggregation)
2308
- mapping.each do |field_attr, aggregate_attr|
2309
- if mapping.size == 1 && !value.respond_to?(aggregate_attr)
2310
- expanded_attrs[field_attr] = value
2311
- else
2312
- expanded_attrs[field_attr] = value.send(aggregate_attr)
2313
- end
2314
- end
2315
- else
2316
- expanded_attrs[attr] = value
2317
- end
2318
- end
2319
- expanded_attrs
2320
- end
2321
-
2322
- # Sanitizes a hash of attribute/value pairs into SQL conditions for a WHERE clause.
2323
- # { :name => "foo'bar", :group_id => 4 }
2324
- # # => "name='foo''bar' and group_id= 4"
2325
- # { :status => nil, :group_id => [1,2,3] }
2326
- # # => "status IS NULL and group_id IN (1,2,3)"
2327
- # { :age => 13..18 }
2328
- # # => "age BETWEEN 13 AND 18"
2329
- # { 'other_records.id' => 7 }
2330
- # # => "`other_records`.`id` = 7"
2331
- # { :other_records => { :id => 7 } }
2332
- # # => "`other_records`.`id` = 7"
2333
- # And for value objects on a composed_of relationship:
2334
- # { :address => Address.new("123 abc st.", "chicago") }
2335
- # # => "address_street='123 abc st.' and address_city='chicago'"
2336
- def sanitize_sql_hash_for_conditions(attrs, default_table_name = quoted_table_name)
2337
- attrs = expand_hash_conditions_for_aggregates(attrs)
2338
-
2339
- conditions = attrs.map do |attr, value|
2340
- table_name = default_table_name
2341
-
2342
- unless value.is_a?(Hash)
2343
- attr = attr.to_s
2344
-
2345
- # Extract table name from qualified attribute names.
2346
- if attr.include?('.')
2347
- attr_table_name, attr = attr.split('.', 2)
2348
- attr_table_name = connection.quote_table_name(attr_table_name)
2349
- else
2350
- attr_table_name = table_name
2351
- end
2352
-
2353
- attribute_condition("#{attr_table_name}.#{connection.quote_column_name(attr)}", value)
2354
- else
2355
- sanitize_sql_hash_for_conditions(value, connection.quote_table_name(attr.to_s))
2356
- end
2357
- end.join(' AND ')
2358
-
2359
- replace_bind_variables(conditions, expand_range_bind_variables(attrs.values))
2360
- end
2361
- alias_method :sanitize_sql_hash, :sanitize_sql_hash_for_conditions
2362
-
2363
- # Sanitizes a hash of attribute/value pairs into SQL conditions for a SET clause.
2364
- # { :status => nil, :group_id => 1 }
2365
- # # => "status = NULL , group_id = 1"
2366
- def sanitize_sql_hash_for_assignment(attrs)
2367
- attrs.map do |attr, value|
2368
- "#{connection.quote_column_name(attr)} = #{quote_bound_value(value)}"
2369
- end.join(', ')
2370
- end
2371
-
2372
- # Accepts an array of conditions. The array has each value
2373
- # sanitized and interpolated into the SQL statement.
2374
- # ["name='%s' and group_id='%s'", "foo'bar", 4] returns "name='foo''bar' and group_id='4'"
2375
- def sanitize_sql_array(ary)
2376
- statement, *values = ary
2377
- if values.first.is_a?(Hash) and statement =~ /:\w+/
2378
- replace_named_bind_variables(statement, values.first)
2379
- elsif statement.include?('?')
2380
- replace_bind_variables(statement, values)
2381
- else
2382
- statement % values.collect { |value| connection.quote_string(value.to_s) }
2383
- end
2384
- end
2385
-
2386
- alias_method :sanitize_conditions, :sanitize_sql
2387
-
2388
- def replace_bind_variables(statement, values) #:nodoc:
2389
- raise_if_bind_arity_mismatch(statement, statement.count('?'), values.size)
2390
- bound = values.dup
2391
- statement.gsub('?') { quote_bound_value(bound.shift) }
2392
- end
2393
-
2394
- def replace_named_bind_variables(statement, bind_vars) #:nodoc:
2395
- statement.gsub(/(:?):([a-zA-Z]\w*)/) do
2396
- if $1 == ':' # skip postgresql casts
2397
- $& # return the whole match
2398
- elsif bind_vars.include?(match = $2.to_sym)
2399
- quote_bound_value(bind_vars[match])
2400
- else
2401
- raise PreparedStatementInvalid, "missing value for :#{match} in #{statement}"
2402
- end
2403
- end
2404
- end
2405
-
2406
- def expand_range_bind_variables(bind_vars) #:nodoc:
2407
- expanded = []
2408
-
2409
- bind_vars.each do |var|
2410
- next if var.is_a?(Hash)
2411
-
2412
- if var.is_a?(Range)
2413
- expanded << var.first
2414
- expanded << var.last
2415
- else
2416
- expanded << var
2417
- end
2418
- end
2419
-
2420
- expanded
2421
- end
2422
-
2423
- def quote_bound_value(value) #:nodoc:
2424
- if value.respond_to?(:map) && !value.acts_like?(:string)
2425
- if value.respond_to?(:empty?) && value.empty?
2426
- connection.quote(nil)
2427
- else
2428
- value.map { |v| connection.quote(v) }.join(',')
2429
- end
2430
- else
2431
- connection.quote(value)
2432
- end
2433
- end
2434
-
2435
- def raise_if_bind_arity_mismatch(statement, expected, provided) #:nodoc:
2436
- unless expected == provided
2437
- raise PreparedStatementInvalid, "wrong number of bind variables (#{provided} for #{expected}) in: #{statement}"
2438
- end
2439
- end
2440
-
2441
- VALID_FIND_OPTIONS = [ :conditions, :include, :joins, :limit, :offset,
2442
- :order, :select, :readonly, :group, :having, :from, :lock ]
2443
-
2444
- def validate_find_options(options) #:nodoc:
2445
- options.assert_valid_keys(VALID_FIND_OPTIONS)
2446
- end
2447
-
2448
- def set_readonly_option!(options) #:nodoc:
2449
- # Inherit :readonly from finder scope if set. Otherwise,
2450
- # if :joins is not blank then :readonly defaults to true.
2451
- unless options.has_key?(:readonly)
2452
- if scoped_readonly = scope(:find, :readonly)
2453
- options[:readonly] = scoped_readonly
2454
- elsif !options[:joins].blank? && !options[:select]
2455
- options[:readonly] = true
2456
- end
2457
- end
2458
- end
2459
-
2460
- def encode_quoted_value(value) #:nodoc:
2461
- quoted_value = connection.quote(value)
2462
- quoted_value = "'#{quoted_value[1..-2].gsub(/\'/, "\\\\'")}'" if quoted_value.include?("\\\'") # (for ruby mode) "
2463
- quoted_value
2464
- end
2465
- end
2466
-
2467
- public
2468
- # New objects can be instantiated as either empty (pass no construction parameter) or pre-set with
2469
- # attributes but not yet saved (pass a hash with key names matching the associated table column names).
2470
- # In both instances, valid attribute keys are determined by the column names of the associated table --
2471
- # hence you can't have attributes that aren't part of the table columns.
2472
- def initialize(attributes = nil)
2473
- @attributes = attributes_from_column_definition
2474
- @attributes_cache = {}
2475
- @new_record = true
2476
- ensure_proper_type
2477
- self.attributes = attributes unless attributes.nil?
2478
- assign_attributes(self.class.send(:scope, :create)) if self.class.send(:scoped?, :create)
2479
- result = yield self if block_given?
2480
- callback(:after_initialize) if respond_to_without_attributes?(:after_initialize)
2481
- result
2482
- end
2483
-
2484
- # A model instance's primary key is always available as model.id
2485
- # whether you name it the default 'id' or set it to something else.
2486
- def id
2487
- attr_name = self.class.primary_key
2488
- column = column_for_attribute(attr_name)
2489
-
2490
- self.class.send(:define_read_method, :id, attr_name, column)
2491
- # now that the method exists, call it
2492
- self.send attr_name.to_sym
2493
-
2494
- end
2495
-
2496
- # Returns a String, which Action Pack uses for constructing an URL to this
2497
- # object. The default implementation returns this record's id as a String,
2498
- # or nil if this record's unsaved.
2499
- #
2500
- # For example, suppose that you have a User model, and that you have a
2501
- # <tt>map.resources :users</tt> route. Normally, +user_path+ will
2502
- # construct a path with the user object's 'id' in it:
2503
- #
2504
- # user = User.find_by_name('Phusion')
2505
- # user_path(user) # => "/users/1"
2506
- #
2507
- # You can override +to_param+ in your model to make +user_path+ construct
2508
- # a path using the user's name instead of the user's id:
2509
- #
2510
- # class User < ActiveRecord::Base
2511
- # def to_param # overridden
2512
- # name
2513
- # end
2514
- # end
2515
- #
2516
- # user = User.find_by_name('Phusion')
2517
- # user_path(user) # => "/users/Phusion"
2518
- def to_param
2519
- # We can't use alias_method here, because method 'id' optimizes itself on the fly.
2520
- (id = self.id) ? id.to_s : nil # Be sure to stringify the id for routes
2521
- end
2522
-
2523
- # Returns a cache key that can be used to identify this record.
2524
- #
2525
- # ==== Examples
2526
- #
2527
- # Product.new.cache_key # => "products/new"
2528
- # Product.find(5).cache_key # => "products/5" (updated_at not available)
2529
- # Person.find(5).cache_key # => "people/5-20071224150000" (updated_at available)
2530
- def cache_key
2531
- case
2532
- when new_record?
2533
- "#{self.class.model_name.cache_key}/new"
2534
- when timestamp = self[:updated_at]
2535
- "#{self.class.model_name.cache_key}/#{id}-#{timestamp.to_s(:number)}"
2536
- else
2537
- "#{self.class.model_name.cache_key}/#{id}"
2538
- end
2539
- end
2540
-
2541
- def id_before_type_cast #:nodoc:
2542
- read_attribute_before_type_cast(self.class.primary_key)
2543
- end
2544
-
2545
- def quoted_id #:nodoc:
2546
- quote_value(id, column_for_attribute(self.class.primary_key))
2547
- end
2548
-
2549
- # Sets the primary ID.
2550
- def id=(value)
2551
- write_attribute(self.class.primary_key, value)
2552
- end
2553
-
2554
- # Returns true if this object hasn't been saved yet -- that is, a record for the object doesn't exist yet; otherwise, returns false.
2555
- def new_record?
2556
- @new_record || false
2557
- end
2558
-
2559
- # :call-seq:
2560
- # save(perform_validation = true)
2561
- #
2562
- # Saves the model.
2563
- #
2564
- # If the model is new a record gets created in the database, otherwise
2565
- # the existing record gets updated.
2566
- #
2567
- # If +perform_validation+ is true validations run. If any of them fail
2568
- # the action is cancelled and +save+ returns +false+. If the flag is
2569
- # false validations are bypassed altogether. See
2570
- # ActiveRecord::Validations for more information.
2571
- #
2572
- # There's a series of callbacks associated with +save+. If any of the
2573
- # <tt>before_*</tt> callbacks return +false+ the action is cancelled and
2574
- # +save+ returns +false+. See ActiveRecord::Callbacks for further
2575
- # details.
2576
- def save
2577
- create_or_update
2578
- end
2579
-
2580
- # Saves the model.
2581
- #
2582
- # If the model is new a record gets created in the database, otherwise
2583
- # the existing record gets updated.
2584
- #
2585
- # With <tt>save!</tt> validations always run. If any of them fail
2586
- # ActiveRecord::RecordInvalid gets raised. See ActiveRecord::Validations
2587
- # for more information.
2588
- #
2589
- # There's a series of callbacks associated with <tt>save!</tt>. If any of
2590
- # the <tt>before_*</tt> callbacks return +false+ the action is cancelled
2591
- # and <tt>save!</tt> raises ActiveRecord::RecordNotSaved. See
2592
- # ActiveRecord::Callbacks for further details.
2593
- def save!
2594
- create_or_update || raise(RecordNotSaved)
2595
- end
2596
-
2597
- # Deletes the record in the database and freezes this instance to
2598
- # reflect that no changes should be made (since they can't be
2599
- # persisted). Returns the frozen instance.
2600
- #
2601
- # The row is simply removed with a SQL +DELETE+ statement on the
2602
- # record's primary key, and no callbacks are executed.
2603
- #
2604
- # To enforce the object's +before_destroy+ and +after_destroy+
2605
- # callbacks, Observer methods, or any <tt>:dependent</tt> association
2606
- # options, use <tt>#destroy</tt>.
2607
- def delete
2608
- self.class.delete(id) unless new_record?
2609
- @destroyed = true
2610
- freeze
2611
- end
2612
-
2613
- # Deletes the record in the database and freezes this instance to reflect that no changes should
2614
- # be made (since they can't be persisted).
2615
- def destroy
2616
- unless new_record?
2617
- connection.delete(
2618
- "DELETE FROM #{self.class.quoted_table_name} " +
2619
- "WHERE #{connection.quote_column_name(self.class.primary_key)} = #{quoted_id}",
2620
- "#{self.class.name} Destroy"
2621
- )
2622
- end
2623
-
2624
- @destroyed = true
2625
- freeze
2626
- end
2627
-
2628
- # Returns a clone of the record that hasn't been assigned an id yet and
2629
- # is treated as a new record. Note that this is a "shallow" clone:
2630
- # it copies the object's attributes only, not its associations.
2631
- # The extent of a "deep" clone is application-specific and is therefore
2632
- # left to the application to implement according to its need.
2633
- def clone
2634
- attrs = clone_attributes(:read_attribute_before_type_cast)
2635
- attrs.delete(self.class.primary_key)
2636
- record = self.class.new
2637
- record.send :instance_variable_set, '@attributes', attrs
2638
- record
2639
- end
2640
-
2641
- # Returns an instance of the specified +klass+ with the attributes of the current record. This is mostly useful in relation to
2642
- # single-table inheritance structures where you want a subclass to appear as the superclass. This can be used along with record
2643
- # identification in Action Pack to allow, say, <tt>Client < Company</tt> to do something like render <tt>:partial => @client.becomes(Company)</tt>
2644
- # to render that instance using the companies/company partial instead of clients/client.
2645
- #
2646
- # Note: The new instance will share a link to the same attributes as the original class. So any change to the attributes in either
2647
- # instance will affect the other.
2648
- def becomes(klass)
2649
- klass.new.tap do |became|
2650
- became.instance_variable_set("@attributes", @attributes)
2651
- became.instance_variable_set("@attributes_cache", @attributes_cache)
2652
- became.instance_variable_set("@new_record", new_record?)
2653
- end
2654
- end
2655
-
2656
- # Updates a single attribute and saves the record without going through the normal validation procedure.
2657
- # This is especially useful for boolean flags on existing records. The regular +update_attribute+ method
2658
- # in Base is replaced with this when the validations module is mixed in, which it is by default.
2659
- def update_attribute(name, value)
2660
- send(name.to_s + '=', value)
2661
- save(false)
2662
- end
2663
-
2664
- # Updates all the attributes from the passed-in Hash and saves the record. If the object is invalid, the saving will
2665
- # fail and false will be returned.
2666
- def update_attributes(attributes)
2667
- with_transaction_returning_status(:update_attributes_inside_transaction, attributes)
2668
- end
2669
-
2670
- def update_attributes_inside_transaction(attributes) #:nodoc:
2671
- self.attributes = attributes
2672
- save
2673
- end
2674
-
2675
- # Updates an object just like Base.update_attributes but calls save! instead of save so an exception is raised if the record is invalid.
2676
- def update_attributes!(attributes)
2677
- with_transaction_returning_status(:update_attributes_inside_transaction!, attributes)
2678
- end
2679
-
2680
- def update_attributes_inside_transaction!(attributes) #:nodoc:
2681
- self.attributes = attributes
2682
- save!
2683
- end
2684
-
2685
- # Initializes +attribute+ to zero if +nil+ and adds the value passed as +by+ (default is 1).
2686
- # The increment is performed directly on the underlying attribute, no setter is invoked.
2687
- # Only makes sense for number-based attributes. Returns +self+.
2688
- def increment(attribute, by = 1)
2689
- self[attribute] ||= 0
2690
- self[attribute] += by
2691
- self
2692
- end
2693
-
2694
- # Wrapper around +increment+ that saves the record. This method differs from
2695
- # its non-bang version in that it passes through the attribute setter.
2696
- # Saving is not subjected to validation checks. Returns +true+ if the
2697
- # record could be saved.
2698
- def increment!(attribute, by = 1)
2699
- increment(attribute, by).update_attribute(attribute, self[attribute])
2700
- end
2701
-
2702
- # Initializes +attribute+ to zero if +nil+ and subtracts the value passed as +by+ (default is 1).
2703
- # The decrement is performed directly on the underlying attribute, no setter is invoked.
2704
- # Only makes sense for number-based attributes. Returns +self+.
2705
- def decrement(attribute, by = 1)
2706
- self[attribute] ||= 0
2707
- self[attribute] -= by
2708
- self
2709
- end
2710
-
2711
- # Wrapper around +decrement+ that saves the record. This method differs from
2712
- # its non-bang version in that it passes through the attribute setter.
2713
- # Saving is not subjected to validation checks. Returns +true+ if the
2714
- # record could be saved.
2715
- def decrement!(attribute, by = 1)
2716
- decrement(attribute, by).update_attribute(attribute, self[attribute])
2717
- end
2718
-
2719
- # Assigns to +attribute+ the boolean opposite of <tt>attribute?</tt>. So
2720
- # if the predicate returns +true+ the attribute will become +false+. This
2721
- # method toggles directly the underlying value without calling any setter.
2722
- # Returns +self+.
2723
- def toggle(attribute)
2724
- self[attribute] = !send("#{attribute}?")
2725
- self
2726
- end
2727
-
2728
- # Wrapper around +toggle+ that saves the record. This method differs from
2729
- # its non-bang version in that it passes through the attribute setter.
2730
- # Saving is not subjected to validation checks. Returns +true+ if the
2731
- # record could be saved.
2732
- def toggle!(attribute)
2733
- toggle(attribute).update_attribute(attribute, self[attribute])
2734
- end
2735
-
2736
- # Reloads the attributes of this object from the database.
2737
- # The optional options argument is passed to find when reloading so you
2738
- # may do e.g. record.reload(:lock => true) to reload the same record with
2739
- # an exclusive row lock.
2740
- def reload(options = nil)
2741
- clear_aggregation_cache
2742
- clear_association_cache
2743
- @attributes.update(self.class.send(:with_exclusive_scope) { self.class.find(self.id, options) }.instance_variable_get('@attributes'))
2744
- @attributes_cache = {}
2745
- self
2746
- end
2747
-
2748
- # Returns the value of the attribute identified by <tt>attr_name</tt> after it has been typecast (for example,
2749
- # "2004-12-12" in a data column is cast to a date object, like Date.new(2004, 12, 12)).
2750
- # (Alias for the protected read_attribute method).
2751
- def [](attr_name)
2752
- read_attribute(attr_name)
2753
- end
2754
-
2755
- # Updates the attribute identified by <tt>attr_name</tt> with the specified +value+.
2756
- # (Alias for the protected write_attribute method).
2757
- def []=(attr_name, value)
2758
- write_attribute(attr_name, value)
2759
- end
2760
-
2761
- # Allows you to set all the attributes at once by passing in a hash with keys
2762
- # matching the attribute names (which again matches the column names).
2763
- #
2764
- # If +guard_protected_attributes+ is true (the default), then sensitive
2765
- # attributes can be protected from this form of mass-assignment by using
2766
- # the +attr_protected+ macro. Or you can alternatively specify which
2767
- # attributes *can* be accessed with the +attr_accessible+ macro. Then all the
2768
- # attributes not included in that won't be allowed to be mass-assigned.
2769
- #
2770
- # class User < ActiveRecord::Base
2771
- # attr_protected :is_admin
2772
- # end
2773
- #
2774
- # user = User.new
2775
- # user.attributes = { :username => 'Phusion', :is_admin => true }
2776
- # user.username # => "Phusion"
2777
- # user.is_admin? # => false
2778
- #
2779
- # user.send(:attributes=, { :username => 'Phusion', :is_admin => true }, false)
2780
- # user.is_admin? # => true
2781
- def attributes=(new_attributes, guard_protected_attributes = true)
2782
- return if new_attributes.nil?
2783
- attributes = new_attributes.dup
2784
- attributes.stringify_keys!
2785
-
2786
- attributes = remove_attributes_protected_from_mass_assignment(attributes) if guard_protected_attributes
2787
- assign_attributes(attributes) if attributes and attributes.any?
2788
- end
2789
-
2790
- # Returns a hash of all the attributes with their names as keys and the values of the attributes as values.
2791
- def attributes
2792
- attrs = {}
2793
- attribute_names.each { |name| attrs[name] = read_attribute(name) }
2794
- attrs
2795
- end
2796
-
2797
- # Returns a hash of attributes before typecasting and deserialization.
2798
- def attributes_before_type_cast
2799
- self.attribute_names.inject({}) do |attrs, name|
2800
- attrs[name] = read_attribute_before_type_cast(name)
2801
- attrs
2802
- end
2803
- end
2804
-
2805
- # Returns an <tt>#inspect</tt>-like string for the value of the
2806
- # attribute +attr_name+. String attributes are elided after 50
2807
- # characters, and Date and Time attributes are returned in the
2808
- # <tt>:db</tt> format. Other attributes return the value of
2809
- # <tt>#inspect</tt> without modification.
2810
- #
2811
- # person = Person.create!(:name => "David Heinemeier Hansson " * 3)
2812
- #
2813
- # person.attribute_for_inspect(:name)
2814
- # # => '"David Heinemeier Hansson David Heinemeier Hansson D..."'
2815
- #
2816
- # person.attribute_for_inspect(:created_at)
2817
- # # => '"2009-01-12 04:48:57"'
2818
- def attribute_for_inspect(attr_name)
2819
- value = read_attribute(attr_name)
2820
-
2821
- if value.is_a?(String) && value.length > 50
2822
- "#{value[0..50]}...".inspect
2823
- elsif value.is_a?(Date) || value.is_a?(Time)
2824
- %("#{value.to_s(:db)}")
2825
- else
2826
- value.inspect
2827
- end
2828
- end
2829
-
2830
- # Returns true if the specified +attribute+ has been set by the user or by a database load and is neither
2831
- # nil nor empty? (the latter only applies to objects that respond to empty?, most notably Strings).
2832
- def attribute_present?(attribute)
2833
- value = read_attribute(attribute)
2834
- !value.blank?
2835
- end
2836
-
2837
- # Returns true if the given attribute is in the attributes hash
2838
- def has_attribute?(attr_name)
2839
- @attributes.has_key?(attr_name.to_s)
2840
- end
2841
-
2842
- # Returns an array of names for the attributes available on this object sorted alphabetically.
2843
- def attribute_names
2844
- @attributes.keys.sort
2845
- end
2846
-
2847
- # Returns the column object for the named attribute.
2848
- def column_for_attribute(name)
2849
- self.class.columns_hash[name.to_s]
2850
- end
2851
-
2852
- # Returns true if the +comparison_object+ is the same object, or is of the same type and has the same id.
2853
- def ==(comparison_object)
2854
- comparison_object.equal?(self) ||
2855
- (comparison_object.instance_of?(self.class) &&
2856
- comparison_object.id == id &&
2857
- !comparison_object.new_record?)
2858
- end
2859
-
2860
- # Delegates to ==
2861
- def eql?(comparison_object)
2862
- self == (comparison_object)
2863
- end
2864
-
2865
- # Delegates to id in order to allow two records of the same type and id to work with something like:
2866
- # [ Person.find(1), Person.find(2), Person.find(3) ] & [ Person.find(1), Person.find(4) ] # => [ Person.find(1) ]
2867
- def hash
2868
- id.hash
2869
- end
2870
-
2871
- # Freeze the attributes hash such that associations are still accessible, even on destroyed records.
2872
- def freeze
2873
- @attributes.freeze; self
2874
- end
2875
-
2876
- # Returns +true+ if the attributes hash has been frozen.
2877
- def frozen?
2878
- @attributes.frozen?
2879
- end
2880
-
2881
- # Returns +true+ if the record has been destroyed.
2882
- def destroyed?
2883
- @destroyed
2884
- end
2885
-
2886
- # Returns +true+ if the record is read only. Records loaded through joins with piggy-back
2887
- # attributes will be marked as read only since they cannot be saved.
2888
- def readonly?
2889
- defined?(@readonly) && @readonly == true
2890
- end
2891
-
2892
- # Marks this record as read only.
2893
- def readonly!
2894
- @readonly = true
2895
- end
2896
-
2897
- # Returns the contents of the record as a nicely formatted string.
2898
- def inspect
2899
- attributes_as_nice_string = self.class.column_names.collect { |name|
2900
- if has_attribute?(name) || new_record?
2901
- "#{name}: #{attribute_for_inspect(name)}"
2902
- end
2903
- }.compact.join(", ")
2904
- "#<#{self.class} #{attributes_as_nice_string}>"
2905
- end
2906
-
2907
- private
2908
- # Assigns attributes, dealing nicely with both multi and single paramater attributes
2909
- # Assumes attributes is a hash
2910
-
2911
- def assign_attributes(attributes={})
2912
- multiparameter_attributes = []
2913
-
2914
- attributes.each do |k, v|
2915
- if k.to_s.include?("(")
2916
- multiparameter_attributes << [ k, v ]
2917
- else
2918
- respond_to?(:"#{k}=") ? send(:"#{k}=", v) : raise(UnknownAttributeError, "unknown attribute: #{k}")
2919
- end
2920
- end
2921
-
2922
- assign_multiparameter_attributes(multiparameter_attributes) unless multiparameter_attributes.empty?
2923
- end
2924
-
2925
- def create_or_update
2926
- raise ReadOnlyRecord if readonly?
2927
- result = new_record? ? create : update
2928
- result != false
2929
- end
2930
-
2931
- # Updates the associated record with values matching those of the instance attributes.
2932
- # Returns the number of affected rows.
2933
- def update(attribute_names = @attributes.keys)
2934
- quoted_attributes = attributes_with_quotes(false, false, attribute_names)
2935
- return 0 if quoted_attributes.empty?
2936
- connection.update(
2937
- "UPDATE #{self.class.quoted_table_name} " +
2938
- "SET #{quoted_comma_pair_list(connection, quoted_attributes)} " +
2939
- "WHERE #{connection.quote_column_name(self.class.primary_key)} = #{quote_value(id)}",
2940
- "#{self.class.name} Update"
2941
- )
2942
- end
2943
-
2944
- # Creates a record with values matching those of the instance attributes
2945
- # and returns its id.
2946
- def create
2947
- if self.id.nil? && connection.prefetch_primary_key?(self.class.table_name)
2948
- self.id = connection.next_sequence_value(self.class.sequence_name)
2949
- end
2950
-
2951
- quoted_attributes = attributes_with_quotes
2952
-
2953
- statement = if quoted_attributes.empty?
2954
- connection.empty_insert_statement(self.class.table_name)
2955
- else
2956
- "INSERT INTO #{self.class.quoted_table_name} " +
2957
- "(#{quoted_column_names.join(', ')}) " +
2958
- "VALUES(#{quoted_attributes.values.join(', ')})"
2959
- end
2960
-
2961
- self.id = connection.insert(statement, "#{self.class.name} Create",
2962
- self.class.primary_key, self.id, self.class.sequence_name)
2963
-
2964
- @new_record = false
2965
- id
2966
- end
2967
-
2968
- # Sets the attribute used for single table inheritance to this class name if this is not the ActiveRecord::Base descendant.
2969
- # Considering the hierarchy Reply < Message < ActiveRecord::Base, this makes it possible to do Reply.new without having to
2970
- # set <tt>Reply[Reply.inheritance_column] = "Reply"</tt> yourself. No such attribute would be set for objects of the
2971
- # Message class in that example.
2972
- def ensure_proper_type
2973
- unless self.class.descends_from_active_record?
2974
- write_attribute(self.class.inheritance_column, self.class.sti_name)
2975
- end
2976
- end
2977
-
2978
- def convert_number_column_value(value)
2979
- if value == false
2980
- 0
2981
- elsif value == true
2982
- 1
2983
- elsif value.is_a?(String) && value.blank?
2984
- nil
2985
- else
2986
- value
2987
- end
2988
- end
2989
-
2990
- def remove_attributes_protected_from_mass_assignment(attributes)
2991
- safe_attributes =
2992
- if self.class.accessible_attributes.nil? && self.class.protected_attributes.nil?
2993
- attributes.reject { |key, value| attributes_protected_by_default.include?(key.gsub(/\(.+/, "")) }
2994
- elsif self.class.protected_attributes.nil?
2995
- attributes.reject { |key, value| !self.class.accessible_attributes.include?(key.gsub(/\(.+/, "")) || attributes_protected_by_default.include?(key.gsub(/\(.+/, "")) }
2996
- elsif self.class.accessible_attributes.nil?
2997
- attributes.reject { |key, value| self.class.protected_attributes.include?(key.gsub(/\(.+/,"")) || attributes_protected_by_default.include?(key.gsub(/\(.+/, "")) }
2998
- else
2999
- raise "Declare either attr_protected or attr_accessible for #{self.class}, but not both."
3000
- end
3001
-
3002
- removed_attributes = attributes.keys - safe_attributes.keys
3003
-
3004
- if removed_attributes.any?
3005
- log_protected_attribute_removal(removed_attributes)
3006
- end
3007
-
3008
- safe_attributes
3009
- end
3010
-
3011
- # Removes attributes which have been marked as readonly.
3012
- def remove_readonly_attributes(attributes)
3013
- unless self.class.readonly_attributes.nil?
3014
- attributes.delete_if { |key, value| self.class.readonly_attributes.include?(key.gsub(/\(.+/,"")) }
3015
- else
3016
- attributes
3017
- end
3018
- end
3019
-
3020
- def log_protected_attribute_removal(*attributes)
3021
- logger.debug "WARNING: Can't mass-assign these protected attributes: #{attributes.join(', ')}"
3022
- end
3023
-
3024
- # The primary key and inheritance column can never be set by mass-assignment for security reasons.
3025
- def attributes_protected_by_default
3026
- default = [ self.class.primary_key, self.class.inheritance_column ]
3027
- default << 'id' unless self.class.primary_key.eql? 'id'
3028
- default
3029
- end
3030
-
3031
- # Returns a copy of the attributes hash where all the values have been safely quoted for use in
3032
- # an SQL statement.
3033
- def attributes_with_quotes(include_primary_key = true, include_readonly_attributes = true, attribute_names = @attributes.keys)
3034
- quoted = {}
3035
- connection = self.class.connection
3036
- attribute_names.each do |name|
3037
- if (column = column_for_attribute(name)) && (include_primary_key || !column.primary)
3038
- value = read_attribute(name)
3039
-
3040
- # We need explicit to_yaml because quote() does not properly convert Time/Date fields to YAML.
3041
- if value && self.class.serialized_attributes.has_key?(name) && (value.acts_like?(:date) || value.acts_like?(:time))
3042
- value = value.to_yaml
3043
- end
3044
-
3045
- quoted[name] = connection.quote(value, column)
3046
- end
3047
- end
3048
- include_readonly_attributes ? quoted : remove_readonly_attributes(quoted)
3049
- end
3050
-
3051
- # Quote strings appropriately for SQL statements.
3052
- def quote_value(value, column = nil)
3053
- self.class.connection.quote(value, column)
3054
- end
3055
-
3056
- # Interpolate custom SQL string in instance context.
3057
- # Optional record argument is meant for custom insert_sql.
3058
- def interpolate_sql(sql, record = nil)
3059
- instance_eval("%@#{sql.gsub('@', '\@')}@")
3060
- end
3061
-
3062
- # Initializes the attributes array with keys matching the columns from the linked table and
3063
- # the values matching the corresponding default value of that column, so
3064
- # that a new instance, or one populated from a passed-in Hash, still has all the attributes
3065
- # that instances loaded from the database would.
3066
- def attributes_from_column_definition
3067
- self.class.columns.inject({}) do |attributes, column|
3068
- attributes[column.name] = column.default unless column.name == self.class.primary_key
3069
- attributes
3070
- end
3071
- end
3072
-
3073
- # Instantiates objects for all attribute classes that needs more than one constructor parameter. This is done
3074
- # by calling new on the column type or aggregation type (through composed_of) object with these parameters.
3075
- # So having the pairs written_on(1) = "2004", written_on(2) = "6", written_on(3) = "24", will instantiate
3076
- # written_on (a date type) with Date.new("2004", "6", "24"). You can also specify a typecast character in the
3077
- # parentheses to have the parameters typecasted before they're used in the constructor. Use i for Fixnum, f for Float,
3078
- # s for String, and a for Array. If all the values for a given attribute are empty, the attribute will be set to nil.
3079
- def assign_multiparameter_attributes(pairs)
3080
- execute_callstack_for_multiparameter_attributes(
3081
- extract_callstack_for_multiparameter_attributes(pairs)
3082
- )
3083
- end
3084
-
3085
- def instantiate_time_object(name, values)
3086
- if self.class.send(:create_time_zone_conversion_attribute?, name, column_for_attribute(name))
3087
- Time.zone.local(*values)
3088
- else
3089
- Time.time_with_datetime_fallback(@@default_timezone, *values)
3090
- end
3091
- end
3092
-
3093
- def execute_callstack_for_multiparameter_attributes(callstack)
3094
- errors = []
3095
- callstack.each do |name, values_with_empty_parameters|
3096
- begin
3097
- klass = (self.class.reflect_on_aggregation(name.to_sym) || column_for_attribute(name)).klass
3098
- # in order to allow a date to be set without a year, we must keep the empty values.
3099
- # Otherwise, we wouldn't be able to distinguish it from a date with an empty day.
3100
- values = values_with_empty_parameters.reject(&:nil?)
3101
-
3102
- if values.empty?
3103
- send(name + "=", nil)
3104
- else
3105
-
3106
- value = if Time == klass
3107
- instantiate_time_object(name, values)
3108
- elsif Date == klass
3109
- begin
3110
- values = values_with_empty_parameters.collect do |v| v.nil? ? 1 : v end
3111
- Date.new(*values)
3112
- rescue ArgumentError => ex # if Date.new raises an exception on an invalid date
3113
- instantiate_time_object(name, values).to_date # we instantiate Time object and convert it back to a date thus using Time's logic in handling invalid dates
3114
- end
3115
- else
3116
- klass.new(*values)
3117
- end
3118
-
3119
- send(name + "=", value)
3120
- end
3121
- rescue => ex
3122
- errors << AttributeAssignmentError.new("error on assignment #{values.inspect} to #{name}", ex, name)
3123
- end
3124
- end
3125
- unless errors.empty?
3126
- raise MultiparameterAssignmentErrors.new(errors), "#{errors.size} error(s) on assignment of multiparameter attributes"
3127
- end
3128
- end
3129
-
3130
- def extract_callstack_for_multiparameter_attributes(pairs)
3131
- attributes = { }
3132
-
3133
- for pair in pairs
3134
- multiparameter_name, value = pair
3135
- attribute_name = multiparameter_name.split("(").first
3136
- attributes[attribute_name] = [] unless attributes.include?(attribute_name)
3137
-
3138
- parameter_value = value.empty? ? nil : type_cast_attribute_value(multiparameter_name, value)
3139
- attributes[attribute_name] << [ find_parameter_position(multiparameter_name), parameter_value ]
3140
- end
3141
-
3142
- attributes.each { |name, values| attributes[name] = values.sort_by{ |v| v.first }.collect { |v| v.last } }
3143
- end
3144
-
3145
- def type_cast_attribute_value(multiparameter_name, value)
3146
- multiparameter_name =~ /\([0-9]*([if])\)/ ? value.send("to_" + $1) : value
3147
- end
3148
-
3149
- def find_parameter_position(multiparameter_name)
3150
- multiparameter_name.scan(/\(([0-9]*).*\)/).first.first
3151
- end
3152
-
3153
- # Returns a comma-separated pair list, like "key1 = val1, key2 = val2".
3154
- def comma_pair_list(hash)
3155
- hash.map { |k,v| "#{k} = #{v}" }.join(", ")
3156
- end
3157
-
3158
- def quoted_column_names(attributes = attributes_with_quotes)
3159
- connection = self.class.connection
3160
- attributes.keys.collect do |column_name|
3161
- connection.quote_column_name(column_name)
3162
- end
3163
- end
3164
-
3165
- def self.quoted_table_name
3166
- self.connection.quote_table_name(self.table_name)
3167
- end
3168
-
3169
- def quote_columns(quoter, hash)
3170
- hash.inject({}) do |quoted, (name, value)|
3171
- quoted[quoter.quote_column_name(name)] = value
3172
- quoted
3173
- end
3174
- end
3175
-
3176
- def quoted_comma_pair_list(quoter, hash)
3177
- comma_pair_list(quote_columns(quoter, hash))
3178
- end
3179
-
3180
- def object_from_yaml(string)
3181
- return string unless string.is_a?(String) && string =~ /^---/
3182
- YAML::load(string) rescue string
3183
- end
3184
-
3185
- def clone_attributes(reader_method = :read_attribute, attributes = {})
3186
- self.attribute_names.inject(attributes) do |attrs, name|
3187
- attrs[name] = clone_attribute_value(reader_method, name)
3188
- attrs
3189
- end
3190
- end
3191
-
3192
- def clone_attribute_value(reader_method, attribute_name)
3193
- value = send(reader_method, attribute_name)
3194
- value.duplicable? ? value.clone : value
3195
- rescue TypeError, NoMethodError
3196
- value
3197
- end
3198
- end
3199
-
3200
- Base.class_eval do
3201
- extend QueryCache::ClassMethods
3202
- include Validations
3203
- include Locking::Optimistic, Locking::Pessimistic
3204
- include AttributeMethods
3205
- include Dirty
3206
- include Callbacks, Observing, Timestamp
3207
- include Associations, AssociationPreload, NamedScope
3208
-
3209
- # AutosaveAssociation needs to be included before Transactions, because we want
3210
- # #save_with_autosave_associations to be wrapped inside a transaction.
3211
- include AutosaveAssociation, NestedAttributes
3212
-
3213
- include Aggregations, Transactions, Reflection, Batches, Calculations, Serialization
3214
- end
3215
- end
3216
-
3217
- # TODO: Remove this and make it work with LAZY flag
3218
- require 'active_record/connection_adapters/abstract_adapter'