radiant 0.5.2 → 0.6.0

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 (1442) hide show
  1. data/CHANGELOG +70 -1
  2. data/CONTRIBUTORS +22 -5
  3. data/INSTALL +36 -0
  4. data/LICENSE +16 -4
  5. data/README +17 -54
  6. data/Rakefile +6 -5
  7. data/app/controllers/admin/{model_controller.rb → abstract_model_controller.rb} +32 -21
  8. data/app/controllers/admin/export_controller.rb +1 -3
  9. data/app/controllers/admin/extension_controller.rb +10 -0
  10. data/app/controllers/admin/layout_controller.rb +1 -3
  11. data/app/controllers/admin/page_controller.rb +58 -56
  12. data/app/controllers/admin/snippet_controller.rb +1 -4
  13. data/app/controllers/admin/user_controller.rb +3 -5
  14. data/app/controllers/admin/welcome_controller.rb +8 -10
  15. data/app/controllers/application.rb +13 -7
  16. data/app/controllers/site_controller.rb +14 -8
  17. data/app/helpers/admin/export_helper.rb +1 -1
  18. data/app/helpers/admin/extension_helper.rb +2 -0
  19. data/app/helpers/admin/page_helper.rb +29 -4
  20. data/app/helpers/application_helper.rb +30 -13
  21. data/app/models/archive_day_index_page.rb +28 -0
  22. data/app/models/archive_finder.rb +7 -4
  23. data/app/models/archive_month_index_page.rb +28 -0
  24. data/app/models/archive_page.rb +36 -0
  25. data/app/models/archive_year_index_page.rb +28 -0
  26. data/app/{behaviors/env_behavior.rb → models/env_dump_page.rb} +5 -6
  27. data/app/models/file_not_found_page.rb +28 -0
  28. data/app/models/layout.rb +4 -1
  29. data/app/models/page.rb +193 -30
  30. data/app/models/page_context.rb +6 -493
  31. data/app/models/page_part.rb +5 -1
  32. data/app/models/radiant/config.rb +18 -5
  33. data/app/models/radiant/extension_meta.rb +5 -0
  34. data/app/models/response_cache.rb +89 -28
  35. data/app/models/snippet.rb +5 -2
  36. data/app/models/standard_tags.rb +601 -0
  37. data/app/models/status.rb +2 -2
  38. data/app/models/text_filter.rb +20 -6
  39. data/app/models/user.rb +3 -0
  40. data/app/views/admin/extension/index.rhtml +45 -0
  41. data/app/views/admin/layout/{new.rhtml → edit.rhtml} +6 -4
  42. data/app/views/admin/layout/index.rhtml +3 -3
  43. data/app/views/admin/layout/remove.rhtml +1 -1
  44. data/app/views/admin/page/_meta_row.rhtml +4 -0
  45. data/app/views/admin/page/_node.rhtml +9 -9
  46. data/app/views/admin/page/_part.rhtml +3 -2
  47. data/app/views/admin/page/_tag_reference.rhtml +4 -0
  48. data/app/views/admin/page/{new.rhtml → edit.rhtml} +223 -164
  49. data/app/views/admin/page/filter_reference.rjs +5 -0
  50. data/app/views/admin/page/index.rhtml +3 -168
  51. data/app/views/admin/page/tag_reference.rjs +5 -0
  52. data/app/views/admin/snippet/{new.rhtml → edit.rhtml} +2 -1
  53. data/app/views/admin/snippet/index.rhtml +3 -3
  54. data/app/views/admin/user/{new.rhtml → edit.rhtml} +7 -1
  55. data/app/views/admin/user/index.rhtml +2 -2
  56. data/app/views/layouts/application.rhtml +45 -37
  57. data/bin/radiant +44 -421
  58. data/config/boot.rb +14 -60
  59. data/config/database.mysql.yml +5 -0
  60. data/config/database.postgresql.yml +5 -0
  61. data/config/database.sqlite.yml +11 -15
  62. data/config/database.sqlserver.yml +20 -0
  63. data/config/environment.rb +13 -18
  64. data/config/environments/production.rb +1 -3
  65. data/config/environments/test.rb +2 -0
  66. data/config/routes.rb +8 -0
  67. data/db/migrate/001_create_radiant_tables.rb +6 -6
  68. data/db/migrate/002_insert_initial_data.rb +5 -45
  69. data/db/migrate/006_integer_columns_to_boolean.rb +26 -1
  70. data/db/migrate/010_merge_behaviors_and_pages.rb +57 -0
  71. data/db/migrate/011_rename_type_column_on_page_to_class_name.rb +9 -0
  72. data/db/migrate/012_create_extension_meta.rb +13 -0
  73. data/db/migrate/013_add_notes_field_to_user.rb +9 -0
  74. data/db/migrate/014_rename_config_default_parts_key.rb +17 -0
  75. data/db/migrate/015_add_optimistic_locking.rb +15 -0
  76. data/db/schema.rb +54 -43
  77. data/db/templates/simple-blog.yml +3 -3
  78. data/db/templates/styled-blog.yml +3 -3
  79. data/lib/annotatable.rb +52 -0
  80. data/lib/archive_index_tags_and_methods.rb +57 -0
  81. data/lib/generators/extension/USAGE +28 -0
  82. data/lib/generators/extension/extension_generator.rb +38 -0
  83. data/lib/generators/extension/templates/README +3 -0
  84. data/lib/generators/extension/templates/Rakefile +25 -0
  85. data/lib/generators/extension/templates/extension.rb +21 -0
  86. data/lib/generators/extension/templates/functional_test.rb +15 -0
  87. data/lib/generators/extension/templates/migration.rb +9 -0
  88. data/lib/generators/extension/templates/tasks.rake +17 -0
  89. data/lib/generators/extension/templates/test_helper.rb +18 -0
  90. data/lib/generators/extension_controller/USAGE +34 -0
  91. data/lib/generators/extension_controller/extension_controller_generator.rb +26 -0
  92. data/lib/generators/extension_controller/templates/controller.rb +14 -0
  93. data/lib/generators/extension_controller/templates/functional_test.rb +17 -0
  94. data/lib/generators/extension_controller/templates/helper.rb +2 -0
  95. data/lib/generators/extension_controller/templates/view.rhtml +2 -0
  96. data/lib/generators/extension_model/USAGE +34 -0
  97. data/lib/generators/extension_model/extension_model_generator.rb +26 -0
  98. data/lib/generators/extension_model/templates/fixtures.yml +11 -0
  99. data/lib/generators/extension_model/templates/migration.rb +13 -0
  100. data/lib/generators/extension_model/templates/model.rb +2 -0
  101. data/lib/generators/extension_model/templates/unit_test.rb +10 -0
  102. data/lib/generators/instance/instance_generator.rb +116 -0
  103. data/lib/generators/instance/templates/databases/mysql.yml +47 -0
  104. data/lib/generators/instance/templates/databases/postgresql.yml +44 -0
  105. data/lib/generators/instance/templates/databases/sqlite3.yml +16 -0
  106. data/lib/generators/instance/templates/databases/sqlserver.yml +20 -0
  107. data/lib/generators/instance/templates/instance_boot.rb +41 -0
  108. data/lib/generators/instance/templates/instance_environment.rb +6 -0
  109. data/lib/generators/instance/templates/instance_generate +16 -0
  110. data/lib/generators/instance/templates/instance_rakefile +3 -0
  111. data/lib/generators/instance/templates/instance_routes.rb +1 -0
  112. data/lib/inheritable_class_attributes.rb +1 -1
  113. data/lib/login_system.rb +2 -2
  114. data/lib/method_observer.rb +50 -0
  115. data/lib/plugins/active_record_extensions/init.rb +1 -0
  116. data/lib/plugins/active_record_extensions/lib/active_record_extensions.rb +18 -0
  117. data/lib/plugins/extension_patches/init.rb +5 -0
  118. data/lib/plugins/extension_patches/lib/fixture_loading_extension.rb +49 -0
  119. data/lib/plugins/extension_patches/lib/generator_base_extension.rb +24 -0
  120. data/lib/plugins/extension_patches/lib/mailer_view_paths_extension.rb +88 -0
  121. data/lib/plugins/extension_patches/lib/routing_extension.rb +31 -0
  122. data/lib/plugins/extension_patches/lib/view_paths_extension.rb +23 -0
  123. data/lib/plugins/object_extensions/init.rb +1 -0
  124. data/lib/plugins/object_extensions/lib/object_extensions.rb +5 -0
  125. data/lib/plugins/response_cache_timeout/init.rb +3 -0
  126. data/lib/plugins/string_extensions/init.rb +1 -0
  127. data/lib/plugins/string_extensions/lib/string_extensions.rb +11 -0
  128. data/lib/radiant.rb +9 -3
  129. data/lib/radiant/admin_ui.rb +82 -0
  130. data/lib/radiant/extension.rb +77 -0
  131. data/lib/radiant/extension_loader.rb +107 -0
  132. data/lib/radiant/extension_migrator.rb +47 -0
  133. data/lib/radiant/initializer.rb +66 -0
  134. data/lib/radiant/setup.rb +209 -0
  135. data/lib/radiant/taggable.rb +74 -0
  136. data/lib/simpleton.rb +21 -0
  137. data/lib/tasks/database.rake +32 -0
  138. data/lib/tasks/environments.rake +11 -0
  139. data/lib/tasks/extensions.rake +27 -0
  140. data/lib/tasks/framework.rake +123 -0
  141. data/lib/tasks/instance.rake +23 -0
  142. data/lib/tasks/release.rake +27 -26
  143. data/lib/tasks/undefine.rake +24 -0
  144. data/log/.keep +0 -0
  145. data/public/images/{add-child.png → admin/add-child.png} +0 -0
  146. data/public/images/{brown-bottom-line.gif → admin/brown-bottom-line.gif} +0 -0
  147. data/public/images/{clear-page-cache.png → admin/clear-page-cache.png} +0 -0
  148. data/public/images/{collapse.png → admin/collapse.png} +0 -0
  149. data/public/images/{expand.png → admin/expand.png} +0 -0
  150. data/public/images/{layout.png → admin/layout.png} +0 -0
  151. data/public/images/{minus.png → admin/minus.png} +0 -0
  152. data/public/images/{new-homepage.png → admin/new-homepage.png} +0 -0
  153. data/public/images/{new-layout.png → admin/new-layout.png} +0 -0
  154. data/public/images/{new-snippet.png → admin/new-snippet.png} +0 -0
  155. data/public/images/{new-user.png → admin/new-user.png} +0 -0
  156. data/public/images/{page.png → admin/page.png} +0 -0
  157. data/public/images/{plus.png → admin/plus.png} +0 -0
  158. data/public/images/{remove-disabled.png → admin/remove-disabled.png} +0 -0
  159. data/public/images/{remove.png → admin/remove.png} +0 -0
  160. data/public/images/{snippet.png → admin/snippet.png} +0 -0
  161. data/public/images/{spinner.gif → admin/spinner.gif} +0 -0
  162. data/public/images/{view-site.gif → admin/view-site.gif} +0 -0
  163. data/public/images/{virtual-page.png → admin/virtual-page.png} +0 -0
  164. data/public/javascripts/controls.js +41 -23
  165. data/public/javascripts/dragdrop.js +105 -76
  166. data/public/javascripts/effects.js +293 -163
  167. data/public/javascripts/pngfix.js +1 -40
  168. data/public/javascripts/prototype.js +679 -300
  169. data/public/javascripts/sitemap.js +176 -0
  170. data/public/javascripts/tag_reference_search.js +30 -0
  171. data/public/stylesheets/{admin.css → admin/main.css} +167 -21
  172. data/script/process/inspector +3 -0
  173. data/test/fixtures/extensions/basic/app/controllers/basic_extension_controller.rb +7 -0
  174. data/test/fixtures/extensions/basic/app/models/basic_extension_mailer.rb +4 -0
  175. data/test/fixtures/extensions/basic/app/models/basic_extension_model.rb +2 -0
  176. data/test/fixtures/extensions/basic/app/views/basic_extension/index.rhtml +1 -0
  177. data/test/fixtures/extensions/basic/app/views/basic_extension/override.rhtml +1 -0
  178. data/test/fixtures/extensions/basic/app/views/basic_extension_mailer/message.rhtml +1 -0
  179. data/test/fixtures/extensions/basic/basic_extension.rb +17 -0
  180. data/test/fixtures/extensions/basic/db/migrate/001_create_initial_schema.rb +8 -0
  181. data/test/fixtures/extensions/basic/db/migrate/002_modify_initial_schema.rb +8 -0
  182. data/test/fixtures/extensions/overriding/app/views/basic_extension/override.rhtml +1 -0
  183. data/test/fixtures/extensions/overriding/overriding_extension.rb +11 -0
  184. data/test/fixtures/pages.yml +14 -12
  185. data/test/fixtures/sample.txt +1 -0
  186. data/test/fixtures/snippets.yml +9 -1
  187. data/test/functional/admin/abstract_model_controller_test.rb +125 -0
  188. data/test/functional/admin/export_controller_test.rb +3 -3
  189. data/test/functional/admin/extension_controller_test.rb +40 -0
  190. data/test/functional/admin/layout_controller_test.rb +3 -3
  191. data/test/functional/admin/page_controller_test.rb +54 -6
  192. data/test/functional/admin/user_controller_test.rb +6 -6
  193. data/test/functional/admin/welcome_controller_test.rb +6 -6
  194. data/test/functional/application_controller_test.rb +11 -11
  195. data/test/functional/extension_initialization_test.rb +94 -0
  196. data/test/functional/login_system_test.rb +45 -72
  197. data/test/functional/site_controller_test.rb +20 -13
  198. data/test/helpers/archive_index_test_helper.rb +2 -0
  199. data/test/helpers/extension_fixture_test_helper.rb +40 -0
  200. data/test/helpers/extension_tag_test_helper.rb +17 -0
  201. data/test/helpers/page_test_helper.rb +33 -1
  202. data/test/helpers/render_test_helper.rb +57 -0
  203. data/test/helpers/routing_test_helper.rb +19 -0
  204. data/test/test_helper.rb +26 -7
  205. data/test/unit/admin_ui_test.rb +93 -0
  206. data/test/unit/annotatable_test.rb +76 -0
  207. data/test/unit/{behaviors/archive_day_index_behavior_test.rb → archive_day_index_page_test.rb} +4 -3
  208. data/test/unit/{behaviors/archive_month_index_behavior_test.rb → archive_month_index_page_test.rb} +5 -4
  209. data/test/unit/{behaviors/archive_behavior_test.rb → archive_page_test.rb} +3 -2
  210. data/test/unit/{behaviors/archive_year_index_behavior_test.rb → archive_year_index_page_test.rb} +5 -4
  211. data/test/unit/extension_migrator_test.rb +17 -0
  212. data/test/unit/extension_test.rb +42 -0
  213. data/test/unit/{behaviors/page_missing_behavior_test.rb → file_not_found_page_test.rb} +4 -4
  214. data/test/unit/method_observer_test.rb +53 -0
  215. data/test/unit/page_context_test.rb +8 -356
  216. data/test/unit/page_test.rb +250 -64
  217. data/test/unit/radiant/config_test.rb +11 -0
  218. data/test/unit/radiant/taggable_test.rb +105 -0
  219. data/test/unit/response_cache_test.rb +69 -15
  220. data/test/unit/simpleton_test.rb +42 -0
  221. data/test/unit/standard_tags_test.rb +424 -0
  222. data/test/unit/text_filter_test.rb +31 -3
  223. data/test/unit/user_test.rb +1 -2
  224. data/vendor/bluecloth/CHANGES +366 -0
  225. data/vendor/bluecloth/LICENSE +340 -0
  226. data/vendor/bluecloth/README +99 -0
  227. data/vendor/bluecloth/bin/bluecloth +83 -0
  228. data/vendor/bluecloth/install.rb +150 -0
  229. data/vendor/bluecloth/lib/bluecloth.rb +1144 -0
  230. data/vendor/bluecloth/test.rb +117 -0
  231. data/vendor/bluecloth/tests/00_Class.tests.rb +71 -0
  232. data/vendor/bluecloth/tests/05_Markdown.tests.rb +1527 -0
  233. data/vendor/bluecloth/tests/10_Bug.tests.rb +57 -0
  234. data/vendor/bluecloth/tests/15_Contrib.tests.rb +132 -0
  235. data/vendor/bluecloth/tests/bctestcase.rb +274 -0
  236. data/vendor/bluecloth/tests/data/antsugar.txt +34 -0
  237. data/vendor/bluecloth/tests/data/ml-announce.txt +17 -0
  238. data/vendor/bluecloth/tests/data/re-overflow.txt +67 -0
  239. data/vendor/bluecloth/tests/data/re-overflow2.txt +281 -0
  240. data/vendor/bluecloth/utils.rb +553 -0
  241. data/vendor/extensions/markdown_filter/README +1 -0
  242. data/vendor/extensions/markdown_filter/Rakefile +25 -0
  243. data/vendor/extensions/markdown_filter/lib/markdown_filter.rb +9 -0
  244. data/vendor/extensions/markdown_filter/lib/smarty_pants_filter.rb +9 -0
  245. data/vendor/extensions/markdown_filter/lib/tasks/textile_filter_extension_tasks.rake +0 -0
  246. data/vendor/extensions/markdown_filter/markdown.html +123 -0
  247. data/vendor/extensions/markdown_filter/markdown_filter_extension.rb +10 -0
  248. data/vendor/extensions/markdown_filter/smartypants.html +47 -0
  249. data/vendor/extensions/markdown_filter/test/test_helper.rb +10 -0
  250. data/vendor/extensions/markdown_filter/test/unit/markdown_filter_test.rb +18 -0
  251. data/vendor/extensions/markdown_filter/test/unit/smarty_pants_filter_test.rb +14 -0
  252. data/vendor/extensions/textile_filter/README +1 -0
  253. data/vendor/extensions/textile_filter/Rakefile +25 -0
  254. data/vendor/extensions/textile_filter/lib/tasks/textile_filter_extension_tasks.rake +0 -0
  255. data/vendor/extensions/textile_filter/lib/textile_filter.rb +8 -0
  256. data/vendor/extensions/textile_filter/test/test_helper.rb +10 -0
  257. data/vendor/extensions/textile_filter/test/unit/textile_filter_test.rb +13 -0
  258. data/vendor/extensions/textile_filter/textile.html +115 -0
  259. data/vendor/extensions/textile_filter/textile_filter_extension.rb +9 -0
  260. data/vendor/highline/AUTHORS +2 -0
  261. data/vendor/highline/CHANGELOG +183 -0
  262. data/vendor/highline/COPYING +340 -0
  263. data/vendor/highline/INSTALL +35 -0
  264. data/vendor/highline/LICENSE +7 -0
  265. data/vendor/highline/README +63 -0
  266. data/vendor/highline/Rakefile +82 -0
  267. data/vendor/highline/TODO +6 -0
  268. data/vendor/highline/examples/ansi_colors.rb +38 -0
  269. data/vendor/highline/examples/asking_for_arrays.rb +18 -0
  270. data/vendor/highline/examples/basic_usage.rb +75 -0
  271. data/vendor/highline/examples/color_scheme.rb +32 -0
  272. data/vendor/highline/examples/menus.rb +65 -0
  273. data/vendor/highline/examples/overwrite.rb +19 -0
  274. data/vendor/highline/examples/page_and_wrap.rb +322 -0
  275. data/vendor/highline/examples/password.rb +7 -0
  276. data/vendor/highline/examples/trapping_eof.rb +22 -0
  277. data/vendor/highline/examples/using_readline.rb +17 -0
  278. data/vendor/highline/lib/highline.rb +704 -0
  279. data/vendor/highline/lib/highline/color_scheme.rb +120 -0
  280. data/vendor/highline/lib/highline/import.rb +43 -0
  281. data/vendor/highline/lib/highline/menu.rb +395 -0
  282. data/vendor/highline/lib/highline/question.rb +462 -0
  283. data/vendor/highline/lib/highline/system_extensions.rb +125 -0
  284. data/vendor/highline/setup.rb +1360 -0
  285. data/vendor/highline/site/highline.css +65 -0
  286. data/vendor/highline/site/images/logo.png +0 -0
  287. data/vendor/highline/site/index.html +59 -0
  288. data/vendor/highline/test/tc_color_scheme.rb +56 -0
  289. data/vendor/highline/test/tc_highline.rb +780 -0
  290. data/vendor/highline/test/tc_import.rb +54 -0
  291. data/vendor/highline/test/tc_menu.rb +429 -0
  292. data/vendor/highline/test/ts_all.rb +15 -0
  293. data/vendor/plugins/default_order/README +35 -0
  294. data/vendor/plugins/default_order/Rakefile +22 -0
  295. data/vendor/plugins/default_order/init.rb +1 -0
  296. data/vendor/plugins/default_order/lib/default_order.rb +32 -0
  297. data/vendor/plugins/default_order/test/default_order_test.rb +5 -0
  298. data/vendor/radius/CHANGELOG +25 -0
  299. data/vendor/radius/QUICKSTART +323 -0
  300. data/vendor/radius/README +97 -0
  301. data/vendor/radius/ROADMAP +12 -0
  302. data/vendor/radius/Rakefile +86 -0
  303. data/vendor/radius/lib/radius.rb +497 -0
  304. data/vendor/radius/test/radius_test.rb +321 -0
  305. data/vendor/rails/actionmailer/CHANGELOG +297 -0
  306. data/vendor/rails/actionmailer/MIT-LICENSE +21 -0
  307. data/vendor/rails/actionmailer/README +145 -0
  308. data/vendor/rails/actionmailer/Rakefile +95 -0
  309. data/vendor/rails/actionmailer/install.rb +30 -0
  310. data/vendor/rails/actionmailer/lib/action_mailer.rb +50 -0
  311. data/vendor/rails/actionmailer/lib/action_mailer/adv_attr_accessor.rb +30 -0
  312. data/vendor/rails/actionmailer/lib/action_mailer/base.rb +582 -0
  313. data/vendor/rails/actionmailer/lib/action_mailer/helpers.rb +111 -0
  314. data/vendor/rails/actionmailer/lib/action_mailer/mail_helper.rb +19 -0
  315. data/vendor/rails/actionmailer/lib/action_mailer/part.rb +113 -0
  316. data/vendor/rails/actionmailer/lib/action_mailer/part_container.rb +51 -0
  317. data/vendor/rails/actionmailer/lib/action_mailer/quoting.rb +59 -0
  318. data/vendor/rails/actionmailer/lib/action_mailer/utils.rb +8 -0
  319. data/vendor/rails/actionmailer/lib/action_mailer/vendor/text/format.rb +1466 -0
  320. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail.rb +3 -0
  321. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail/address.rb +242 -0
  322. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail/attachments.rb +39 -0
  323. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail/base64.rb +71 -0
  324. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail/config.rb +69 -0
  325. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail/encode.rb +467 -0
  326. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail/facade.rb +552 -0
  327. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail/header.rb +914 -0
  328. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail/info.rb +35 -0
  329. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail/loader.rb +1 -0
  330. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail/mail.rb +447 -0
  331. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail/mailbox.rb +433 -0
  332. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail/mbox.rb +1 -0
  333. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail/net.rb +280 -0
  334. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail/obsolete.rb +135 -0
  335. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail/parser.rb +1522 -0
  336. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail/port.rb +377 -0
  337. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail/quoting.rb +131 -0
  338. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail/scanner.rb +41 -0
  339. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail/scanner_r.rb +263 -0
  340. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail/stringio.rb +277 -0
  341. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail/tmail.rb +1 -0
  342. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail/utils.rb +238 -0
  343. data/vendor/rails/actionmailer/lib/action_mailer/version.rb +9 -0
  344. data/vendor/rails/actionmailer/test/abstract_unit.rb +30 -0
  345. data/vendor/rails/actionmailer/test/fixtures/first_mailer/share.rhtml +1 -0
  346. data/vendor/rails/actionmailer/test/fixtures/helper_mailer/use_helper.rhtml +1 -0
  347. data/vendor/rails/actionmailer/test/fixtures/helper_mailer/use_helper_method.rhtml +1 -0
  348. data/vendor/rails/actionmailer/test/fixtures/helper_mailer/use_mail_helper.rhtml +5 -0
  349. data/vendor/rails/actionmailer/test/fixtures/helper_mailer/use_test_helper.rhtml +1 -0
  350. data/vendor/rails/actionmailer/test/fixtures/helpers/test_helper.rb +5 -0
  351. data/vendor/rails/actionmailer/test/fixtures/path.with.dots/funky_path_mailer/multipart_with_template_path_with_dots.rhtml +1 -0
  352. data/vendor/rails/actionmailer/test/fixtures/path.with.dots/multipart_with_template_path_with_dots.rhtml +0 -0
  353. data/vendor/rails/actionmailer/test/fixtures/raw_email +14 -0
  354. data/vendor/rails/actionmailer/test/fixtures/raw_email10 +20 -0
  355. data/vendor/rails/actionmailer/test/fixtures/raw_email11 +34 -0
  356. data/vendor/rails/actionmailer/test/fixtures/raw_email12 +32 -0
  357. data/vendor/rails/actionmailer/test/fixtures/raw_email13 +29 -0
  358. data/vendor/rails/actionmailer/test/fixtures/raw_email2 +114 -0
  359. data/vendor/rails/actionmailer/test/fixtures/raw_email3 +70 -0
  360. data/vendor/rails/actionmailer/test/fixtures/raw_email4 +59 -0
  361. data/vendor/rails/actionmailer/test/fixtures/raw_email5 +19 -0
  362. data/vendor/rails/actionmailer/test/fixtures/raw_email6 +20 -0
  363. data/vendor/rails/actionmailer/test/fixtures/raw_email7 +66 -0
  364. data/vendor/rails/actionmailer/test/fixtures/raw_email8 +47 -0
  365. data/vendor/rails/actionmailer/test/fixtures/raw_email9 +28 -0
  366. data/vendor/rails/actionmailer/test/fixtures/raw_email_quoted_with_0d0a +14 -0
  367. data/vendor/rails/actionmailer/test/fixtures/raw_email_with_partially_quoted_subject +14 -0
  368. data/vendor/rails/actionmailer/test/fixtures/second_mailer/share.rhtml +1 -0
  369. data/vendor/rails/actionmailer/test/fixtures/templates/signed_up.rhtml +3 -0
  370. data/vendor/rails/actionmailer/test/fixtures/test_mailer/implicitly_multipart_example.ignored.rhtml +1 -0
  371. data/vendor/rails/actionmailer/test/fixtures/test_mailer/implicitly_multipart_example.text.html.rhtml +10 -0
  372. data/vendor/rails/actionmailer/test/fixtures/test_mailer/implicitly_multipart_example.text.plain.rhtml +2 -0
  373. data/vendor/rails/actionmailer/test/fixtures/test_mailer/implicitly_multipart_example.text.yaml.rhtml +1 -0
  374. data/vendor/rails/actionmailer/test/fixtures/test_mailer/signed_up.rhtml +3 -0
  375. data/vendor/rails/actionmailer/test/fixtures/test_mailer/signed_up_with_url.rhtml +3 -0
  376. data/vendor/rails/actionmailer/test/mail_helper_test.rb +91 -0
  377. data/vendor/rails/actionmailer/test/mail_render_test.rb +79 -0
  378. data/vendor/rails/actionmailer/test/mail_service_test.rb +816 -0
  379. data/vendor/rails/actionmailer/test/quoting_test.rb +57 -0
  380. data/vendor/rails/actionmailer/test/tmail_test.rb +13 -0
  381. data/vendor/rails/actionmailer/test/url_test.rb +68 -0
  382. data/vendor/rails/actionpack/CHANGELOG +3138 -0
  383. data/vendor/rails/actionpack/MIT-LICENSE +21 -0
  384. data/vendor/rails/actionpack/README +469 -0
  385. data/vendor/rails/actionpack/RUNNING_UNIT_TESTS +25 -0
  386. data/vendor/rails/actionpack/Rakefile +154 -0
  387. data/vendor/rails/actionpack/examples/address_book/index.rhtml +33 -0
  388. data/vendor/rails/actionpack/examples/address_book/layout.rhtml +8 -0
  389. data/vendor/rails/actionpack/examples/address_book_controller.cgi +9 -0
  390. data/vendor/rails/actionpack/examples/address_book_controller.fcgi +6 -0
  391. data/vendor/rails/actionpack/examples/address_book_controller.rb +52 -0
  392. data/vendor/rails/actionpack/examples/address_book_controller.rbx +4 -0
  393. data/vendor/rails/actionpack/examples/benchmark.rb +52 -0
  394. data/vendor/rails/actionpack/examples/benchmark_with_ar.fcgi +89 -0
  395. data/vendor/rails/actionpack/examples/blog_controller.cgi +53 -0
  396. data/vendor/rails/actionpack/examples/debate/index.rhtml +14 -0
  397. data/vendor/rails/actionpack/examples/debate/new_topic.rhtml +22 -0
  398. data/vendor/rails/actionpack/examples/debate/topic.rhtml +32 -0
  399. data/vendor/rails/actionpack/examples/debate_controller.cgi +57 -0
  400. data/vendor/rails/actionpack/install.rb +30 -0
  401. data/vendor/rails/actionpack/lib/action_controller.rb +83 -0
  402. data/vendor/rails/actionpack/lib/action_controller/assertions.rb +82 -0
  403. data/vendor/rails/actionpack/lib/action_controller/assertions/deprecated_assertions.rb +228 -0
  404. data/vendor/rails/actionpack/lib/action_controller/assertions/dom_assertions.rb +25 -0
  405. data/vendor/rails/actionpack/lib/action_controller/assertions/model_assertions.rb +12 -0
  406. data/vendor/rails/actionpack/lib/action_controller/assertions/response_assertions.rb +140 -0
  407. data/vendor/rails/actionpack/lib/action_controller/assertions/routing_assertions.rb +98 -0
  408. data/vendor/rails/actionpack/lib/action_controller/assertions/selector_assertions.rb +571 -0
  409. data/vendor/rails/actionpack/lib/action_controller/assertions/tag_assertions.rb +117 -0
  410. data/vendor/rails/actionpack/lib/action_controller/base.rb +1231 -0
  411. data/vendor/rails/actionpack/lib/action_controller/benchmarking.rb +89 -0
  412. data/vendor/rails/actionpack/lib/action_controller/caching.rb +616 -0
  413. data/vendor/rails/actionpack/lib/action_controller/cgi_ext/cgi_ext.rb +36 -0
  414. data/vendor/rails/actionpack/lib/action_controller/cgi_ext/cgi_methods.rb +211 -0
  415. data/vendor/rails/actionpack/lib/action_controller/cgi_ext/cookie_performance_fix.rb +125 -0
  416. data/vendor/rails/actionpack/lib/action_controller/cgi_ext/raw_post_data_fix.rb +95 -0
  417. data/vendor/rails/actionpack/lib/action_controller/cgi_ext/session_performance_fix.rb +30 -0
  418. data/vendor/rails/actionpack/lib/action_controller/cgi_process.rb +231 -0
  419. data/vendor/rails/actionpack/lib/action_controller/components.rb +182 -0
  420. data/vendor/rails/actionpack/lib/action_controller/cookies.rb +78 -0
  421. data/vendor/rails/actionpack/lib/action_controller/deprecated_dependencies.rb +65 -0
  422. data/vendor/rails/actionpack/lib/action_controller/deprecated_redirects.rb +17 -0
  423. data/vendor/rails/actionpack/lib/action_controller/deprecated_request_methods.rb +34 -0
  424. data/vendor/rails/actionpack/lib/action_controller/filters.rb +667 -0
  425. data/vendor/rails/actionpack/lib/action_controller/flash.rb +182 -0
  426. data/vendor/rails/actionpack/lib/action_controller/helpers.rb +131 -0
  427. data/vendor/rails/actionpack/lib/action_controller/integration.rb +552 -0
  428. data/vendor/rails/actionpack/lib/action_controller/layout.rb +313 -0
  429. data/vendor/rails/actionpack/lib/action_controller/macros/auto_complete.rb +53 -0
  430. data/vendor/rails/actionpack/lib/action_controller/macros/in_place_editing.rb +33 -0
  431. data/vendor/rails/actionpack/lib/action_controller/mime_responds.rb +181 -0
  432. data/vendor/rails/actionpack/lib/action_controller/mime_type.rb +200 -0
  433. data/vendor/rails/actionpack/lib/action_controller/pagination.rb +402 -0
  434. data/vendor/rails/actionpack/lib/action_controller/request.rb +265 -0
  435. data/vendor/rails/actionpack/lib/action_controller/rescue.rb +142 -0
  436. data/vendor/rails/actionpack/lib/action_controller/resources.rb +405 -0
  437. data/vendor/rails/actionpack/lib/action_controller/response.rb +35 -0
  438. data/vendor/rails/actionpack/lib/action_controller/routing.rb +1340 -0
  439. data/vendor/rails/actionpack/lib/action_controller/scaffolding.rb +189 -0
  440. data/vendor/rails/actionpack/lib/action_controller/session/active_record_store.rb +335 -0
  441. data/vendor/rails/actionpack/lib/action_controller/session/drb_server.rb +32 -0
  442. data/vendor/rails/actionpack/lib/action_controller/session/drb_store.rb +35 -0
  443. data/vendor/rails/actionpack/lib/action_controller/session/mem_cache_store.rb +105 -0
  444. data/vendor/rails/actionpack/lib/action_controller/session_management.rb +142 -0
  445. data/vendor/rails/actionpack/lib/action_controller/status_codes.rb +88 -0
  446. data/vendor/rails/actionpack/lib/action_controller/streaming.rb +138 -0
  447. data/vendor/rails/actionpack/lib/action_controller/templates/rescues/_request_and_response.rhtml +44 -0
  448. data/vendor/rails/actionpack/lib/action_controller/templates/rescues/_trace.rhtml +26 -0
  449. data/vendor/rails/actionpack/lib/action_controller/templates/rescues/diagnostics.rhtml +11 -0
  450. data/vendor/rails/actionpack/lib/action_controller/templates/rescues/layout.rhtml +29 -0
  451. data/vendor/rails/actionpack/lib/action_controller/templates/rescues/missing_template.rhtml +2 -0
  452. data/vendor/rails/actionpack/lib/action_controller/templates/rescues/routing_error.rhtml +10 -0
  453. data/vendor/rails/actionpack/lib/action_controller/templates/rescues/template_error.rhtml +21 -0
  454. data/vendor/rails/actionpack/lib/action_controller/templates/rescues/unknown_action.rhtml +2 -0
  455. data/vendor/rails/actionpack/lib/action_controller/templates/scaffolds/edit.rhtml +7 -0
  456. data/vendor/rails/actionpack/lib/action_controller/templates/scaffolds/layout.rhtml +69 -0
  457. data/vendor/rails/actionpack/lib/action_controller/templates/scaffolds/list.rhtml +27 -0
  458. data/vendor/rails/actionpack/lib/action_controller/templates/scaffolds/new.rhtml +6 -0
  459. data/vendor/rails/actionpack/lib/action_controller/templates/scaffolds/show.rhtml +9 -0
  460. data/vendor/rails/actionpack/lib/action_controller/test_process.rb +504 -0
  461. data/vendor/rails/actionpack/lib/action_controller/url_rewriter.rb +108 -0
  462. data/vendor/rails/actionpack/lib/action_controller/vendor/html-scanner/html/node.rb +530 -0
  463. data/vendor/rails/actionpack/lib/action_controller/vendor/html-scanner/html/selector.rb +823 -0
  464. data/vendor/rails/actionpack/lib/action_controller/vendor/html-scanner/html/tokenizer.rb +105 -0
  465. data/vendor/rails/actionpack/lib/action_controller/vendor/html-scanner/html/version.rb +11 -0
  466. data/vendor/rails/actionpack/lib/action_controller/vendor/xml_node.rb +97 -0
  467. data/vendor/rails/actionpack/lib/action_controller/verification.rb +107 -0
  468. data/vendor/rails/actionpack/lib/action_pack.rb +24 -0
  469. data/vendor/rails/actionpack/lib/action_pack/version.rb +9 -0
  470. data/vendor/rails/actionpack/lib/action_view.rb +32 -0
  471. data/vendor/rails/actionpack/lib/action_view/base.rb +538 -0
  472. data/vendor/rails/actionpack/lib/action_view/compiled_templates.rb +70 -0
  473. data/vendor/rails/actionpack/lib/action_view/helpers/active_record_helper.rb +237 -0
  474. data/vendor/rails/actionpack/lib/action_view/helpers/asset_tag_helper.rb +218 -0
  475. data/vendor/rails/actionpack/lib/action_view/helpers/benchmark_helper.rb +24 -0
  476. data/vendor/rails/actionpack/lib/action_view/helpers/cache_helper.rb +10 -0
  477. data/vendor/rails/actionpack/lib/action_view/helpers/capture_helper.rb +128 -0
  478. data/vendor/rails/actionpack/lib/action_view/helpers/date_helper.rb +429 -0
  479. data/vendor/rails/actionpack/lib/action_view/helpers/debug_helper.rb +17 -0
  480. data/vendor/rails/actionpack/lib/action_view/helpers/deprecated_helper.rb +34 -0
  481. data/vendor/rails/actionpack/lib/action_view/helpers/form_helper.rb +446 -0
  482. data/vendor/rails/actionpack/lib/action_view/helpers/form_options_helper.rb +363 -0
  483. data/vendor/rails/actionpack/lib/action_view/helpers/form_tag_helper.rb +176 -0
  484. data/vendor/rails/actionpack/lib/action_view/helpers/java_script_macros_helper.rb +233 -0
  485. data/vendor/rails/actionpack/lib/action_view/helpers/javascript_helper.rb +193 -0
  486. data/vendor/rails/actionpack/lib/action_view/helpers/javascripts/controls.js +833 -0
  487. data/vendor/rails/actionpack/lib/action_view/helpers/javascripts/dragdrop.js +942 -0
  488. data/vendor/rails/actionpack/lib/action_view/helpers/javascripts/effects.js +1088 -0
  489. data/vendor/rails/actionpack/lib/action_view/helpers/javascripts/prototype.js +2515 -0
  490. data/vendor/rails/actionpack/lib/action_view/helpers/number_helper.rb +155 -0
  491. data/vendor/rails/actionpack/lib/action_view/helpers/pagination_helper.rb +86 -0
  492. data/vendor/rails/actionpack/lib/action_view/helpers/prototype_helper.rb +876 -0
  493. data/vendor/rails/actionpack/lib/action_view/helpers/scriptaculous_helper.rb +140 -0
  494. data/vendor/rails/actionpack/lib/action_view/helpers/tag_helper.rb +103 -0
  495. data/vendor/rails/actionpack/lib/action_view/helpers/text_helper.rb +406 -0
  496. data/vendor/rails/actionpack/lib/action_view/helpers/url_helper.rb +406 -0
  497. data/vendor/rails/actionpack/lib/action_view/partials.rb +128 -0
  498. data/vendor/rails/actionpack/lib/action_view/template_error.rb +110 -0
  499. data/vendor/rails/actionpack/test/abstract_unit.rb +16 -0
  500. data/vendor/rails/actionpack/test/active_record_unit.rb +116 -0
  501. data/vendor/rails/actionpack/test/activerecord/active_record_assertions_test.rb +92 -0
  502. data/vendor/rails/actionpack/test/activerecord/active_record_store_test.rb +142 -0
  503. data/vendor/rails/actionpack/test/activerecord/pagination_test.rb +156 -0
  504. data/vendor/rails/actionpack/test/controller/action_pack_assertions_test.rb +610 -0
  505. data/vendor/rails/actionpack/test/controller/addresses_render_test.rb +45 -0
  506. data/vendor/rails/actionpack/test/controller/assert_select_test.rb +576 -0
  507. data/vendor/rails/actionpack/test/controller/base_test.rb +136 -0
  508. data/vendor/rails/actionpack/test/controller/benchmark_test.rb +33 -0
  509. data/vendor/rails/actionpack/test/controller/caching_test.rb +228 -0
  510. data/vendor/rails/actionpack/test/controller/capture_test.rb +82 -0
  511. data/vendor/rails/actionpack/test/controller/cgi_test.rb +440 -0
  512. data/vendor/rails/actionpack/test/controller/components_test.rb +151 -0
  513. data/vendor/rails/actionpack/test/controller/content_type_test.rb +139 -0
  514. data/vendor/rails/actionpack/test/controller/controller_fixtures/app/controllers/admin/user_controller.rb +0 -0
  515. data/vendor/rails/actionpack/test/controller/controller_fixtures/app/controllers/user_controller.rb +0 -0
  516. data/vendor/rails/actionpack/test/controller/controller_fixtures/vendor/plugins/bad_plugin/lib/plugin_controller.rb +0 -0
  517. data/vendor/rails/actionpack/test/controller/cookie_test.rb +88 -0
  518. data/vendor/rails/actionpack/test/controller/custom_handler_test.rb +41 -0
  519. data/vendor/rails/actionpack/test/controller/deprecated_instance_variables_test.rb +48 -0
  520. data/vendor/rails/actionpack/test/controller/deprecation/deprecated_base_methods_test.rb +60 -0
  521. data/vendor/rails/actionpack/test/controller/fake_controllers.rb +16 -0
  522. data/vendor/rails/actionpack/test/controller/filter_params_test.rb +42 -0
  523. data/vendor/rails/actionpack/test/controller/filters_test.rb +695 -0
  524. data/vendor/rails/actionpack/test/controller/flash_test.rb +102 -0
  525. data/vendor/rails/actionpack/test/controller/fragment_store_setting_test.rb +45 -0
  526. data/vendor/rails/actionpack/test/controller/helper_test.rb +187 -0
  527. data/vendor/rails/actionpack/test/controller/integration_test.rb +154 -0
  528. data/vendor/rails/actionpack/test/controller/layout_test.rb +187 -0
  529. data/vendor/rails/actionpack/test/controller/mime_responds_test.rb +351 -0
  530. data/vendor/rails/actionpack/test/controller/mime_type_test.rb +33 -0
  531. data/vendor/rails/actionpack/test/controller/new_render_test.rb +750 -0
  532. data/vendor/rails/actionpack/test/controller/raw_post_test.rb +68 -0
  533. data/vendor/rails/actionpack/test/controller/redirect_test.rb +156 -0
  534. data/vendor/rails/actionpack/test/controller/render_test.rb +293 -0
  535. data/vendor/rails/actionpack/test/controller/request_test.rb +317 -0
  536. data/vendor/rails/actionpack/test/controller/resources_test.rb +482 -0
  537. data/vendor/rails/actionpack/test/controller/routing_test.rb +1801 -0
  538. data/vendor/rails/actionpack/test/controller/selector_test.rb +628 -0
  539. data/vendor/rails/actionpack/test/controller/send_file_test.rb +117 -0
  540. data/vendor/rails/actionpack/test/controller/session_management_test.rb +156 -0
  541. data/vendor/rails/actionpack/test/controller/test_test.rb +495 -0
  542. data/vendor/rails/actionpack/test/controller/url_rewriter_test.rb +115 -0
  543. data/vendor/rails/actionpack/test/controller/verification_test.rb +227 -0
  544. data/vendor/rails/actionpack/test/controller/webservice_test.rb +248 -0
  545. data/vendor/rails/actionpack/test/fixtures/addresses/list.rhtml +1 -0
  546. data/vendor/rails/actionpack/test/fixtures/companies.yml +24 -0
  547. data/vendor/rails/actionpack/test/fixtures/company.rb +9 -0
  548. data/vendor/rails/actionpack/test/fixtures/content_type/render_default_content_types_for_respond_to.rhtml +1 -0
  549. data/vendor/rails/actionpack/test/fixtures/content_type/render_default_for_rhtml.rhtml +1 -0
  550. data/vendor/rails/actionpack/test/fixtures/content_type/render_default_for_rjs.rjs +1 -0
  551. data/vendor/rails/actionpack/test/fixtures/content_type/render_default_for_rxml.rxml +1 -0
  552. data/vendor/rails/actionpack/test/fixtures/db_definitions/sqlite.sql +42 -0
  553. data/vendor/rails/actionpack/test/fixtures/deprecated_instance_variables/_cookies_ivar.rhtml +1 -0
  554. data/vendor/rails/actionpack/test/fixtures/deprecated_instance_variables/_cookies_method.rhtml +1 -0
  555. data/vendor/rails/actionpack/test/fixtures/deprecated_instance_variables/_flash_ivar.rhtml +1 -0
  556. data/vendor/rails/actionpack/test/fixtures/deprecated_instance_variables/_flash_method.rhtml +1 -0
  557. data/vendor/rails/actionpack/test/fixtures/deprecated_instance_variables/_headers_ivar.rhtml +1 -0
  558. data/vendor/rails/actionpack/test/fixtures/deprecated_instance_variables/_headers_method.rhtml +1 -0
  559. data/vendor/rails/actionpack/test/fixtures/deprecated_instance_variables/_params_ivar.rhtml +1 -0
  560. data/vendor/rails/actionpack/test/fixtures/deprecated_instance_variables/_params_method.rhtml +1 -0
  561. data/vendor/rails/actionpack/test/fixtures/deprecated_instance_variables/_request_ivar.rhtml +1 -0
  562. data/vendor/rails/actionpack/test/fixtures/deprecated_instance_variables/_request_method.rhtml +1 -0
  563. data/vendor/rails/actionpack/test/fixtures/deprecated_instance_variables/_response_ivar.rhtml +1 -0
  564. data/vendor/rails/actionpack/test/fixtures/deprecated_instance_variables/_response_method.rhtml +1 -0
  565. data/vendor/rails/actionpack/test/fixtures/deprecated_instance_variables/_session_ivar.rhtml +1 -0
  566. data/vendor/rails/actionpack/test/fixtures/deprecated_instance_variables/_session_method.rhtml +1 -0
  567. data/vendor/rails/actionpack/test/fixtures/developer.rb +7 -0
  568. data/vendor/rails/actionpack/test/fixtures/developers.yml +21 -0
  569. data/vendor/rails/actionpack/test/fixtures/developers_projects.yml +13 -0
  570. data/vendor/rails/actionpack/test/fixtures/fun/games/hello_world.rhtml +1 -0
  571. data/vendor/rails/actionpack/test/fixtures/helpers/abc_helper.rb +5 -0
  572. data/vendor/rails/actionpack/test/fixtures/helpers/fun/games_helper.rb +3 -0
  573. data/vendor/rails/actionpack/test/fixtures/helpers/fun/pdf_helper.rb +3 -0
  574. data/vendor/rails/actionpack/test/fixtures/layout_tests/layouts/controller_name_space/nested.rhtml +1 -0
  575. data/vendor/rails/actionpack/test/fixtures/layout_tests/layouts/item.rhtml +1 -0
  576. data/vendor/rails/actionpack/test/fixtures/layout_tests/layouts/layout_test.rhtml +1 -0
  577. data/vendor/rails/actionpack/test/fixtures/layout_tests/layouts/third_party_template_library.mab +1 -0
  578. data/vendor/rails/actionpack/test/fixtures/layout_tests/views/hello.rhtml +1 -0
  579. data/vendor/rails/actionpack/test/fixtures/layouts/builder.rxml +3 -0
  580. data/vendor/rails/actionpack/test/fixtures/layouts/standard.rhtml +1 -0
  581. data/vendor/rails/actionpack/test/fixtures/layouts/talk_from_action.rhtml +2 -0
  582. data/vendor/rails/actionpack/test/fixtures/layouts/yield.rhtml +2 -0
  583. data/vendor/rails/actionpack/test/fixtures/multipart/binary_file +0 -0
  584. data/vendor/rails/actionpack/test/fixtures/multipart/large_text_file +10 -0
  585. data/vendor/rails/actionpack/test/fixtures/multipart/mixed_files +0 -0
  586. data/vendor/rails/actionpack/test/fixtures/multipart/mona_lisa.jpg +0 -0
  587. data/vendor/rails/actionpack/test/fixtures/multipart/single_parameter +5 -0
  588. data/vendor/rails/actionpack/test/fixtures/multipart/text_file +10 -0
  589. data/vendor/rails/actionpack/test/fixtures/project.rb +3 -0
  590. data/vendor/rails/actionpack/test/fixtures/projects.yml +7 -0
  591. data/vendor/rails/actionpack/test/fixtures/public/images/rails.png +0 -0
  592. data/vendor/rails/actionpack/test/fixtures/public/javascripts/application.js +1 -0
  593. data/vendor/rails/actionpack/test/fixtures/replies.yml +13 -0
  594. data/vendor/rails/actionpack/test/fixtures/reply.rb +5 -0
  595. data/vendor/rails/actionpack/test/fixtures/respond_to/all_types_with_layout.rhtml +1 -0
  596. data/vendor/rails/actionpack/test/fixtures/respond_to/all_types_with_layout.rjs +1 -0
  597. data/vendor/rails/actionpack/test/fixtures/respond_to/layouts/standard.rhtml +1 -0
  598. data/vendor/rails/actionpack/test/fixtures/respond_to/using_defaults.rhtml +1 -0
  599. data/vendor/rails/actionpack/test/fixtures/respond_to/using_defaults.rjs +1 -0
  600. data/vendor/rails/actionpack/test/fixtures/respond_to/using_defaults.rxml +1 -0
  601. data/vendor/rails/actionpack/test/fixtures/respond_to/using_defaults_with_type_list.rhtml +1 -0
  602. data/vendor/rails/actionpack/test/fixtures/respond_to/using_defaults_with_type_list.rjs +1 -0
  603. data/vendor/rails/actionpack/test/fixtures/respond_to/using_defaults_with_type_list.rxml +1 -0
  604. data/vendor/rails/actionpack/test/fixtures/scope/test/modgreet.rhtml +1 -0
  605. data/vendor/rails/actionpack/test/fixtures/test/_customer.rhtml +1 -0
  606. data/vendor/rails/actionpack/test/fixtures/test/_customer_greeting.rhtml +1 -0
  607. data/vendor/rails/actionpack/test/fixtures/test/_hash_object.rhtml +1 -0
  608. data/vendor/rails/actionpack/test/fixtures/test/_hello.rxml +1 -0
  609. data/vendor/rails/actionpack/test/fixtures/test/_partial_only.rhtml +1 -0
  610. data/vendor/rails/actionpack/test/fixtures/test/_person.rhtml +2 -0
  611. data/vendor/rails/actionpack/test/fixtures/test/action_talk_to_layout.rhtml +2 -0
  612. data/vendor/rails/actionpack/test/fixtures/test/block_content_for.rhtml +2 -0
  613. data/vendor/rails/actionpack/test/fixtures/test/capturing.rhtml +4 -0
  614. data/vendor/rails/actionpack/test/fixtures/test/content_for.rhtml +2 -0
  615. data/vendor/rails/actionpack/test/fixtures/test/delete_with_js.rjs +2 -0
  616. data/vendor/rails/actionpack/test/fixtures/test/dot.directory/render_file_with_ivar.rhtml +1 -0
  617. data/vendor/rails/actionpack/test/fixtures/test/enum_rjs_test.rjs +6 -0
  618. data/vendor/rails/actionpack/test/fixtures/test/erb_content_for.rhtml +2 -0
  619. data/vendor/rails/actionpack/test/fixtures/test/greeting.rhtml +1 -0
  620. data/vendor/rails/actionpack/test/fixtures/test/hello.rxml +4 -0
  621. data/vendor/rails/actionpack/test/fixtures/test/hello_world.rhtml +1 -0
  622. data/vendor/rails/actionpack/test/fixtures/test/hello_world.rxml +3 -0
  623. data/vendor/rails/actionpack/test/fixtures/test/hello_world_container.rxml +3 -0
  624. data/vendor/rails/actionpack/test/fixtures/test/hello_world_with_layout_false.rhtml +1 -0
  625. data/vendor/rails/actionpack/test/fixtures/test/hello_xml_world.rxml +11 -0
  626. data/vendor/rails/actionpack/test/fixtures/test/list.rhtml +1 -0
  627. data/vendor/rails/actionpack/test/fixtures/test/non_erb_block_content_for.rxml +4 -0
  628. data/vendor/rails/actionpack/test/fixtures/test/potential_conflicts.rhtml +4 -0
  629. data/vendor/rails/actionpack/test/fixtures/test/render_file_with_ivar.rhtml +1 -0
  630. data/vendor/rails/actionpack/test/fixtures/test/render_file_with_locals.rhtml +1 -0
  631. data/vendor/rails/actionpack/test/fixtures/test/render_to_string_test.rhtml +1 -0
  632. data/vendor/rails/actionpack/test/fixtures/test/update_element_with_capture.rhtml +9 -0
  633. data/vendor/rails/actionpack/test/fixtures/topic.rb +3 -0
  634. data/vendor/rails/actionpack/test/fixtures/topics.yml +22 -0
  635. data/vendor/rails/actionpack/test/template/active_record_helper_test.rb +204 -0
  636. data/vendor/rails/actionpack/test/template/asset_tag_helper_test.rb +232 -0
  637. data/vendor/rails/actionpack/test/template/benchmark_helper_test.rb +72 -0
  638. data/vendor/rails/actionpack/test/template/compiled_templates_test.rb +135 -0
  639. data/vendor/rails/actionpack/test/template/date_helper_test.rb +1322 -0
  640. data/vendor/rails/actionpack/test/template/deprecated_helper_test.rb +36 -0
  641. data/vendor/rails/actionpack/test/template/deprecated_instance_variables_test.rb +43 -0
  642. data/vendor/rails/actionpack/test/template/form_helper_test.rb +499 -0
  643. data/vendor/rails/actionpack/test/template/form_options_helper_test.rb +489 -0
  644. data/vendor/rails/actionpack/test/template/form_tag_helper_test.rb +172 -0
  645. data/vendor/rails/actionpack/test/template/java_script_macros_helper_test.rb +109 -0
  646. data/vendor/rails/actionpack/test/template/javascript_helper_test.rb +67 -0
  647. data/vendor/rails/actionpack/test/template/number_helper_test.rb +92 -0
  648. data/vendor/rails/actionpack/test/template/prototype_helper_test.rb +466 -0
  649. data/vendor/rails/actionpack/test/template/scriptaculous_helper_test.rb +90 -0
  650. data/vendor/rails/actionpack/test/template/tag_helper_test.rb +69 -0
  651. data/vendor/rails/actionpack/test/template/text_helper_test.rb +349 -0
  652. data/vendor/rails/actionpack/test/template/url_helper_test.rb +366 -0
  653. data/vendor/rails/actionpack/test/testing_sandbox.rb +11 -0
  654. data/vendor/rails/actionwebservice/CHANGELOG +279 -0
  655. data/vendor/rails/actionwebservice/MIT-LICENSE +21 -0
  656. data/vendor/rails/actionwebservice/README +364 -0
  657. data/vendor/rails/actionwebservice/Rakefile +171 -0
  658. data/vendor/rails/actionwebservice/TODO +32 -0
  659. data/vendor/rails/actionwebservice/examples/googlesearch/README +143 -0
  660. data/vendor/rails/actionwebservice/examples/googlesearch/autoloading/google_search_api.rb +50 -0
  661. data/vendor/rails/actionwebservice/examples/googlesearch/autoloading/google_search_controller.rb +57 -0
  662. data/vendor/rails/actionwebservice/examples/googlesearch/delegated/google_search_service.rb +108 -0
  663. data/vendor/rails/actionwebservice/examples/googlesearch/delegated/search_controller.rb +7 -0
  664. data/vendor/rails/actionwebservice/examples/googlesearch/direct/google_search_api.rb +50 -0
  665. data/vendor/rails/actionwebservice/examples/googlesearch/direct/search_controller.rb +58 -0
  666. data/vendor/rails/actionwebservice/examples/metaWeblog/README +17 -0
  667. data/vendor/rails/actionwebservice/examples/metaWeblog/apis/blogger_api.rb +60 -0
  668. data/vendor/rails/actionwebservice/examples/metaWeblog/apis/blogger_service.rb +34 -0
  669. data/vendor/rails/actionwebservice/examples/metaWeblog/apis/meta_weblog_api.rb +67 -0
  670. data/vendor/rails/actionwebservice/examples/metaWeblog/apis/meta_weblog_service.rb +48 -0
  671. data/vendor/rails/actionwebservice/examples/metaWeblog/controllers/xmlrpc_controller.rb +16 -0
  672. data/vendor/rails/actionwebservice/install.rb +30 -0
  673. data/vendor/rails/actionwebservice/lib/action_web_service.rb +66 -0
  674. data/vendor/rails/actionwebservice/lib/action_web_service/api.rb +249 -0
  675. data/vendor/rails/actionwebservice/lib/action_web_service/base.rb +42 -0
  676. data/vendor/rails/actionwebservice/lib/action_web_service/casting.rb +136 -0
  677. data/vendor/rails/actionwebservice/lib/action_web_service/client.rb +3 -0
  678. data/vendor/rails/actionwebservice/lib/action_web_service/client/base.rb +28 -0
  679. data/vendor/rails/actionwebservice/lib/action_web_service/client/soap_client.rb +113 -0
  680. data/vendor/rails/actionwebservice/lib/action_web_service/client/xmlrpc_client.rb +58 -0
  681. data/vendor/rails/actionwebservice/lib/action_web_service/container.rb +3 -0
  682. data/vendor/rails/actionwebservice/lib/action_web_service/container/action_controller_container.rb +93 -0
  683. data/vendor/rails/actionwebservice/lib/action_web_service/container/delegated_container.rb +86 -0
  684. data/vendor/rails/actionwebservice/lib/action_web_service/container/direct_container.rb +69 -0
  685. data/vendor/rails/actionwebservice/lib/action_web_service/dispatcher.rb +2 -0
  686. data/vendor/rails/actionwebservice/lib/action_web_service/dispatcher/abstract.rb +203 -0
  687. data/vendor/rails/actionwebservice/lib/action_web_service/dispatcher/action_controller_dispatcher.rb +376 -0
  688. data/vendor/rails/actionwebservice/lib/action_web_service/invocation.rb +202 -0
  689. data/vendor/rails/actionwebservice/lib/action_web_service/protocol.rb +4 -0
  690. data/vendor/rails/actionwebservice/lib/action_web_service/protocol/abstract.rb +112 -0
  691. data/vendor/rails/actionwebservice/lib/action_web_service/protocol/discovery.rb +37 -0
  692. data/vendor/rails/actionwebservice/lib/action_web_service/protocol/soap_protocol.rb +176 -0
  693. data/vendor/rails/actionwebservice/lib/action_web_service/protocol/soap_protocol/marshaler.rb +241 -0
  694. data/vendor/rails/actionwebservice/lib/action_web_service/protocol/xmlrpc_protocol.rb +110 -0
  695. data/vendor/rails/actionwebservice/lib/action_web_service/scaffolding.rb +283 -0
  696. data/vendor/rails/actionwebservice/lib/action_web_service/struct.rb +68 -0
  697. data/vendor/rails/actionwebservice/lib/action_web_service/support/class_inheritable_options.rb +26 -0
  698. data/vendor/rails/actionwebservice/lib/action_web_service/support/signature_types.rb +222 -0
  699. data/vendor/rails/actionwebservice/lib/action_web_service/templates/scaffolds/layout.rhtml +65 -0
  700. data/vendor/rails/actionwebservice/lib/action_web_service/templates/scaffolds/methods.rhtml +6 -0
  701. data/vendor/rails/actionwebservice/lib/action_web_service/templates/scaffolds/parameters.rhtml +29 -0
  702. data/vendor/rails/actionwebservice/lib/action_web_service/templates/scaffolds/result.rhtml +30 -0
  703. data/vendor/rails/actionwebservice/lib/action_web_service/test_invoke.rb +110 -0
  704. data/vendor/rails/actionwebservice/lib/action_web_service/version.rb +9 -0
  705. data/vendor/rails/actionwebservice/setup.rb +1379 -0
  706. data/vendor/rails/actionwebservice/test/abstract_client.rb +183 -0
  707. data/vendor/rails/actionwebservice/test/abstract_dispatcher.rb +505 -0
  708. data/vendor/rails/actionwebservice/test/abstract_unit.rb +45 -0
  709. data/vendor/rails/actionwebservice/test/api_test.rb +102 -0
  710. data/vendor/rails/actionwebservice/test/apis/auto_load_api.rb +3 -0
  711. data/vendor/rails/actionwebservice/test/apis/broken_auto_load_api.rb +2 -0
  712. data/vendor/rails/actionwebservice/test/base_test.rb +42 -0
  713. data/vendor/rails/actionwebservice/test/casting_test.rb +86 -0
  714. data/vendor/rails/actionwebservice/test/client_soap_test.rb +152 -0
  715. data/vendor/rails/actionwebservice/test/client_xmlrpc_test.rb +151 -0
  716. data/vendor/rails/actionwebservice/test/container_test.rb +73 -0
  717. data/vendor/rails/actionwebservice/test/dispatcher_action_controller_soap_test.rb +137 -0
  718. data/vendor/rails/actionwebservice/test/dispatcher_action_controller_xmlrpc_test.rb +59 -0
  719. data/vendor/rails/actionwebservice/test/fixtures/db_definitions/mysql.sql +7 -0
  720. data/vendor/rails/actionwebservice/test/fixtures/users.yml +10 -0
  721. data/vendor/rails/actionwebservice/test/gencov +3 -0
  722. data/vendor/rails/actionwebservice/test/invocation_test.rb +185 -0
  723. data/vendor/rails/actionwebservice/test/run +6 -0
  724. data/vendor/rails/actionwebservice/test/scaffolded_controller_test.rb +146 -0
  725. data/vendor/rails/actionwebservice/test/struct_test.rb +52 -0
  726. data/vendor/rails/actionwebservice/test/test_invoke_test.rb +112 -0
  727. data/vendor/rails/activerecord/CHANGELOG +3043 -0
  728. data/vendor/rails/activerecord/MIT-LICENSE +20 -0
  729. data/vendor/rails/activerecord/README +360 -0
  730. data/vendor/rails/activerecord/RUNNING_UNIT_TESTS +64 -0
  731. data/vendor/rails/activerecord/Rakefile +226 -0
  732. data/vendor/rails/activerecord/benchmarks/benchmark.rb +26 -0
  733. data/vendor/rails/activerecord/benchmarks/mysql_benchmark.rb +19 -0
  734. data/vendor/rails/activerecord/examples/associations.png +0 -0
  735. data/vendor/rails/activerecord/examples/associations.rb +87 -0
  736. data/vendor/rails/activerecord/examples/shared_setup.rb +15 -0
  737. data/vendor/rails/activerecord/examples/validation.rb +85 -0
  738. data/vendor/rails/activerecord/install.rb +30 -0
  739. data/vendor/rails/activerecord/lib/active_record.rb +85 -0
  740. data/vendor/rails/activerecord/lib/active_record/acts/list.rb +244 -0
  741. data/vendor/rails/activerecord/lib/active_record/acts/nested_set.rb +211 -0
  742. data/vendor/rails/activerecord/lib/active_record/acts/tree.rb +89 -0
  743. data/vendor/rails/activerecord/lib/active_record/aggregations.rb +191 -0
  744. data/vendor/rails/activerecord/lib/active_record/associations.rb +1627 -0
  745. data/vendor/rails/activerecord/lib/active_record/associations/association_collection.rb +190 -0
  746. data/vendor/rails/activerecord/lib/active_record/associations/association_proxy.rb +158 -0
  747. data/vendor/rails/activerecord/lib/active_record/associations/belongs_to_association.rb +56 -0
  748. data/vendor/rails/activerecord/lib/active_record/associations/belongs_to_polymorphic_association.rb +50 -0
  749. data/vendor/rails/activerecord/lib/active_record/associations/has_and_belongs_to_many_association.rb +169 -0
  750. data/vendor/rails/activerecord/lib/active_record/associations/has_many_association.rb +210 -0
  751. data/vendor/rails/activerecord/lib/active_record/associations/has_many_through_association.rb +247 -0
  752. data/vendor/rails/activerecord/lib/active_record/associations/has_one_association.rb +80 -0
  753. data/vendor/rails/activerecord/lib/active_record/attribute_methods.rb +75 -0
  754. data/vendor/rails/activerecord/lib/active_record/base.rb +2164 -0
  755. data/vendor/rails/activerecord/lib/active_record/calculations.rb +270 -0
  756. data/vendor/rails/activerecord/lib/active_record/callbacks.rb +367 -0
  757. data/vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/connection_specification.rb +279 -0
  758. data/vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/database_statements.rb +130 -0
  759. data/vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/quoting.rb +58 -0
  760. data/vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/schema_definitions.rb +343 -0
  761. data/vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/schema_statements.rb +303 -0
  762. data/vendor/rails/activerecord/lib/active_record/connection_adapters/abstract_adapter.rb +161 -0
  763. data/vendor/rails/activerecord/lib/active_record/connection_adapters/db2_adapter.rb +228 -0
  764. data/vendor/rails/activerecord/lib/active_record/connection_adapters/firebird_adapter.rb +728 -0
  765. data/vendor/rails/activerecord/lib/active_record/connection_adapters/frontbase_adapter.rb +861 -0
  766. data/vendor/rails/activerecord/lib/active_record/connection_adapters/mysql_adapter.rb +414 -0
  767. data/vendor/rails/activerecord/lib/active_record/connection_adapters/openbase_adapter.rb +350 -0
  768. data/vendor/rails/activerecord/lib/active_record/connection_adapters/oracle_adapter.rb +689 -0
  769. data/vendor/rails/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb +584 -0
  770. data/vendor/rails/activerecord/lib/active_record/connection_adapters/sqlite_adapter.rb +407 -0
  771. data/vendor/rails/activerecord/lib/active_record/connection_adapters/sqlserver_adapter.rb +591 -0
  772. data/vendor/rails/activerecord/lib/active_record/connection_adapters/sybase_adapter.rb +662 -0
  773. data/vendor/rails/activerecord/lib/active_record/deprecated_associations.rb +104 -0
  774. data/vendor/rails/activerecord/lib/active_record/deprecated_finders.rb +44 -0
  775. data/vendor/rails/activerecord/lib/active_record/fixtures.rb +628 -0
  776. data/vendor/rails/activerecord/lib/active_record/locking/optimistic.rb +106 -0
  777. data/vendor/rails/activerecord/lib/active_record/locking/pessimistic.rb +77 -0
  778. data/vendor/rails/activerecord/lib/active_record/migration.rb +394 -0
  779. data/vendor/rails/activerecord/lib/active_record/observer.rb +178 -0
  780. data/vendor/rails/activerecord/lib/active_record/query_cache.rb +64 -0
  781. data/vendor/rails/activerecord/lib/active_record/reflection.rb +222 -0
  782. data/vendor/rails/activerecord/lib/active_record/schema.rb +58 -0
  783. data/vendor/rails/activerecord/lib/active_record/schema_dumper.rb +149 -0
  784. data/vendor/rails/activerecord/lib/active_record/timestamp.rb +51 -0
  785. data/vendor/rails/activerecord/lib/active_record/transactions.rb +136 -0
  786. data/vendor/rails/activerecord/lib/active_record/validations.rb +843 -0
  787. data/vendor/rails/activerecord/lib/active_record/vendor/db2.rb +362 -0
  788. data/vendor/rails/activerecord/lib/active_record/vendor/mysql.rb +1214 -0
  789. data/vendor/rails/activerecord/lib/active_record/vendor/simple.rb +693 -0
  790. data/vendor/rails/activerecord/lib/active_record/version.rb +9 -0
  791. data/vendor/rails/activerecord/lib/active_record/wrappers/yaml_wrapper.rb +15 -0
  792. data/vendor/rails/activerecord/lib/active_record/wrappings.rb +58 -0
  793. data/vendor/rails/activerecord/lib/active_record/xml_serialization.rb +308 -0
  794. data/vendor/rails/activerecord/test/aaa_create_tables_test.rb +59 -0
  795. data/vendor/rails/activerecord/test/abstract_unit.rb +77 -0
  796. data/vendor/rails/activerecord/test/active_schema_test_mysql.rb +31 -0
  797. data/vendor/rails/activerecord/test/adapter_test.rb +87 -0
  798. data/vendor/rails/activerecord/test/adapter_test_sqlserver.rb +81 -0
  799. data/vendor/rails/activerecord/test/aggregations_test.rb +95 -0
  800. data/vendor/rails/activerecord/test/all.sh +8 -0
  801. data/vendor/rails/activerecord/test/ar_schema_test.rb +33 -0
  802. data/vendor/rails/activerecord/test/association_inheritance_reload.rb +14 -0
  803. data/vendor/rails/activerecord/test/associations/callbacks_test.rb +126 -0
  804. data/vendor/rails/activerecord/test/associations/cascaded_eager_loading_test.rb +138 -0
  805. data/vendor/rails/activerecord/test/associations/eager_test.rb +393 -0
  806. data/vendor/rails/activerecord/test/associations/extension_test.rb +42 -0
  807. data/vendor/rails/activerecord/test/associations/join_model_test.rb +497 -0
  808. data/vendor/rails/activerecord/test/associations_test.rb +1809 -0
  809. data/vendor/rails/activerecord/test/attribute_methods_test.rb +49 -0
  810. data/vendor/rails/activerecord/test/base_test.rb +1586 -0
  811. data/vendor/rails/activerecord/test/binary_test.rb +37 -0
  812. data/vendor/rails/activerecord/test/calculations_test.rb +219 -0
  813. data/vendor/rails/activerecord/test/callbacks_test.rb +377 -0
  814. data/vendor/rails/activerecord/test/class_inheritable_attributes_test.rb +32 -0
  815. data/vendor/rails/activerecord/test/column_alias_test.rb +17 -0
  816. data/vendor/rails/activerecord/test/connection_test_firebird.rb +8 -0
  817. data/vendor/rails/activerecord/test/connections/native_db2/connection.rb +25 -0
  818. data/vendor/rails/activerecord/test/connections/native_firebird/connection.rb +26 -0
  819. data/vendor/rails/activerecord/test/connections/native_frontbase/connection.rb +27 -0
  820. data/vendor/rails/activerecord/test/connections/native_mysql/connection.rb +24 -0
  821. data/vendor/rails/activerecord/test/connections/native_openbase/connection.rb +21 -0
  822. data/vendor/rails/activerecord/test/connections/native_oracle/connection.rb +27 -0
  823. data/vendor/rails/activerecord/test/connections/native_postgresql/connection.rb +23 -0
  824. data/vendor/rails/activerecord/test/connections/native_sqlite/connection.rb +34 -0
  825. data/vendor/rails/activerecord/test/connections/native_sqlite3/connection.rb +34 -0
  826. data/vendor/rails/activerecord/test/connections/native_sqlite3/in_memory_connection.rb +18 -0
  827. data/vendor/rails/activerecord/test/connections/native_sqlserver/connection.rb +23 -0
  828. data/vendor/rails/activerecord/test/connections/native_sqlserver_odbc/connection.rb +25 -0
  829. data/vendor/rails/activerecord/test/connections/native_sybase/connection.rb +23 -0
  830. data/vendor/rails/activerecord/test/copy_table_sqlite.rb +64 -0
  831. data/vendor/rails/activerecord/test/datatype_test_postgresql.rb +52 -0
  832. data/vendor/rails/activerecord/test/default_test_firebird.rb +16 -0
  833. data/vendor/rails/activerecord/test/defaults_test.rb +60 -0
  834. data/vendor/rails/activerecord/test/deprecated_associations_test.rb +396 -0
  835. data/vendor/rails/activerecord/test/deprecated_finder_test.rb +151 -0
  836. data/vendor/rails/activerecord/test/empty_date_time_test.rb +25 -0
  837. data/vendor/rails/activerecord/test/finder_test.rb +504 -0
  838. data/vendor/rails/activerecord/test/fixtures/accounts.yml +28 -0
  839. data/vendor/rails/activerecord/test/fixtures/author.rb +99 -0
  840. data/vendor/rails/activerecord/test/fixtures/author_favorites.yml +4 -0
  841. data/vendor/rails/activerecord/test/fixtures/authors.yml +7 -0
  842. data/vendor/rails/activerecord/test/fixtures/auto_id.rb +4 -0
  843. data/vendor/rails/activerecord/test/fixtures/bad_fixtures/attr_with_numeric_first_char +1 -0
  844. data/vendor/rails/activerecord/test/fixtures/bad_fixtures/attr_with_spaces +1 -0
  845. data/vendor/rails/activerecord/test/fixtures/bad_fixtures/blank_line +3 -0
  846. data/vendor/rails/activerecord/test/fixtures/bad_fixtures/duplicate_attributes +3 -0
  847. data/vendor/rails/activerecord/test/fixtures/bad_fixtures/missing_value +1 -0
  848. data/vendor/rails/activerecord/test/fixtures/binary.rb +2 -0
  849. data/vendor/rails/activerecord/test/fixtures/categories.yml +14 -0
  850. data/vendor/rails/activerecord/test/fixtures/categories/special_categories.yml +9 -0
  851. data/vendor/rails/activerecord/test/fixtures/categories/subsubdir/arbitrary_filename.yml +4 -0
  852. data/vendor/rails/activerecord/test/fixtures/categories_ordered.yml +7 -0
  853. data/vendor/rails/activerecord/test/fixtures/categories_posts.yml +23 -0
  854. data/vendor/rails/activerecord/test/fixtures/categorization.rb +5 -0
  855. data/vendor/rails/activerecord/test/fixtures/categorizations.yml +17 -0
  856. data/vendor/rails/activerecord/test/fixtures/category.rb +20 -0
  857. data/vendor/rails/activerecord/test/fixtures/column_name.rb +3 -0
  858. data/vendor/rails/activerecord/test/fixtures/comment.rb +23 -0
  859. data/vendor/rails/activerecord/test/fixtures/comments.yml +59 -0
  860. data/vendor/rails/activerecord/test/fixtures/companies.yml +55 -0
  861. data/vendor/rails/activerecord/test/fixtures/company.rb +107 -0
  862. data/vendor/rails/activerecord/test/fixtures/company_in_module.rb +59 -0
  863. data/vendor/rails/activerecord/test/fixtures/computer.rb +3 -0
  864. data/vendor/rails/activerecord/test/fixtures/computers.yml +4 -0
  865. data/vendor/rails/activerecord/test/fixtures/course.rb +3 -0
  866. data/vendor/rails/activerecord/test/fixtures/courses.yml +7 -0
  867. data/vendor/rails/activerecord/test/fixtures/customer.rb +55 -0
  868. data/vendor/rails/activerecord/test/fixtures/customers.yml +17 -0
  869. data/vendor/rails/activerecord/test/fixtures/db_definitions/db2.drop.sql +32 -0
  870. data/vendor/rails/activerecord/test/fixtures/db_definitions/db2.sql +231 -0
  871. data/vendor/rails/activerecord/test/fixtures/db_definitions/db22.drop.sql +2 -0
  872. data/vendor/rails/activerecord/test/fixtures/db_definitions/db22.sql +5 -0
  873. data/vendor/rails/activerecord/test/fixtures/db_definitions/firebird.drop.sql +63 -0
  874. data/vendor/rails/activerecord/test/fixtures/db_definitions/firebird.sql +304 -0
  875. data/vendor/rails/activerecord/test/fixtures/db_definitions/firebird2.drop.sql +2 -0
  876. data/vendor/rails/activerecord/test/fixtures/db_definitions/firebird2.sql +6 -0
  877. data/vendor/rails/activerecord/test/fixtures/db_definitions/frontbase.drop.sql +32 -0
  878. data/vendor/rails/activerecord/test/fixtures/db_definitions/frontbase.sql +268 -0
  879. data/vendor/rails/activerecord/test/fixtures/db_definitions/frontbase2.drop.sql +1 -0
  880. data/vendor/rails/activerecord/test/fixtures/db_definitions/frontbase2.sql +4 -0
  881. data/vendor/rails/activerecord/test/fixtures/db_definitions/mysql.drop.sql +32 -0
  882. data/vendor/rails/activerecord/test/fixtures/db_definitions/mysql.sql +234 -0
  883. data/vendor/rails/activerecord/test/fixtures/db_definitions/mysql2.drop.sql +2 -0
  884. data/vendor/rails/activerecord/test/fixtures/db_definitions/mysql2.sql +5 -0
  885. data/vendor/rails/activerecord/test/fixtures/db_definitions/openbase.drop.sql +2 -0
  886. data/vendor/rails/activerecord/test/fixtures/db_definitions/openbase.sql +302 -0
  887. data/vendor/rails/activerecord/test/fixtures/db_definitions/openbase2.drop.sql +2 -0
  888. data/vendor/rails/activerecord/test/fixtures/db_definitions/openbase2.sql +7 -0
  889. data/vendor/rails/activerecord/test/fixtures/db_definitions/oracle.drop.sql +65 -0
  890. data/vendor/rails/activerecord/test/fixtures/db_definitions/oracle.sql +325 -0
  891. data/vendor/rails/activerecord/test/fixtures/db_definitions/oracle2.drop.sql +2 -0
  892. data/vendor/rails/activerecord/test/fixtures/db_definitions/oracle2.sql +6 -0
  893. data/vendor/rails/activerecord/test/fixtures/db_definitions/postgresql.drop.sql +37 -0
  894. data/vendor/rails/activerecord/test/fixtures/db_definitions/postgresql.sql +263 -0
  895. data/vendor/rails/activerecord/test/fixtures/db_definitions/postgresql2.drop.sql +2 -0
  896. data/vendor/rails/activerecord/test/fixtures/db_definitions/postgresql2.sql +5 -0
  897. data/vendor/rails/activerecord/test/fixtures/db_definitions/schema.rb +60 -0
  898. data/vendor/rails/activerecord/test/fixtures/db_definitions/sqlite.drop.sql +32 -0
  899. data/vendor/rails/activerecord/test/fixtures/db_definitions/sqlite.sql +215 -0
  900. data/vendor/rails/activerecord/test/fixtures/db_definitions/sqlite2.drop.sql +2 -0
  901. data/vendor/rails/activerecord/test/fixtures/db_definitions/sqlite2.sql +5 -0
  902. data/vendor/rails/activerecord/test/fixtures/db_definitions/sqlserver.drop.sql +34 -0
  903. data/vendor/rails/activerecord/test/fixtures/db_definitions/sqlserver.sql +243 -0
  904. data/vendor/rails/activerecord/test/fixtures/db_definitions/sqlserver2.drop.sql +2 -0
  905. data/vendor/rails/activerecord/test/fixtures/db_definitions/sqlserver2.sql +5 -0
  906. data/vendor/rails/activerecord/test/fixtures/db_definitions/sybase.drop.sql +34 -0
  907. data/vendor/rails/activerecord/test/fixtures/db_definitions/sybase.sql +218 -0
  908. data/vendor/rails/activerecord/test/fixtures/db_definitions/sybase2.drop.sql +4 -0
  909. data/vendor/rails/activerecord/test/fixtures/db_definitions/sybase2.sql +5 -0
  910. data/vendor/rails/activerecord/test/fixtures/default.rb +2 -0
  911. data/vendor/rails/activerecord/test/fixtures/developer.rb +52 -0
  912. data/vendor/rails/activerecord/test/fixtures/developers.yml +21 -0
  913. data/vendor/rails/activerecord/test/fixtures/developers_projects.yml +17 -0
  914. data/vendor/rails/activerecord/test/fixtures/developers_projects/david_action_controller +3 -0
  915. data/vendor/rails/activerecord/test/fixtures/developers_projects/david_active_record +3 -0
  916. data/vendor/rails/activerecord/test/fixtures/developers_projects/jamis_active_record +2 -0
  917. data/vendor/rails/activerecord/test/fixtures/edge.rb +5 -0
  918. data/vendor/rails/activerecord/test/fixtures/edges.yml +6 -0
  919. data/vendor/rails/activerecord/test/fixtures/entrant.rb +3 -0
  920. data/vendor/rails/activerecord/test/fixtures/entrants.yml +14 -0
  921. data/vendor/rails/activerecord/test/fixtures/fk_test_has_fk.yml +3 -0
  922. data/vendor/rails/activerecord/test/fixtures/fk_test_has_pk.yml +2 -0
  923. data/vendor/rails/activerecord/test/fixtures/flowers.jpg +0 -0
  924. data/vendor/rails/activerecord/test/fixtures/funny_jokes.yml +10 -0
  925. data/vendor/rails/activerecord/test/fixtures/joke.rb +6 -0
  926. data/vendor/rails/activerecord/test/fixtures/keyboard.rb +3 -0
  927. data/vendor/rails/activerecord/test/fixtures/legacy_thing.rb +3 -0
  928. data/vendor/rails/activerecord/test/fixtures/legacy_things.yml +3 -0
  929. data/vendor/rails/activerecord/test/fixtures/migrations/1_people_have_last_names.rb +9 -0
  930. data/vendor/rails/activerecord/test/fixtures/migrations/2_we_need_reminders.rb +12 -0
  931. data/vendor/rails/activerecord/test/fixtures/migrations/3_innocent_jointable.rb +12 -0
  932. data/vendor/rails/activerecord/test/fixtures/migrations_with_decimal/1_give_me_big_numbers.rb +15 -0
  933. data/vendor/rails/activerecord/test/fixtures/migrations_with_duplicate/1_people_have_last_names.rb +9 -0
  934. data/vendor/rails/activerecord/test/fixtures/migrations_with_duplicate/2_we_need_reminders.rb +12 -0
  935. data/vendor/rails/activerecord/test/fixtures/migrations_with_duplicate/3_foo.rb +7 -0
  936. data/vendor/rails/activerecord/test/fixtures/migrations_with_duplicate/3_innocent_jointable.rb +12 -0
  937. data/vendor/rails/activerecord/test/fixtures/migrations_with_missing_versions/1000_people_have_middle_names.rb +9 -0
  938. data/vendor/rails/activerecord/test/fixtures/migrations_with_missing_versions/1_people_have_last_names.rb +9 -0
  939. data/vendor/rails/activerecord/test/fixtures/migrations_with_missing_versions/3_we_need_reminders.rb +12 -0
  940. data/vendor/rails/activerecord/test/fixtures/migrations_with_missing_versions/4_innocent_jointable.rb +12 -0
  941. data/vendor/rails/activerecord/test/fixtures/mixed_case_monkey.rb +3 -0
  942. data/vendor/rails/activerecord/test/fixtures/mixed_case_monkeys.yml +6 -0
  943. data/vendor/rails/activerecord/test/fixtures/mixin.rb +63 -0
  944. data/vendor/rails/activerecord/test/fixtures/mixins.yml +127 -0
  945. data/vendor/rails/activerecord/test/fixtures/movie.rb +5 -0
  946. data/vendor/rails/activerecord/test/fixtures/movies.yml +7 -0
  947. data/vendor/rails/activerecord/test/fixtures/naked/csv/accounts.csv +1 -0
  948. data/vendor/rails/activerecord/test/fixtures/naked/yml/accounts.yml +1 -0
  949. data/vendor/rails/activerecord/test/fixtures/naked/yml/companies.yml +1 -0
  950. data/vendor/rails/activerecord/test/fixtures/naked/yml/courses.yml +1 -0
  951. data/vendor/rails/activerecord/test/fixtures/order.rb +4 -0
  952. data/vendor/rails/activerecord/test/fixtures/people.yml +3 -0
  953. data/vendor/rails/activerecord/test/fixtures/person.rb +4 -0
  954. data/vendor/rails/activerecord/test/fixtures/post.rb +58 -0
  955. data/vendor/rails/activerecord/test/fixtures/posts.yml +48 -0
  956. data/vendor/rails/activerecord/test/fixtures/project.rb +27 -0
  957. data/vendor/rails/activerecord/test/fixtures/projects.yml +7 -0
  958. data/vendor/rails/activerecord/test/fixtures/reader.rb +4 -0
  959. data/vendor/rails/activerecord/test/fixtures/readers.yml +4 -0
  960. data/vendor/rails/activerecord/test/fixtures/reply.rb +37 -0
  961. data/vendor/rails/activerecord/test/fixtures/subject.rb +4 -0
  962. data/vendor/rails/activerecord/test/fixtures/subscriber.rb +6 -0
  963. data/vendor/rails/activerecord/test/fixtures/subscribers/first +2 -0
  964. data/vendor/rails/activerecord/test/fixtures/subscribers/second +2 -0
  965. data/vendor/rails/activerecord/test/fixtures/tag.rb +7 -0
  966. data/vendor/rails/activerecord/test/fixtures/tagging.rb +6 -0
  967. data/vendor/rails/activerecord/test/fixtures/taggings.yml +18 -0
  968. data/vendor/rails/activerecord/test/fixtures/tags.yml +7 -0
  969. data/vendor/rails/activerecord/test/fixtures/task.rb +3 -0
  970. data/vendor/rails/activerecord/test/fixtures/tasks.yml +7 -0
  971. data/vendor/rails/activerecord/test/fixtures/topic.rb +25 -0
  972. data/vendor/rails/activerecord/test/fixtures/topics.yml +22 -0
  973. data/vendor/rails/activerecord/test/fixtures/vertex.rb +9 -0
  974. data/vendor/rails/activerecord/test/fixtures/vertices.yml +4 -0
  975. data/vendor/rails/activerecord/test/fixtures_test.rb +401 -0
  976. data/vendor/rails/activerecord/test/inheritance_test.rb +205 -0
  977. data/vendor/rails/activerecord/test/lifecycle_test.rb +137 -0
  978. data/vendor/rails/activerecord/test/locking_test.rb +190 -0
  979. data/vendor/rails/activerecord/test/method_scoping_test.rb +416 -0
  980. data/vendor/rails/activerecord/test/migration_test.rb +768 -0
  981. data/vendor/rails/activerecord/test/migration_test_firebird.rb +124 -0
  982. data/vendor/rails/activerecord/test/mixin_nested_set_test.rb +196 -0
  983. data/vendor/rails/activerecord/test/mixin_test.rb +550 -0
  984. data/vendor/rails/activerecord/test/modules_test.rb +34 -0
  985. data/vendor/rails/activerecord/test/multiple_db_test.rb +60 -0
  986. data/vendor/rails/activerecord/test/pk_test.rb +104 -0
  987. data/vendor/rails/activerecord/test/readonly_test.rb +107 -0
  988. data/vendor/rails/activerecord/test/reflection_test.rb +159 -0
  989. data/vendor/rails/activerecord/test/schema_authorization_test_postgresql.rb +75 -0
  990. data/vendor/rails/activerecord/test/schema_dumper_test.rb +96 -0
  991. data/vendor/rails/activerecord/test/schema_test_postgresql.rb +64 -0
  992. data/vendor/rails/activerecord/test/synonym_test_oracle.rb +17 -0
  993. data/vendor/rails/activerecord/test/table_name_test_sqlserver.rb +23 -0
  994. data/vendor/rails/activerecord/test/threaded_connections_test.rb +48 -0
  995. data/vendor/rails/activerecord/test/transactions_test.rb +230 -0
  996. data/vendor/rails/activerecord/test/unconnected_test.rb +32 -0
  997. data/vendor/rails/activerecord/test/validations_test.rb +1097 -0
  998. data/vendor/rails/activerecord/test/xml_serialization_test.rb +125 -0
  999. data/vendor/rails/activesupport/CHANGELOG +703 -0
  1000. data/vendor/rails/activesupport/MIT-LICENSE +20 -0
  1001. data/vendor/rails/activesupport/README +43 -0
  1002. data/vendor/rails/activesupport/Rakefile +82 -0
  1003. data/vendor/rails/activesupport/install.rb +30 -0
  1004. data/vendor/rails/activesupport/lib/active_support.rb +44 -0
  1005. data/vendor/rails/activesupport/lib/active_support/binding_of_caller.rb +84 -0
  1006. data/vendor/rails/activesupport/lib/active_support/breakpoint.rb +528 -0
  1007. data/vendor/rails/activesupport/lib/active_support/caching_tools.rb +62 -0
  1008. data/vendor/rails/activesupport/lib/active_support/clean_logger.rb +38 -0
  1009. data/vendor/rails/activesupport/lib/active_support/core_ext.rb +1 -0
  1010. data/vendor/rails/activesupport/lib/active_support/core_ext/array.rb +7 -0
  1011. data/vendor/rails/activesupport/lib/active_support/core_ext/array/conversions.rb +72 -0
  1012. data/vendor/rails/activesupport/lib/active_support/core_ext/array/grouping.rb +55 -0
  1013. data/vendor/rails/activesupport/lib/active_support/core_ext/bigdecimal.rb +3 -0
  1014. data/vendor/rails/activesupport/lib/active_support/core_ext/bigdecimal/formatting.rb +7 -0
  1015. data/vendor/rails/activesupport/lib/active_support/core_ext/blank.rb +50 -0
  1016. data/vendor/rails/activesupport/lib/active_support/core_ext/cgi.rb +5 -0
  1017. data/vendor/rails/activesupport/lib/active_support/core_ext/cgi/escape_skipping_slashes.rb +14 -0
  1018. data/vendor/rails/activesupport/lib/active_support/core_ext/class.rb +3 -0
  1019. data/vendor/rails/activesupport/lib/active_support/core_ext/class/attribute_accessors.rb +48 -0
  1020. data/vendor/rails/activesupport/lib/active_support/core_ext/class/inheritable_attributes.rb +140 -0
  1021. data/vendor/rails/activesupport/lib/active_support/core_ext/class/removal.rb +24 -0
  1022. data/vendor/rails/activesupport/lib/active_support/core_ext/date.rb +6 -0
  1023. data/vendor/rails/activesupport/lib/active_support/core_ext/date/conversions.rb +39 -0
  1024. data/vendor/rails/activesupport/lib/active_support/core_ext/enumerable.rb +62 -0
  1025. data/vendor/rails/activesupport/lib/active_support/core_ext/exception.rb +33 -0
  1026. data/vendor/rails/activesupport/lib/active_support/core_ext/hash.rb +13 -0
  1027. data/vendor/rails/activesupport/lib/active_support/core_ext/hash/conversions.rb +155 -0
  1028. data/vendor/rails/activesupport/lib/active_support/core_ext/hash/diff.rb +11 -0
  1029. data/vendor/rails/activesupport/lib/active_support/core_ext/hash/indifferent_access.rb +88 -0
  1030. data/vendor/rails/activesupport/lib/active_support/core_ext/hash/keys.rb +53 -0
  1031. data/vendor/rails/activesupport/lib/active_support/core_ext/hash/reverse_merge.rb +25 -0
  1032. data/vendor/rails/activesupport/lib/active_support/core_ext/integer.rb +7 -0
  1033. data/vendor/rails/activesupport/lib/active_support/core_ext/integer/even_odd.rb +24 -0
  1034. data/vendor/rails/activesupport/lib/active_support/core_ext/integer/inflections.rb +21 -0
  1035. data/vendor/rails/activesupport/lib/active_support/core_ext/kernel.rb +4 -0
  1036. data/vendor/rails/activesupport/lib/active_support/core_ext/kernel/agnostics.rb +11 -0
  1037. data/vendor/rails/activesupport/lib/active_support/core_ext/kernel/daemonizing.rb +15 -0
  1038. data/vendor/rails/activesupport/lib/active_support/core_ext/kernel/reporting.rb +51 -0
  1039. data/vendor/rails/activesupport/lib/active_support/core_ext/kernel/requires.rb +24 -0
  1040. data/vendor/rails/activesupport/lib/active_support/core_ext/load_error.rb +38 -0
  1041. data/vendor/rails/activesupport/lib/active_support/core_ext/logger.rb +16 -0
  1042. data/vendor/rails/activesupport/lib/active_support/core_ext/module.rb +7 -0
  1043. data/vendor/rails/activesupport/lib/active_support/core_ext/module/aliasing.rb +58 -0
  1044. data/vendor/rails/activesupport/lib/active_support/core_ext/module/attr_internal.rb +31 -0
  1045. data/vendor/rails/activesupport/lib/active_support/core_ext/module/attribute_accessors.rb +48 -0
  1046. data/vendor/rails/activesupport/lib/active_support/core_ext/module/delegation.rb +41 -0
  1047. data/vendor/rails/activesupport/lib/active_support/core_ext/module/inclusion.rb +11 -0
  1048. data/vendor/rails/activesupport/lib/active_support/core_ext/module/introspection.rb +21 -0
  1049. data/vendor/rails/activesupport/lib/active_support/core_ext/module/loading.rb +13 -0
  1050. data/vendor/rails/activesupport/lib/active_support/core_ext/name_error.rb +17 -0
  1051. data/vendor/rails/activesupport/lib/active_support/core_ext/numeric.rb +7 -0
  1052. data/vendor/rails/activesupport/lib/active_support/core_ext/numeric/bytes.rb +44 -0
  1053. data/vendor/rails/activesupport/lib/active_support/core_ext/numeric/time.rb +72 -0
  1054. data/vendor/rails/activesupport/lib/active_support/core_ext/object.rb +2 -0
  1055. data/vendor/rails/activesupport/lib/active_support/core_ext/object/extending.rb +47 -0
  1056. data/vendor/rails/activesupport/lib/active_support/core_ext/object/misc.rb +34 -0
  1057. data/vendor/rails/activesupport/lib/active_support/core_ext/pathname.rb +7 -0
  1058. data/vendor/rails/activesupport/lib/active_support/core_ext/pathname/clean_within.rb +14 -0
  1059. data/vendor/rails/activesupport/lib/active_support/core_ext/proc.rb +12 -0
  1060. data/vendor/rails/activesupport/lib/active_support/core_ext/range.rb +5 -0
  1061. data/vendor/rails/activesupport/lib/active_support/core_ext/range/conversions.rb +21 -0
  1062. data/vendor/rails/activesupport/lib/active_support/core_ext/string.rb +15 -0
  1063. data/vendor/rails/activesupport/lib/active_support/core_ext/string/access.rb +58 -0
  1064. data/vendor/rails/activesupport/lib/active_support/core_ext/string/conversions.rb +19 -0
  1065. data/vendor/rails/activesupport/lib/active_support/core_ext/string/inflections.rb +153 -0
  1066. data/vendor/rails/activesupport/lib/active_support/core_ext/string/iterators.rb +17 -0
  1067. data/vendor/rails/activesupport/lib/active_support/core_ext/string/starts_ends_with.rb +20 -0
  1068. data/vendor/rails/activesupport/lib/active_support/core_ext/string/unicode.rb +42 -0
  1069. data/vendor/rails/activesupport/lib/active_support/core_ext/symbol.rb +12 -0
  1070. data/vendor/rails/activesupport/lib/active_support/core_ext/time.rb +17 -0
  1071. data/vendor/rails/activesupport/lib/active_support/core_ext/time/calculations.rb +191 -0
  1072. data/vendor/rails/activesupport/lib/active_support/core_ext/time/conversions.rb +33 -0
  1073. data/vendor/rails/activesupport/lib/active_support/dependencies.rb +539 -0
  1074. data/vendor/rails/activesupport/lib/active_support/deprecation.rb +202 -0
  1075. data/vendor/rails/activesupport/lib/active_support/inflections.rb +52 -0
  1076. data/vendor/rails/activesupport/lib/active_support/inflector.rb +275 -0
  1077. data/vendor/rails/activesupport/lib/active_support/json.rb +48 -0
  1078. data/vendor/rails/activesupport/lib/active_support/json/encoders.rb +25 -0
  1079. data/vendor/rails/activesupport/lib/active_support/json/encoders/core.rb +68 -0
  1080. data/vendor/rails/activesupport/lib/active_support/multibyte.rb +7 -0
  1081. data/vendor/rails/activesupport/lib/active_support/multibyte/chars.rb +129 -0
  1082. data/vendor/rails/activesupport/lib/active_support/multibyte/generators/generate_tables.rb +149 -0
  1083. data/vendor/rails/activesupport/lib/active_support/multibyte/handlers/passthru_handler.rb +9 -0
  1084. data/vendor/rails/activesupport/lib/active_support/multibyte/handlers/utf8_handler.rb +454 -0
  1085. data/vendor/rails/activesupport/lib/active_support/multibyte/handlers/utf8_handler_proc.rb +43 -0
  1086. data/vendor/rails/activesupport/lib/active_support/option_merger.rb +25 -0
  1087. data/vendor/rails/activesupport/lib/active_support/ordered_options.rb +44 -0
  1088. data/vendor/rails/activesupport/lib/active_support/reloadable.rb +60 -0
  1089. data/vendor/rails/activesupport/lib/active_support/values/time_zone.rb +180 -0
  1090. data/vendor/rails/activesupport/lib/active_support/values/unicode_tables.dat +0 -0
  1091. data/vendor/rails/activesupport/lib/active_support/vendor/builder.rb +13 -0
  1092. data/vendor/rails/activesupport/lib/active_support/vendor/builder/blankslate.rb +63 -0
  1093. data/vendor/rails/activesupport/lib/active_support/vendor/builder/xchar.rb +112 -0
  1094. data/vendor/rails/activesupport/lib/active_support/vendor/builder/xmlbase.rb +145 -0
  1095. data/vendor/rails/activesupport/lib/active_support/vendor/builder/xmlevents.rb +63 -0
  1096. data/vendor/rails/activesupport/lib/active_support/vendor/builder/xmlmarkup.rb +327 -0
  1097. data/vendor/rails/activesupport/lib/active_support/vendor/xml_simple.rb +1021 -0
  1098. data/vendor/rails/activesupport/lib/active_support/version.rb +9 -0
  1099. data/vendor/rails/activesupport/lib/active_support/whiny_nil.rb +38 -0
  1100. data/vendor/rails/activesupport/test/abstract_unit.rb +7 -0
  1101. data/vendor/rails/activesupport/test/autoloading_fixtures/a/b.rb +2 -0
  1102. data/vendor/rails/activesupport/test/autoloading_fixtures/a/c/d.rb +2 -0
  1103. data/vendor/rails/activesupport/test/autoloading_fixtures/a/c/e/f.rb +2 -0
  1104. data/vendor/rails/activesupport/test/autoloading_fixtures/application.rb +1 -0
  1105. data/vendor/rails/activesupport/test/autoloading_fixtures/class_folder.rb +3 -0
  1106. data/vendor/rails/activesupport/test/autoloading_fixtures/class_folder/class_folder_subclass.rb +3 -0
  1107. data/vendor/rails/activesupport/test/autoloading_fixtures/class_folder/inline_class.rb +2 -0
  1108. data/vendor/rails/activesupport/test/autoloading_fixtures/class_folder/nested_class.rb +7 -0
  1109. data/vendor/rails/activesupport/test/autoloading_fixtures/conflict.rb +1 -0
  1110. data/vendor/rails/activesupport/test/autoloading_fixtures/counting_loader.rb +5 -0
  1111. data/vendor/rails/activesupport/test/autoloading_fixtures/cross_site_dependency.rb +2 -0
  1112. data/vendor/rails/activesupport/test/autoloading_fixtures/e.rb +2 -0
  1113. data/vendor/rails/activesupport/test/autoloading_fixtures/module_folder/inline_class.rb +2 -0
  1114. data/vendor/rails/activesupport/test/autoloading_fixtures/module_folder/nested_class.rb +4 -0
  1115. data/vendor/rails/activesupport/test/autoloading_fixtures/module_folder/nested_sibling.rb +2 -0
  1116. data/vendor/rails/activesupport/test/autoloading_fixtures/module_with_custom_const_missing/a/b.rb +1 -0
  1117. data/vendor/rails/activesupport/test/autoloading_fixtures/multiple_constant_file.rb +2 -0
  1118. data/vendor/rails/activesupport/test/autoloading_fixtures/raises_name_error.rb +3 -0
  1119. data/vendor/rails/activesupport/test/autoloading_fixtures/raises_no_method_error.rb +3 -0
  1120. data/vendor/rails/activesupport/test/caching_tools_test.rb +79 -0
  1121. data/vendor/rails/activesupport/test/clean_logger_test.rb +80 -0
  1122. data/vendor/rails/activesupport/test/core_ext/array_ext_test.rb +182 -0
  1123. data/vendor/rails/activesupport/test/core_ext/blank_test.rb +11 -0
  1124. data/vendor/rails/activesupport/test/core_ext/cgi_ext_test.rb +14 -0
  1125. data/vendor/rails/activesupport/test/core_ext/class/attribute_accessor_test.rb +31 -0
  1126. data/vendor/rails/activesupport/test/core_ext/class/class_inheritable_attributes_test.rb +208 -0
  1127. data/vendor/rails/activesupport/test/core_ext/class_test.rb +36 -0
  1128. data/vendor/rails/activesupport/test/core_ext/date_ext_test.rb +20 -0
  1129. data/vendor/rails/activesupport/test/core_ext/enumerable_test.rb +61 -0
  1130. data/vendor/rails/activesupport/test/core_ext/exception_test.rb +64 -0
  1131. data/vendor/rails/activesupport/test/core_ext/hash_ext_test.rb +472 -0
  1132. data/vendor/rails/activesupport/test/core_ext/integer_ext_test.rb +37 -0
  1133. data/vendor/rails/activesupport/test/core_ext/kernel_test.rb +43 -0
  1134. data/vendor/rails/activesupport/test/core_ext/load_error_tests.rb +16 -0
  1135. data/vendor/rails/activesupport/test/core_ext/module/attr_accessor_with_default.rb +30 -0
  1136. data/vendor/rails/activesupport/test/core_ext/module/attr_internal_test.rb +52 -0
  1137. data/vendor/rails/activesupport/test/core_ext/module/attribute_accessor_test.rb +33 -0
  1138. data/vendor/rails/activesupport/test/core_ext/module/attribute_aliasing_test.rb +31 -0
  1139. data/vendor/rails/activesupport/test/core_ext/module_test.rb +221 -0
  1140. data/vendor/rails/activesupport/test/core_ext/name_error_test.rb +24 -0
  1141. data/vendor/rails/activesupport/test/core_ext/numeric_ext_test.rb +57 -0
  1142. data/vendor/rails/activesupport/test/core_ext/object_and_class_ext_test.rb +151 -0
  1143. data/vendor/rails/activesupport/test/core_ext/pathname_test.rb +9 -0
  1144. data/vendor/rails/activesupport/test/core_ext/proc_test.rb +11 -0
  1145. data/vendor/rails/activesupport/test/core_ext/range_ext_test.rb +13 -0
  1146. data/vendor/rails/activesupport/test/core_ext/string_ext_test.rb +152 -0
  1147. data/vendor/rails/activesupport/test/core_ext/symbol_test.rb +9 -0
  1148. data/vendor/rails/activesupport/test/core_ext/time_ext_test.rb +335 -0
  1149. data/vendor/rails/activesupport/test/dependencies/check_warnings.rb +2 -0
  1150. data/vendor/rails/activesupport/test/dependencies/conflict.rb +1 -0
  1151. data/vendor/rails/activesupport/test/dependencies/cross_site_depender.rb +3 -0
  1152. data/vendor/rails/activesupport/test/dependencies/mutual_one.rb +4 -0
  1153. data/vendor/rails/activesupport/test/dependencies/mutual_two.rb +4 -0
  1154. data/vendor/rails/activesupport/test/dependencies/raises_exception.rb +3 -0
  1155. data/vendor/rails/activesupport/test/dependencies/requires_nonexistent0.rb +1 -0
  1156. data/vendor/rails/activesupport/test/dependencies/requires_nonexistent1.rb +1 -0
  1157. data/vendor/rails/activesupport/test/dependencies/service_one.rb +5 -0
  1158. data/vendor/rails/activesupport/test/dependencies/service_two.rb +2 -0
  1159. data/vendor/rails/activesupport/test/dependencies_test.rb +741 -0
  1160. data/vendor/rails/activesupport/test/deprecation_test.rb +151 -0
  1161. data/vendor/rails/activesupport/test/inflector_test.rb +404 -0
  1162. data/vendor/rails/activesupport/test/json.rb +87 -0
  1163. data/vendor/rails/activesupport/test/multibyte_chars_test.rb +164 -0
  1164. data/vendor/rails/activesupport/test/multibyte_conformance.rb +141 -0
  1165. data/vendor/rails/activesupport/test/multibyte_handler_test.rb +274 -0
  1166. data/vendor/rails/activesupport/test/option_merger_test.rb +50 -0
  1167. data/vendor/rails/activesupport/test/ordered_options_test.rb +80 -0
  1168. data/vendor/rails/activesupport/test/reloadable_test.rb +123 -0
  1169. data/vendor/rails/activesupport/test/time_zone_test.rb +91 -0
  1170. data/vendor/rails/activesupport/test/whiny_nil_test.rb +38 -0
  1171. data/vendor/rails/cleanlogs.sh +1 -0
  1172. data/vendor/rails/pushgems.rb +15 -0
  1173. data/vendor/rails/railties/CHANGELOG +1366 -0
  1174. data/vendor/rails/railties/MIT-LICENSE +20 -0
  1175. data/vendor/rails/railties/README +182 -0
  1176. data/vendor/rails/railties/Rakefile +334 -0
  1177. data/vendor/rails/railties/bin/about +3 -0
  1178. data/vendor/rails/railties/bin/breakpointer +3 -0
  1179. data/vendor/rails/railties/bin/console +3 -0
  1180. data/vendor/rails/railties/bin/destroy +3 -0
  1181. data/vendor/rails/railties/bin/generate +3 -0
  1182. data/vendor/rails/railties/bin/performance/benchmarker +3 -0
  1183. data/vendor/rails/railties/bin/performance/profiler +3 -0
  1184. data/vendor/rails/railties/bin/plugin +3 -0
  1185. data/vendor/rails/railties/bin/process/inspector +3 -0
  1186. data/vendor/rails/railties/bin/process/reaper +3 -0
  1187. data/vendor/rails/railties/bin/process/spawner +3 -0
  1188. data/vendor/rails/railties/bin/rails +19 -0
  1189. data/vendor/rails/railties/bin/runner +3 -0
  1190. data/vendor/rails/railties/bin/server +3 -0
  1191. data/vendor/rails/railties/builtin/rails_info/rails/info.rb +123 -0
  1192. data/vendor/rails/railties/builtin/rails_info/rails/info_controller.rb +9 -0
  1193. data/vendor/rails/railties/builtin/rails_info/rails/info_helper.rb +2 -0
  1194. data/vendor/rails/railties/builtin/rails_info/rails_info_controller.rb +2 -0
  1195. data/vendor/rails/railties/configs/apache.conf +40 -0
  1196. data/vendor/rails/railties/configs/databases/frontbase.yml +28 -0
  1197. data/vendor/rails/railties/configs/databases/mysql.yml +48 -0
  1198. data/vendor/rails/railties/configs/databases/oracle.yml +39 -0
  1199. data/vendor/rails/railties/configs/databases/postgresql.yml +44 -0
  1200. data/vendor/rails/railties/configs/databases/sqlite2.yml +16 -0
  1201. data/vendor/rails/railties/configs/databases/sqlite3.yml +19 -0
  1202. data/vendor/rails/railties/configs/empty.log +0 -0
  1203. data/vendor/rails/railties/configs/lighttpd.conf +54 -0
  1204. data/vendor/rails/railties/configs/routes.rb +23 -0
  1205. data/vendor/rails/railties/dispatches/dispatch.fcgi +24 -0
  1206. data/vendor/rails/railties/dispatches/dispatch.rb +10 -0
  1207. data/vendor/rails/railties/dispatches/gateway.cgi +97 -0
  1208. data/vendor/rails/railties/environments/boot.rb +45 -0
  1209. data/vendor/rails/railties/environments/development.rb +21 -0
  1210. data/vendor/rails/railties/environments/environment.rb +60 -0
  1211. data/vendor/rails/railties/environments/production.rb +18 -0
  1212. data/vendor/rails/railties/environments/test.rb +19 -0
  1213. data/vendor/rails/railties/fresh_rakefile +10 -0
  1214. data/vendor/rails/railties/helpers/application.rb +7 -0
  1215. data/vendor/rails/railties/helpers/application_helper.rb +3 -0
  1216. data/vendor/rails/railties/helpers/test_helper.rb +28 -0
  1217. data/vendor/rails/railties/html/404.html +30 -0
  1218. data/vendor/rails/railties/html/500.html +30 -0
  1219. data/vendor/rails/railties/html/favicon.ico +0 -0
  1220. data/vendor/rails/railties/html/images/rails.png +0 -0
  1221. data/vendor/rails/railties/html/index.html +277 -0
  1222. data/vendor/rails/railties/html/javascripts/application.js +2 -0
  1223. data/vendor/rails/railties/html/javascripts/controls.js +833 -0
  1224. data/vendor/rails/railties/html/javascripts/dragdrop.js +942 -0
  1225. data/vendor/rails/railties/html/javascripts/effects.js +1088 -0
  1226. data/vendor/rails/railties/html/javascripts/prototype.js +2515 -0
  1227. data/vendor/rails/railties/html/robots.txt +1 -0
  1228. data/vendor/rails/railties/lib/binding_of_caller.rb +85 -0
  1229. data/vendor/rails/railties/lib/breakpoint.rb +553 -0
  1230. data/vendor/rails/railties/lib/breakpoint_client.rb +196 -0
  1231. data/vendor/rails/railties/lib/code_statistics.rb +107 -0
  1232. data/vendor/rails/railties/lib/commands.rb +17 -0
  1233. data/vendor/rails/railties/lib/commands/about.rb +2 -0
  1234. data/vendor/rails/railties/lib/commands/breakpointer.rb +1 -0
  1235. data/vendor/rails/railties/lib/commands/console.rb +25 -0
  1236. data/vendor/rails/railties/lib/commands/destroy.rb +6 -0
  1237. data/vendor/rails/railties/lib/commands/generate.rb +6 -0
  1238. data/vendor/rails/railties/lib/commands/ncgi/listener +86 -0
  1239. data/vendor/rails/railties/lib/commands/ncgi/tracker +69 -0
  1240. data/vendor/rails/railties/lib/commands/performance/benchmarker.rb +24 -0
  1241. data/vendor/rails/railties/lib/commands/performance/profiler.rb +50 -0
  1242. data/vendor/rails/railties/lib/commands/plugin.rb +918 -0
  1243. data/vendor/rails/railties/lib/commands/process/inspector.rb +68 -0
  1244. data/vendor/rails/railties/lib/commands/process/reaper.rb +149 -0
  1245. data/vendor/rails/railties/lib/commands/process/spawner.rb +209 -0
  1246. data/vendor/rails/railties/lib/commands/process/spinner.rb +57 -0
  1247. data/vendor/rails/railties/lib/commands/runner.rb +48 -0
  1248. data/vendor/rails/railties/lib/commands/server.rb +39 -0
  1249. data/vendor/rails/railties/lib/commands/servers/base.rb +19 -0
  1250. data/vendor/rails/railties/lib/commands/servers/lighttpd.rb +94 -0
  1251. data/vendor/rails/railties/lib/commands/servers/mongrel.rb +65 -0
  1252. data/vendor/rails/railties/lib/commands/servers/webrick.rb +59 -0
  1253. data/vendor/rails/railties/lib/commands/update.rb +4 -0
  1254. data/vendor/rails/railties/lib/console_app.rb +27 -0
  1255. data/vendor/rails/railties/lib/console_sandbox.rb +6 -0
  1256. data/vendor/rails/railties/lib/console_with_helpers.rb +23 -0
  1257. data/vendor/rails/railties/lib/dispatcher.rb +173 -0
  1258. data/vendor/rails/railties/lib/fcgi_handler.rb +225 -0
  1259. data/vendor/rails/railties/lib/initializer.rb +702 -0
  1260. data/vendor/rails/railties/lib/rails/version.rb +9 -0
  1261. data/vendor/rails/railties/lib/rails_generator.rb +43 -0
  1262. data/vendor/rails/railties/lib/rails_generator/base.rb +261 -0
  1263. data/vendor/rails/railties/lib/rails_generator/commands.rb +581 -0
  1264. data/vendor/rails/railties/lib/rails_generator/generated_attribute.rb +42 -0
  1265. data/vendor/rails/railties/lib/rails_generator/generators/applications/app/USAGE +16 -0
  1266. data/vendor/rails/railties/lib/rails_generator/generators/applications/app/app_generator.rb +160 -0
  1267. data/vendor/rails/railties/lib/rails_generator/generators/components/controller/USAGE +30 -0
  1268. data/vendor/rails/railties/lib/rails_generator/generators/components/controller/controller_generator.rb +37 -0
  1269. data/vendor/rails/railties/lib/rails_generator/generators/components/controller/templates/controller.rb +10 -0
  1270. data/vendor/rails/railties/lib/rails_generator/generators/components/controller/templates/functional_test.rb +18 -0
  1271. data/vendor/rails/railties/lib/rails_generator/generators/components/controller/templates/helper.rb +2 -0
  1272. data/vendor/rails/railties/lib/rails_generator/generators/components/controller/templates/view.rhtml +2 -0
  1273. data/vendor/rails/railties/lib/rails_generator/generators/components/integration_test/USAGE +14 -0
  1274. data/vendor/rails/railties/lib/rails_generator/generators/components/integration_test/integration_test_generator.rb +16 -0
  1275. data/vendor/rails/railties/lib/rails_generator/generators/components/integration_test/templates/integration_test.rb +10 -0
  1276. data/vendor/rails/railties/lib/rails_generator/generators/components/mailer/USAGE +18 -0
  1277. data/vendor/rails/railties/lib/rails_generator/generators/components/mailer/mailer_generator.rb +34 -0
  1278. data/vendor/rails/railties/lib/rails_generator/generators/components/mailer/templates/fixture.rhtml +3 -0
  1279. data/vendor/rails/railties/lib/rails_generator/generators/components/mailer/templates/mailer.rb +13 -0
  1280. data/vendor/rails/railties/lib/rails_generator/generators/components/mailer/templates/unit_test.rb +37 -0
  1281. data/vendor/rails/railties/lib/rails_generator/generators/components/mailer/templates/view.rhtml +3 -0
  1282. data/vendor/rails/railties/lib/rails_generator/generators/components/migration/USAGE +14 -0
  1283. data/vendor/rails/railties/lib/rails_generator/generators/components/migration/migration_generator.rb +7 -0
  1284. data/vendor/rails/railties/lib/rails_generator/generators/components/migration/templates/migration.rb +7 -0
  1285. data/vendor/rails/railties/lib/rails_generator/generators/components/model/USAGE +26 -0
  1286. data/vendor/rails/railties/lib/rails_generator/generators/components/model/model_generator.rb +38 -0
  1287. data/vendor/rails/railties/lib/rails_generator/generators/components/model/templates/fixtures.yml +11 -0
  1288. data/vendor/rails/railties/lib/rails_generator/generators/components/model/templates/migration.rb +13 -0
  1289. data/vendor/rails/railties/lib/rails_generator/generators/components/model/templates/model.rb +2 -0
  1290. data/vendor/rails/railties/lib/rails_generator/generators/components/model/templates/unit_test.rb +10 -0
  1291. data/vendor/rails/railties/lib/rails_generator/generators/components/observer/USAGE +15 -0
  1292. data/vendor/rails/railties/lib/rails_generator/generators/components/observer/observer_generator.rb +16 -0
  1293. data/vendor/rails/railties/lib/rails_generator/generators/components/observer/templates/observer.rb +2 -0
  1294. data/vendor/rails/railties/lib/rails_generator/generators/components/observer/templates/unit_test.rb +10 -0
  1295. data/vendor/rails/railties/lib/rails_generator/generators/components/plugin/USAGE +35 -0
  1296. data/vendor/rails/railties/lib/rails_generator/generators/components/plugin/plugin_generator.rb +38 -0
  1297. data/vendor/rails/railties/lib/rails_generator/generators/components/plugin/templates/README +4 -0
  1298. data/vendor/rails/railties/lib/rails_generator/generators/components/plugin/templates/Rakefile +22 -0
  1299. data/vendor/rails/railties/lib/rails_generator/generators/components/plugin/templates/USAGE +8 -0
  1300. data/vendor/rails/railties/lib/rails_generator/generators/components/plugin/templates/generator.rb +8 -0
  1301. data/vendor/rails/railties/lib/rails_generator/generators/components/plugin/templates/init.rb +1 -0
  1302. data/vendor/rails/railties/lib/rails_generator/generators/components/plugin/templates/install.rb +1 -0
  1303. data/vendor/rails/railties/lib/rails_generator/generators/components/plugin/templates/plugin.rb +1 -0
  1304. data/vendor/rails/railties/lib/rails_generator/generators/components/plugin/templates/tasks.rake +4 -0
  1305. data/vendor/rails/railties/lib/rails_generator/generators/components/plugin/templates/uninstall.rb +1 -0
  1306. data/vendor/rails/railties/lib/rails_generator/generators/components/plugin/templates/unit_test.rb +8 -0
  1307. data/vendor/rails/railties/lib/rails_generator/generators/components/resource/resource_generator.rb +76 -0
  1308. data/vendor/rails/railties/lib/rails_generator/generators/components/resource/templates/USAGE +18 -0
  1309. data/vendor/rails/railties/lib/rails_generator/generators/components/resource/templates/controller.rb +2 -0
  1310. data/vendor/rails/railties/lib/rails_generator/generators/components/resource/templates/fixtures.yml +11 -0
  1311. data/vendor/rails/railties/lib/rails_generator/generators/components/resource/templates/functional_test.rb +20 -0
  1312. data/vendor/rails/railties/lib/rails_generator/generators/components/resource/templates/helper.rb +2 -0
  1313. data/vendor/rails/railties/lib/rails_generator/generators/components/resource/templates/migration.rb +13 -0
  1314. data/vendor/rails/railties/lib/rails_generator/generators/components/resource/templates/model.rb +2 -0
  1315. data/vendor/rails/railties/lib/rails_generator/generators/components/resource/templates/unit_test.rb +10 -0
  1316. data/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/USAGE +32 -0
  1317. data/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/scaffold_generator.rb +193 -0
  1318. data/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/templates/controller.rb +58 -0
  1319. data/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/templates/form.rhtml +3 -0
  1320. data/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/templates/form_scaffolding.rhtml +1 -0
  1321. data/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/templates/functional_test.rb +102 -0
  1322. data/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/templates/helper.rb +2 -0
  1323. data/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/templates/layout.rhtml +17 -0
  1324. data/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/templates/style.css +74 -0
  1325. data/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/templates/view_edit.rhtml +9 -0
  1326. data/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/templates/view_list.rhtml +27 -0
  1327. data/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/templates/view_new.rhtml +8 -0
  1328. data/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/templates/view_show.rhtml +8 -0
  1329. data/vendor/rails/railties/lib/rails_generator/generators/components/scaffold_resource/USAGE +29 -0
  1330. data/vendor/rails/railties/lib/rails_generator/generators/components/scaffold_resource/scaffold_resource_generator.rb +92 -0
  1331. data/vendor/rails/railties/lib/rails_generator/generators/components/scaffold_resource/templates/controller.rb +79 -0
  1332. data/vendor/rails/railties/lib/rails_generator/generators/components/scaffold_resource/templates/fixtures.yml +11 -0
  1333. data/vendor/rails/railties/lib/rails_generator/generators/components/scaffold_resource/templates/functional_test.rb +57 -0
  1334. data/vendor/rails/railties/lib/rails_generator/generators/components/scaffold_resource/templates/helper.rb +2 -0
  1335. data/vendor/rails/railties/lib/rails_generator/generators/components/scaffold_resource/templates/layout.rhtml +17 -0
  1336. data/vendor/rails/railties/lib/rails_generator/generators/components/scaffold_resource/templates/migration.rb +13 -0
  1337. data/vendor/rails/railties/lib/rails_generator/generators/components/scaffold_resource/templates/model.rb +2 -0
  1338. data/vendor/rails/railties/lib/rails_generator/generators/components/scaffold_resource/templates/style.css +74 -0
  1339. data/vendor/rails/railties/lib/rails_generator/generators/components/scaffold_resource/templates/unit_test.rb +10 -0
  1340. data/vendor/rails/railties/lib/rails_generator/generators/components/scaffold_resource/templates/view_edit.rhtml +19 -0
  1341. data/vendor/rails/railties/lib/rails_generator/generators/components/scaffold_resource/templates/view_index.rhtml +24 -0
  1342. data/vendor/rails/railties/lib/rails_generator/generators/components/scaffold_resource/templates/view_new.rhtml +18 -0
  1343. data/vendor/rails/railties/lib/rails_generator/generators/components/scaffold_resource/templates/view_show.rhtml +10 -0
  1344. data/vendor/rails/railties/lib/rails_generator/generators/components/session_migration/USAGE +15 -0
  1345. data/vendor/rails/railties/lib/rails_generator/generators/components/session_migration/session_migration_generator.rb +18 -0
  1346. data/vendor/rails/railties/lib/rails_generator/generators/components/session_migration/templates/migration.rb +16 -0
  1347. data/vendor/rails/railties/lib/rails_generator/generators/components/web_service/USAGE +28 -0
  1348. data/vendor/rails/railties/lib/rails_generator/generators/components/web_service/templates/api_definition.rb +5 -0
  1349. data/vendor/rails/railties/lib/rails_generator/generators/components/web_service/templates/controller.rb +8 -0
  1350. data/vendor/rails/railties/lib/rails_generator/generators/components/web_service/templates/functional_test.rb +19 -0
  1351. data/vendor/rails/railties/lib/rails_generator/generators/components/web_service/web_service_generator.rb +29 -0
  1352. data/vendor/rails/railties/lib/rails_generator/lookup.rb +209 -0
  1353. data/vendor/rails/railties/lib/rails_generator/manifest.rb +53 -0
  1354. data/vendor/rails/railties/lib/rails_generator/options.rb +143 -0
  1355. data/vendor/rails/railties/lib/rails_generator/scripts.rb +83 -0
  1356. data/vendor/rails/railties/lib/rails_generator/scripts/destroy.rb +7 -0
  1357. data/vendor/rails/railties/lib/rails_generator/scripts/generate.rb +7 -0
  1358. data/vendor/rails/railties/lib/rails_generator/scripts/update.rb +12 -0
  1359. data/vendor/rails/railties/lib/rails_generator/simple_logger.rb +46 -0
  1360. data/vendor/rails/railties/lib/rails_generator/spec.rb +44 -0
  1361. data/vendor/rails/railties/lib/railties_path.rb +1 -0
  1362. data/vendor/rails/railties/lib/ruby_version_check.rb +17 -0
  1363. data/vendor/rails/railties/lib/rubyprof_ext.rb +35 -0
  1364. data/vendor/rails/railties/lib/tasks/databases.rake +187 -0
  1365. data/vendor/rails/railties/lib/tasks/framework.rake +112 -0
  1366. data/vendor/rails/railties/lib/tasks/log.rake +9 -0
  1367. data/vendor/rails/railties/lib/tasks/misc.rake +4 -0
  1368. data/vendor/rails/railties/lib/tasks/pre_namespace_aliases.rake +53 -0
  1369. data/vendor/rails/railties/lib/tasks/rails.rb +8 -0
  1370. data/vendor/rails/railties/lib/tasks/statistics.rake +18 -0
  1371. data/vendor/rails/railties/lib/tasks/testing.rake +120 -0
  1372. data/vendor/rails/railties/lib/test_help.rb +19 -0
  1373. data/vendor/rails/railties/lib/webrick_server.rb +166 -0
  1374. data/vendor/rails/railties/test/abstract_unit.rb +20 -0
  1375. data/vendor/rails/railties/test/dispatcher_test.rb +141 -0
  1376. data/vendor/rails/railties/test/fcgi_dispatcher_test.rb +294 -0
  1377. data/vendor/rails/railties/test/fixtures/environment_with_constant.rb +1 -0
  1378. data/vendor/rails/railties/test/fixtures/lib/generators/missing_class/missing_class_generator.rb +0 -0
  1379. data/vendor/rails/railties/test/fixtures/lib/generators/working/working_generator.rb +2 -0
  1380. data/vendor/rails/railties/test/fixtures/plugins/default/stubby/init.rb +7 -0
  1381. data/vendor/rails/railties/test/fixtures/plugins/default/stubby/lib/stubby_mixin.rb +2 -0
  1382. data/vendor/rails/railties/test/initializer_test.rb +33 -0
  1383. data/vendor/rails/railties/test/mocks/dispatcher.rb +13 -0
  1384. data/vendor/rails/railties/test/mocks/fcgi.rb +15 -0
  1385. data/vendor/rails/railties/test/mocks/routes.rb +6 -0
  1386. data/vendor/rails/railties/test/mocks/stubbed_breakpoint.rb +2 -0
  1387. data/vendor/rails/railties/test/mocks/stubbed_kernel.rb +5 -0
  1388. data/vendor/rails/railties/test/plugin_test.rb +111 -0
  1389. data/vendor/rails/railties/test/rails_generator_test.rb +127 -0
  1390. data/vendor/rails/railties/test/rails_info_controller_test.rb +48 -0
  1391. data/vendor/rails/railties/test/rails_info_test.rb +98 -0
  1392. data/vendor/rails/release.rb +25 -0
  1393. data/vendor/redcloth/Rakefile +196 -0
  1394. data/vendor/redcloth/bin/redcloth +3 -0
  1395. data/vendor/redcloth/lib/rctodb.rb +1107 -0
  1396. data/vendor/redcloth/lib/redcloth.rb +1130 -0
  1397. data/vendor/redcloth/run-tests.rb +28 -0
  1398. data/vendor/redcloth/setup.rb +1376 -0
  1399. data/vendor/redcloth/tests/code.yml +105 -0
  1400. data/vendor/redcloth/tests/images.yml +171 -0
  1401. data/vendor/redcloth/tests/instiki.yml +39 -0
  1402. data/vendor/redcloth/tests/links.yml +155 -0
  1403. data/vendor/redcloth/tests/lists.yml +77 -0
  1404. data/vendor/redcloth/tests/markdown.yml +218 -0
  1405. data/vendor/redcloth/tests/poignant.yml +64 -0
  1406. data/vendor/redcloth/tests/table.yml +198 -0
  1407. data/vendor/redcloth/tests/textism.yml +406 -0
  1408. data/vendor/rubypants/README +114 -0
  1409. data/vendor/rubypants/Rakefile +84 -0
  1410. data/vendor/rubypants/install.rb +9 -0
  1411. data/vendor/rubypants/rubypants.rb +490 -0
  1412. data/vendor/rubypants/test_rubypants.rb +162 -0
  1413. metadata +1701 -114
  1414. data/app/behaviors/archive_behavior.rb +0 -42
  1415. data/app/behaviors/archive_day_index_behavior.rb +0 -30
  1416. data/app/behaviors/archive_month_index_behavior.rb +0 -30
  1417. data/app/behaviors/archive_year_index_behavior.rb +0 -30
  1418. data/app/behaviors/page_missing_behavior.rb +0 -31
  1419. data/app/filters/markdown_filter.rb +0 -9
  1420. data/app/filters/textile_filter.rb +0 -9
  1421. data/app/models/behavior.rb +0 -194
  1422. data/db/development_structure.sql +0 -80
  1423. data/lib/advanced_delegation.rb +0 -21
  1424. data/lib/archive_index_behavior_tags_and_methods.rb +0 -48
  1425. data/lib/generators/behavior/USAGE +0 -16
  1426. data/lib/generators/behavior/behavior_generator.rb +0 -22
  1427. data/lib/generators/behavior/templates/model.rb.template +0 -9
  1428. data/lib/generators/behavior/templates/unit_test.rb.template +0 -16
  1429. data/lib/generators/filter/USAGE +0 -16
  1430. data/lib/generators/filter/filter_generator.rb +0 -22
  1431. data/lib/generators/filter/templates/model.rb.template +0 -8
  1432. data/lib/generators/filter/templates/unit_test.rb.template +0 -7
  1433. data/lib/plugins/index_quoting_fix/init.rb +0 -32
  1434. data/lib/registerable.rb +0 -70
  1435. data/script/setup_database +0 -297
  1436. data/test/functional/admin/model_controller_test.rb +0 -152
  1437. data/test/helpers/behavior_render_test_helper.rb +0 -34
  1438. data/test/helpers/behavior_test_helper.rb +0 -47
  1439. data/test/unit/behavior_test.rb +0 -196
  1440. data/test/unit/filters/markdown_filter_test.rb +0 -14
  1441. data/test/unit/filters/textile_filter_test.rb +0 -14
  1442. data/test/unit/registerable_test.rb +0 -68
@@ -0,0 +1,35 @@
1
+ module ActionController
2
+ class AbstractResponse #:nodoc:
3
+ DEFAULT_HEADERS = { "Cache-Control" => "no-cache" }
4
+ attr_accessor :body, :headers, :session, :cookies, :assigns, :template, :redirected_to, :redirected_to_method_params, :layout
5
+
6
+ def initialize
7
+ @body, @headers, @session, @assigns = "", DEFAULT_HEADERS.merge("cookie" => []), [], []
8
+ end
9
+
10
+ def content_type=(mime_type)
11
+ @headers["Content-Type"] = charset ? "#{mime_type}; charset=#{charset}" : mime_type
12
+ end
13
+
14
+ def content_type
15
+ content_type = String(@headers["Content-Type"]).split(";")[0]
16
+ content_type.blank? ? nil : content_type
17
+ end
18
+
19
+ def charset=(encoding)
20
+ @headers["Content-Type"] = "#{content_type || "text/html"}; charset=#{encoding}"
21
+ end
22
+
23
+ def charset
24
+ charset = String(@headers["Content-Type"]).split(";")[1]
25
+ charset.blank? ? nil : charset.strip.split("=")[1]
26
+ end
27
+
28
+ def redirect(to_url, permanently = false)
29
+ @headers["Status"] = "302 Found" unless @headers["Status"] == "301 Moved Permanently"
30
+ @headers["Location"] = to_url
31
+
32
+ @body = "<html><body>You are being <a href=\"#{to_url}\">redirected</a>.</body></html>"
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,1340 @@
1
+ require 'cgi'
2
+
3
+ class Object
4
+ def to_param
5
+ to_s
6
+ end
7
+ end
8
+
9
+ class TrueClass
10
+ def to_param
11
+ self
12
+ end
13
+ end
14
+
15
+ class FalseClass
16
+ def to_param
17
+ self
18
+ end
19
+ end
20
+
21
+ class NilClass
22
+ def to_param
23
+ self
24
+ end
25
+ end
26
+
27
+ class Regexp #:nodoc:
28
+ def number_of_captures
29
+ Regexp.new("|#{source}").match('').captures.length
30
+ end
31
+
32
+ class << self
33
+ def optionalize(pattern)
34
+ case unoptionalize(pattern)
35
+ when /\A(.|\(.*\))\Z/ then "#{pattern}?"
36
+ else "(?:#{pattern})?"
37
+ end
38
+ end
39
+
40
+ def unoptionalize(pattern)
41
+ [/\A\(\?:(.*)\)\?\Z/, /\A(.|\(.*\))\?\Z/].each do |regexp|
42
+ return $1 if regexp =~ pattern
43
+ end
44
+ return pattern
45
+ end
46
+ end
47
+ end
48
+
49
+ module ActionController
50
+ # == Routing
51
+ #
52
+ # The routing module provides URL rewriting in native Ruby. It's a way to
53
+ # redirect incoming requests to controllers and actions. This replaces
54
+ # mod_rewrite rules. Best of all Rails' Routing works with any web server.
55
+ # Routes are defined in routes.rb in your RAILS_ROOT/config directory.
56
+ #
57
+ # Consider the following route, installed by Rails when you generate your
58
+ # application:
59
+ #
60
+ # map.connect ':controller/:action/:id'
61
+ #
62
+ # This route states that it expects requests to consist of a
63
+ # :controller followed by an :action that in turns is fed by some :id
64
+ #
65
+ # Suppose you get an incoming request for <tt>/blog/edit/22</tt>, you'll end up
66
+ # with:
67
+ #
68
+ # params = { :controller => 'blog',
69
+ # :action => 'edit'
70
+ # :id => '22'
71
+ # }
72
+ #
73
+ # Think of creating routes as drawing a map for your requests. The map tells
74
+ # them where to go based on some predefined pattern:
75
+ #
76
+ # ActionController::Routing::Routes.draw do |map|
77
+ # Pattern 1 tells some request to go to one place
78
+ # Pattern 2 tell them to go to another
79
+ # ...
80
+ # end
81
+ #
82
+ # The following symbols are special:
83
+ #
84
+ # :controller maps to your controller name
85
+ # :action maps to an action with your controllers
86
+ #
87
+ # Other names simply map to a parameter as in the case of +:id+.
88
+ #
89
+ # == Route priority
90
+ #
91
+ # Not all routes are created equally. Routes have priority defined by the
92
+ # order of appearance of the routes in the routes.rb file. The priority goes
93
+ # from top to bottom. The last route in that file is at the lowest priority
94
+ # will be applied last. If no route matches, 404 is returned.
95
+ #
96
+ # Within blocks, the empty pattern goes first i.e. is at the highest priority.
97
+ # In practice this works out nicely:
98
+ #
99
+ # ActionController::Routing::Routes.draw do |map|
100
+ # map.with_options :controller => 'blog' do |blog|
101
+ # blog.show '', :action => 'list'
102
+ # end
103
+ # map.connect ':controller/:action/:view
104
+ # end
105
+ #
106
+ # In this case, invoking blog controller (with an URL like '/blog/')
107
+ # without parameters will activate the 'list' action by default.
108
+ #
109
+ # == Defaults routes and default parameters
110
+ #
111
+ # Setting a default route is straightforward in Rails because by appending a
112
+ # Hash to the end of your mapping you can set default parameters.
113
+ #
114
+ # Example:
115
+ # ActionController::Routing:Routes.draw do |map|
116
+ # map.connect ':controller/:action/:id', :controller => 'blog'
117
+ # end
118
+ #
119
+ # This sets up +blog+ as the default controller if no other is specified.
120
+ # This means visiting '/' would invoke the blog controller.
121
+ #
122
+ # More formally, you can define defaults in a route with the +:defaults+ key.
123
+ #
124
+ # map.connect ':controller/:id/:action', :action => 'show', :defaults => { :page => 'Dashboard' }
125
+ #
126
+ # == Named routes
127
+ #
128
+ # Routes can be named with the syntax <tt>map.name_of_route options</tt>,
129
+ # allowing for easy reference within your source as +name_of_route_url+
130
+ # for the full URL and +name_of_route_path+ for the URI path.
131
+ #
132
+ # Example:
133
+ # # In routes.rb
134
+ # map.login 'login', :controller => 'accounts', :action => 'login'
135
+ #
136
+ # # With render, redirect_to, tests, etc.
137
+ # redirect_to login_url
138
+ #
139
+ # Arguments can be passed as well.
140
+ #
141
+ # redirect_to show_item_path(:id => 25)
142
+ #
143
+ # Use <tt>map.root</tt> as a shorthand to name a route for the root path ""
144
+ #
145
+ # # In routes.rb
146
+ # map.root :controller => 'blogs'
147
+ #
148
+ # # would recognize http://www.example.com/ as
149
+ # params = { :controller => 'blogs', :action => 'index' }
150
+ #
151
+ # # and provide these named routes
152
+ # root_url # => 'http://www.example.com/'
153
+ # root_path # => ''
154
+ #
155
+ # Note: when using +with_options+, the route is simply named after the
156
+ # method you call on the block parameter rather than map.
157
+ #
158
+ # # In routes.rb
159
+ # map.with_options :controller => 'blog' do |blog|
160
+ # blog.show '', :action => 'list'
161
+ # blog.delete 'delete/:id', :action => 'delete',
162
+ # blog.edit 'edit/:id', :action => 'edit'
163
+ # end
164
+ #
165
+ # # provides named routes for show, delete, and edit
166
+ # link_to @article.title, show_path(:id => @article.id)
167
+ #
168
+ # == Pretty URLs
169
+ #
170
+ # Routes can generate pretty URLs. For example:
171
+ #
172
+ # map.connect 'articles/:year/:month/:day',
173
+ # :controller => 'articles',
174
+ # :action => 'find_by_date',
175
+ # :year => /\d{4}/,
176
+ # :month => /\d{1,2}/,
177
+ # :day => /\d{1,2}/
178
+ #
179
+ # # Using the route above, the url below maps to:
180
+ # # params = {:year => '2005', :month => '11', :day => '06'}
181
+ # # http://localhost:3000/articles/2005/11/06
182
+ #
183
+ # == Regular Expressions and parameters
184
+ # You can specify a reqular expression to define a format for a parameter.
185
+ #
186
+ # map.geocode 'geocode/:postalcode', :controller => 'geocode',
187
+ # :action => 'show', :postalcode => /\d{5}(-\d{4})?/
188
+ #
189
+ # or more formally:
190
+ #
191
+ # map.geocode 'geocode/:postalcode', :controller => 'geocode',
192
+ # :action => 'show',
193
+ # :requirements { :postalcode => /\d{5}(-\d{4})?/ }
194
+ #
195
+ # == Route globbing
196
+ #
197
+ # Specifying <tt>*[string]</tt> as part of a rule like :
198
+ #
199
+ # map.connect '*path' , :controller => 'blog' , :action => 'unrecognized?'
200
+ #
201
+ # will glob all remaining parts of the route that were not recognized earlier. This idiom must appear at the end of the path. The globbed values are in <tt>params[:path]</tt> in this case.
202
+ #
203
+ # == Reloading routes
204
+ #
205
+ # You can reload routes if you feel you must:
206
+ #
207
+ # Action::Controller::Routes.reload
208
+ #
209
+ # This will clear all named routes and reload routes.rb
210
+ #
211
+ # == Testing Routes
212
+ #
213
+ # The two main methods for testing your routes:
214
+ #
215
+ # === +assert_routing+
216
+ #
217
+ # def test_movie_route_properly_splits
218
+ # opts = {:controller => "plugin", :action => "checkout", :id => "2"}
219
+ # assert_routing "plugin/checkout/2", opts
220
+ # end
221
+ #
222
+ # +assert_routing+ lets you test whether or not the route properly resolves into options.
223
+ #
224
+ # === +assert_recognizes+
225
+ #
226
+ # def test_route_has_options
227
+ # opts = {:controller => "plugin", :action => "show", :id => "12"}
228
+ # assert_recognizes opts, "/plugins/show/12"
229
+ # end
230
+ #
231
+ # Note the subtle difference between the two: +assert_routing+ tests that
232
+ # an URL fits options while +assert_recognizes+ tests that an URL
233
+ # breaks into parameters properly.
234
+ #
235
+ # In tests you can simply pass the URL or named route to +get+ or +post+.
236
+ #
237
+ # def send_to_jail
238
+ # get '/jail'
239
+ # assert_response :success
240
+ # assert_template "jail/front"
241
+ # end
242
+ #
243
+ # def goes_to_login
244
+ # get login_url
245
+ # #...
246
+ # end
247
+ #
248
+ module Routing
249
+ SEPARATORS = %w( / ; . , ? )
250
+
251
+ # The root paths which may contain controller files
252
+ mattr_accessor :controller_paths
253
+ self.controller_paths = []
254
+
255
+ class << self
256
+ def with_controllers(names)
257
+ prior_controllers = @possible_controllers
258
+ use_controllers! names
259
+ yield
260
+ ensure
261
+ use_controllers! prior_controllers
262
+ end
263
+
264
+ def normalize_paths(paths)
265
+ # do the hokey-pokey of path normalization...
266
+ paths = paths.collect do |path|
267
+ path = path.
268
+ gsub("//", "/"). # replace double / chars with a single
269
+ gsub("\\\\", "\\"). # replace double \ chars with a single
270
+ gsub(%r{(.)[\\/]$}, '\1') # drop final / or \ if path ends with it
271
+
272
+ # eliminate .. paths where possible
273
+ re = %r{\w+[/\\]\.\.[/\\]}
274
+ path.gsub!(%r{\w+[/\\]\.\.[/\\]}, "") while path.match(re)
275
+ path
276
+ end
277
+
278
+ # start with longest path, first
279
+ paths = paths.uniq.sort_by { |path| - path.length }
280
+ end
281
+
282
+ def possible_controllers
283
+ unless @possible_controllers
284
+ @possible_controllers = []
285
+
286
+ paths = controller_paths.select { |path| File.directory?(path) && path != "." }
287
+
288
+ seen_paths = Hash.new {|h, k| h[k] = true; false}
289
+ normalize_paths(paths).each do |load_path|
290
+ Dir["#{load_path}/**/*_controller.rb"].collect do |path|
291
+ next if seen_paths[path.gsub(%r{^\.[/\\]}, "")]
292
+
293
+ controller_name = path[(load_path.length + 1)..-1]
294
+
295
+ controller_name.gsub!(/_controller\.rb\Z/, '')
296
+ @possible_controllers << controller_name
297
+ end
298
+ end
299
+
300
+ # remove duplicates
301
+ @possible_controllers.uniq!
302
+ end
303
+ @possible_controllers
304
+ end
305
+
306
+ def use_controllers!(controller_names)
307
+ @possible_controllers = controller_names
308
+ end
309
+
310
+ def controller_relative_to(controller, previous)
311
+ if controller.nil? then previous
312
+ elsif controller[0] == ?/ then controller[1..-1]
313
+ elsif %r{^(.*)/} =~ previous then "#{$1}/#{controller}"
314
+ else controller
315
+ end
316
+ end
317
+ end
318
+
319
+ class Route #:nodoc:
320
+ attr_accessor :segments, :requirements, :conditions
321
+
322
+ def initialize
323
+ @segments = []
324
+ @requirements = {}
325
+ @conditions = {}
326
+ end
327
+
328
+ # Write and compile a +generate+ method for this Route.
329
+ def write_generation
330
+ # Build the main body of the generation
331
+ body = "expired = false\n#{generation_extraction}\n#{generation_structure}"
332
+
333
+ # If we have conditions that must be tested first, nest the body inside an if
334
+ body = "if #{generation_requirements}\n#{body}\nend" if generation_requirements
335
+ args = "options, hash, expire_on = {}"
336
+
337
+ # Nest the body inside of a def block, and then compile it.
338
+ raw_method = method_decl = "def generate_raw(#{args})\npath = begin\n#{body}\nend\n[path, hash]\nend"
339
+ instance_eval method_decl, "generated code (#{__FILE__}:#{__LINE__})"
340
+
341
+ # expire_on.keys == recall.keys; in other words, the keys in the expire_on hash
342
+ # are the same as the keys that were recalled from the previous request. Thus,
343
+ # we can use the expire_on.keys to determine which keys ought to be used to build
344
+ # the query string. (Never use keys from the recalled request when building the
345
+ # query string.)
346
+
347
+ method_decl = "def generate(#{args})\npath, hash = generate_raw(options, hash, expire_on)\nappend_query_string(path, hash, extra_keys(options))\nend"
348
+ instance_eval method_decl, "generated code (#{__FILE__}:#{__LINE__})"
349
+
350
+ method_decl = "def generate_extras(#{args})\npath, hash = generate_raw(options, hash, expire_on)\n[path, extra_keys(options)]\nend"
351
+ instance_eval method_decl, "generated code (#{__FILE__}:#{__LINE__})"
352
+ raw_method
353
+ end
354
+
355
+ # Build several lines of code that extract values from the options hash. If any
356
+ # of the values are missing or rejected then a return will be executed.
357
+ def generation_extraction
358
+ segments.collect do |segment|
359
+ segment.extraction_code
360
+ end.compact * "\n"
361
+ end
362
+
363
+ # Produce a condition expression that will check the requirements of this route
364
+ # upon generation.
365
+ def generation_requirements
366
+ requirement_conditions = requirements.collect do |key, req|
367
+ if req.is_a? Regexp
368
+ value_regexp = Regexp.new "\\A#{req.source}\\Z"
369
+ "hash[:#{key}] && #{value_regexp.inspect} =~ options[:#{key}]"
370
+ else
371
+ "hash[:#{key}] == #{req.inspect}"
372
+ end
373
+ end
374
+ requirement_conditions * ' && ' unless requirement_conditions.empty?
375
+ end
376
+ def generation_structure
377
+ segments.last.string_structure segments[0..-2]
378
+ end
379
+
380
+ # Write and compile a +recognize+ method for this Route.
381
+ def write_recognition
382
+ # Create an if structure to extract the params from a match if it occurs.
383
+ body = "params = parameter_shell.dup\n#{recognition_extraction * "\n"}\nparams"
384
+ body = "if #{recognition_conditions.join(" && ")}\n#{body}\nend"
385
+
386
+ # Build the method declaration and compile it
387
+ method_decl = "def recognize(path, env={})\n#{body}\nend"
388
+ instance_eval method_decl, "generated code (#{__FILE__}:#{__LINE__})"
389
+ method_decl
390
+ end
391
+
392
+ # Plugins may override this method to add other conditions, like checks on
393
+ # host, subdomain, and so forth. Note that changes here only affect route
394
+ # recognition, not generation.
395
+ def recognition_conditions
396
+ result = ["(match = #{Regexp.new(recognition_pattern).inspect}.match(path))"]
397
+ result << "conditions[:method] === env[:method]" if conditions[:method]
398
+ result
399
+ end
400
+
401
+ # Build the regular expression pattern that will match this route.
402
+ def recognition_pattern(wrap = true)
403
+ pattern = ''
404
+ segments.reverse_each do |segment|
405
+ pattern = segment.build_pattern pattern
406
+ end
407
+ wrap ? ("\\A" + pattern + "\\Z") : pattern
408
+ end
409
+
410
+ # Write the code to extract the parameters from a matched route.
411
+ def recognition_extraction
412
+ next_capture = 1
413
+ extraction = segments.collect do |segment|
414
+ x = segment.match_extraction next_capture
415
+ next_capture += Regexp.new(segment.regexp_chunk).number_of_captures
416
+ x
417
+ end
418
+ extraction.compact
419
+ end
420
+
421
+ # Write the real generation implementation and then resend the message.
422
+ def generate(options, hash, expire_on = {})
423
+ write_generation
424
+ generate options, hash, expire_on
425
+ end
426
+
427
+ def generate_extras(options, hash, expire_on = {})
428
+ write_generation
429
+ generate_extras options, hash, expire_on
430
+ end
431
+
432
+ # Generate the query string with any extra keys in the hash and append
433
+ # it to the given path, returning the new path.
434
+ def append_query_string(path, hash, query_keys=nil)
435
+ return nil unless path
436
+ query_keys ||= extra_keys(hash)
437
+ "#{path}#{build_query_string(hash, query_keys)}"
438
+ end
439
+
440
+ # Determine which keys in the given hash are "extra". Extra keys are
441
+ # those that were not used to generate a particular route. The extra
442
+ # keys also do not include those recalled from the prior request, nor
443
+ # do they include any keys that were implied in the route (like a
444
+ # :controller that is required, but not explicitly used in the text of
445
+ # the route.)
446
+ def extra_keys(hash, recall={})
447
+ (hash || {}).keys.map { |k| k.to_sym } - (recall || {}).keys - significant_keys
448
+ end
449
+
450
+ # Build a query string from the keys of the given hash. If +only_keys+
451
+ # is given (as an array), only the keys indicated will be used to build
452
+ # the query string. The query string will correctly build array parameter
453
+ # values.
454
+ def build_query_string(hash, only_keys=nil)
455
+ elements = []
456
+
457
+ only_keys ||= hash.keys
458
+
459
+ only_keys.each do |key|
460
+ value = hash[key] or next
461
+ key = CGI.escape key.to_s
462
+ if value.class == Array
463
+ key << '[]'
464
+ else
465
+ value = [ value ]
466
+ end
467
+ value.each { |val| elements << "#{key}=#{CGI.escape(val.to_param.to_s)}" }
468
+ end
469
+
470
+ query_string = "?#{elements.join("&")}" unless elements.empty?
471
+ query_string || ""
472
+ end
473
+
474
+ # Write the real recognition implementation and then resend the message.
475
+ def recognize(path, environment={})
476
+ write_recognition
477
+ recognize path, environment
478
+ end
479
+
480
+ # A route's parameter shell contains parameter values that are not in the
481
+ # route's path, but should be placed in the recognized hash.
482
+ #
483
+ # For example, +{:controller => 'pages', :action => 'show'} is the shell for the route:
484
+ #
485
+ # map.connect '/page/:id', :controller => 'pages', :action => 'show', :id => /\d+/
486
+ #
487
+ def parameter_shell
488
+ @parameter_shell ||= returning({}) do |shell|
489
+ requirements.each do |key, requirement|
490
+ shell[key] = requirement unless requirement.is_a? Regexp
491
+ end
492
+ end
493
+ end
494
+
495
+ # Return an array containing all the keys that are used in this route. This
496
+ # includes keys that appear inside the path, and keys that have requirements
497
+ # placed upon them.
498
+ def significant_keys
499
+ @significant_keys ||= returning [] do |sk|
500
+ segments.each { |segment| sk << segment.key if segment.respond_to? :key }
501
+ sk.concat requirements.keys
502
+ sk.uniq!
503
+ end
504
+ end
505
+
506
+ # Return a hash of key/value pairs representing the keys in the route that
507
+ # have defaults, or which are specified by non-regexp requirements.
508
+ def defaults
509
+ @defaults ||= returning({}) do |hash|
510
+ segments.each do |segment|
511
+ next unless segment.respond_to? :default
512
+ hash[segment.key] = segment.default unless segment.default.nil?
513
+ end
514
+ requirements.each do |key,req|
515
+ next if Regexp === req || req.nil?
516
+ hash[key] = req
517
+ end
518
+ end
519
+ end
520
+
521
+ def matches_controller_and_action?(controller, action)
522
+ unless @matching_prepared
523
+ @controller_requirement = requirement_for(:controller)
524
+ @action_requirement = requirement_for(:action)
525
+ @matching_prepared = true
526
+ end
527
+
528
+ (@controller_requirement.nil? || @controller_requirement === controller) &&
529
+ (@action_requirement.nil? || @action_requirement === action)
530
+ end
531
+
532
+ def to_s
533
+ @to_s ||= begin
534
+ segs = segments.inject("") { |str,s| str << s.to_s }
535
+ "%-6s %-40s %s" % [(conditions[:method] || :any).to_s.upcase, segs, requirements.inspect]
536
+ end
537
+ end
538
+
539
+ protected
540
+ def requirement_for(key)
541
+ return requirements[key] if requirements.key? key
542
+ segments.each do |segment|
543
+ return segment.regexp if segment.respond_to?(:key) && segment.key == key
544
+ end
545
+ nil
546
+ end
547
+
548
+ end
549
+
550
+ class Segment #:nodoc:
551
+ attr_accessor :is_optional
552
+ alias_method :optional?, :is_optional
553
+
554
+ def initialize
555
+ self.is_optional = false
556
+ end
557
+
558
+ def extraction_code
559
+ nil
560
+ end
561
+
562
+ # Continue generating string for the prior segments.
563
+ def continue_string_structure(prior_segments)
564
+ if prior_segments.empty?
565
+ interpolation_statement(prior_segments)
566
+ else
567
+ new_priors = prior_segments[0..-2]
568
+ prior_segments.last.string_structure(new_priors)
569
+ end
570
+ end
571
+
572
+ # Return a string interpolation statement for this segment and those before it.
573
+ def interpolation_statement(prior_segments)
574
+ chunks = prior_segments.collect { |s| s.interpolation_chunk }
575
+ chunks << interpolation_chunk
576
+ "\"#{chunks * ''}\"#{all_optionals_available_condition(prior_segments)}"
577
+ end
578
+
579
+ def string_structure(prior_segments)
580
+ optional? ? continue_string_structure(prior_segments) : interpolation_statement(prior_segments)
581
+ end
582
+
583
+ # Return an if condition that is true if all the prior segments can be generated.
584
+ # If there are no optional segments before this one, then nil is returned.
585
+ def all_optionals_available_condition(prior_segments)
586
+ optional_locals = prior_segments.collect { |s| s.local_name if s.optional? && s.respond_to?(:local_name) }.compact
587
+ optional_locals.empty? ? nil : " if #{optional_locals * ' && '}"
588
+ end
589
+
590
+ # Recognition
591
+
592
+ def match_extraction(next_capture)
593
+ nil
594
+ end
595
+
596
+ # Warning
597
+
598
+ # Returns true if this segment is optional? because of a default. If so, then
599
+ # no warning will be emitted regarding this segment.
600
+ def optionality_implied?
601
+ false
602
+ end
603
+ end
604
+
605
+ class StaticSegment < Segment #:nodoc:
606
+ attr_accessor :value, :raw
607
+ alias_method :raw?, :raw
608
+
609
+ def initialize(value = nil)
610
+ super()
611
+ self.value = value
612
+ end
613
+
614
+ def interpolation_chunk
615
+ raw? ? value : CGI.escape(value)
616
+ end
617
+
618
+ def regexp_chunk
619
+ chunk = Regexp.escape value
620
+ optional? ? Regexp.optionalize(chunk) : chunk
621
+ end
622
+
623
+ def build_pattern(pattern)
624
+ escaped = Regexp.escape(value)
625
+ if optional? && ! pattern.empty?
626
+ "(?:#{Regexp.optionalize escaped}\\Z|#{escaped}#{Regexp.unoptionalize pattern})"
627
+ elsif optional?
628
+ Regexp.optionalize escaped
629
+ else
630
+ escaped + pattern
631
+ end
632
+ end
633
+
634
+ def to_s
635
+ value
636
+ end
637
+ end
638
+
639
+ class DividerSegment < StaticSegment #:nodoc:
640
+ def initialize(value = nil)
641
+ super(value)
642
+ self.raw = true
643
+ self.is_optional = true
644
+ end
645
+
646
+ def optionality_implied?
647
+ true
648
+ end
649
+ end
650
+
651
+ class DynamicSegment < Segment #:nodoc:
652
+ attr_accessor :key, :default, :regexp
653
+
654
+ def initialize(key = nil, options = {})
655
+ super()
656
+ self.key = key
657
+ self.default = options[:default] if options.key? :default
658
+ self.is_optional = true if options[:optional] || options.key?(:default)
659
+ end
660
+
661
+ def to_s
662
+ ":#{key}"
663
+ end
664
+
665
+ # The local variable name that the value of this segment will be extracted to.
666
+ def local_name
667
+ "#{key}_value"
668
+ end
669
+
670
+ def extract_value
671
+ "#{local_name} = hash[:#{key}] #{"|| #{default.inspect}" if default}"
672
+ end
673
+ def value_check
674
+ if default # Then we know it won't be nil
675
+ "#{value_regexp.inspect} =~ #{local_name}" if regexp
676
+ elsif optional?
677
+ # If we have a regexp check that the value is not given, or that it matches.
678
+ # If we have no regexp, return nil since we do not require a condition.
679
+ "#{local_name}.nil? || #{value_regexp.inspect} =~ #{local_name}" if regexp
680
+ else # Then it must be present, and if we have a regexp, it must match too.
681
+ "#{local_name} #{"&& #{value_regexp.inspect} =~ #{local_name}" if regexp}"
682
+ end
683
+ end
684
+ def expiry_statement
685
+ "expired, hash = true, options if !expired && expire_on[:#{key}]"
686
+ end
687
+
688
+ def extraction_code
689
+ s = extract_value
690
+ vc = value_check
691
+ s << "\nreturn [nil,nil] unless #{vc}" if vc
692
+ s << "\n#{expiry_statement}"
693
+ end
694
+
695
+ def interpolation_chunk
696
+ "\#{CGI.escape(#{local_name}.to_s)}"
697
+ end
698
+
699
+ def string_structure(prior_segments)
700
+ if optional? # We have a conditional to do...
701
+ # If we should not appear in the url, just write the code for the prior
702
+ # segments. This occurs if our value is the default value, or, if we are
703
+ # optional, if we have nil as our value.
704
+ "if #{local_name} == #{default.inspect}\n" +
705
+ continue_string_structure(prior_segments) +
706
+ "\nelse\n" + # Otherwise, write the code up to here
707
+ "#{interpolation_statement(prior_segments)}\nend"
708
+ else
709
+ interpolation_statement(prior_segments)
710
+ end
711
+ end
712
+
713
+ def value_regexp
714
+ Regexp.new "\\A#{regexp.source}\\Z" if regexp
715
+ end
716
+ def regexp_chunk
717
+ regexp ? "(#{regexp.source})" : "([^#{Routing::SEPARATORS.join}]+)"
718
+ end
719
+
720
+ def build_pattern(pattern)
721
+ chunk = regexp_chunk
722
+ chunk = "(#{chunk})" if Regexp.new(chunk).number_of_captures == 0
723
+ pattern = "#{chunk}#{pattern}"
724
+ optional? ? Regexp.optionalize(pattern) : pattern
725
+ end
726
+ def match_extraction(next_capture)
727
+ hangon = (default ? "|| #{default.inspect}" : "if match[#{next_capture}]")
728
+
729
+ # All non code-related keys (such as :id, :slug) have to be unescaped as other CGI params
730
+ "params[:#{key}] = match[#{next_capture}] #{hangon}"
731
+ end
732
+
733
+ def optionality_implied?
734
+ [:action, :id].include? key
735
+ end
736
+
737
+ end
738
+
739
+ class ControllerSegment < DynamicSegment #:nodoc:
740
+ def regexp_chunk
741
+ possible_names = Routing.possible_controllers.collect { |name| Regexp.escape name }
742
+ "(?i-:(#{(regexp || Regexp.union(*possible_names)).source}))"
743
+ end
744
+
745
+ # Don't CGI.escape the controller name, since it may have slashes in it,
746
+ # like admin/foo.
747
+ def interpolation_chunk
748
+ "\#{#{local_name}.to_s}"
749
+ end
750
+
751
+ # Make sure controller names like Admin/Content are correctly normalized to
752
+ # admin/content
753
+ def extract_value
754
+ "#{local_name} = (hash[:#{key}] #{"|| #{default.inspect}" if default}).downcase"
755
+ end
756
+
757
+ def match_extraction(next_capture)
758
+ if default
759
+ "params[:#{key}] = match[#{next_capture}] ? match[#{next_capture}].downcase : '#{default}'"
760
+ else
761
+ "params[:#{key}] = match[#{next_capture}].downcase if match[#{next_capture}]"
762
+ end
763
+ end
764
+ end
765
+
766
+ class PathSegment < DynamicSegment #:nodoc:
767
+ EscapedSlash = CGI.escape("/")
768
+ def interpolation_chunk
769
+ "\#{CGI.escape(#{local_name}.to_s).gsub(#{EscapedSlash.inspect}, '/')}"
770
+ end
771
+
772
+ def default
773
+ ''
774
+ end
775
+
776
+ def default=(path)
777
+ raise RoutingError, "paths cannot have non-empty default values" unless path.blank?
778
+ end
779
+
780
+ def match_extraction(next_capture)
781
+ "params[:#{key}] = PathSegment::Result.new_escaped((match[#{next_capture}]#{" || " + default.inspect if default}).split('/'))#{" if match[" + next_capture + "]" if !default}"
782
+ end
783
+
784
+ def regexp_chunk
785
+ regexp || "(.*)"
786
+ end
787
+
788
+ class Result < ::Array #:nodoc:
789
+ def to_s() join '/' end
790
+ def self.new_escaped(strings)
791
+ new strings.collect {|str| CGI.unescape str}
792
+ end
793
+ end
794
+ end
795
+
796
+ class RouteBuilder #:nodoc:
797
+ attr_accessor :separators, :optional_separators
798
+
799
+ def initialize
800
+ self.separators = Routing::SEPARATORS
801
+ self.optional_separators = %w( / )
802
+ end
803
+
804
+ def separator_pattern(inverted = false)
805
+ "[#{'^' if inverted}#{Regexp.escape(separators.join)}]"
806
+ end
807
+
808
+ def interval_regexp
809
+ Regexp.new "(.*?)(#{separators.source}|$)"
810
+ end
811
+
812
+ # Accepts a "route path" (a string defining a route), and returns the array
813
+ # of segments that corresponds to it. Note that the segment array is only
814
+ # partially initialized--the defaults and requirements, for instance, need
815
+ # to be set separately, via the #assign_route_options method, and the
816
+ # #optional? method for each segment will not be reliable until after
817
+ # #assign_route_options is called, as well.
818
+ def segments_for_route_path(path)
819
+ rest, segments = path, []
820
+
821
+ until rest.empty?
822
+ segment, rest = segment_for rest
823
+ segments << segment
824
+ end
825
+ segments
826
+ end
827
+
828
+ # A factory method that returns a new segment instance appropriate for the
829
+ # format of the given string.
830
+ def segment_for(string)
831
+ segment = case string
832
+ when /\A:(\w+)/
833
+ key = $1.to_sym
834
+ case key
835
+ when :controller then ControllerSegment.new(key)
836
+ else DynamicSegment.new key
837
+ end
838
+ when /\A\*(\w+)/ then PathSegment.new($1.to_sym, :optional => true)
839
+ when /\A\?(.*?)\?/
840
+ returning segment = StaticSegment.new($1) do
841
+ segment.is_optional = true
842
+ end
843
+ when /\A(#{separator_pattern(:inverted)}+)/ then StaticSegment.new($1)
844
+ when Regexp.new(separator_pattern) then
845
+ returning segment = DividerSegment.new($&) do
846
+ segment.is_optional = (optional_separators.include? $&)
847
+ end
848
+ end
849
+ [segment, $~.post_match]
850
+ end
851
+
852
+ # Split the given hash of options into requirement and default hashes. The
853
+ # segments are passed alongside in order to distinguish between default values
854
+ # and requirements.
855
+ def divide_route_options(segments, options)
856
+ options = options.dup
857
+ requirements = (options.delete(:requirements) || {}).dup
858
+ defaults = (options.delete(:defaults) || {}).dup
859
+ conditions = (options.delete(:conditions) || {}).dup
860
+
861
+ path_keys = segments.collect { |segment| segment.key if segment.respond_to?(:key) }.compact
862
+ options.each do |key, value|
863
+ hash = (path_keys.include?(key) && ! value.is_a?(Regexp)) ? defaults : requirements
864
+ hash[key] = value
865
+ end
866
+
867
+ [defaults, requirements, conditions]
868
+ end
869
+
870
+ # Takes a hash of defaults and a hash of requirements, and assigns them to
871
+ # the segments. Any unused requirements (which do not correspond to a segment)
872
+ # are returned as a hash.
873
+ def assign_route_options(segments, defaults, requirements)
874
+ route_requirements = {} # Requirements that do not belong to a segment
875
+
876
+ segment_named = Proc.new do |key|
877
+ segments.detect { |segment| segment.key == key if segment.respond_to?(:key) }
878
+ end
879
+
880
+ requirements.each do |key, requirement|
881
+ segment = segment_named[key]
882
+ if segment
883
+ raise TypeError, "#{key}: requirements on a path segment must be regular expressions" unless requirement.is_a?(Regexp)
884
+ if requirement.source =~ %r{\A(\\A|\^)|(\\Z|\\z|\$)\Z}
885
+ raise ArgumentError, "Regexp anchor characters are not allowed in routing requirements: #{requirement.inspect}"
886
+ end
887
+ segment.regexp = requirement
888
+ else
889
+ route_requirements[key] = requirement
890
+ end
891
+ end
892
+
893
+ defaults.each do |key, default|
894
+ segment = segment_named[key]
895
+ raise ArgumentError, "#{key}: No matching segment exists; cannot assign default" unless segment
896
+ segment.is_optional = true
897
+ segment.default = default.to_param if default
898
+ end
899
+
900
+ assign_default_route_options(segments)
901
+ ensure_required_segments(segments)
902
+ route_requirements
903
+ end
904
+
905
+ # Assign default options, such as 'index' as a default for :action. This
906
+ # method must be run *after* user supplied requirements and defaults have
907
+ # been applied to the segments.
908
+ def assign_default_route_options(segments)
909
+ segments.each do |segment|
910
+ next unless segment.is_a? DynamicSegment
911
+ case segment.key
912
+ when :action
913
+ if segment.regexp.nil? || segment.regexp.match('index').to_s == 'index'
914
+ segment.default ||= 'index'
915
+ segment.is_optional = true
916
+ end
917
+ when :id
918
+ if segment.default.nil? && segment.regexp.nil? || segment.regexp =~ ''
919
+ segment.is_optional = true
920
+ end
921
+ end
922
+ end
923
+ end
924
+
925
+ # Makes sure that there are no optional segments that precede a required
926
+ # segment. If any are found that precede a required segment, they are
927
+ # made required.
928
+ def ensure_required_segments(segments)
929
+ allow_optional = true
930
+ segments.reverse_each do |segment|
931
+ allow_optional &&= segment.optional?
932
+ if !allow_optional && segment.optional?
933
+ unless segment.optionality_implied?
934
+ warn "Route segment \"#{segment.to_s}\" cannot be optional because it precedes a required segment. This segment will be required."
935
+ end
936
+ segment.is_optional = false
937
+ elsif allow_optional & segment.respond_to?(:default) && segment.default
938
+ # if a segment has a default, then it is optional
939
+ segment.is_optional = true
940
+ end
941
+ end
942
+ end
943
+
944
+ # Construct and return a route with the given path and options.
945
+ def build(path, options)
946
+ # Wrap the path with slashes
947
+ path = "/#{path}" unless path[0] == ?/
948
+ path = "#{path}/" unless path[-1] == ?/
949
+
950
+ segments = segments_for_route_path(path)
951
+ defaults, requirements, conditions = divide_route_options(segments, options)
952
+ requirements = assign_route_options(segments, defaults, requirements)
953
+
954
+ route = Route.new
955
+ route.segments = segments
956
+ route.requirements = requirements
957
+ route.conditions = conditions
958
+
959
+ if !route.significant_keys.include?(:action) && !route.requirements[:action]
960
+ route.requirements[:action] = "index"
961
+ route.significant_keys << :action
962
+ end
963
+
964
+ if !route.significant_keys.include?(:controller)
965
+ raise ArgumentError, "Illegal route: the :controller must be specified!"
966
+ end
967
+
968
+ route
969
+ end
970
+ end
971
+
972
+ class RouteSet #:nodoc:
973
+ # Mapper instances are used to build routes. The object passed to the draw
974
+ # block in config/routes.rb is a Mapper instance.
975
+ #
976
+ # Mapper instances have relatively few instance methods, in order to avoid
977
+ # clashes with named routes.
978
+ class Mapper #:nodoc:
979
+ def initialize(set)
980
+ @set = set
981
+ end
982
+
983
+ # Create an unnamed route with the provided +path+ and +options+. See
984
+ # SomeHelpfulUrl for an introduction to routes.
985
+ def connect(path, options = {})
986
+ @set.add_route(path, options)
987
+ end
988
+
989
+ def named_route(name, path, options = {})
990
+ @set.add_named_route(name, path, options)
991
+ end
992
+
993
+ # Added deprecation notice for anyone who already added a named route called "root".
994
+ # It'll be used as a shortcut for map.connect '' in Rails 2.0.
995
+ def root(*args, &proc)
996
+ super unless args.length >= 1 && proc.nil?
997
+ @set.add_named_route("root", *args)
998
+ end
999
+ deprecate :root => "(as the the label for a named route) will become a shortcut for map.connect '', so find another name"
1000
+
1001
+ def method_missing(route_name, *args, &proc)
1002
+ super unless args.length >= 1 && proc.nil?
1003
+ @set.add_named_route(route_name, *args)
1004
+ end
1005
+ end
1006
+
1007
+ # A NamedRouteCollection instance is a collection of named routes, and also
1008
+ # maintains an anonymous module that can be used to install helpers for the
1009
+ # named routes.
1010
+ class NamedRouteCollection #:nodoc:
1011
+ include Enumerable
1012
+
1013
+ attr_reader :routes, :helpers
1014
+
1015
+ def initialize
1016
+ clear!
1017
+ end
1018
+
1019
+ def clear!
1020
+ @routes = {}
1021
+ @helpers = []
1022
+
1023
+ @module ||= Module.new
1024
+ @module.instance_methods.each do |selector|
1025
+ @module.send :remove_method, selector
1026
+ end
1027
+ end
1028
+
1029
+ def add(name, route)
1030
+ routes[name.to_sym] = route
1031
+ define_named_route_methods(name, route)
1032
+ end
1033
+
1034
+ def get(name)
1035
+ routes[name.to_sym]
1036
+ end
1037
+
1038
+ alias []= add
1039
+ alias [] get
1040
+ alias clear clear!
1041
+
1042
+ def each
1043
+ routes.each { |name, route| yield name, route }
1044
+ self
1045
+ end
1046
+
1047
+ def names
1048
+ routes.keys
1049
+ end
1050
+
1051
+ def length
1052
+ routes.length
1053
+ end
1054
+
1055
+ def install(destinations = [ActionController::Base, ActionView::Base])
1056
+ Array(destinations).each { |dest| dest.send :include, @module }
1057
+ end
1058
+
1059
+ private
1060
+ def url_helper_name(name, kind = :url)
1061
+ :"#{name}_#{kind}"
1062
+ end
1063
+
1064
+ def hash_access_name(name, kind = :url)
1065
+ :"hash_for_#{name}_#{kind}"
1066
+ end
1067
+
1068
+ def define_named_route_methods(name, route)
1069
+ {:url => {:only_path => false}, :path => {:only_path => true}}.each do |kind, opts|
1070
+ hash = route.defaults.merge(:use_route => name).merge(opts)
1071
+ define_hash_access route, name, kind, hash
1072
+ define_url_helper route, name, kind, hash
1073
+ end
1074
+ end
1075
+
1076
+ def define_hash_access(route, name, kind, options)
1077
+ selector = hash_access_name(name, kind)
1078
+ @module.send :module_eval, <<-end_eval # We use module_eval to avoid leaks
1079
+ def #{selector}(options = nil)
1080
+ options ? #{options.inspect}.merge(options) : #{options.inspect}
1081
+ end
1082
+ end_eval
1083
+ @module.send(:protected, selector)
1084
+ helpers << selector
1085
+ end
1086
+
1087
+ def define_url_helper(route, name, kind, options)
1088
+ selector = url_helper_name(name, kind)
1089
+
1090
+ # The segment keys used for positional paramters
1091
+ segment_keys = route.segments.collect do |segment|
1092
+ segment.key if segment.respond_to? :key
1093
+ end.compact
1094
+ hash_access_method = hash_access_name(name, kind)
1095
+
1096
+ @module.send :module_eval, <<-end_eval # We use module_eval to avoid leaks
1097
+ def #{selector}(*args)
1098
+ opts = if args.empty? || Hash === args.first
1099
+ args.first || {}
1100
+ else
1101
+ # allow ordered parameters to be associated with corresponding
1102
+ # dynamic segments, so you can do
1103
+ #
1104
+ # foo_url(bar, baz, bang)
1105
+ #
1106
+ # instead of
1107
+ #
1108
+ # foo_url(:bar => bar, :baz => baz, :bang => bang)
1109
+ args.zip(#{segment_keys.inspect}).inject({}) do |h, (v, k)|
1110
+ h[k] = v
1111
+ h
1112
+ end
1113
+ end
1114
+
1115
+ url_for(#{hash_access_method}(opts))
1116
+ end
1117
+ end_eval
1118
+ @module.send(:protected, selector)
1119
+ helpers << selector
1120
+ end
1121
+
1122
+ end
1123
+
1124
+ attr_accessor :routes, :named_routes
1125
+
1126
+ def initialize
1127
+ self.routes = []
1128
+ self.named_routes = NamedRouteCollection.new
1129
+ end
1130
+
1131
+ # Subclasses and plugins may override this method to specify a different
1132
+ # RouteBuilder instance, so that other route DSL's can be created.
1133
+ def builder
1134
+ @builder ||= RouteBuilder.new
1135
+ end
1136
+
1137
+ def draw
1138
+ clear!
1139
+ yield Mapper.new(self)
1140
+ named_routes.install
1141
+ end
1142
+
1143
+ def clear!
1144
+ routes.clear
1145
+ named_routes.clear
1146
+ @combined_regexp = nil
1147
+ @routes_by_controller = nil
1148
+ end
1149
+
1150
+ def empty?
1151
+ routes.empty?
1152
+ end
1153
+
1154
+ def load!
1155
+ Routing.use_controllers! nil # Clear the controller cache so we may discover new ones
1156
+ clear!
1157
+ load_routes!
1158
+ named_routes.install
1159
+ end
1160
+
1161
+ alias reload load!
1162
+
1163
+ def load_routes!
1164
+ if defined?(RAILS_ROOT) && defined?(::ActionController::Routing::Routes) && self == ::ActionController::Routing::Routes
1165
+ load File.join("#{RAILS_ROOT}/config/routes.rb")
1166
+ else
1167
+ add_route ":controller/:action/:id"
1168
+ end
1169
+ end
1170
+
1171
+ def add_route(path, options = {})
1172
+ route = builder.build(path, options)
1173
+ routes << route
1174
+ route
1175
+ end
1176
+
1177
+ def add_named_route(name, path, options = {})
1178
+ named_routes[name] = add_route(path, options)
1179
+ end
1180
+
1181
+ def options_as_params(options)
1182
+ # If an explicit :controller was given, always make :action explicit
1183
+ # too, so that action expiry works as expected for things like
1184
+ #
1185
+ # generate({:controller => 'content'}, {:controller => 'content', :action => 'show'})
1186
+ #
1187
+ # (the above is from the unit tests). In the above case, because the
1188
+ # controller was explicitly given, but no action, the action is implied to
1189
+ # be "index", not the recalled action of "show".
1190
+ #
1191
+ # great fun, eh?
1192
+
1193
+ options_as_params = options[:controller] ? { :action => "index" } : {}
1194
+ options.each do |k, value|
1195
+ options_as_params[k] = value.to_param
1196
+ end
1197
+ options_as_params
1198
+ end
1199
+
1200
+ def build_expiry(options, recall)
1201
+ recall.inject({}) do |expiry, (key, recalled_value)|
1202
+ expiry[key] = (options.key?(key) && options[key] != recalled_value)
1203
+ expiry
1204
+ end
1205
+ end
1206
+
1207
+ # Generate the path indicated by the arguments, and return an array of
1208
+ # the keys that were not used to generate it.
1209
+ def extra_keys(options, recall={})
1210
+ generate_extras(options, recall).last
1211
+ end
1212
+
1213
+ def generate_extras(options, recall={})
1214
+ generate(options, recall, :generate_extras)
1215
+ end
1216
+
1217
+ def generate(options, recall = {}, method=:generate)
1218
+ named_route_name = options.delete(:use_route)
1219
+ if named_route_name
1220
+ named_route = named_routes[named_route_name]
1221
+ options = named_route.parameter_shell.merge(options)
1222
+ end
1223
+
1224
+ options = options_as_params(options)
1225
+ expire_on = build_expiry(options, recall)
1226
+
1227
+ # if the controller has changed, make sure it changes relative to the
1228
+ # current controller module, if any. In other words, if we're currently
1229
+ # on admin/get, and the new controller is 'set', the new controller
1230
+ # should really be admin/set.
1231
+ if !named_route && expire_on[:controller] && options[:controller] && options[:controller][0] != ?/
1232
+ old_parts = recall[:controller].split('/')
1233
+ new_parts = options[:controller].split('/')
1234
+ parts = old_parts[0..-(new_parts.length + 1)] + new_parts
1235
+ options[:controller] = parts.join('/')
1236
+ end
1237
+
1238
+ # drop the leading '/' on the controller name
1239
+ options[:controller] = options[:controller][1..-1] if options[:controller] && options[:controller][0] == ?/
1240
+ merged = recall.merge(options)
1241
+
1242
+ if named_route
1243
+ path = named_route.generate(options, merged, expire_on)
1244
+ if path.nil?
1245
+ raise_named_route_error(options, named_route, named_route_name)
1246
+ else
1247
+ return path
1248
+ end
1249
+ else
1250
+ merged[:action] ||= 'index'
1251
+ options[:action] ||= 'index'
1252
+
1253
+ controller = merged[:controller]
1254
+ action = merged[:action]
1255
+
1256
+ raise RoutingError, "Need controller and action!" unless controller && action
1257
+ # don't use the recalled keys when determining which routes to check
1258
+ routes = routes_by_controller[controller][action][options.keys.sort_by { |x| x.object_id }]
1259
+
1260
+ routes.each do |route|
1261
+ results = route.send(method, options, merged, expire_on)
1262
+ return results if results && (!results.is_a?(Array) || results.first)
1263
+ end
1264
+ end
1265
+
1266
+ raise RoutingError, "No route matches #{options.inspect}"
1267
+ end
1268
+
1269
+ # try to give a helpful error message when named route generation fails
1270
+ def raise_named_route_error(options, named_route, named_route_name)
1271
+ diff = named_route.requirements.diff(options)
1272
+ unless diff.empty?
1273
+ raise RoutingError, "#{named_route_name}_url failed to generate from #{options.inspect}, expected: #{named_route.requirements.inspect}, diff: #{named_route.requirements.diff(options).inspect}"
1274
+ else
1275
+ required_segments = named_route.segments.select {|seg| (!seg.optional?) && (!seg.is_a?(DividerSegment)) }
1276
+ required_keys_or_values = required_segments.map { |seg| seg.key rescue seg.value } # we want either the key or the value from the segment
1277
+ raise RoutingError, "#{named_route_name}_url failed to generate from #{options.inspect} - you may have ambiguous routes, or you may need to supply additional parameters for this route. content_url has the following required parameters: #{required_keys_or_values.inspect} - are they all satisifed?"
1278
+ end
1279
+ end
1280
+
1281
+ def recognize(request)
1282
+ params = recognize_path(request.path, extract_request_environment(request))
1283
+ request.path_parameters = params.with_indifferent_access
1284
+ "#{params[:controller].camelize}Controller".constantize
1285
+ end
1286
+
1287
+ def recognize_path(path, environment={})
1288
+ path = CGI.unescape(path)
1289
+ routes.each do |route|
1290
+ result = route.recognize(path, environment) and return result
1291
+ end
1292
+ raise RoutingError, "no route found to match #{path.inspect} with #{environment.inspect}"
1293
+ end
1294
+
1295
+ def routes_by_controller
1296
+ @routes_by_controller ||= Hash.new do |controller_hash, controller|
1297
+ controller_hash[controller] = Hash.new do |action_hash, action|
1298
+ action_hash[action] = Hash.new do |key_hash, keys|
1299
+ key_hash[keys] = routes_for_controller_and_action_and_keys(controller, action, keys)
1300
+ end
1301
+ end
1302
+ end
1303
+ end
1304
+
1305
+ def routes_for(options, merged, expire_on)
1306
+ raise "Need controller and action!" unless controller && action
1307
+ controller = merged[:controller]
1308
+ merged = options if expire_on[:controller]
1309
+ action = merged[:action] || 'index'
1310
+
1311
+ routes_by_controller[controller][action][merged.keys]
1312
+ end
1313
+
1314
+ def routes_for_controller_and_action(controller, action)
1315
+ selected = routes.select do |route|
1316
+ route.matches_controller_and_action? controller, action
1317
+ end
1318
+ (selected.length == routes.length) ? routes : selected
1319
+ end
1320
+
1321
+ def routes_for_controller_and_action_and_keys(controller, action, keys)
1322
+ selected = routes.select do |route|
1323
+ route.matches_controller_and_action? controller, action
1324
+ end
1325
+ selected.sort_by do |route|
1326
+ (keys - route.significant_keys).length
1327
+ end
1328
+ end
1329
+
1330
+ # Subclasses and plugins may override this method to extract further attributes
1331
+ # from the request, for use by route conditions and such.
1332
+ def extract_request_environment(request)
1333
+ { :method => request.method }
1334
+ end
1335
+ end
1336
+
1337
+ Routes = RouteSet.new
1338
+ end
1339
+ end
1340
+