backlog 0.0.2 → 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1451) hide show
  1. metadata +19 -1808
  2. data/History.txt +0 -4
  3. data/LICENSE_LOCALIZATION +0 -20
  4. data/README +0 -180
  5. data/README_LOCALIZATION +0 -61
  6. data/README_LOGIN_SUGAR +0 -194
  7. data/Rakefile +0 -10
  8. data/app/controllers/application.rb +0 -142
  9. data/app/controllers/backlogs_controller.rb +0 -117
  10. data/app/controllers/estimates_controller.rb +0 -10
  11. data/app/controllers/periods_controller.rb +0 -224
  12. data/app/controllers/tasks_controller.rb +0 -233
  13. data/app/controllers/user_controller.rb +0 -177
  14. data/app/controllers/works_controller.rb +0 -111
  15. data/app/helpers/application_helper.rb +0 -26
  16. data/app/helpers/backlogs_helper.rb +0 -2
  17. data/app/helpers/estimates_helper.rb +0 -2
  18. data/app/helpers/periods_helper.rb +0 -2
  19. data/app/helpers/tasks_helper.rb +0 -17
  20. data/app/helpers/user_helper.rb +0 -53
  21. data/app/helpers/works_helper.rb +0 -2
  22. data/app/models/backlog.rb +0 -40
  23. data/app/models/estimate.rb +0 -10
  24. data/app/models/period.rb +0 -120
  25. data/app/models/task.rb +0 -261
  26. data/app/models/user.rb +0 -101
  27. data/app/models/user_notify.rb +0 -50
  28. data/app/models/work.rb +0 -46
  29. data/app/views/backlogs/_form.rhtml +0 -49
  30. data/app/views/backlogs/edit.rhtml +0 -10
  31. data/app/views/backlogs/new.rhtml +0 -11
  32. data/app/views/backlogs/show.rhtml +0 -90
  33. data/app/views/layouts/_headers.rhtml +0 -22
  34. data/app/views/layouts/mwrt002.rhtml +0 -83
  35. data/app/views/layouts/wide.rhtml +0 -22
  36. data/app/views/periods/_burn_down_chart.rhtml +0 -8
  37. data/app/views/periods/_form.rhtml +0 -56
  38. data/app/views/periods/_show_active.rhtml +0 -61
  39. data/app/views/periods/_title.rhtml +0 -11
  40. data/app/views/periods/edit.rhtml +0 -10
  41. data/app/views/periods/new.rhtml +0 -10
  42. data/app/views/periods/show.rhtml +0 -26
  43. data/app/views/tasks/_form.rhtml +0 -29
  44. data/app/views/tasks/_task.rhtml +0 -98
  45. data/app/views/tasks/edit.rhtml +0 -11
  46. data/app/views/tasks/list.rhtml +0 -77
  47. data/app/views/tasks/list_started.rhtml +0 -64
  48. data/app/views/tasks/new.rhtml +0 -10
  49. data/app/views/user/_edit.rhtml +0 -30
  50. data/app/views/user/_password.rhtml +0 -21
  51. data/app/views/user/change_password.rhtml +0 -15
  52. data/app/views/user/edit.rhtml +0 -19
  53. data/app/views/user/forgot_password.rhtml +0 -19
  54. data/app/views/user/login.rhtml +0 -24
  55. data/app/views/user/logout.rhtml +0 -8
  56. data/app/views/user/signup.rhtml +0 -14
  57. data/app/views/user/welcome.rhtml +0 -10
  58. data/app/views/user_notify/change_password.rhtml +0 -10
  59. data/app/views/user_notify/forgot_password.rhtml +0 -11
  60. data/app/views/user_notify/signup.rhtml +0 -12
  61. data/app/views/user_notify/signup_no.rhtml +0 -12
  62. data/app/views/works/_form.rhtml +0 -81
  63. data/app/views/works/edit.rhtml +0 -11
  64. data/app/views/works/list.rhtml +0 -45
  65. data/app/views/works/new.rhtml +0 -11
  66. data/app/views/works/show.rhtml +0 -10
  67. data/app/views/works/timeliste.rhtml +0 -883
  68. data/app/views/works/weekly_work_sheet.rhtml +0 -79
  69. data/app/views/works/weekly_work_sheet2.rhtml +0 -91
  70. data/backlog +0 -27
  71. data/backlog-0.0.2.gem +0 -0
  72. data/backlog.gemspec +0 -21
  73. data/config/boot.rb +0 -45
  74. data/config/database.yml +0 -31
  75. data/config/deploy.rb +0 -34
  76. data/config/deploy_kubosch.rb +0 -106
  77. data/config/environment.rb +0 -63
  78. data/config/environments/datek_production.rb +0 -26
  79. data/config/environments/development.rb +0 -27
  80. data/config/environments/kubosch_production.rb +0 -21
  81. data/config/environments/localization_environment.rb +0 -12
  82. data/config/environments/test.rb +0 -19
  83. data/config/environments/user_environment.rb +0 -21
  84. data/config/mime_types.yaml +0 -1
  85. data/config/routes.rb +0 -5
  86. data/db/migrate/001_tasks.rb +0 -15
  87. data/db/migrate/002_backlogs.rb +0 -14
  88. data/db/migrate/003_add_estimation_points.rb +0 -16
  89. data/db/migrate/004_add_period.rb +0 -63
  90. data/db/migrate/005_add_field_work_started_at.rb +0 -9
  91. data/db/migrate/006_works_data_fix.rb +0 -13
  92. data/db/migrate/007_add_task_created_at.rb +0 -23
  93. data/db/migrate/008_add_backlog_options.rb +0 -13
  94. data/db/migrate/009_add_subtasks.rb +0 -28
  95. data/db/migrate/010_add_work_start.rb +0 -9
  96. data/db/migrate/011_login_sugar.rb +0 -21
  97. data/db/migrate/012_add_resolution.rb +0 -12
  98. data/db/migrate/013_create_estimates.rb +0 -20
  99. data/db/migrate/014_add_customer_option.rb +0 -11
  100. data/db/migrate/015_add_user_option.rb +0 -43
  101. data/db/migrate/016_add_invoicable_flag.rb +0 -11
  102. data/db/migrate/017_insert_datek_projects.rb +0 -95
  103. data/db/schema.rb +0 -92
  104. data/default_login_sugar_setup.zip +0 -0
  105. data/doc/README_FOR_APP +0 -2
  106. data/lang/en.yaml +0 -72
  107. data/lang/localizations.yaml +0 -2
  108. data/lang/no.yaml +0 -71
  109. data/lib/array_helper.rb +0 -10
  110. data/lib/clock.rb +0 -14
  111. data/lib/localization.rb +0 -88
  112. data/lib/tasks/capistrano.rake +0 -90
  113. data/lib/user_system.rb +0 -54
  114. data/log/development.log +0 -40556
  115. data/public/404.html +0 -8
  116. data/public/500.html +0 -8
  117. data/public/dispatch.cgi +0 -10
  118. data/public/dispatch.fcgi +0 -24
  119. data/public/dispatch.rb +0 -10
  120. data/public/favicon.ico +0 -0
  121. data/public/images/add.png +0 -0
  122. data/public/images/add.svg +0 -70
  123. data/public/images/appunti_architetto_franc_01.svg +0 -92
  124. data/public/images/arrow07_2.png +0 -0
  125. data/public/images/arrow07_4.png +0 -0
  126. data/public/images/arrow_down.png +0 -0
  127. data/public/images/arrow_down.svg +0 -59
  128. data/public/images/arrow_left.png +0 -0
  129. data/public/images/arrow_left.svg +0 -59
  130. data/public/images/arrow_right.png +0 -0
  131. data/public/images/arrow_right.svg +0 -59
  132. data/public/images/arrow_up.png +0 -0
  133. data/public/images/arrow_up.svg +0 -59
  134. data/public/images/blank.jpg +0 -0
  135. data/public/images/cestino_pieno_architetto_01.svg +0 -470
  136. data/public/images/checkmark.png +0 -0
  137. data/public/images/checkmark_org.png +0 -0
  138. data/public/images/clipboard.png +0 -0
  139. data/public/images/clipboard.svg +0 -62
  140. data/public/images/construction_hammer_jon__01.svg +0 -116
  141. data/public/images/eraser.png +0 -0
  142. data/public/images/eraser_org.png +0 -0
  143. data/public/images/ernes_stop.png +0 -0
  144. data/public/images/ernes_stop_org.png +0 -0
  145. data/public/images/hammer.png +0 -0
  146. data/public/images/header.jpg +0 -0
  147. data/public/images/pagebak.jpg +0 -0
  148. data/public/images/paper3.svg +0 -54
  149. data/public/images/period.png +0 -0
  150. data/public/images/period_org.png +0 -0
  151. data/public/images/question.svg +0 -56
  152. data/public/images/rails.png +0 -0
  153. data/public/images/tabella_architetto_franc_01.svg +0 -105
  154. data/public/javascripts/application.js +0 -2
  155. data/public/javascripts/controls.js +0 -833
  156. data/public/javascripts/dragdrop.js +0 -944
  157. data/public/javascripts/effects.js +0 -1088
  158. data/public/javascripts/prototype.js +0 -2515
  159. data/public/javascripts/zapatec/utils/transport.js +0 -2217
  160. data/public/javascripts/zapatec/utils/utils.js +0 -1799
  161. data/public/javascripts/zapatec/utils/zapatec.js +0 -90
  162. data/public/javascripts/zapatec/utils/zpeventdriven.js +0 -212
  163. data/public/javascripts/zapatec/utils/zpwidget.js +0 -729
  164. data/public/javascripts/zapatec/zpcal/lang/calendar-no.js +0 -124
  165. data/public/javascripts/zapatec/zpcal/src/calendar-core.js +0 -2878
  166. data/public/javascripts/zapatec/zpcal/src/calendar-date-core.js +0 -348
  167. data/public/javascripts/zapatec/zpcal/src/calendar-setup.js +0 -360
  168. data/public/javascripts/zapatec/zpcal/src/calendar.js +0 -35
  169. data/public/robots.txt +0 -1
  170. data/public/stylesheets/backlog.css +0 -65
  171. data/public/stylesheets/mwrt002.css +0 -54
  172. data/public/stylesheets/mwrt002MAC.css +0 -3
  173. data/public/stylesheets/mwrt002NN.css +0 -3
  174. data/public/stylesheets/scaffold.css +0 -74
  175. data/public/stylesheets/user.css +0 -74
  176. data/public/stylesheets/zpcal/themes/green.css +0 -153
  177. data/public/stylesheets/zpcal/themes/layouts/layout-2d.css +0 -134
  178. data/public/stylesheets/zpcal/themes/layouts/layout-common.css +0 -74
  179. data/public/stylesheets/zpcal/themes/menuarrow.gif +0 -0
  180. data/public/stylesheets/zpcal/themes/scroller-down.gif +0 -0
  181. data/public/stylesheets/zpcal/themes/scroller-up.gif +0 -0
  182. data/script/about +0 -3
  183. data/script/breakpointer +0 -3
  184. data/script/console +0 -3
  185. data/script/destroy +0 -3
  186. data/script/generate +0 -3
  187. data/script/performance/benchmarker +0 -3
  188. data/script/performance/profiler +0 -3
  189. data/script/plugin +0 -3
  190. data/script/process/inspector +0 -3
  191. data/script/process/reaper +0 -3
  192. data/script/process/spawner +0 -3
  193. data/script/runner +0 -3
  194. data/script/server +0 -3
  195. data/test/fixtures/backlogs.yml +0 -5
  196. data/test/fixtures/estimates.yml +0 -5
  197. data/test/fixtures/periods.yml +0 -7
  198. data/test/fixtures/tasks.yml +0 -6
  199. data/test/fixtures/users.yml +0 -48
  200. data/test/fixtures/works.yml +0 -5
  201. data/test/functional/backlogs_controller_test.rb +0 -88
  202. data/test/functional/estimates_controller_test.rb +0 -18
  203. data/test/functional/periods_controller_test.rb +0 -88
  204. data/test/functional/tasks_controller_test.rb +0 -88
  205. data/test/functional/user_controller_test.rb +0 -254
  206. data/test/functional/works_controller_test.rb +0 -88
  207. data/test/integration/user_system_test.rb +0 -95
  208. data/test/mocks/test/clock.rb +0 -14
  209. data/test/mocks/test/user_notify.rb +0 -16
  210. data/test/unit/backlog_item_test.rb +0 -10
  211. data/test/unit/estimate_test.rb +0 -10
  212. data/test/unit/localization_test.rb +0 -47
  213. data/test/unit/period_test.rb +0 -10
  214. data/test/unit/task_test.rb +0 -10
  215. data/test/unit/user_test.rb +0 -133
  216. data/test/unit/work_test.rb +0 -10
  217. data/vendor/plugins/activerecord_foreign_key_extensions/init.rb +0 -2
  218. data/vendor/plugins/activerecord_foreign_key_extensions/lib/active_record_extensions.rb +0 -180
  219. data/vendor/plugins/foreign_key_migrations/CHANGELOG +0 -67
  220. data/vendor/plugins/foreign_key_migrations/MIT-LICENSE +0 -20
  221. data/vendor/plugins/foreign_key_migrations/README +0 -60
  222. data/vendor/plugins/foreign_key_migrations/init.rb +0 -2
  223. data/vendor/plugins/foreign_key_migrations/install.rb +0 -1
  224. data/vendor/plugins/foreign_key_migrations/lib/red_hill_consulting/foreign_key_migrations.rb +0 -57
  225. data/vendor/plugins/redhillonrails_core/CHANGELOG +0 -85
  226. data/vendor/plugins/redhillonrails_core/MIT-LICENSE +0 -20
  227. data/vendor/plugins/redhillonrails_core/README +0 -97
  228. data/vendor/plugins/redhillonrails_core/init.rb +0 -9
  229. data/vendor/plugins/redhillonrails_core/lib/red_hill_consulting/core.rb +0 -290
  230. data/vendor/rails/REVISION_6747 +0 -0
  231. data/vendor/rails/actionmailer/CHANGELOG +0 -281
  232. data/vendor/rails/actionmailer/MIT-LICENSE +0 -21
  233. data/vendor/rails/actionmailer/README +0 -145
  234. data/vendor/rails/actionmailer/Rakefile +0 -95
  235. data/vendor/rails/actionmailer/install.rb +0 -30
  236. data/vendor/rails/actionmailer/lib/action_mailer.rb +0 -51
  237. data/vendor/rails/actionmailer/lib/action_mailer/adv_attr_accessor.rb +0 -30
  238. data/vendor/rails/actionmailer/lib/action_mailer/base.rb +0 -570
  239. data/vendor/rails/actionmailer/lib/action_mailer/helpers.rb +0 -111
  240. data/vendor/rails/actionmailer/lib/action_mailer/mail_helper.rb +0 -19
  241. data/vendor/rails/actionmailer/lib/action_mailer/part.rb +0 -113
  242. data/vendor/rails/actionmailer/lib/action_mailer/part_container.rb +0 -51
  243. data/vendor/rails/actionmailer/lib/action_mailer/quoting.rb +0 -59
  244. data/vendor/rails/actionmailer/lib/action_mailer/test_helper.rb +0 -67
  245. data/vendor/rails/actionmailer/lib/action_mailer/utils.rb +0 -8
  246. data/vendor/rails/actionmailer/lib/action_mailer/vendor/text/format.rb +0 -1466
  247. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail.rb +0 -3
  248. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail/address.rb +0 -242
  249. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail/attachments.rb +0 -41
  250. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail/base64.rb +0 -71
  251. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail/config.rb +0 -69
  252. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail/encode.rb +0 -467
  253. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail/facade.rb +0 -552
  254. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail/header.rb +0 -914
  255. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail/info.rb +0 -35
  256. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail/loader.rb +0 -1
  257. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail/mail.rb +0 -447
  258. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail/mailbox.rb +0 -433
  259. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail/mbox.rb +0 -1
  260. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail/net.rb +0 -280
  261. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail/obsolete.rb +0 -135
  262. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail/parser.rb +0 -1522
  263. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail/port.rb +0 -377
  264. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail/quoting.rb +0 -131
  265. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail/scanner.rb +0 -41
  266. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail/scanner_r.rb +0 -263
  267. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail/stringio.rb +0 -277
  268. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail/tmail.rb +0 -1
  269. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail/utils.rb +0 -238
  270. data/vendor/rails/actionmailer/lib/action_mailer/version.rb +0 -9
  271. data/vendor/rails/actionmailer/test/abstract_unit.rb +0 -39
  272. data/vendor/rails/actionmailer/test/fixtures/first_mailer/share.erb +0 -1
  273. data/vendor/rails/actionmailer/test/fixtures/first_mailer/share.rhtml +0 -0
  274. data/vendor/rails/actionmailer/test/fixtures/helper_mailer/use_example_helper.erb +0 -1
  275. data/vendor/rails/actionmailer/test/fixtures/helper_mailer/use_example_helper.rhtml +0 -0
  276. data/vendor/rails/actionmailer/test/fixtures/helper_mailer/use_helper.erb +0 -1
  277. data/vendor/rails/actionmailer/test/fixtures/helper_mailer/use_helper.rhtml +0 -0
  278. data/vendor/rails/actionmailer/test/fixtures/helper_mailer/use_helper_method.erb +0 -1
  279. data/vendor/rails/actionmailer/test/fixtures/helper_mailer/use_helper_method.rhtml +0 -0
  280. data/vendor/rails/actionmailer/test/fixtures/helper_mailer/use_mail_helper.erb +0 -5
  281. data/vendor/rails/actionmailer/test/fixtures/helper_mailer/use_mail_helper.rhtml +0 -0
  282. data/vendor/rails/actionmailer/test/fixtures/helpers/example_helper.rb +0 -5
  283. data/vendor/rails/actionmailer/test/fixtures/path.with.dots/funky_path_mailer/multipart_with_template_path_with_dots.erb +0 -1
  284. data/vendor/rails/actionmailer/test/fixtures/path.with.dots/funky_path_mailer/multipart_with_template_path_with_dots.rhtml +0 -0
  285. data/vendor/rails/actionmailer/test/fixtures/path.with.dots/multipart_with_template_path_with_dots.rhtml +0 -0
  286. data/vendor/rails/actionmailer/test/fixtures/raw_email +0 -14
  287. data/vendor/rails/actionmailer/test/fixtures/raw_email10 +0 -20
  288. data/vendor/rails/actionmailer/test/fixtures/raw_email11 +0 -34
  289. data/vendor/rails/actionmailer/test/fixtures/raw_email12 +0 -32
  290. data/vendor/rails/actionmailer/test/fixtures/raw_email13 +0 -29
  291. data/vendor/rails/actionmailer/test/fixtures/raw_email2 +0 -114
  292. data/vendor/rails/actionmailer/test/fixtures/raw_email3 +0 -70
  293. data/vendor/rails/actionmailer/test/fixtures/raw_email4 +0 -59
  294. data/vendor/rails/actionmailer/test/fixtures/raw_email5 +0 -19
  295. data/vendor/rails/actionmailer/test/fixtures/raw_email6 +0 -20
  296. data/vendor/rails/actionmailer/test/fixtures/raw_email7 +0 -66
  297. data/vendor/rails/actionmailer/test/fixtures/raw_email8 +0 -47
  298. data/vendor/rails/actionmailer/test/fixtures/raw_email9 +0 -28
  299. data/vendor/rails/actionmailer/test/fixtures/raw_email_quoted_with_0d0a +0 -14
  300. data/vendor/rails/actionmailer/test/fixtures/raw_email_with_nested_attachment +0 -100
  301. data/vendor/rails/actionmailer/test/fixtures/raw_email_with_partially_quoted_subject +0 -14
  302. data/vendor/rails/actionmailer/test/fixtures/second_mailer/share.erb +0 -1
  303. data/vendor/rails/actionmailer/test/fixtures/second_mailer/share.rhtml +0 -0
  304. data/vendor/rails/actionmailer/test/fixtures/templates/signed_up.erb +0 -3
  305. data/vendor/rails/actionmailer/test/fixtures/templates/signed_up.rhtml +0 -0
  306. data/vendor/rails/actionmailer/test/fixtures/test_mailer/implicitly_multipart_example.ignored.erb +0 -1
  307. data/vendor/rails/actionmailer/test/fixtures/test_mailer/implicitly_multipart_example.ignored.rhtml +0 -0
  308. data/vendor/rails/actionmailer/test/fixtures/test_mailer/implicitly_multipart_example.text.html.erb +0 -10
  309. data/vendor/rails/actionmailer/test/fixtures/test_mailer/implicitly_multipart_example.text.html.rhtml +0 -0
  310. data/vendor/rails/actionmailer/test/fixtures/test_mailer/implicitly_multipart_example.text.plain.erb +0 -2
  311. data/vendor/rails/actionmailer/test/fixtures/test_mailer/implicitly_multipart_example.text.plain.rhtml +0 -0
  312. data/vendor/rails/actionmailer/test/fixtures/test_mailer/implicitly_multipart_example.text.yaml.erb +0 -1
  313. data/vendor/rails/actionmailer/test/fixtures/test_mailer/implicitly_multipart_example.text.yaml.rhtml +0 -0
  314. data/vendor/rails/actionmailer/test/fixtures/test_mailer/signed_up.erb +0 -3
  315. data/vendor/rails/actionmailer/test/fixtures/test_mailer/signed_up.rhtml +0 -0
  316. data/vendor/rails/actionmailer/test/fixtures/test_mailer/signed_up_with_url.erb +0 -3
  317. data/vendor/rails/actionmailer/test/fixtures/test_mailer/signed_up_with_url.rhtml +0 -0
  318. data/vendor/rails/actionmailer/test/mail_helper_test.rb +0 -91
  319. data/vendor/rails/actionmailer/test/mail_render_test.rb +0 -79
  320. data/vendor/rails/actionmailer/test/mail_service_test.rb +0 -850
  321. data/vendor/rails/actionmailer/test/quoting_test.rb +0 -57
  322. data/vendor/rails/actionmailer/test/test_helper_test.rb +0 -79
  323. data/vendor/rails/actionmailer/test/tmail_test.rb +0 -21
  324. data/vendor/rails/actionmailer/test/url_test.rb +0 -68
  325. data/vendor/rails/actionpack/CHANGELOG +0 -3560
  326. data/vendor/rails/actionpack/MIT-LICENSE +0 -21
  327. data/vendor/rails/actionpack/README +0 -469
  328. data/vendor/rails/actionpack/RUNNING_UNIT_TESTS +0 -25
  329. data/vendor/rails/actionpack/Rakefile +0 -154
  330. data/vendor/rails/actionpack/examples/address_book/index.erb +0 -33
  331. data/vendor/rails/actionpack/examples/address_book/index.rhtml +0 -0
  332. data/vendor/rails/actionpack/examples/address_book/layout.erb +0 -8
  333. data/vendor/rails/actionpack/examples/address_book/layout.rhtml +0 -0
  334. data/vendor/rails/actionpack/examples/address_book_controller.cgi +0 -9
  335. data/vendor/rails/actionpack/examples/address_book_controller.fcgi +0 -6
  336. data/vendor/rails/actionpack/examples/address_book_controller.rb +0 -52
  337. data/vendor/rails/actionpack/examples/address_book_controller.rbx +0 -4
  338. data/vendor/rails/actionpack/examples/benchmark.rb +0 -52
  339. data/vendor/rails/actionpack/examples/benchmark_with_ar.fcgi +0 -89
  340. data/vendor/rails/actionpack/examples/blog_controller.cgi +0 -53
  341. data/vendor/rails/actionpack/examples/debate/index.erb +0 -14
  342. data/vendor/rails/actionpack/examples/debate/index.rhtml +0 -0
  343. data/vendor/rails/actionpack/examples/debate/new_topic.erb +0 -22
  344. data/vendor/rails/actionpack/examples/debate/new_topic.rhtml +0 -0
  345. data/vendor/rails/actionpack/examples/debate/topic.erb +0 -32
  346. data/vendor/rails/actionpack/examples/debate/topic.rhtml +0 -0
  347. data/vendor/rails/actionpack/examples/debate_controller.cgi +0 -57
  348. data/vendor/rails/actionpack/install.rb +0 -30
  349. data/vendor/rails/actionpack/lib/action_controller.rb +0 -85
  350. data/vendor/rails/actionpack/lib/action_controller/assertions.rb +0 -70
  351. data/vendor/rails/actionpack/lib/action_controller/assertions/dom_assertions.rb +0 -25
  352. data/vendor/rails/actionpack/lib/action_controller/assertions/model_assertions.rb +0 -12
  353. data/vendor/rails/actionpack/lib/action_controller/assertions/response_assertions.rb +0 -141
  354. data/vendor/rails/actionpack/lib/action_controller/assertions/routing_assertions.rb +0 -99
  355. data/vendor/rails/actionpack/lib/action_controller/assertions/selector_assertions.rb +0 -585
  356. data/vendor/rails/actionpack/lib/action_controller/assertions/tag_assertions.rb +0 -117
  357. data/vendor/rails/actionpack/lib/action_controller/base.rb +0 -1251
  358. data/vendor/rails/actionpack/lib/action_controller/benchmarking.rb +0 -93
  359. data/vendor/rails/actionpack/lib/action_controller/caching.rb +0 -656
  360. data/vendor/rails/actionpack/lib/action_controller/cgi_ext.rb +0 -18
  361. data/vendor/rails/actionpack/lib/action_controller/cgi_ext/cookie.rb +0 -123
  362. data/vendor/rails/actionpack/lib/action_controller/cgi_ext/parameters.rb +0 -208
  363. data/vendor/rails/actionpack/lib/action_controller/cgi_ext/query_extension.rb +0 -96
  364. data/vendor/rails/actionpack/lib/action_controller/cgi_ext/session.rb +0 -63
  365. data/vendor/rails/actionpack/lib/action_controller/cgi_ext/stdinput.rb +0 -23
  366. data/vendor/rails/actionpack/lib/action_controller/cgi_process.rb +0 -217
  367. data/vendor/rails/actionpack/lib/action_controller/components.rb +0 -165
  368. data/vendor/rails/actionpack/lib/action_controller/cookies.rb +0 -78
  369. data/vendor/rails/actionpack/lib/action_controller/filters.rb +0 -752
  370. data/vendor/rails/actionpack/lib/action_controller/flash.rb +0 -184
  371. data/vendor/rails/actionpack/lib/action_controller/helpers.rb +0 -153
  372. data/vendor/rails/actionpack/lib/action_controller/http_authentication.rb +0 -121
  373. data/vendor/rails/actionpack/lib/action_controller/integration.rb +0 -552
  374. data/vendor/rails/actionpack/lib/action_controller/layout.rb +0 -318
  375. data/vendor/rails/actionpack/lib/action_controller/macros/auto_complete.rb +0 -53
  376. data/vendor/rails/actionpack/lib/action_controller/macros/in_place_editing.rb +0 -33
  377. data/vendor/rails/actionpack/lib/action_controller/mime_responds.rb +0 -191
  378. data/vendor/rails/actionpack/lib/action_controller/mime_type.rb +0 -157
  379. data/vendor/rails/actionpack/lib/action_controller/mime_types.rb +0 -20
  380. data/vendor/rails/actionpack/lib/action_controller/pagination.rb +0 -402
  381. data/vendor/rails/actionpack/lib/action_controller/polymorphic_routes.rb +0 -56
  382. data/vendor/rails/actionpack/lib/action_controller/record_identifier.rb +0 -91
  383. data/vendor/rails/actionpack/lib/action_controller/request.rb +0 -316
  384. data/vendor/rails/actionpack/lib/action_controller/rescue.rb +0 -152
  385. data/vendor/rails/actionpack/lib/action_controller/resources.rb +0 -485
  386. data/vendor/rails/actionpack/lib/action_controller/response.rb +0 -76
  387. data/vendor/rails/actionpack/lib/action_controller/routing.rb +0 -1365
  388. data/vendor/rails/actionpack/lib/action_controller/scaffolding.rb +0 -191
  389. data/vendor/rails/actionpack/lib/action_controller/session/active_record_store.rb +0 -335
  390. data/vendor/rails/actionpack/lib/action_controller/session/cookie_store.rb +0 -143
  391. data/vendor/rails/actionpack/lib/action_controller/session/drb_server.rb +0 -32
  392. data/vendor/rails/actionpack/lib/action_controller/session/drb_store.rb +0 -35
  393. data/vendor/rails/actionpack/lib/action_controller/session/mem_cache_store.rb +0 -105
  394. data/vendor/rails/actionpack/lib/action_controller/session_management.rb +0 -150
  395. data/vendor/rails/actionpack/lib/action_controller/status_codes.rb +0 -88
  396. data/vendor/rails/actionpack/lib/action_controller/streaming.rb +0 -141
  397. data/vendor/rails/actionpack/lib/action_controller/templates/rescues/_request_and_response.erb +0 -24
  398. data/vendor/rails/actionpack/lib/action_controller/templates/rescues/_request_and_response.rhtml +0 -0
  399. data/vendor/rails/actionpack/lib/action_controller/templates/rescues/_trace.erb +0 -26
  400. data/vendor/rails/actionpack/lib/action_controller/templates/rescues/_trace.rhtml +0 -0
  401. data/vendor/rails/actionpack/lib/action_controller/templates/rescues/diagnostics.erb +0 -11
  402. data/vendor/rails/actionpack/lib/action_controller/templates/rescues/diagnostics.rhtml +0 -0
  403. data/vendor/rails/actionpack/lib/action_controller/templates/rescues/layout.erb +0 -29
  404. data/vendor/rails/actionpack/lib/action_controller/templates/rescues/layout.rhtml +0 -0
  405. data/vendor/rails/actionpack/lib/action_controller/templates/rescues/missing_template.erb +0 -2
  406. data/vendor/rails/actionpack/lib/action_controller/templates/rescues/missing_template.rhtml +0 -0
  407. data/vendor/rails/actionpack/lib/action_controller/templates/rescues/routing_error.erb +0 -10
  408. data/vendor/rails/actionpack/lib/action_controller/templates/rescues/routing_error.rhtml +0 -0
  409. data/vendor/rails/actionpack/lib/action_controller/templates/rescues/template_error.erb +0 -21
  410. data/vendor/rails/actionpack/lib/action_controller/templates/rescues/template_error.rhtml +0 -0
  411. data/vendor/rails/actionpack/lib/action_controller/templates/rescues/unknown_action.erb +0 -2
  412. data/vendor/rails/actionpack/lib/action_controller/templates/rescues/unknown_action.rhtml +0 -0
  413. data/vendor/rails/actionpack/lib/action_controller/templates/scaffolds/edit.erb +0 -7
  414. data/vendor/rails/actionpack/lib/action_controller/templates/scaffolds/edit.rhtml +0 -0
  415. data/vendor/rails/actionpack/lib/action_controller/templates/scaffolds/layout.erb +0 -69
  416. data/vendor/rails/actionpack/lib/action_controller/templates/scaffolds/layout.rhtml +0 -0
  417. data/vendor/rails/actionpack/lib/action_controller/templates/scaffolds/list.erb +0 -27
  418. data/vendor/rails/actionpack/lib/action_controller/templates/scaffolds/list.rhtml +0 -0
  419. data/vendor/rails/actionpack/lib/action_controller/templates/scaffolds/new.erb +0 -6
  420. data/vendor/rails/actionpack/lib/action_controller/templates/scaffolds/new.rhtml +0 -0
  421. data/vendor/rails/actionpack/lib/action_controller/templates/scaffolds/show.erb +0 -9
  422. data/vendor/rails/actionpack/lib/action_controller/templates/scaffolds/show.rhtml +0 -0
  423. data/vendor/rails/actionpack/lib/action_controller/test_process.rb +0 -516
  424. data/vendor/rails/actionpack/lib/action_controller/url_rewriter.rb +0 -124
  425. data/vendor/rails/actionpack/lib/action_controller/vendor/html-scanner/html/document.rb +0 -64
  426. data/vendor/rails/actionpack/lib/action_controller/vendor/html-scanner/html/node.rb +0 -530
  427. data/vendor/rails/actionpack/lib/action_controller/vendor/html-scanner/html/selector.rb +0 -828
  428. data/vendor/rails/actionpack/lib/action_controller/vendor/html-scanner/html/tokenizer.rb +0 -105
  429. data/vendor/rails/actionpack/lib/action_controller/vendor/html-scanner/html/version.rb +0 -11
  430. data/vendor/rails/actionpack/lib/action_controller/verification.rb +0 -108
  431. data/vendor/rails/actionpack/lib/action_pack.rb +0 -24
  432. data/vendor/rails/actionpack/lib/action_pack/version.rb +0 -9
  433. data/vendor/rails/actionpack/lib/action_view.rb +0 -31
  434. data/vendor/rails/actionpack/lib/action_view/base.rb +0 -625
  435. data/vendor/rails/actionpack/lib/action_view/compiled_templates.rb +0 -69
  436. data/vendor/rails/actionpack/lib/action_view/helpers/active_record_helper.rb +0 -237
  437. data/vendor/rails/actionpack/lib/action_view/helpers/asset_tag_helper.rb +0 -405
  438. data/vendor/rails/actionpack/lib/action_view/helpers/benchmark_helper.rb +0 -24
  439. data/vendor/rails/actionpack/lib/action_view/helpers/cache_helper.rb +0 -10
  440. data/vendor/rails/actionpack/lib/action_view/helpers/capture_helper.rb +0 -128
  441. data/vendor/rails/actionpack/lib/action_view/helpers/date_helper.rb +0 -454
  442. data/vendor/rails/actionpack/lib/action_view/helpers/debug_helper.rb +0 -31
  443. data/vendor/rails/actionpack/lib/action_view/helpers/form_helper.rb +0 -609
  444. data/vendor/rails/actionpack/lib/action_view/helpers/form_options_helper.rb +0 -372
  445. data/vendor/rails/actionpack/lib/action_view/helpers/form_tag_helper.rb +0 -192
  446. data/vendor/rails/actionpack/lib/action_view/helpers/java_script_macros_helper.rb +0 -233
  447. data/vendor/rails/actionpack/lib/action_view/helpers/javascript_helper.rb +0 -193
  448. data/vendor/rails/actionpack/lib/action_view/helpers/javascripts/controls.js +0 -833
  449. data/vendor/rails/actionpack/lib/action_view/helpers/javascripts/dragdrop.js +0 -942
  450. data/vendor/rails/actionpack/lib/action_view/helpers/javascripts/effects.js +0 -1088
  451. data/vendor/rails/actionpack/lib/action_view/helpers/javascripts/prototype.js +0 -2515
  452. data/vendor/rails/actionpack/lib/action_view/helpers/number_helper.rb +0 -152
  453. data/vendor/rails/actionpack/lib/action_view/helpers/pagination_helper.rb +0 -86
  454. data/vendor/rails/actionpack/lib/action_view/helpers/prototype_helper.rb +0 -913
  455. data/vendor/rails/actionpack/lib/action_view/helpers/record_identification_helper.rb +0 -20
  456. data/vendor/rails/actionpack/lib/action_view/helpers/record_tag_helper.rb +0 -59
  457. data/vendor/rails/actionpack/lib/action_view/helpers/scriptaculous_helper.rb +0 -140
  458. data/vendor/rails/actionpack/lib/action_view/helpers/tag_helper.rb +0 -108
  459. data/vendor/rails/actionpack/lib/action_view/helpers/text_helper.rb +0 -401
  460. data/vendor/rails/actionpack/lib/action_view/helpers/url_helper.rb +0 -496
  461. data/vendor/rails/actionpack/lib/action_view/partials.rb +0 -128
  462. data/vendor/rails/actionpack/lib/action_view/template_error.rb +0 -102
  463. data/vendor/rails/actionpack/test/abstract_unit.rb +0 -29
  464. data/vendor/rails/actionpack/test/active_record_unit.rb +0 -108
  465. data/vendor/rails/actionpack/test/activerecord/active_record_store_test.rb +0 -142
  466. data/vendor/rails/actionpack/test/activerecord/pagination_test.rb +0 -156
  467. data/vendor/rails/actionpack/test/controller/action_pack_assertions_test.rb +0 -479
  468. data/vendor/rails/actionpack/test/controller/addresses_render_test.rb +0 -43
  469. data/vendor/rails/actionpack/test/controller/assert_select_test.rb +0 -597
  470. data/vendor/rails/actionpack/test/controller/base_test.rb +0 -134
  471. data/vendor/rails/actionpack/test/controller/benchmark_test.rb +0 -33
  472. data/vendor/rails/actionpack/test/controller/caching_test.rb +0 -262
  473. data/vendor/rails/actionpack/test/controller/capture_test.rb +0 -71
  474. data/vendor/rails/actionpack/test/controller/cgi_test.rb +0 -432
  475. data/vendor/rails/actionpack/test/controller/components_test.rb +0 -129
  476. data/vendor/rails/actionpack/test/controller/content_type_test.rb +0 -139
  477. data/vendor/rails/actionpack/test/controller/controller_fixtures/app/controllers/admin/user_controller.rb +0 -0
  478. data/vendor/rails/actionpack/test/controller/controller_fixtures/app/controllers/user_controller.rb +0 -0
  479. data/vendor/rails/actionpack/test/controller/controller_fixtures/vendor/plugins/bad_plugin/lib/plugin_controller.rb +0 -0
  480. data/vendor/rails/actionpack/test/controller/cookie_test.rb +0 -88
  481. data/vendor/rails/actionpack/test/controller/custom_handler_test.rb +0 -41
  482. data/vendor/rails/actionpack/test/controller/deprecation/deprecated_base_methods_test.rb +0 -48
  483. data/vendor/rails/actionpack/test/controller/fake_controllers.rb +0 -16
  484. data/vendor/rails/actionpack/test/controller/filter_params_test.rb +0 -42
  485. data/vendor/rails/actionpack/test/controller/filters_test.rb +0 -752
  486. data/vendor/rails/actionpack/test/controller/flash_test.rb +0 -147
  487. data/vendor/rails/actionpack/test/controller/fragment_store_setting_test.rb +0 -45
  488. data/vendor/rails/actionpack/test/controller/helper_test.rb +0 -204
  489. data/vendor/rails/actionpack/test/controller/html-scanner/document_test.rb +0 -104
  490. data/vendor/rails/actionpack/test/controller/html-scanner/node_test.rb +0 -69
  491. data/vendor/rails/actionpack/test/controller/html-scanner/tag_node_test.rb +0 -239
  492. data/vendor/rails/actionpack/test/controller/html-scanner/text_node_test.rb +0 -51
  493. data/vendor/rails/actionpack/test/controller/html-scanner/tokenizer_test.rb +0 -125
  494. data/vendor/rails/actionpack/test/controller/http_authentication_test.rb +0 -42
  495. data/vendor/rails/actionpack/test/controller/integration_test.rb +0 -187
  496. data/vendor/rails/actionpack/test/controller/layout_test.rb +0 -202
  497. data/vendor/rails/actionpack/test/controller/mime_responds_test.rb +0 -358
  498. data/vendor/rails/actionpack/test/controller/mime_type_test.rb +0 -54
  499. data/vendor/rails/actionpack/test/controller/new_render_test.rb +0 -769
  500. data/vendor/rails/actionpack/test/controller/raw_post_test.rb +0 -74
  501. data/vendor/rails/actionpack/test/controller/record_identifier_test.rb +0 -103
  502. data/vendor/rails/actionpack/test/controller/redirect_test.rb +0 -180
  503. data/vendor/rails/actionpack/test/controller/render_test.rb +0 -404
  504. data/vendor/rails/actionpack/test/controller/request_test.rb +0 -393
  505. data/vendor/rails/actionpack/test/controller/rescue_test.rb +0 -215
  506. data/vendor/rails/actionpack/test/controller/resources_test.rb +0 -585
  507. data/vendor/rails/actionpack/test/controller/routing_test.rb +0 -1902
  508. data/vendor/rails/actionpack/test/controller/selector_test.rb +0 -628
  509. data/vendor/rails/actionpack/test/controller/send_file_test.rb +0 -127
  510. data/vendor/rails/actionpack/test/controller/session/cookie_store_test.rb +0 -228
  511. data/vendor/rails/actionpack/test/controller/session_management_test.rb +0 -156
  512. data/vendor/rails/actionpack/test/controller/test_test.rb +0 -520
  513. data/vendor/rails/actionpack/test/controller/url_rewriter_test.rb +0 -218
  514. data/vendor/rails/actionpack/test/controller/verification_test.rb +0 -242
  515. data/vendor/rails/actionpack/test/controller/view_paths_test.rb +0 -79
  516. data/vendor/rails/actionpack/test/controller/webservice_test.rb +0 -181
  517. data/vendor/rails/actionpack/test/fixtures/addresses/list.erb +0 -1
  518. data/vendor/rails/actionpack/test/fixtures/addresses/list.rhtml +0 -0
  519. data/vendor/rails/actionpack/test/fixtures/companies.yml +0 -24
  520. data/vendor/rails/actionpack/test/fixtures/company.rb +0 -9
  521. data/vendor/rails/actionpack/test/fixtures/content_type/render_default_content_types_for_respond_to.rhtml +0 -1
  522. data/vendor/rails/actionpack/test/fixtures/content_type/render_default_for_rhtml.rhtml +0 -1
  523. data/vendor/rails/actionpack/test/fixtures/content_type/render_default_for_rjs.rjs +0 -1
  524. data/vendor/rails/actionpack/test/fixtures/content_type/render_default_for_rxml.rxml +0 -1
  525. data/vendor/rails/actionpack/test/fixtures/db_definitions/sqlite.sql +0 -42
  526. data/vendor/rails/actionpack/test/fixtures/developer.rb +0 -7
  527. data/vendor/rails/actionpack/test/fixtures/developers.yml +0 -21
  528. data/vendor/rails/actionpack/test/fixtures/developers_projects.yml +0 -13
  529. data/vendor/rails/actionpack/test/fixtures/fun/games/hello_world.erb +0 -1
  530. data/vendor/rails/actionpack/test/fixtures/fun/games/hello_world.rhtml +0 -0
  531. data/vendor/rails/actionpack/test/fixtures/helpers/abc_helper.rb +0 -5
  532. data/vendor/rails/actionpack/test/fixtures/helpers/fun/games_helper.rb +0 -3
  533. data/vendor/rails/actionpack/test/fixtures/helpers/fun/pdf_helper.rb +0 -3
  534. data/vendor/rails/actionpack/test/fixtures/layout_tests/layouts/controller_name_space/nested.rhtml +0 -1
  535. data/vendor/rails/actionpack/test/fixtures/layout_tests/layouts/item.rhtml +0 -1
  536. data/vendor/rails/actionpack/test/fixtures/layout_tests/layouts/layout_test.rhtml +0 -1
  537. data/vendor/rails/actionpack/test/fixtures/layout_tests/layouts/multiple_extensions.html.erb +0 -1
  538. data/vendor/rails/actionpack/test/fixtures/layout_tests/layouts/third_party_template_library.mab +0 -1
  539. data/vendor/rails/actionpack/test/fixtures/layout_tests/views/hello.rhtml +0 -1
  540. data/vendor/rails/actionpack/test/fixtures/layouts/builder.builder +0 -3
  541. data/vendor/rails/actionpack/test/fixtures/layouts/builder.rxml +0 -0
  542. data/vendor/rails/actionpack/test/fixtures/layouts/standard.erb +0 -1
  543. data/vendor/rails/actionpack/test/fixtures/layouts/standard.rhtml +0 -0
  544. data/vendor/rails/actionpack/test/fixtures/layouts/talk_from_action.erb +0 -2
  545. data/vendor/rails/actionpack/test/fixtures/layouts/talk_from_action.rhtml +0 -0
  546. data/vendor/rails/actionpack/test/fixtures/layouts/yield.erb +0 -2
  547. data/vendor/rails/actionpack/test/fixtures/layouts/yield.rhtml +0 -0
  548. data/vendor/rails/actionpack/test/fixtures/multipart/binary_file +0 -0
  549. data/vendor/rails/actionpack/test/fixtures/multipart/large_text_file +0 -10
  550. data/vendor/rails/actionpack/test/fixtures/multipart/mixed_files +0 -0
  551. data/vendor/rails/actionpack/test/fixtures/multipart/mona_lisa.jpg +0 -0
  552. data/vendor/rails/actionpack/test/fixtures/multipart/single_parameter +0 -5
  553. data/vendor/rails/actionpack/test/fixtures/multipart/text_file +0 -10
  554. data/vendor/rails/actionpack/test/fixtures/override/test/hello_world.erb +0 -1
  555. data/vendor/rails/actionpack/test/fixtures/override/test/hello_world.rhtml +0 -0
  556. data/vendor/rails/actionpack/test/fixtures/project.rb +0 -3
  557. data/vendor/rails/actionpack/test/fixtures/projects.yml +0 -7
  558. data/vendor/rails/actionpack/test/fixtures/public/404.html +0 -1
  559. data/vendor/rails/actionpack/test/fixtures/public/500.html +0 -1
  560. data/vendor/rails/actionpack/test/fixtures/public/images/rails.png +0 -0
  561. data/vendor/rails/actionpack/test/fixtures/public/javascripts/application.js +0 -0
  562. data/vendor/rails/actionpack/test/fixtures/public/javascripts/bank.js +0 -1
  563. data/vendor/rails/actionpack/test/fixtures/public/javascripts/robber.js +0 -1
  564. data/vendor/rails/actionpack/test/fixtures/public/stylesheets/bank.css +0 -1
  565. data/vendor/rails/actionpack/test/fixtures/public/stylesheets/robber.css +0 -1
  566. data/vendor/rails/actionpack/test/fixtures/replies.yml +0 -13
  567. data/vendor/rails/actionpack/test/fixtures/reply.rb +0 -5
  568. data/vendor/rails/actionpack/test/fixtures/respond_to/all_types_with_layout.html.erb +0 -1
  569. data/vendor/rails/actionpack/test/fixtures/respond_to/all_types_with_layout.js.rjs +0 -1
  570. data/vendor/rails/actionpack/test/fixtures/respond_to/layouts/standard.rhtml +0 -1
  571. data/vendor/rails/actionpack/test/fixtures/respond_to/using_defaults.html.erb +0 -1
  572. data/vendor/rails/actionpack/test/fixtures/respond_to/using_defaults.js.rjs +0 -1
  573. data/vendor/rails/actionpack/test/fixtures/respond_to/using_defaults.xml.builder +0 -1
  574. data/vendor/rails/actionpack/test/fixtures/respond_to/using_defaults_with_type_list.html.erb +0 -1
  575. data/vendor/rails/actionpack/test/fixtures/respond_to/using_defaults_with_type_list.js.rjs +0 -1
  576. data/vendor/rails/actionpack/test/fixtures/respond_to/using_defaults_with_type_list.xml.builder +0 -1
  577. data/vendor/rails/actionpack/test/fixtures/scope/test/modgreet.erb +0 -1
  578. data/vendor/rails/actionpack/test/fixtures/scope/test/modgreet.rhtml +0 -0
  579. data/vendor/rails/actionpack/test/fixtures/test/_customer.erb +0 -1
  580. data/vendor/rails/actionpack/test/fixtures/test/_customer.rhtml +0 -0
  581. data/vendor/rails/actionpack/test/fixtures/test/_customer_greeting.erb +0 -1
  582. data/vendor/rails/actionpack/test/fixtures/test/_customer_greeting.rhtml +0 -0
  583. data/vendor/rails/actionpack/test/fixtures/test/_hash_object.erb +0 -1
  584. data/vendor/rails/actionpack/test/fixtures/test/_hash_object.rhtml +0 -0
  585. data/vendor/rails/actionpack/test/fixtures/test/_hello.builder +0 -1
  586. data/vendor/rails/actionpack/test/fixtures/test/_hello.rxml +0 -0
  587. data/vendor/rails/actionpack/test/fixtures/test/_partial.erb +0 -1
  588. data/vendor/rails/actionpack/test/fixtures/test/_partial.html.erb +0 -1
  589. data/vendor/rails/actionpack/test/fixtures/test/_partial.js.erb +0 -1
  590. data/vendor/rails/actionpack/test/fixtures/test/_partial.rhtml +0 -0
  591. data/vendor/rails/actionpack/test/fixtures/test/_partial_only.erb +0 -1
  592. data/vendor/rails/actionpack/test/fixtures/test/_partial_only.rhtml +0 -0
  593. data/vendor/rails/actionpack/test/fixtures/test/_person.erb +0 -2
  594. data/vendor/rails/actionpack/test/fixtures/test/_person.rhtml +0 -0
  595. data/vendor/rails/actionpack/test/fixtures/test/action_talk_to_layout.erb +0 -2
  596. data/vendor/rails/actionpack/test/fixtures/test/action_talk_to_layout.rhtml +0 -0
  597. data/vendor/rails/actionpack/test/fixtures/test/block_content_for.erb +0 -2
  598. data/vendor/rails/actionpack/test/fixtures/test/block_content_for.rhtml +0 -0
  599. data/vendor/rails/actionpack/test/fixtures/test/capturing.erb +0 -4
  600. data/vendor/rails/actionpack/test/fixtures/test/capturing.rhtml +0 -0
  601. data/vendor/rails/actionpack/test/fixtures/test/content_for.erb +0 -2
  602. data/vendor/rails/actionpack/test/fixtures/test/content_for.rhtml +0 -0
  603. data/vendor/rails/actionpack/test/fixtures/test/delete_with_js.rjs +0 -2
  604. data/vendor/rails/actionpack/test/fixtures/test/dot.directory/render_file_with_ivar.erb +0 -1
  605. data/vendor/rails/actionpack/test/fixtures/test/dot.directory/render_file_with_ivar.rhtml +0 -0
  606. data/vendor/rails/actionpack/test/fixtures/test/enum_rjs_test.rjs +0 -6
  607. data/vendor/rails/actionpack/test/fixtures/test/erb_content_for.erb +0 -2
  608. data/vendor/rails/actionpack/test/fixtures/test/erb_content_for.rhtml +0 -0
  609. data/vendor/rails/actionpack/test/fixtures/test/formatted_html_erb.html.erb +0 -1
  610. data/vendor/rails/actionpack/test/fixtures/test/formatted_xml_erb.builder +0 -1
  611. data/vendor/rails/actionpack/test/fixtures/test/formatted_xml_erb.html.erb +0 -1
  612. data/vendor/rails/actionpack/test/fixtures/test/formatted_xml_erb.xml.erb +0 -1
  613. data/vendor/rails/actionpack/test/fixtures/test/greeting.erb +0 -1
  614. data/vendor/rails/actionpack/test/fixtures/test/greeting.rhtml +0 -0
  615. data/vendor/rails/actionpack/test/fixtures/test/hello.builder +0 -4
  616. data/vendor/rails/actionpack/test/fixtures/test/hello.rxml +0 -0
  617. data/vendor/rails/actionpack/test/fixtures/test/hello_world.builder +0 -4
  618. data/vendor/rails/actionpack/test/fixtures/test/hello_world.erb +0 -1
  619. data/vendor/rails/actionpack/test/fixtures/test/hello_world.rhtml +0 -0
  620. data/vendor/rails/actionpack/test/fixtures/test/hello_world.rxml +0 -0
  621. data/vendor/rails/actionpack/test/fixtures/test/hello_world_container.builder +0 -3
  622. data/vendor/rails/actionpack/test/fixtures/test/hello_world_container.rxml +0 -0
  623. data/vendor/rails/actionpack/test/fixtures/test/hello_world_with_layout_false.erb +0 -1
  624. data/vendor/rails/actionpack/test/fixtures/test/hello_world_with_layout_false.rhtml +0 -0
  625. data/vendor/rails/actionpack/test/fixtures/test/hello_xml_world.builder +0 -11
  626. data/vendor/rails/actionpack/test/fixtures/test/hello_xml_world.rxml +0 -0
  627. data/vendor/rails/actionpack/test/fixtures/test/list.erb +0 -1
  628. data/vendor/rails/actionpack/test/fixtures/test/list.rhtml +0 -0
  629. data/vendor/rails/actionpack/test/fixtures/test/non_erb_block_content_for.builder +0 -4
  630. data/vendor/rails/actionpack/test/fixtures/test/non_erb_block_content_for.rxml +0 -0
  631. data/vendor/rails/actionpack/test/fixtures/test/potential_conflicts.erb +0 -4
  632. data/vendor/rails/actionpack/test/fixtures/test/potential_conflicts.rhtml +0 -0
  633. data/vendor/rails/actionpack/test/fixtures/test/render_file_with_ivar.erb +0 -1
  634. data/vendor/rails/actionpack/test/fixtures/test/render_file_with_ivar.rhtml +0 -0
  635. data/vendor/rails/actionpack/test/fixtures/test/render_file_with_locals.erb +0 -1
  636. data/vendor/rails/actionpack/test/fixtures/test/render_file_with_locals.rhtml +0 -0
  637. data/vendor/rails/actionpack/test/fixtures/test/render_to_string_test.erb +0 -1
  638. data/vendor/rails/actionpack/test/fixtures/test/render_to_string_test.rhtml +0 -0
  639. data/vendor/rails/actionpack/test/fixtures/test/update_element_with_capture.erb +0 -9
  640. data/vendor/rails/actionpack/test/fixtures/test/update_element_with_capture.rhtml +0 -0
  641. data/vendor/rails/actionpack/test/fixtures/topic.rb +0 -3
  642. data/vendor/rails/actionpack/test/fixtures/topics.yml +0 -22
  643. data/vendor/rails/actionpack/test/template/active_record_helper_test.rb +0 -197
  644. data/vendor/rails/actionpack/test/template/asset_tag_helper_test.rb +0 -367
  645. data/vendor/rails/actionpack/test/template/benchmark_helper_test.rb +0 -72
  646. data/vendor/rails/actionpack/test/template/compiled_templates_test.rb +0 -168
  647. data/vendor/rails/actionpack/test/template/date_helper_test.rb +0 -1394
  648. data/vendor/rails/actionpack/test/template/form_helper_test.rb +0 -611
  649. data/vendor/rails/actionpack/test/template/form_options_helper_test.rb +0 -489
  650. data/vendor/rails/actionpack/test/template/form_tag_helper_test.rb +0 -149
  651. data/vendor/rails/actionpack/test/template/java_script_macros_helper_test.rb +0 -109
  652. data/vendor/rails/actionpack/test/template/javascript_helper_test.rb +0 -67
  653. data/vendor/rails/actionpack/test/template/number_helper_test.rb +0 -89
  654. data/vendor/rails/actionpack/test/template/prototype_helper_test.rb +0 -556
  655. data/vendor/rails/actionpack/test/template/scriptaculous_helper_test.rb +0 -90
  656. data/vendor/rails/actionpack/test/template/tag_helper_test.rb +0 -74
  657. data/vendor/rails/actionpack/test/template/text_helper_test.rb +0 -356
  658. data/vendor/rails/actionpack/test/template/url_helper_test.rb +0 -423
  659. data/vendor/rails/actionpack/test/testing_sandbox.rb +0 -11
  660. data/vendor/rails/actionwebservice/CHANGELOG +0 -265
  661. data/vendor/rails/actionwebservice/MIT-LICENSE +0 -21
  662. data/vendor/rails/actionwebservice/README +0 -364
  663. data/vendor/rails/actionwebservice/Rakefile +0 -171
  664. data/vendor/rails/actionwebservice/TODO +0 -32
  665. data/vendor/rails/actionwebservice/examples/googlesearch/README +0 -143
  666. data/vendor/rails/actionwebservice/examples/googlesearch/autoloading/google_search_api.rb +0 -50
  667. data/vendor/rails/actionwebservice/examples/googlesearch/autoloading/google_search_controller.rb +0 -57
  668. data/vendor/rails/actionwebservice/examples/googlesearch/delegated/google_search_service.rb +0 -108
  669. data/vendor/rails/actionwebservice/examples/googlesearch/delegated/search_controller.rb +0 -7
  670. data/vendor/rails/actionwebservice/examples/googlesearch/direct/google_search_api.rb +0 -50
  671. data/vendor/rails/actionwebservice/examples/googlesearch/direct/search_controller.rb +0 -58
  672. data/vendor/rails/actionwebservice/examples/metaWeblog/README +0 -17
  673. data/vendor/rails/actionwebservice/examples/metaWeblog/apis/blogger_api.rb +0 -60
  674. data/vendor/rails/actionwebservice/examples/metaWeblog/apis/blogger_service.rb +0 -34
  675. data/vendor/rails/actionwebservice/examples/metaWeblog/apis/meta_weblog_api.rb +0 -67
  676. data/vendor/rails/actionwebservice/examples/metaWeblog/apis/meta_weblog_service.rb +0 -48
  677. data/vendor/rails/actionwebservice/examples/metaWeblog/controllers/xmlrpc_controller.rb +0 -16
  678. data/vendor/rails/actionwebservice/install.rb +0 -30
  679. data/vendor/rails/actionwebservice/lib/action_web_service.rb +0 -66
  680. data/vendor/rails/actionwebservice/lib/action_web_service/api.rb +0 -301
  681. data/vendor/rails/actionwebservice/lib/action_web_service/base.rb +0 -42
  682. data/vendor/rails/actionwebservice/lib/action_web_service/casting.rb +0 -138
  683. data/vendor/rails/actionwebservice/lib/action_web_service/client.rb +0 -3
  684. data/vendor/rails/actionwebservice/lib/action_web_service/client/base.rb +0 -28
  685. data/vendor/rails/actionwebservice/lib/action_web_service/client/soap_client.rb +0 -113
  686. data/vendor/rails/actionwebservice/lib/action_web_service/client/xmlrpc_client.rb +0 -58
  687. data/vendor/rails/actionwebservice/lib/action_web_service/container.rb +0 -3
  688. data/vendor/rails/actionwebservice/lib/action_web_service/container/action_controller_container.rb +0 -93
  689. data/vendor/rails/actionwebservice/lib/action_web_service/container/delegated_container.rb +0 -86
  690. data/vendor/rails/actionwebservice/lib/action_web_service/container/direct_container.rb +0 -69
  691. data/vendor/rails/actionwebservice/lib/action_web_service/dispatcher.rb +0 -2
  692. data/vendor/rails/actionwebservice/lib/action_web_service/dispatcher/abstract.rb +0 -207
  693. data/vendor/rails/actionwebservice/lib/action_web_service/dispatcher/action_controller_dispatcher.rb +0 -379
  694. data/vendor/rails/actionwebservice/lib/action_web_service/invocation.rb +0 -202
  695. data/vendor/rails/actionwebservice/lib/action_web_service/protocol.rb +0 -4
  696. data/vendor/rails/actionwebservice/lib/action_web_service/protocol/abstract.rb +0 -112
  697. data/vendor/rails/actionwebservice/lib/action_web_service/protocol/discovery.rb +0 -37
  698. data/vendor/rails/actionwebservice/lib/action_web_service/protocol/soap_protocol.rb +0 -176
  699. data/vendor/rails/actionwebservice/lib/action_web_service/protocol/soap_protocol/marshaler.rb +0 -235
  700. data/vendor/rails/actionwebservice/lib/action_web_service/protocol/xmlrpc_protocol.rb +0 -122
  701. data/vendor/rails/actionwebservice/lib/action_web_service/scaffolding.rb +0 -283
  702. data/vendor/rails/actionwebservice/lib/action_web_service/struct.rb +0 -68
  703. data/vendor/rails/actionwebservice/lib/action_web_service/support/class_inheritable_options.rb +0 -26
  704. data/vendor/rails/actionwebservice/lib/action_web_service/support/signature_types.rb +0 -226
  705. data/vendor/rails/actionwebservice/lib/action_web_service/templates/scaffolds/layout.erb +0 -65
  706. data/vendor/rails/actionwebservice/lib/action_web_service/templates/scaffolds/layout.rhtml +0 -0
  707. data/vendor/rails/actionwebservice/lib/action_web_service/templates/scaffolds/methods.erb +0 -6
  708. data/vendor/rails/actionwebservice/lib/action_web_service/templates/scaffolds/methods.rhtml +0 -0
  709. data/vendor/rails/actionwebservice/lib/action_web_service/templates/scaffolds/parameters.erb +0 -29
  710. data/vendor/rails/actionwebservice/lib/action_web_service/templates/scaffolds/parameters.rhtml +0 -0
  711. data/vendor/rails/actionwebservice/lib/action_web_service/templates/scaffolds/result.erb +0 -30
  712. data/vendor/rails/actionwebservice/lib/action_web_service/templates/scaffolds/result.rhtml +0 -0
  713. data/vendor/rails/actionwebservice/lib/action_web_service/test_invoke.rb +0 -110
  714. data/vendor/rails/actionwebservice/lib/action_web_service/version.rb +0 -9
  715. data/vendor/rails/actionwebservice/setup.rb +0 -1379
  716. data/vendor/rails/actionwebservice/test/abstract_client.rb +0 -183
  717. data/vendor/rails/actionwebservice/test/abstract_dispatcher.rb +0 -551
  718. data/vendor/rails/actionwebservice/test/abstract_unit.rb +0 -45
  719. data/vendor/rails/actionwebservice/test/api_test.rb +0 -102
  720. data/vendor/rails/actionwebservice/test/apis/auto_load_api.rb +0 -3
  721. data/vendor/rails/actionwebservice/test/apis/broken_auto_load_api.rb +0 -2
  722. data/vendor/rails/actionwebservice/test/base_test.rb +0 -42
  723. data/vendor/rails/actionwebservice/test/casting_test.rb +0 -86
  724. data/vendor/rails/actionwebservice/test/client_soap_test.rb +0 -153
  725. data/vendor/rails/actionwebservice/test/client_xmlrpc_test.rb +0 -152
  726. data/vendor/rails/actionwebservice/test/container_test.rb +0 -73
  727. data/vendor/rails/actionwebservice/test/dispatcher_action_controller_soap_test.rb +0 -137
  728. data/vendor/rails/actionwebservice/test/dispatcher_action_controller_xmlrpc_test.rb +0 -59
  729. data/vendor/rails/actionwebservice/test/fixtures/db_definitions/mysql.sql +0 -8
  730. data/vendor/rails/actionwebservice/test/fixtures/users.yml +0 -12
  731. data/vendor/rails/actionwebservice/test/gencov +0 -3
  732. data/vendor/rails/actionwebservice/test/invocation_test.rb +0 -185
  733. data/vendor/rails/actionwebservice/test/run +0 -6
  734. data/vendor/rails/actionwebservice/test/scaffolded_controller_test.rb +0 -146
  735. data/vendor/rails/actionwebservice/test/struct_test.rb +0 -52
  736. data/vendor/rails/actionwebservice/test/test_invoke_test.rb +0 -112
  737. data/vendor/rails/activerecord/CHANGELOG +0 -3195
  738. data/vendor/rails/activerecord/MIT-LICENSE +0 -20
  739. data/vendor/rails/activerecord/README +0 -360
  740. data/vendor/rails/activerecord/RUNNING_UNIT_TESTS +0 -64
  741. data/vendor/rails/activerecord/Rakefile +0 -223
  742. data/vendor/rails/activerecord/benchmarks/benchmark.rb +0 -26
  743. data/vendor/rails/activerecord/benchmarks/mysql_benchmark.rb +0 -19
  744. data/vendor/rails/activerecord/examples/associations.png +0 -0
  745. data/vendor/rails/activerecord/examples/associations.rb +0 -87
  746. data/vendor/rails/activerecord/examples/shared_setup.rb +0 -15
  747. data/vendor/rails/activerecord/examples/validation.rb +0 -85
  748. data/vendor/rails/activerecord/install.rb +0 -30
  749. data/vendor/rails/activerecord/lib/active_record.rb +0 -85
  750. data/vendor/rails/activerecord/lib/active_record/acts/list.rb +0 -253
  751. data/vendor/rails/activerecord/lib/active_record/acts/nested_set.rb +0 -211
  752. data/vendor/rails/activerecord/lib/active_record/acts/tree.rb +0 -96
  753. data/vendor/rails/activerecord/lib/active_record/aggregations.rb +0 -191
  754. data/vendor/rails/activerecord/lib/active_record/associations.rb +0 -1701
  755. data/vendor/rails/activerecord/lib/active_record/associations/association_collection.rb +0 -212
  756. data/vendor/rails/activerecord/lib/active_record/associations/association_proxy.rb +0 -162
  757. data/vendor/rails/activerecord/lib/active_record/associations/belongs_to_association.rb +0 -56
  758. data/vendor/rails/activerecord/lib/active_record/associations/belongs_to_polymorphic_association.rb +0 -50
  759. data/vendor/rails/activerecord/lib/active_record/associations/has_and_belongs_to_many_association.rb +0 -163
  760. data/vendor/rails/activerecord/lib/active_record/associations/has_many_association.rb +0 -196
  761. data/vendor/rails/activerecord/lib/active_record/associations/has_many_through_association.rb +0 -245
  762. data/vendor/rails/activerecord/lib/active_record/associations/has_one_association.rb +0 -96
  763. data/vendor/rails/activerecord/lib/active_record/attribute_methods.rb +0 -75
  764. data/vendor/rails/activerecord/lib/active_record/base.rb +0 -2276
  765. data/vendor/rails/activerecord/lib/active_record/calculations.rb +0 -274
  766. data/vendor/rails/activerecord/lib/active_record/callbacks.rb +0 -371
  767. data/vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/connection_specification.rb +0 -279
  768. data/vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/database_statements.rb +0 -135
  769. data/vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/quoting.rb +0 -61
  770. data/vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/schema_definitions.rb +0 -393
  771. data/vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/schema_statements.rb +0 -303
  772. data/vendor/rails/activerecord/lib/active_record/connection_adapters/abstract_adapter.rb +0 -157
  773. data/vendor/rails/activerecord/lib/active_record/connection_adapters/db2_adapter.rb +0 -228
  774. data/vendor/rails/activerecord/lib/active_record/connection_adapters/firebird_adapter.rb +0 -728
  775. data/vendor/rails/activerecord/lib/active_record/connection_adapters/frontbase_adapter.rb +0 -863
  776. data/vendor/rails/activerecord/lib/active_record/connection_adapters/mysql_adapter.rb +0 -421
  777. data/vendor/rails/activerecord/lib/active_record/connection_adapters/openbase_adapter.rb +0 -349
  778. data/vendor/rails/activerecord/lib/active_record/connection_adapters/oracle_adapter.rb +0 -710
  779. data/vendor/rails/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb +0 -582
  780. data/vendor/rails/activerecord/lib/active_record/connection_adapters/sqlite_adapter.rb +0 -415
  781. data/vendor/rails/activerecord/lib/active_record/connection_adapters/sqlserver_adapter.rb +0 -606
  782. data/vendor/rails/activerecord/lib/active_record/connection_adapters/sybase_adapter.rb +0 -666
  783. data/vendor/rails/activerecord/lib/active_record/deprecated_associations.rb +0 -104
  784. data/vendor/rails/activerecord/lib/active_record/deprecated_finders.rb +0 -44
  785. data/vendor/rails/activerecord/lib/active_record/fixtures.rb +0 -639
  786. data/vendor/rails/activerecord/lib/active_record/locking/optimistic.rb +0 -137
  787. data/vendor/rails/activerecord/lib/active_record/locking/pessimistic.rb +0 -77
  788. data/vendor/rails/activerecord/lib/active_record/migration.rb +0 -393
  789. data/vendor/rails/activerecord/lib/active_record/observer.rb +0 -178
  790. data/vendor/rails/activerecord/lib/active_record/query_cache.rb +0 -111
  791. data/vendor/rails/activerecord/lib/active_record/reflection.rb +0 -219
  792. data/vendor/rails/activerecord/lib/active_record/schema.rb +0 -58
  793. data/vendor/rails/activerecord/lib/active_record/schema_dumper.rb +0 -164
  794. data/vendor/rails/activerecord/lib/active_record/timestamp.rb +0 -50
  795. data/vendor/rails/activerecord/lib/active_record/transactions.rb +0 -128
  796. data/vendor/rails/activerecord/lib/active_record/validations.rb +0 -902
  797. data/vendor/rails/activerecord/lib/active_record/vendor/db2.rb +0 -362
  798. data/vendor/rails/activerecord/lib/active_record/vendor/mysql.rb +0 -1214
  799. data/vendor/rails/activerecord/lib/active_record/version.rb +0 -9
  800. data/vendor/rails/activerecord/lib/active_record/wrappers/yaml_wrapper.rb +0 -15
  801. data/vendor/rails/activerecord/lib/active_record/wrappings.rb +0 -58
  802. data/vendor/rails/activerecord/lib/active_record/xml_serialization.rb +0 -327
  803. data/vendor/rails/activerecord/test/aaa_create_tables_test.rb +0 -59
  804. data/vendor/rails/activerecord/test/abstract_unit.rb +0 -79
  805. data/vendor/rails/activerecord/test/active_schema_test_mysql.rb +0 -31
  806. data/vendor/rails/activerecord/test/adapter_test.rb +0 -87
  807. data/vendor/rails/activerecord/test/adapter_test_sqlserver.rb +0 -95
  808. data/vendor/rails/activerecord/test/aggregations_test.rb +0 -95
  809. data/vendor/rails/activerecord/test/all.sh +0 -8
  810. data/vendor/rails/activerecord/test/ar_schema_test.rb +0 -33
  811. data/vendor/rails/activerecord/test/association_inheritance_reload.rb +0 -14
  812. data/vendor/rails/activerecord/test/associations/callbacks_test.rb +0 -126
  813. data/vendor/rails/activerecord/test/associations/cascaded_eager_loading_test.rb +0 -138
  814. data/vendor/rails/activerecord/test/associations/eager_singularization_test.rb +0 -145
  815. data/vendor/rails/activerecord/test/associations/eager_test.rb +0 -393
  816. data/vendor/rails/activerecord/test/associations/extension_test.rb +0 -42
  817. data/vendor/rails/activerecord/test/associations/join_model_test.rb +0 -497
  818. data/vendor/rails/activerecord/test/associations_test.rb +0 -1880
  819. data/vendor/rails/activerecord/test/attribute_methods_test.rb +0 -49
  820. data/vendor/rails/activerecord/test/base_test.rb +0 -1656
  821. data/vendor/rails/activerecord/test/binary_test.rb +0 -37
  822. data/vendor/rails/activerecord/test/calculations_test.rb +0 -219
  823. data/vendor/rails/activerecord/test/callbacks_test.rb +0 -400
  824. data/vendor/rails/activerecord/test/class_inheritable_attributes_test.rb +0 -32
  825. data/vendor/rails/activerecord/test/column_alias_test.rb +0 -17
  826. data/vendor/rails/activerecord/test/connection_test_firebird.rb +0 -8
  827. data/vendor/rails/activerecord/test/connections/native_db2/connection.rb +0 -25
  828. data/vendor/rails/activerecord/test/connections/native_firebird/connection.rb +0 -26
  829. data/vendor/rails/activerecord/test/connections/native_frontbase/connection.rb +0 -27
  830. data/vendor/rails/activerecord/test/connections/native_mysql/connection.rb +0 -27
  831. data/vendor/rails/activerecord/test/connections/native_openbase/connection.rb +0 -21
  832. data/vendor/rails/activerecord/test/connections/native_oracle/connection.rb +0 -27
  833. data/vendor/rails/activerecord/test/connections/native_postgresql/connection.rb +0 -23
  834. data/vendor/rails/activerecord/test/connections/native_sqlite/connection.rb +0 -25
  835. data/vendor/rails/activerecord/test/connections/native_sqlite3/connection.rb +0 -25
  836. data/vendor/rails/activerecord/test/connections/native_sqlite3/in_memory_connection.rb +0 -18
  837. data/vendor/rails/activerecord/test/connections/native_sqlserver/connection.rb +0 -23
  838. data/vendor/rails/activerecord/test/connections/native_sqlserver_odbc/connection.rb +0 -25
  839. data/vendor/rails/activerecord/test/connections/native_sybase/connection.rb +0 -23
  840. data/vendor/rails/activerecord/test/copy_table_test_sqlite.rb +0 -65
  841. data/vendor/rails/activerecord/test/datatype_test_postgresql.rb +0 -52
  842. data/vendor/rails/activerecord/test/default_test_firebird.rb +0 -16
  843. data/vendor/rails/activerecord/test/defaults_test.rb +0 -60
  844. data/vendor/rails/activerecord/test/deprecated_associations_test.rb +0 -396
  845. data/vendor/rails/activerecord/test/deprecated_finder_test.rb +0 -151
  846. data/vendor/rails/activerecord/test/empty_date_time_test.rb +0 -25
  847. data/vendor/rails/activerecord/test/finder_test.rb +0 -523
  848. data/vendor/rails/activerecord/test/fixtures/accounts.yml +0 -28
  849. data/vendor/rails/activerecord/test/fixtures/all/developers.yml +0 -0
  850. data/vendor/rails/activerecord/test/fixtures/all/people.csv +0 -0
  851. data/vendor/rails/activerecord/test/fixtures/all/tasks.yml +0 -0
  852. data/vendor/rails/activerecord/test/fixtures/author.rb +0 -99
  853. data/vendor/rails/activerecord/test/fixtures/author_favorites.yml +0 -4
  854. data/vendor/rails/activerecord/test/fixtures/authors.yml +0 -7
  855. data/vendor/rails/activerecord/test/fixtures/auto_id.rb +0 -4
  856. data/vendor/rails/activerecord/test/fixtures/bad_fixtures/attr_with_numeric_first_char +0 -1
  857. data/vendor/rails/activerecord/test/fixtures/bad_fixtures/attr_with_spaces +0 -1
  858. data/vendor/rails/activerecord/test/fixtures/bad_fixtures/blank_line +0 -3
  859. data/vendor/rails/activerecord/test/fixtures/bad_fixtures/duplicate_attributes +0 -3
  860. data/vendor/rails/activerecord/test/fixtures/bad_fixtures/missing_value +0 -1
  861. data/vendor/rails/activerecord/test/fixtures/binary.rb +0 -2
  862. data/vendor/rails/activerecord/test/fixtures/categories.yml +0 -14
  863. data/vendor/rails/activerecord/test/fixtures/categories/special_categories.yml +0 -9
  864. data/vendor/rails/activerecord/test/fixtures/categories/subsubdir/arbitrary_filename.yml +0 -4
  865. data/vendor/rails/activerecord/test/fixtures/categories_ordered.yml +0 -7
  866. data/vendor/rails/activerecord/test/fixtures/categories_posts.yml +0 -23
  867. data/vendor/rails/activerecord/test/fixtures/categorization.rb +0 -5
  868. data/vendor/rails/activerecord/test/fixtures/categorizations.yml +0 -17
  869. data/vendor/rails/activerecord/test/fixtures/category.rb +0 -20
  870. data/vendor/rails/activerecord/test/fixtures/column_name.rb +0 -3
  871. data/vendor/rails/activerecord/test/fixtures/comment.rb +0 -23
  872. data/vendor/rails/activerecord/test/fixtures/comments.yml +0 -59
  873. data/vendor/rails/activerecord/test/fixtures/companies.yml +0 -55
  874. data/vendor/rails/activerecord/test/fixtures/company.rb +0 -111
  875. data/vendor/rails/activerecord/test/fixtures/company_in_module.rb +0 -59
  876. data/vendor/rails/activerecord/test/fixtures/computer.rb +0 -3
  877. data/vendor/rails/activerecord/test/fixtures/computers.yml +0 -4
  878. data/vendor/rails/activerecord/test/fixtures/course.rb +0 -3
  879. data/vendor/rails/activerecord/test/fixtures/courses.yml +0 -7
  880. data/vendor/rails/activerecord/test/fixtures/customer.rb +0 -55
  881. data/vendor/rails/activerecord/test/fixtures/customers.yml +0 -17
  882. data/vendor/rails/activerecord/test/fixtures/db_definitions/db2.drop.sql +0 -32
  883. data/vendor/rails/activerecord/test/fixtures/db_definitions/db2.sql +0 -231
  884. data/vendor/rails/activerecord/test/fixtures/db_definitions/db22.drop.sql +0 -2
  885. data/vendor/rails/activerecord/test/fixtures/db_definitions/db22.sql +0 -5
  886. data/vendor/rails/activerecord/test/fixtures/db_definitions/firebird.drop.sql +0 -63
  887. data/vendor/rails/activerecord/test/fixtures/db_definitions/firebird.sql +0 -304
  888. data/vendor/rails/activerecord/test/fixtures/db_definitions/firebird2.drop.sql +0 -2
  889. data/vendor/rails/activerecord/test/fixtures/db_definitions/firebird2.sql +0 -6
  890. data/vendor/rails/activerecord/test/fixtures/db_definitions/frontbase.drop.sql +0 -32
  891. data/vendor/rails/activerecord/test/fixtures/db_definitions/frontbase.sql +0 -268
  892. data/vendor/rails/activerecord/test/fixtures/db_definitions/frontbase2.drop.sql +0 -1
  893. data/vendor/rails/activerecord/test/fixtures/db_definitions/frontbase2.sql +0 -4
  894. data/vendor/rails/activerecord/test/fixtures/db_definitions/mysql.drop.sql +0 -32
  895. data/vendor/rails/activerecord/test/fixtures/db_definitions/mysql.sql +0 -234
  896. data/vendor/rails/activerecord/test/fixtures/db_definitions/mysql2.drop.sql +0 -2
  897. data/vendor/rails/activerecord/test/fixtures/db_definitions/mysql2.sql +0 -5
  898. data/vendor/rails/activerecord/test/fixtures/db_definitions/openbase.drop.sql +0 -2
  899. data/vendor/rails/activerecord/test/fixtures/db_definitions/openbase.sql +0 -302
  900. data/vendor/rails/activerecord/test/fixtures/db_definitions/openbase2.drop.sql +0 -2
  901. data/vendor/rails/activerecord/test/fixtures/db_definitions/openbase2.sql +0 -7
  902. data/vendor/rails/activerecord/test/fixtures/db_definitions/oracle.drop.sql +0 -65
  903. data/vendor/rails/activerecord/test/fixtures/db_definitions/oracle.sql +0 -325
  904. data/vendor/rails/activerecord/test/fixtures/db_definitions/oracle2.drop.sql +0 -2
  905. data/vendor/rails/activerecord/test/fixtures/db_definitions/oracle2.sql +0 -6
  906. data/vendor/rails/activerecord/test/fixtures/db_definitions/postgresql.drop.sql +0 -37
  907. data/vendor/rails/activerecord/test/fixtures/db_definitions/postgresql.sql +0 -247
  908. data/vendor/rails/activerecord/test/fixtures/db_definitions/postgresql2.drop.sql +0 -2
  909. data/vendor/rails/activerecord/test/fixtures/db_definitions/postgresql2.sql +0 -4
  910. data/vendor/rails/activerecord/test/fixtures/db_definitions/schema.rb +0 -74
  911. data/vendor/rails/activerecord/test/fixtures/db_definitions/sqlite.drop.sql +0 -32
  912. data/vendor/rails/activerecord/test/fixtures/db_definitions/sqlite.sql +0 -215
  913. data/vendor/rails/activerecord/test/fixtures/db_definitions/sqlite2.drop.sql +0 -2
  914. data/vendor/rails/activerecord/test/fixtures/db_definitions/sqlite2.sql +0 -5
  915. data/vendor/rails/activerecord/test/fixtures/db_definitions/sqlserver.drop.sql +0 -34
  916. data/vendor/rails/activerecord/test/fixtures/db_definitions/sqlserver.sql +0 -243
  917. data/vendor/rails/activerecord/test/fixtures/db_definitions/sqlserver2.drop.sql +0 -2
  918. data/vendor/rails/activerecord/test/fixtures/db_definitions/sqlserver2.sql +0 -5
  919. data/vendor/rails/activerecord/test/fixtures/db_definitions/sybase.drop.sql +0 -34
  920. data/vendor/rails/activerecord/test/fixtures/db_definitions/sybase.sql +0 -218
  921. data/vendor/rails/activerecord/test/fixtures/db_definitions/sybase2.drop.sql +0 -4
  922. data/vendor/rails/activerecord/test/fixtures/db_definitions/sybase2.sql +0 -5
  923. data/vendor/rails/activerecord/test/fixtures/default.rb +0 -2
  924. data/vendor/rails/activerecord/test/fixtures/developer.rb +0 -52
  925. data/vendor/rails/activerecord/test/fixtures/developers.yml +0 -21
  926. data/vendor/rails/activerecord/test/fixtures/developers_projects.yml +0 -17
  927. data/vendor/rails/activerecord/test/fixtures/developers_projects/david_action_controller +0 -3
  928. data/vendor/rails/activerecord/test/fixtures/developers_projects/david_active_record +0 -3
  929. data/vendor/rails/activerecord/test/fixtures/developers_projects/jamis_active_record +0 -2
  930. data/vendor/rails/activerecord/test/fixtures/edge.rb +0 -5
  931. data/vendor/rails/activerecord/test/fixtures/edges.yml +0 -6
  932. data/vendor/rails/activerecord/test/fixtures/entrant.rb +0 -3
  933. data/vendor/rails/activerecord/test/fixtures/entrants.yml +0 -14
  934. data/vendor/rails/activerecord/test/fixtures/fk_test_has_fk.yml +0 -3
  935. data/vendor/rails/activerecord/test/fixtures/fk_test_has_pk.yml +0 -2
  936. data/vendor/rails/activerecord/test/fixtures/flowers.jpg +0 -0
  937. data/vendor/rails/activerecord/test/fixtures/funny_jokes.yml +0 -10
  938. data/vendor/rails/activerecord/test/fixtures/joke.rb +0 -6
  939. data/vendor/rails/activerecord/test/fixtures/keyboard.rb +0 -3
  940. data/vendor/rails/activerecord/test/fixtures/legacy_thing.rb +0 -3
  941. data/vendor/rails/activerecord/test/fixtures/legacy_things.yml +0 -3
  942. data/vendor/rails/activerecord/test/fixtures/migrations/1_people_have_last_names.rb +0 -9
  943. data/vendor/rails/activerecord/test/fixtures/migrations/2_we_need_reminders.rb +0 -12
  944. data/vendor/rails/activerecord/test/fixtures/migrations/3_innocent_jointable.rb +0 -12
  945. data/vendor/rails/activerecord/test/fixtures/migrations_with_decimal/1_give_me_big_numbers.rb +0 -15
  946. data/vendor/rails/activerecord/test/fixtures/migrations_with_duplicate/1_people_have_last_names.rb +0 -9
  947. data/vendor/rails/activerecord/test/fixtures/migrations_with_duplicate/2_we_need_reminders.rb +0 -12
  948. data/vendor/rails/activerecord/test/fixtures/migrations_with_duplicate/3_foo.rb +0 -7
  949. data/vendor/rails/activerecord/test/fixtures/migrations_with_duplicate/3_innocent_jointable.rb +0 -12
  950. data/vendor/rails/activerecord/test/fixtures/migrations_with_missing_versions/1000_people_have_middle_names.rb +0 -9
  951. data/vendor/rails/activerecord/test/fixtures/migrations_with_missing_versions/1_people_have_last_names.rb +0 -9
  952. data/vendor/rails/activerecord/test/fixtures/migrations_with_missing_versions/3_we_need_reminders.rb +0 -12
  953. data/vendor/rails/activerecord/test/fixtures/migrations_with_missing_versions/4_innocent_jointable.rb +0 -12
  954. data/vendor/rails/activerecord/test/fixtures/mixed_case_monkey.rb +0 -3
  955. data/vendor/rails/activerecord/test/fixtures/mixed_case_monkeys.yml +0 -6
  956. data/vendor/rails/activerecord/test/fixtures/mixin.rb +0 -63
  957. data/vendor/rails/activerecord/test/fixtures/mixins.yml +0 -127
  958. data/vendor/rails/activerecord/test/fixtures/movie.rb +0 -5
  959. data/vendor/rails/activerecord/test/fixtures/movies.yml +0 -7
  960. data/vendor/rails/activerecord/test/fixtures/naked/csv/accounts.csv +0 -1
  961. data/vendor/rails/activerecord/test/fixtures/naked/yml/accounts.yml +0 -1
  962. data/vendor/rails/activerecord/test/fixtures/naked/yml/companies.yml +0 -1
  963. data/vendor/rails/activerecord/test/fixtures/naked/yml/courses.yml +0 -1
  964. data/vendor/rails/activerecord/test/fixtures/order.rb +0 -4
  965. data/vendor/rails/activerecord/test/fixtures/people.yml +0 -3
  966. data/vendor/rails/activerecord/test/fixtures/person.rb +0 -4
  967. data/vendor/rails/activerecord/test/fixtures/post.rb +0 -58
  968. data/vendor/rails/activerecord/test/fixtures/posts.yml +0 -48
  969. data/vendor/rails/activerecord/test/fixtures/project.rb +0 -27
  970. data/vendor/rails/activerecord/test/fixtures/projects.yml +0 -7
  971. data/vendor/rails/activerecord/test/fixtures/reader.rb +0 -4
  972. data/vendor/rails/activerecord/test/fixtures/readers.yml +0 -4
  973. data/vendor/rails/activerecord/test/fixtures/reply.rb +0 -37
  974. data/vendor/rails/activerecord/test/fixtures/subject.rb +0 -4
  975. data/vendor/rails/activerecord/test/fixtures/subscriber.rb +0 -6
  976. data/vendor/rails/activerecord/test/fixtures/subscribers/first +0 -2
  977. data/vendor/rails/activerecord/test/fixtures/subscribers/second +0 -2
  978. data/vendor/rails/activerecord/test/fixtures/tag.rb +0 -7
  979. data/vendor/rails/activerecord/test/fixtures/tagging.rb +0 -6
  980. data/vendor/rails/activerecord/test/fixtures/taggings.yml +0 -18
  981. data/vendor/rails/activerecord/test/fixtures/tags.yml +0 -7
  982. data/vendor/rails/activerecord/test/fixtures/task.rb +0 -3
  983. data/vendor/rails/activerecord/test/fixtures/tasks.yml +0 -7
  984. data/vendor/rails/activerecord/test/fixtures/topic.rb +0 -25
  985. data/vendor/rails/activerecord/test/fixtures/topics.yml +0 -22
  986. data/vendor/rails/activerecord/test/fixtures/vertex.rb +0 -9
  987. data/vendor/rails/activerecord/test/fixtures/vertices.yml +0 -4
  988. data/vendor/rails/activerecord/test/fixtures_test.rb +0 -410
  989. data/vendor/rails/activerecord/test/inheritance_test.rb +0 -212
  990. data/vendor/rails/activerecord/test/lifecycle_test.rb +0 -137
  991. data/vendor/rails/activerecord/test/locking_test.rb +0 -241
  992. data/vendor/rails/activerecord/test/method_scoping_test.rb +0 -416
  993. data/vendor/rails/activerecord/test/migration_test.rb +0 -781
  994. data/vendor/rails/activerecord/test/migration_test_firebird.rb +0 -124
  995. data/vendor/rails/activerecord/test/mixin_nested_set_test.rb +0 -196
  996. data/vendor/rails/activerecord/test/mixin_test.rb +0 -550
  997. data/vendor/rails/activerecord/test/modules_test.rb +0 -34
  998. data/vendor/rails/activerecord/test/multiple_db_test.rb +0 -60
  999. data/vendor/rails/activerecord/test/pk_test.rb +0 -101
  1000. data/vendor/rails/activerecord/test/query_cache_test.rb +0 -107
  1001. data/vendor/rails/activerecord/test/readonly_test.rb +0 -107
  1002. data/vendor/rails/activerecord/test/reflection_test.rb +0 -166
  1003. data/vendor/rails/activerecord/test/schema_authorization_test_postgresql.rb +0 -75
  1004. data/vendor/rails/activerecord/test/schema_dumper_test.rb +0 -124
  1005. data/vendor/rails/activerecord/test/schema_test_postgresql.rb +0 -64
  1006. data/vendor/rails/activerecord/test/synonym_test_oracle.rb +0 -17
  1007. data/vendor/rails/activerecord/test/table_name_test_sqlserver.rb +0 -23
  1008. data/vendor/rails/activerecord/test/threaded_connections_test.rb +0 -48
  1009. data/vendor/rails/activerecord/test/transactions_test.rb +0 -268
  1010. data/vendor/rails/activerecord/test/unconnected_test.rb +0 -32
  1011. data/vendor/rails/activerecord/test/validations_test.rb +0 -1131
  1012. data/vendor/rails/activerecord/test/xml_serialization_test.rb +0 -153
  1013. data/vendor/rails/activeresource/CHANGELOG +0 -177
  1014. data/vendor/rails/activeresource/MIT-LICENSE +0 -20
  1015. data/vendor/rails/activeresource/README +0 -235
  1016. data/vendor/rails/activeresource/Rakefile +0 -132
  1017. data/vendor/rails/activeresource/lib/active_resource.rb +0 -47
  1018. data/vendor/rails/activeresource/lib/active_resource/base.rb +0 -424
  1019. data/vendor/rails/activeresource/lib/active_resource/connection.rb +0 -161
  1020. data/vendor/rails/activeresource/lib/active_resource/custom_methods.rb +0 -104
  1021. data/vendor/rails/activeresource/lib/active_resource/http_mock.rb +0 -131
  1022. data/vendor/rails/activeresource/lib/active_resource/struct.rb +0 -16
  1023. data/vendor/rails/activeresource/lib/active_resource/validations.rb +0 -161
  1024. data/vendor/rails/activeresource/lib/active_resource/version.rb +0 -9
  1025. data/vendor/rails/activeresource/test/abstract_unit.rb +0 -10
  1026. data/vendor/rails/activeresource/test/authorization_test.rb +0 -82
  1027. data/vendor/rails/activeresource/test/base/custom_methods_test.rb +0 -87
  1028. data/vendor/rails/activeresource/test/base/equality_test.rb +0 -43
  1029. data/vendor/rails/activeresource/test/base/load_test.rb +0 -111
  1030. data/vendor/rails/activeresource/test/base_errors_test.rb +0 -35
  1031. data/vendor/rails/activeresource/test/base_test.rb +0 -390
  1032. data/vendor/rails/activeresource/test/connection_test.rb +0 -148
  1033. data/vendor/rails/activeresource/test/fixtures/beast.rb +0 -14
  1034. data/vendor/rails/activeresource/test/fixtures/person.rb +0 -3
  1035. data/vendor/rails/activeresource/test/fixtures/street_address.rb +0 -4
  1036. data/vendor/rails/activeresource/test/setter_trap.rb +0 -29
  1037. data/vendor/rails/activesupport/CHANGELOG +0 -787
  1038. data/vendor/rails/activesupport/MIT-LICENSE +0 -20
  1039. data/vendor/rails/activesupport/README +0 -43
  1040. data/vendor/rails/activesupport/Rakefile +0 -82
  1041. data/vendor/rails/activesupport/install.rb +0 -30
  1042. data/vendor/rails/activesupport/lib/active_support.rb +0 -46
  1043. data/vendor/rails/activesupport/lib/active_support/caching_tools.rb +0 -62
  1044. data/vendor/rails/activesupport/lib/active_support/clean_logger.rb +0 -78
  1045. data/vendor/rails/activesupport/lib/active_support/core_ext.rb +0 -1
  1046. data/vendor/rails/activesupport/lib/active_support/core_ext/array.rb +0 -7
  1047. data/vendor/rails/activesupport/lib/active_support/core_ext/array/conversions.rb +0 -72
  1048. data/vendor/rails/activesupport/lib/active_support/core_ext/array/grouping.rb +0 -55
  1049. data/vendor/rails/activesupport/lib/active_support/core_ext/bigdecimal.rb +0 -3
  1050. data/vendor/rails/activesupport/lib/active_support/core_ext/bigdecimal/formatting.rb +0 -7
  1051. data/vendor/rails/activesupport/lib/active_support/core_ext/blank.rb +0 -50
  1052. data/vendor/rails/activesupport/lib/active_support/core_ext/cgi.rb +0 -5
  1053. data/vendor/rails/activesupport/lib/active_support/core_ext/cgi/escape_skipping_slashes.rb +0 -14
  1054. data/vendor/rails/activesupport/lib/active_support/core_ext/class.rb +0 -3
  1055. data/vendor/rails/activesupport/lib/active_support/core_ext/class/attribute_accessors.rb +0 -48
  1056. data/vendor/rails/activesupport/lib/active_support/core_ext/class/inheritable_attributes.rb +0 -140
  1057. data/vendor/rails/activesupport/lib/active_support/core_ext/class/removal.rb +0 -24
  1058. data/vendor/rails/activesupport/lib/active_support/core_ext/date.rb +0 -10
  1059. data/vendor/rails/activesupport/lib/active_support/core_ext/date/behavior.rb +0 -13
  1060. data/vendor/rails/activesupport/lib/active_support/core_ext/date/calculations.rb +0 -45
  1061. data/vendor/rails/activesupport/lib/active_support/core_ext/date/conversions.rb +0 -40
  1062. data/vendor/rails/activesupport/lib/active_support/core_ext/date_time.rb +0 -8
  1063. data/vendor/rails/activesupport/lib/active_support/core_ext/date_time/calculations.rb +0 -173
  1064. data/vendor/rails/activesupport/lib/active_support/core_ext/date_time/conversions.rb +0 -33
  1065. data/vendor/rails/activesupport/lib/active_support/core_ext/enumerable.rb +0 -62
  1066. data/vendor/rails/activesupport/lib/active_support/core_ext/exception.rb +0 -33
  1067. data/vendor/rails/activesupport/lib/active_support/core_ext/file.rb +0 -21
  1068. data/vendor/rails/activesupport/lib/active_support/core_ext/hash.rb +0 -12
  1069. data/vendor/rails/activesupport/lib/active_support/core_ext/hash/conversions.rb +0 -221
  1070. data/vendor/rails/activesupport/lib/active_support/core_ext/hash/diff.rb +0 -11
  1071. data/vendor/rails/activesupport/lib/active_support/core_ext/hash/indifferent_access.rb +0 -101
  1072. data/vendor/rails/activesupport/lib/active_support/core_ext/hash/keys.rb +0 -53
  1073. data/vendor/rails/activesupport/lib/active_support/core_ext/hash/reverse_merge.rb +0 -25
  1074. data/vendor/rails/activesupport/lib/active_support/core_ext/hash/slice.rb +0 -28
  1075. data/vendor/rails/activesupport/lib/active_support/core_ext/integer.rb +0 -7
  1076. data/vendor/rails/activesupport/lib/active_support/core_ext/integer/even_odd.rb +0 -24
  1077. data/vendor/rails/activesupport/lib/active_support/core_ext/integer/inflections.rb +0 -21
  1078. data/vendor/rails/activesupport/lib/active_support/core_ext/kernel.rb +0 -5
  1079. data/vendor/rails/activesupport/lib/active_support/core_ext/kernel/agnostics.rb +0 -11
  1080. data/vendor/rails/activesupport/lib/active_support/core_ext/kernel/daemonizing.rb +0 -15
  1081. data/vendor/rails/activesupport/lib/active_support/core_ext/kernel/debugger.rb +0 -13
  1082. data/vendor/rails/activesupport/lib/active_support/core_ext/kernel/reporting.rb +0 -51
  1083. data/vendor/rails/activesupport/lib/active_support/core_ext/kernel/requires.rb +0 -24
  1084. data/vendor/rails/activesupport/lib/active_support/core_ext/load_error.rb +0 -38
  1085. data/vendor/rails/activesupport/lib/active_support/core_ext/logger.rb +0 -16
  1086. data/vendor/rails/activesupport/lib/active_support/core_ext/module.rb +0 -8
  1087. data/vendor/rails/activesupport/lib/active_support/core_ext/module/aliasing.rb +0 -70
  1088. data/vendor/rails/activesupport/lib/active_support/core_ext/module/attr_accessor_with_default.rb +0 -31
  1089. data/vendor/rails/activesupport/lib/active_support/core_ext/module/attr_internal.rb +0 -31
  1090. data/vendor/rails/activesupport/lib/active_support/core_ext/module/attribute_accessors.rb +0 -48
  1091. data/vendor/rails/activesupport/lib/active_support/core_ext/module/delegation.rb +0 -41
  1092. data/vendor/rails/activesupport/lib/active_support/core_ext/module/inclusion.rb +0 -11
  1093. data/vendor/rails/activesupport/lib/active_support/core_ext/module/introspection.rb +0 -35
  1094. data/vendor/rails/activesupport/lib/active_support/core_ext/module/loading.rb +0 -13
  1095. data/vendor/rails/activesupport/lib/active_support/core_ext/name_error.rb +0 -17
  1096. data/vendor/rails/activesupport/lib/active_support/core_ext/numeric.rb +0 -7
  1097. data/vendor/rails/activesupport/lib/active_support/core_ext/numeric/bytes.rb +0 -44
  1098. data/vendor/rails/activesupport/lib/active_support/core_ext/numeric/time.rb +0 -91
  1099. data/vendor/rails/activesupport/lib/active_support/core_ext/object.rb +0 -2
  1100. data/vendor/rails/activesupport/lib/active_support/core_ext/object/extending.rb +0 -47
  1101. data/vendor/rails/activesupport/lib/active_support/core_ext/object/misc.rb +0 -54
  1102. data/vendor/rails/activesupport/lib/active_support/core_ext/pathname.rb +0 -7
  1103. data/vendor/rails/activesupport/lib/active_support/core_ext/pathname/clean_within.rb +0 -14
  1104. data/vendor/rails/activesupport/lib/active_support/core_ext/proc.rb +0 -12
  1105. data/vendor/rails/activesupport/lib/active_support/core_ext/range.rb +0 -5
  1106. data/vendor/rails/activesupport/lib/active_support/core_ext/range/conversions.rb +0 -21
  1107. data/vendor/rails/activesupport/lib/active_support/core_ext/string.rb +0 -15
  1108. data/vendor/rails/activesupport/lib/active_support/core_ext/string/access.rb +0 -58
  1109. data/vendor/rails/activesupport/lib/active_support/core_ext/string/conversions.rb +0 -19
  1110. data/vendor/rails/activesupport/lib/active_support/core_ext/string/inflections.rb +0 -153
  1111. data/vendor/rails/activesupport/lib/active_support/core_ext/string/iterators.rb +0 -17
  1112. data/vendor/rails/activesupport/lib/active_support/core_ext/string/starts_ends_with.rb +0 -20
  1113. data/vendor/rails/activesupport/lib/active_support/core_ext/string/unicode.rb +0 -42
  1114. data/vendor/rails/activesupport/lib/active_support/core_ext/symbol.rb +0 -12
  1115. data/vendor/rails/activesupport/lib/active_support/core_ext/test.rb +0 -2
  1116. data/vendor/rails/activesupport/lib/active_support/core_ext/test/difference.rb +0 -40
  1117. data/vendor/rails/activesupport/lib/active_support/core_ext/time.rb +0 -19
  1118. data/vendor/rails/activesupport/lib/active_support/core_ext/time/behavior.rb +0 -13
  1119. data/vendor/rails/activesupport/lib/active_support/core_ext/time/calculations.rb +0 -239
  1120. data/vendor/rails/activesupport/lib/active_support/core_ext/time/conversions.rb +0 -39
  1121. data/vendor/rails/activesupport/lib/active_support/dependencies.rb +0 -539
  1122. data/vendor/rails/activesupport/lib/active_support/deprecation.rb +0 -202
  1123. data/vendor/rails/activesupport/lib/active_support/duration.rb +0 -89
  1124. data/vendor/rails/activesupport/lib/active_support/inflections.rb +0 -52
  1125. data/vendor/rails/activesupport/lib/active_support/inflector.rb +0 -275
  1126. data/vendor/rails/activesupport/lib/active_support/json.rb +0 -31
  1127. data/vendor/rails/activesupport/lib/active_support/json/decoding.rb +0 -40
  1128. data/vendor/rails/activesupport/lib/active_support/json/encoders/enumerable.rb +0 -5
  1129. data/vendor/rails/activesupport/lib/active_support/json/encoders/false_class.rb +0 -5
  1130. data/vendor/rails/activesupport/lib/active_support/json/encoders/hash.rb +0 -12
  1131. data/vendor/rails/activesupport/lib/active_support/json/encoders/nil_class.rb +0 -5
  1132. data/vendor/rails/activesupport/lib/active_support/json/encoders/numeric.rb +0 -5
  1133. data/vendor/rails/activesupport/lib/active_support/json/encoders/object.rb +0 -10
  1134. data/vendor/rails/activesupport/lib/active_support/json/encoders/regexp.rb +0 -5
  1135. data/vendor/rails/activesupport/lib/active_support/json/encoders/string.rb +0 -27
  1136. data/vendor/rails/activesupport/lib/active_support/json/encoders/symbol.rb +0 -5
  1137. data/vendor/rails/activesupport/lib/active_support/json/encoders/true_class.rb +0 -5
  1138. data/vendor/rails/activesupport/lib/active_support/json/encoding.rb +0 -45
  1139. data/vendor/rails/activesupport/lib/active_support/json/variable.rb +0 -10
  1140. data/vendor/rails/activesupport/lib/active_support/multibyte.rb +0 -7
  1141. data/vendor/rails/activesupport/lib/active_support/multibyte/chars.rb +0 -129
  1142. data/vendor/rails/activesupport/lib/active_support/multibyte/generators/generate_tables.rb +0 -149
  1143. data/vendor/rails/activesupport/lib/active_support/multibyte/handlers/passthru_handler.rb +0 -9
  1144. data/vendor/rails/activesupport/lib/active_support/multibyte/handlers/utf8_handler.rb +0 -458
  1145. data/vendor/rails/activesupport/lib/active_support/multibyte/handlers/utf8_handler_proc.rb +0 -43
  1146. data/vendor/rails/activesupport/lib/active_support/option_merger.rb +0 -25
  1147. data/vendor/rails/activesupport/lib/active_support/ordered_options.rb +0 -44
  1148. data/vendor/rails/activesupport/lib/active_support/reloadable.rb +0 -60
  1149. data/vendor/rails/activesupport/lib/active_support/values/time_zone.rb +0 -180
  1150. data/vendor/rails/activesupport/lib/active_support/values/unicode_tables.dat +0 -0
  1151. data/vendor/rails/activesupport/lib/active_support/vendor/builder.rb +0 -13
  1152. data/vendor/rails/activesupport/lib/active_support/vendor/builder/blankslate.rb +0 -63
  1153. data/vendor/rails/activesupport/lib/active_support/vendor/builder/xchar.rb +0 -112
  1154. data/vendor/rails/activesupport/lib/active_support/vendor/builder/xmlbase.rb +0 -145
  1155. data/vendor/rails/activesupport/lib/active_support/vendor/builder/xmlevents.rb +0 -63
  1156. data/vendor/rails/activesupport/lib/active_support/vendor/builder/xmlmarkup.rb +0 -327
  1157. data/vendor/rails/activesupport/lib/active_support/vendor/xml_simple.rb +0 -1021
  1158. data/vendor/rails/activesupport/lib/active_support/version.rb +0 -9
  1159. data/vendor/rails/activesupport/lib/active_support/whiny_nil.rb +0 -38
  1160. data/vendor/rails/activesupport/test/abstract_unit.rb +0 -7
  1161. data/vendor/rails/activesupport/test/autoloading_fixtures/a/b.rb +0 -2
  1162. data/vendor/rails/activesupport/test/autoloading_fixtures/a/c/d.rb +0 -2
  1163. data/vendor/rails/activesupport/test/autoloading_fixtures/a/c/e/f.rb +0 -2
  1164. data/vendor/rails/activesupport/test/autoloading_fixtures/application.rb +0 -1
  1165. data/vendor/rails/activesupport/test/autoloading_fixtures/class_folder.rb +0 -3
  1166. data/vendor/rails/activesupport/test/autoloading_fixtures/class_folder/class_folder_subclass.rb +0 -3
  1167. data/vendor/rails/activesupport/test/autoloading_fixtures/class_folder/inline_class.rb +0 -2
  1168. data/vendor/rails/activesupport/test/autoloading_fixtures/class_folder/nested_class.rb +0 -7
  1169. data/vendor/rails/activesupport/test/autoloading_fixtures/conflict.rb +0 -1
  1170. data/vendor/rails/activesupport/test/autoloading_fixtures/counting_loader.rb +0 -5
  1171. data/vendor/rails/activesupport/test/autoloading_fixtures/cross_site_dependency.rb +0 -2
  1172. data/vendor/rails/activesupport/test/autoloading_fixtures/e.rb +0 -2
  1173. data/vendor/rails/activesupport/test/autoloading_fixtures/module_folder/inline_class.rb +0 -2
  1174. data/vendor/rails/activesupport/test/autoloading_fixtures/module_folder/nested_class.rb +0 -4
  1175. data/vendor/rails/activesupport/test/autoloading_fixtures/module_folder/nested_sibling.rb +0 -2
  1176. data/vendor/rails/activesupport/test/autoloading_fixtures/module_with_custom_const_missing/a/b.rb +0 -1
  1177. data/vendor/rails/activesupport/test/autoloading_fixtures/multiple_constant_file.rb +0 -2
  1178. data/vendor/rails/activesupport/test/autoloading_fixtures/raises_name_error.rb +0 -3
  1179. data/vendor/rails/activesupport/test/autoloading_fixtures/raises_no_method_error.rb +0 -3
  1180. data/vendor/rails/activesupport/test/caching_tools_test.rb +0 -79
  1181. data/vendor/rails/activesupport/test/clean_logger_test.rb +0 -87
  1182. data/vendor/rails/activesupport/test/core_ext/array_ext_test.rb +0 -182
  1183. data/vendor/rails/activesupport/test/core_ext/blank_test.rb +0 -11
  1184. data/vendor/rails/activesupport/test/core_ext/cgi_ext_test.rb +0 -14
  1185. data/vendor/rails/activesupport/test/core_ext/class/attribute_accessor_test.rb +0 -31
  1186. data/vendor/rails/activesupport/test/core_ext/class/class_inheritable_attributes_test.rb +0 -208
  1187. data/vendor/rails/activesupport/test/core_ext/class_test.rb +0 -36
  1188. data/vendor/rails/activesupport/test/core_ext/date_ext_test.rb +0 -21
  1189. data/vendor/rails/activesupport/test/core_ext/date_time_ext_test.rb +0 -152
  1190. data/vendor/rails/activesupport/test/core_ext/duration_test.rb +0 -21
  1191. data/vendor/rails/activesupport/test/core_ext/enumerable_test.rb +0 -61
  1192. data/vendor/rails/activesupport/test/core_ext/exception_test.rb +0 -64
  1193. data/vendor/rails/activesupport/test/core_ext/file_test.rb +0 -29
  1194. data/vendor/rails/activesupport/test/core_ext/hash_ext_test.rb +0 -622
  1195. data/vendor/rails/activesupport/test/core_ext/integer_ext_test.rb +0 -37
  1196. data/vendor/rails/activesupport/test/core_ext/kernel_test.rb +0 -43
  1197. data/vendor/rails/activesupport/test/core_ext/load_error_tests.rb +0 -16
  1198. data/vendor/rails/activesupport/test/core_ext/module/attr_accessor_with_default.rb +0 -30
  1199. data/vendor/rails/activesupport/test/core_ext/module/attr_accessor_with_default_test.rb +0 -30
  1200. data/vendor/rails/activesupport/test/core_ext/module/attr_internal_test.rb +0 -52
  1201. data/vendor/rails/activesupport/test/core_ext/module/attribute_accessor_test.rb +0 -33
  1202. data/vendor/rails/activesupport/test/core_ext/module/attribute_aliasing_test.rb +0 -31
  1203. data/vendor/rails/activesupport/test/core_ext/module_test.rb +0 -274
  1204. data/vendor/rails/activesupport/test/core_ext/name_error_test.rb +0 -24
  1205. data/vendor/rails/activesupport/test/core_ext/numeric_ext_test.rb +0 -104
  1206. data/vendor/rails/activesupport/test/core_ext/object_and_class_ext_test.rb +0 -216
  1207. data/vendor/rails/activesupport/test/core_ext/pathname_test.rb +0 -9
  1208. data/vendor/rails/activesupport/test/core_ext/proc_test.rb +0 -11
  1209. data/vendor/rails/activesupport/test/core_ext/range_ext_test.rb +0 -13
  1210. data/vendor/rails/activesupport/test/core_ext/string_ext_test.rb +0 -152
  1211. data/vendor/rails/activesupport/test/core_ext/symbol_test.rb +0 -9
  1212. data/vendor/rails/activesupport/test/core_ext/time_ext_test.rb +0 -373
  1213. data/vendor/rails/activesupport/test/dependencies/check_warnings.rb +0 -2
  1214. data/vendor/rails/activesupport/test/dependencies/conflict.rb +0 -1
  1215. data/vendor/rails/activesupport/test/dependencies/cross_site_depender.rb +0 -3
  1216. data/vendor/rails/activesupport/test/dependencies/mutual_one.rb +0 -4
  1217. data/vendor/rails/activesupport/test/dependencies/mutual_two.rb +0 -4
  1218. data/vendor/rails/activesupport/test/dependencies/raises_exception.rb +0 -3
  1219. data/vendor/rails/activesupport/test/dependencies/requires_nonexistent0.rb +0 -1
  1220. data/vendor/rails/activesupport/test/dependencies/requires_nonexistent1.rb +0 -1
  1221. data/vendor/rails/activesupport/test/dependencies/service_one.rb +0 -5
  1222. data/vendor/rails/activesupport/test/dependencies/service_two.rb +0 -2
  1223. data/vendor/rails/activesupport/test/dependencies_test.rb +0 -752
  1224. data/vendor/rails/activesupport/test/deprecation_test.rb +0 -151
  1225. data/vendor/rails/activesupport/test/inflector_test.rb +0 -438
  1226. data/vendor/rails/activesupport/test/json/decoding_test.rb +0 -28
  1227. data/vendor/rails/activesupport/test/json/encoding_test.rb +0 -96
  1228. data/vendor/rails/activesupport/test/multibyte_chars_test.rb +0 -164
  1229. data/vendor/rails/activesupport/test/multibyte_conformance.rb +0 -141
  1230. data/vendor/rails/activesupport/test/multibyte_handler_test.rb +0 -277
  1231. data/vendor/rails/activesupport/test/option_merger_test.rb +0 -50
  1232. data/vendor/rails/activesupport/test/ordered_options_test.rb +0 -80
  1233. data/vendor/rails/activesupport/test/reloadable_test.rb +0 -123
  1234. data/vendor/rails/activesupport/test/test_test.rb +0 -56
  1235. data/vendor/rails/activesupport/test/time_zone_test.rb +0 -91
  1236. data/vendor/rails/activesupport/test/whiny_nil_test.rb +0 -38
  1237. data/vendor/rails/railties/CHANGELOG +0 -1407
  1238. data/vendor/rails/railties/MIT-LICENSE +0 -20
  1239. data/vendor/rails/railties/README +0 -180
  1240. data/vendor/rails/railties/Rakefile +0 -355
  1241. data/vendor/rails/railties/bin/about +0 -3
  1242. data/vendor/rails/railties/bin/console +0 -3
  1243. data/vendor/rails/railties/bin/destroy +0 -3
  1244. data/vendor/rails/railties/bin/generate +0 -3
  1245. data/vendor/rails/railties/bin/performance/benchmarker +0 -3
  1246. data/vendor/rails/railties/bin/performance/profiler +0 -3
  1247. data/vendor/rails/railties/bin/plugin +0 -3
  1248. data/vendor/rails/railties/bin/process/inspector +0 -3
  1249. data/vendor/rails/railties/bin/process/reaper +0 -3
  1250. data/vendor/rails/railties/bin/process/spawner +0 -3
  1251. data/vendor/rails/railties/bin/rails +0 -19
  1252. data/vendor/rails/railties/bin/runner +0 -3
  1253. data/vendor/rails/railties/bin/server +0 -3
  1254. data/vendor/rails/railties/builtin/rails_info/rails/info.rb +0 -123
  1255. data/vendor/rails/railties/builtin/rails_info/rails/info_controller.rb +0 -9
  1256. data/vendor/rails/railties/builtin/rails_info/rails/info_helper.rb +0 -2
  1257. data/vendor/rails/railties/builtin/rails_info/rails_info_controller.rb +0 -2
  1258. data/vendor/rails/railties/configs/apache.conf +0 -40
  1259. data/vendor/rails/railties/configs/databases/frontbase.yml +0 -28
  1260. data/vendor/rails/railties/configs/databases/mysql.yml +0 -48
  1261. data/vendor/rails/railties/configs/databases/oracle.yml +0 -39
  1262. data/vendor/rails/railties/configs/databases/postgresql.yml +0 -44
  1263. data/vendor/rails/railties/configs/databases/sqlite2.yml +0 -16
  1264. data/vendor/rails/railties/configs/databases/sqlite3.yml +0 -19
  1265. data/vendor/rails/railties/configs/initializers/inflections.rb +0 -8
  1266. data/vendor/rails/railties/configs/initializers/mime_types.rb +0 -3
  1267. data/vendor/rails/railties/configs/lighttpd.conf +0 -54
  1268. data/vendor/rails/railties/configs/routes.rb +0 -27
  1269. data/vendor/rails/railties/dispatches/dispatch.fcgi +0 -24
  1270. data/vendor/rails/railties/dispatches/dispatch.rb +0 -10
  1271. data/vendor/rails/railties/dispatches/gateway.cgi +0 -97
  1272. data/vendor/rails/railties/doc/README_FOR_APP +0 -2
  1273. data/vendor/rails/railties/environments/boot.rb +0 -36
  1274. data/vendor/rails/railties/environments/development.rb +0 -18
  1275. data/vendor/rails/railties/environments/environment.rb +0 -55
  1276. data/vendor/rails/railties/environments/production.rb +0 -18
  1277. data/vendor/rails/railties/environments/test.rb +0 -19
  1278. data/vendor/rails/railties/fresh_rakefile +0 -10
  1279. data/vendor/rails/railties/helpers/application.rb +0 -6
  1280. data/vendor/rails/railties/helpers/application_helper.rb +0 -3
  1281. data/vendor/rails/railties/helpers/test_helper.rb +0 -36
  1282. data/vendor/rails/railties/html/404.html +0 -30
  1283. data/vendor/rails/railties/html/500.html +0 -30
  1284. data/vendor/rails/railties/html/favicon.ico +0 -0
  1285. data/vendor/rails/railties/html/images/rails.png +0 -0
  1286. data/vendor/rails/railties/html/index.html +0 -277
  1287. data/vendor/rails/railties/html/javascripts/application.js +0 -2
  1288. data/vendor/rails/railties/html/javascripts/controls.js +0 -833
  1289. data/vendor/rails/railties/html/javascripts/dragdrop.js +0 -942
  1290. data/vendor/rails/railties/html/javascripts/effects.js +0 -1088
  1291. data/vendor/rails/railties/html/javascripts/prototype.js +0 -2515
  1292. data/vendor/rails/railties/html/robots.txt +0 -1
  1293. data/vendor/rails/railties/lib/code_statistics.rb +0 -107
  1294. data/vendor/rails/railties/lib/commands.rb +0 -17
  1295. data/vendor/rails/railties/lib/commands/about.rb +0 -2
  1296. data/vendor/rails/railties/lib/commands/console.rb +0 -32
  1297. data/vendor/rails/railties/lib/commands/destroy.rb +0 -6
  1298. data/vendor/rails/railties/lib/commands/generate.rb +0 -6
  1299. data/vendor/rails/railties/lib/commands/ncgi/listener +0 -86
  1300. data/vendor/rails/railties/lib/commands/ncgi/tracker +0 -69
  1301. data/vendor/rails/railties/lib/commands/performance/benchmarker.rb +0 -24
  1302. data/vendor/rails/railties/lib/commands/performance/profiler.rb +0 -50
  1303. data/vendor/rails/railties/lib/commands/plugin.rb +0 -918
  1304. data/vendor/rails/railties/lib/commands/process/inspector.rb +0 -68
  1305. data/vendor/rails/railties/lib/commands/process/reaper.rb +0 -149
  1306. data/vendor/rails/railties/lib/commands/process/spawner.rb +0 -209
  1307. data/vendor/rails/railties/lib/commands/process/spinner.rb +0 -57
  1308. data/vendor/rails/railties/lib/commands/runner.rb +0 -48
  1309. data/vendor/rails/railties/lib/commands/server.rb +0 -39
  1310. data/vendor/rails/railties/lib/commands/servers/base.rb +0 -31
  1311. data/vendor/rails/railties/lib/commands/servers/lighttpd.rb +0 -94
  1312. data/vendor/rails/railties/lib/commands/servers/mongrel.rb +0 -69
  1313. data/vendor/rails/railties/lib/commands/servers/webrick.rb +0 -65
  1314. data/vendor/rails/railties/lib/commands/update.rb +0 -4
  1315. data/vendor/rails/railties/lib/console_app.rb +0 -27
  1316. data/vendor/rails/railties/lib/console_sandbox.rb +0 -6
  1317. data/vendor/rails/railties/lib/console_with_helpers.rb +0 -23
  1318. data/vendor/rails/railties/lib/dispatcher.rb +0 -181
  1319. data/vendor/rails/railties/lib/fcgi_handler.rb +0 -207
  1320. data/vendor/rails/railties/lib/initializer.rb +0 -693
  1321. data/vendor/rails/railties/lib/rails/plugin/loader.rb +0 -123
  1322. data/vendor/rails/railties/lib/rails/plugin/locator.rb +0 -59
  1323. data/vendor/rails/railties/lib/rails/version.rb +0 -9
  1324. data/vendor/rails/railties/lib/rails_generator.rb +0 -43
  1325. data/vendor/rails/railties/lib/rails_generator/base.rb +0 -261
  1326. data/vendor/rails/railties/lib/rails_generator/commands.rb +0 -581
  1327. data/vendor/rails/railties/lib/rails_generator/generated_attribute.rb +0 -42
  1328. data/vendor/rails/railties/lib/rails_generator/generators/applications/app/USAGE +0 -16
  1329. data/vendor/rails/railties/lib/rails_generator/generators/applications/app/app_generator.rb +0 -175
  1330. data/vendor/rails/railties/lib/rails_generator/generators/components/controller/USAGE +0 -30
  1331. data/vendor/rails/railties/lib/rails_generator/generators/components/controller/controller_generator.rb +0 -37
  1332. data/vendor/rails/railties/lib/rails_generator/generators/components/controller/templates/controller.rb +0 -10
  1333. data/vendor/rails/railties/lib/rails_generator/generators/components/controller/templates/functional_test.rb +0 -18
  1334. data/vendor/rails/railties/lib/rails_generator/generators/components/controller/templates/helper.rb +0 -2
  1335. data/vendor/rails/railties/lib/rails_generator/generators/components/controller/templates/view.html.erb +0 -2
  1336. data/vendor/rails/railties/lib/rails_generator/generators/components/integration_test/USAGE +0 -14
  1337. data/vendor/rails/railties/lib/rails_generator/generators/components/integration_test/integration_test_generator.rb +0 -16
  1338. data/vendor/rails/railties/lib/rails_generator/generators/components/integration_test/templates/integration_test.rb +0 -10
  1339. data/vendor/rails/railties/lib/rails_generator/generators/components/mailer/USAGE +0 -18
  1340. data/vendor/rails/railties/lib/rails_generator/generators/components/mailer/mailer_generator.rb +0 -34
  1341. data/vendor/rails/railties/lib/rails_generator/generators/components/mailer/templates/fixture.erb +0 -3
  1342. data/vendor/rails/railties/lib/rails_generator/generators/components/mailer/templates/fixture.rhtml +0 -0
  1343. data/vendor/rails/railties/lib/rails_generator/generators/components/mailer/templates/mailer.rb +0 -13
  1344. data/vendor/rails/railties/lib/rails_generator/generators/components/mailer/templates/unit_test.rb +0 -37
  1345. data/vendor/rails/railties/lib/rails_generator/generators/components/mailer/templates/view.erb +0 -3
  1346. data/vendor/rails/railties/lib/rails_generator/generators/components/mailer/templates/view.rhtml +0 -0
  1347. data/vendor/rails/railties/lib/rails_generator/generators/components/migration/USAGE +0 -14
  1348. data/vendor/rails/railties/lib/rails_generator/generators/components/migration/migration_generator.rb +0 -7
  1349. data/vendor/rails/railties/lib/rails_generator/generators/components/migration/templates/migration.rb +0 -7
  1350. data/vendor/rails/railties/lib/rails_generator/generators/components/model/USAGE +0 -26
  1351. data/vendor/rails/railties/lib/rails_generator/generators/components/model/model_generator.rb +0 -38
  1352. data/vendor/rails/railties/lib/rails_generator/generators/components/model/templates/fixtures.yml +0 -11
  1353. data/vendor/rails/railties/lib/rails_generator/generators/components/model/templates/migration.rb +0 -13
  1354. data/vendor/rails/railties/lib/rails_generator/generators/components/model/templates/model.rb +0 -2
  1355. data/vendor/rails/railties/lib/rails_generator/generators/components/model/templates/unit_test.rb +0 -10
  1356. data/vendor/rails/railties/lib/rails_generator/generators/components/observer/USAGE +0 -15
  1357. data/vendor/rails/railties/lib/rails_generator/generators/components/observer/observer_generator.rb +0 -16
  1358. data/vendor/rails/railties/lib/rails_generator/generators/components/observer/templates/observer.rb +0 -2
  1359. data/vendor/rails/railties/lib/rails_generator/generators/components/observer/templates/unit_test.rb +0 -10
  1360. data/vendor/rails/railties/lib/rails_generator/generators/components/plugin/USAGE +0 -35
  1361. data/vendor/rails/railties/lib/rails_generator/generators/components/plugin/plugin_generator.rb +0 -39
  1362. data/vendor/rails/railties/lib/rails_generator/generators/components/plugin/templates/MIT-LICENSE +0 -20
  1363. data/vendor/rails/railties/lib/rails_generator/generators/components/plugin/templates/README +0 -13
  1364. data/vendor/rails/railties/lib/rails_generator/generators/components/plugin/templates/Rakefile +0 -22
  1365. data/vendor/rails/railties/lib/rails_generator/generators/components/plugin/templates/USAGE +0 -8
  1366. data/vendor/rails/railties/lib/rails_generator/generators/components/plugin/templates/generator.rb +0 -8
  1367. data/vendor/rails/railties/lib/rails_generator/generators/components/plugin/templates/init.rb +0 -1
  1368. data/vendor/rails/railties/lib/rails_generator/generators/components/plugin/templates/install.rb +0 -1
  1369. data/vendor/rails/railties/lib/rails_generator/generators/components/plugin/templates/plugin.rb +0 -1
  1370. data/vendor/rails/railties/lib/rails_generator/generators/components/plugin/templates/tasks.rake +0 -4
  1371. data/vendor/rails/railties/lib/rails_generator/generators/components/plugin/templates/uninstall.rb +0 -1
  1372. data/vendor/rails/railties/lib/rails_generator/generators/components/plugin/templates/unit_test.rb +0 -8
  1373. data/vendor/rails/railties/lib/rails_generator/generators/components/resource/USAGE +0 -30
  1374. data/vendor/rails/railties/lib/rails_generator/generators/components/resource/resource_generator.rb +0 -63
  1375. data/vendor/rails/railties/lib/rails_generator/generators/components/resource/templates/USAGE +0 -18
  1376. data/vendor/rails/railties/lib/rails_generator/generators/components/resource/templates/controller.rb +0 -2
  1377. data/vendor/rails/railties/lib/rails_generator/generators/components/resource/templates/fixtures.yml +0 -0
  1378. data/vendor/rails/railties/lib/rails_generator/generators/components/resource/templates/functional_test.rb +0 -20
  1379. data/vendor/rails/railties/lib/rails_generator/generators/components/resource/templates/helper.rb +0 -2
  1380. data/vendor/rails/railties/lib/rails_generator/generators/components/resource/templates/migration.rb +0 -0
  1381. data/vendor/rails/railties/lib/rails_generator/generators/components/resource/templates/model.rb +0 -0
  1382. data/vendor/rails/railties/lib/rails_generator/generators/components/resource/templates/unit_test.rb +0 -0
  1383. data/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/USAGE +0 -37
  1384. data/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/scaffold_generator.rb +0 -92
  1385. data/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/templates/controller.rb +0 -85
  1386. data/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/templates/fixtures.yml +0 -11
  1387. data/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/templates/functional_test.rb +0 -57
  1388. data/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/templates/helper.rb +0 -2
  1389. data/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/templates/layout.html.erb +0 -17
  1390. data/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/templates/migration.rb +0 -13
  1391. data/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/templates/model.rb +0 -2
  1392. data/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/templates/style.css +0 -74
  1393. data/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/templates/unit_test.rb +0 -10
  1394. data/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/templates/view_edit.html.erb +0 -19
  1395. data/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/templates/view_index.html.erb +0 -24
  1396. data/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/templates/view_new.html.erb +0 -18
  1397. data/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/templates/view_show.html.erb +0 -10
  1398. data/vendor/rails/railties/lib/rails_generator/generators/components/session_migration/USAGE +0 -15
  1399. data/vendor/rails/railties/lib/rails_generator/generators/components/session_migration/session_migration_generator.rb +0 -18
  1400. data/vendor/rails/railties/lib/rails_generator/generators/components/session_migration/templates/migration.rb +0 -16
  1401. data/vendor/rails/railties/lib/rails_generator/generators/components/web_service/USAGE +0 -28
  1402. data/vendor/rails/railties/lib/rails_generator/generators/components/web_service/templates/api_definition.rb +0 -5
  1403. data/vendor/rails/railties/lib/rails_generator/generators/components/web_service/templates/controller.rb +0 -8
  1404. data/vendor/rails/railties/lib/rails_generator/generators/components/web_service/templates/functional_test.rb +0 -19
  1405. data/vendor/rails/railties/lib/rails_generator/generators/components/web_service/web_service_generator.rb +0 -29
  1406. data/vendor/rails/railties/lib/rails_generator/lookup.rb +0 -209
  1407. data/vendor/rails/railties/lib/rails_generator/manifest.rb +0 -53
  1408. data/vendor/rails/railties/lib/rails_generator/options.rb +0 -143
  1409. data/vendor/rails/railties/lib/rails_generator/scripts.rb +0 -83
  1410. data/vendor/rails/railties/lib/rails_generator/scripts/destroy.rb +0 -30
  1411. data/vendor/rails/railties/lib/rails_generator/scripts/generate.rb +0 -7
  1412. data/vendor/rails/railties/lib/rails_generator/scripts/update.rb +0 -12
  1413. data/vendor/rails/railties/lib/rails_generator/simple_logger.rb +0 -46
  1414. data/vendor/rails/railties/lib/rails_generator/spec.rb +0 -44
  1415. data/vendor/rails/railties/lib/railties_path.rb +0 -1
  1416. data/vendor/rails/railties/lib/ruby_version_check.rb +0 -17
  1417. data/vendor/rails/railties/lib/rubyprof_ext.rb +0 -35
  1418. data/vendor/rails/railties/lib/tasks/annotations.rake +0 -84
  1419. data/vendor/rails/railties/lib/tasks/databases.rake +0 -187
  1420. data/vendor/rails/railties/lib/tasks/documentation.rake +0 -82
  1421. data/vendor/rails/railties/lib/tasks/framework.rake +0 -112
  1422. data/vendor/rails/railties/lib/tasks/log.rake +0 -9
  1423. data/vendor/rails/railties/lib/tasks/misc.rake +0 -4
  1424. data/vendor/rails/railties/lib/tasks/pre_namespace_aliases.rake +0 -53
  1425. data/vendor/rails/railties/lib/tasks/rails.rb +0 -8
  1426. data/vendor/rails/railties/lib/tasks/statistics.rake +0 -18
  1427. data/vendor/rails/railties/lib/tasks/testing.rake +0 -120
  1428. data/vendor/rails/railties/lib/tasks/tmp.rake +0 -37
  1429. data/vendor/rails/railties/lib/test_help.rb +0 -17
  1430. data/vendor/rails/railties/lib/webrick_server.rb +0 -165
  1431. data/vendor/rails/railties/test/abstract_unit.rb +0 -17
  1432. data/vendor/rails/railties/test/dispatcher_test.rb +0 -139
  1433. data/vendor/rails/railties/test/fcgi_dispatcher_test.rb +0 -266
  1434. data/vendor/rails/railties/test/fixtures/environment_with_constant.rb +0 -1
  1435. data/vendor/rails/railties/test/fixtures/lib/generators/missing_class/missing_class_generator.rb +0 -0
  1436. data/vendor/rails/railties/test/fixtures/lib/generators/working/working_generator.rb +0 -2
  1437. data/vendor/rails/railties/test/fixtures/plugins/default/plugin_with_no_lib_dir/init.rb +0 -0
  1438. data/vendor/rails/railties/test/fixtures/plugins/default/stubby/init.rb +0 -7
  1439. data/vendor/rails/railties/test/fixtures/plugins/default/stubby/lib/stubby_mixin.rb +0 -2
  1440. data/vendor/rails/railties/test/initializer_test.rb +0 -22
  1441. data/vendor/rails/railties/test/mocks/dispatcher.rb +0 -13
  1442. data/vendor/rails/railties/test/mocks/fcgi.rb +0 -15
  1443. data/vendor/rails/railties/test/mocks/routes.rb +0 -6
  1444. data/vendor/rails/railties/test/mocks/stubbed_breakpoint.rb +0 -2
  1445. data/vendor/rails/railties/test/mocks/stubbed_kernel.rb +0 -5
  1446. data/vendor/rails/railties/test/plugin_loader_test.rb +0 -78
  1447. data/vendor/rails/railties/test/plugin_locator_test.rb +0 -41
  1448. data/vendor/rails/railties/test/plugin_test_helper.rb +0 -18
  1449. data/vendor/rails/railties/test/rails_generator_test.rb +0 -137
  1450. data/vendor/rails/railties/test/rails_info_controller_test.rb +0 -48
  1451. data/vendor/rails/railties/test/rails_info_test.rb +0 -98
@@ -1,1701 +0,0 @@
1
- require 'active_record/associations/association_proxy'
2
- require 'active_record/associations/association_collection'
3
- require 'active_record/associations/belongs_to_association'
4
- require 'active_record/associations/belongs_to_polymorphic_association'
5
- require 'active_record/associations/has_one_association'
6
- require 'active_record/associations/has_many_association'
7
- require 'active_record/associations/has_many_through_association'
8
- require 'active_record/associations/has_and_belongs_to_many_association'
9
- require 'active_record/deprecated_associations'
10
-
11
- module ActiveRecord
12
- class HasManyThroughAssociationNotFoundError < ActiveRecordError #:nodoc:
13
- def initialize(owner_class_name, reflection)
14
- super("Could not find the association #{reflection.options[:through].inspect} in model #{owner_class_name}")
15
- end
16
- end
17
-
18
- class HasManyThroughAssociationPolymorphicError < ActiveRecordError #:nodoc:
19
- def initialize(owner_class_name, reflection, source_reflection)
20
- super("Cannot have a has_many :through association '#{owner_class_name}##{reflection.name}' on the polymorphic object '#{source_reflection.class_name}##{source_reflection.name}'.")
21
- end
22
- end
23
-
24
- class HasManyThroughAssociationPointlessSourceTypeError < ActiveRecordError #:nodoc:
25
- def initialize(owner_class_name, reflection, source_reflection)
26
- super("Cannot have a has_many :through association '#{owner_class_name}##{reflection.name}' with a :source_type option if the '#{reflection.through_reflection.class_name}##{source_reflection.name}' is not polymorphic. Try removing :source_type on your association.")
27
- end
28
- end
29
-
30
- class HasManyThroughSourceAssociationNotFoundError < ActiveRecordError #:nodoc:
31
- def initialize(reflection)
32
- through_reflection = reflection.through_reflection
33
- source_reflection_names = reflection.source_reflection_names
34
- source_associations = reflection.through_reflection.klass.reflect_on_all_associations.collect { |a| a.name.inspect }
35
- super("Could not find the source association(s) #{source_reflection_names.collect(&:inspect).to_sentence :connector => 'or'} in model #{through_reflection.klass}. Try 'has_many #{reflection.name.inspect}, :through => #{through_reflection.name.inspect}, :source => <name>'. Is it one of #{source_associations.to_sentence :connector => 'or'}?")
36
- end
37
- end
38
-
39
- class HasManyThroughSourceAssociationMacroError < ActiveRecordError #:nodoc:
40
- def initialize(reflection)
41
- through_reflection = reflection.through_reflection
42
- source_reflection = reflection.source_reflection
43
- super("Invalid source reflection macro :#{source_reflection.macro}#{" :through" if source_reflection.options[:through]} for has_many #{reflection.name.inspect}, :through => #{through_reflection.name.inspect}. Use :source to specify the source reflection.")
44
- end
45
- end
46
-
47
- class HasManyThroughCantAssociateNewRecords < ActiveRecordError #:nodoc:
48
- def initialize(owner, reflection)
49
- super("Cannot associate new records through '#{owner.class.name}##{reflection.name}' on '#{reflection.source_reflection.class_name rescue nil}##{reflection.source_reflection.name rescue nil}'. Both records must have an id in order to create the has_many :through record associating them.")
50
- end
51
- end
52
-
53
- class EagerLoadPolymorphicError < ActiveRecordError #:nodoc:
54
- def initialize(reflection)
55
- super("Can not eagerly load the polymorphic association #{reflection.name.inspect}")
56
- end
57
- end
58
-
59
- class ReadOnlyAssociation < ActiveRecordError #:nodoc:
60
- def initialize(reflection)
61
- super("Can not add to a has_many :through association. Try adding to #{reflection.through_reflection.name.inspect}.")
62
- end
63
- end
64
-
65
- module Associations # :nodoc:
66
- def self.included(base)
67
- base.extend(ClassMethods)
68
- end
69
-
70
- # Clears out the association cache
71
- def clear_association_cache #:nodoc:
72
- self.class.reflect_on_all_associations.to_a.each do |assoc|
73
- instance_variable_set "@#{assoc.name}", nil
74
- end unless self.new_record?
75
- end
76
-
77
- # Associations are a set of macro-like class methods for tying objects together through foreign keys. They express relationships like
78
- # "Project has one Project Manager" or "Project belongs to a Portfolio". Each macro adds a number of methods to the class which are
79
- # specialized according to the collection or association symbol and the options hash. It works much the same way as Ruby's own attr*
80
- # methods. Example:
81
- #
82
- # class Project < ActiveRecord::Base
83
- # belongs_to :portfolio
84
- # has_one :project_manager
85
- # has_many :milestones
86
- # has_and_belongs_to_many :categories
87
- # end
88
- #
89
- # The project class now has the following methods (and more) to ease the traversal and manipulation of its relationships:
90
- # * <tt>Project#portfolio, Project#portfolio=(portfolio), Project#portfolio.nil?</tt>
91
- # * <tt>Project#project_manager, Project#project_manager=(project_manager), Project#project_manager.nil?,</tt>
92
- # * <tt>Project#milestones.empty?, Project#milestones.size, Project#milestones, Project#milestones<<(milestone),</tt>
93
- # <tt>Project#milestones.delete(milestone), Project#milestones.find(milestone_id), Project#milestones.find(:all, options),</tt>
94
- # <tt>Project#milestones.build, Project#milestones.create</tt>
95
- # * <tt>Project#categories.empty?, Project#categories.size, Project#categories, Project#categories<<(category1),</tt>
96
- # <tt>Project#categories.delete(category1)</tt>
97
- #
98
- # == Example
99
- #
100
- # link:files/examples/associations.png
101
- #
102
- # == Cardinality and associations
103
- #
104
- # ActiveRecord associations can be used to describe relations with one-to-one, one-to-many
105
- # and many-to-many cardinality. Each model uses an association to describe its role in
106
- # the relation. In each case, the belongs_to association is used in the model that has
107
- # the foreign key.
108
- #
109
- # === One-to-one
110
- #
111
- # Use has_one in the base, and belongs_to in the associated model.
112
- #
113
- # class Employee < ActiveRecord::Base
114
- # has_one :office
115
- # end
116
- # class Office < ActiveRecord::Base
117
- # belongs_to :employee # foreign key - employee_id
118
- # end
119
- #
120
- # === One-to-many
121
- #
122
- # Use has_many in the base, and belongs_to in the associated model.
123
- #
124
- # class Manager < ActiveRecord::Base
125
- # has_many :employees
126
- # end
127
- # class Employee < ActiveRecord::Base
128
- # belongs_to :manager # foreign key - manager_id
129
- # end
130
- #
131
- # === Many-to-many
132
- #
133
- # There are two ways to build a many-to-many relationship.
134
- #
135
- # The first way uses a has_many association with the :through option and a join model, so
136
- # there are two stages of associations.
137
- #
138
- # class Assignment < ActiveRecord::Base
139
- # belongs_to :programmer # foreign key - programmer_id
140
- # belongs_to :project # foreign key - project_id
141
- # end
142
- # class Programmer < ActiveRecord::Base
143
- # has_many :assignments
144
- # has_many :projects, :through => :assignments
145
- # end
146
- # class Project < ActiveRecord::Base
147
- # has_many :assignments
148
- # has_many :programmers, :through => :assignments
149
- # end
150
- #
151
- # For the second way, use has_and_belongs_to_many in both models. This requires a join table
152
- # that has no corresponding model or primary key.
153
- #
154
- # class Programmer < ActiveRecord::Base
155
- # has_and_belongs_to_many :projects # foreign keys in the join table
156
- # end
157
- # class Project < ActiveRecord::Base
158
- # has_and_belongs_to_many :programmers # foreign keys in the join table
159
- # end
160
- #
161
- # It is not always a simple decision which way of building a many-to-many relationship is best.
162
- # But if you need to work with the relationship model as its own entity, then you'll need to
163
- # use has_many :through. Use has_and_belongs_to_many when working with legacy schemas or when
164
- # you never work directly with the relationship itself.
165
- #
166
- # == Is it a belongs_to or has_one association?
167
- #
168
- # Both express a 1-1 relationship, the difference is mostly where to place the foreign key, which goes on the table for the class
169
- # saying belongs_to. Example:
170
- #
171
- # class User < ActiveRecord::Base
172
- # # I reference an account.
173
- # belongs_to :account
174
- # end
175
- #
176
- # class Account < ActiveRecord::Base
177
- # # One user references me.
178
- # has_one :user
179
- # end
180
- #
181
- # The tables for these classes could look something like:
182
- #
183
- # CREATE TABLE users (
184
- # id int(11) NOT NULL auto_increment,
185
- # account_id int(11) default NULL,
186
- # name varchar default NULL,
187
- # PRIMARY KEY (id)
188
- # )
189
- #
190
- # CREATE TABLE accounts (
191
- # id int(11) NOT NULL auto_increment,
192
- # name varchar default NULL,
193
- # PRIMARY KEY (id)
194
- # )
195
- #
196
- # == Unsaved objects and associations
197
- #
198
- # You can manipulate objects and associations before they are saved to the database, but there is some special behaviour you should be
199
- # aware of, mostly involving the saving of associated objects.
200
- #
201
- # === One-to-one associations
202
- #
203
- # * Assigning an object to a has_one association automatically saves that object and the object being replaced (if there is one), in
204
- # order to update their primary keys - except if the parent object is unsaved (new_record? == true).
205
- # * If either of these saves fail (due to one of the objects being invalid) the assignment statement returns false and the assignment
206
- # is cancelled.
207
- # * If you wish to assign an object to a has_one association without saving it, use the #association.build method (documented below).
208
- # * Assigning an object to a belongs_to association does not save the object, since the foreign key field belongs on the parent. It does
209
- # not save the parent either.
210
- #
211
- # === Collections
212
- #
213
- # * Adding an object to a collection (has_many or has_and_belongs_to_many) automatically saves that object, except if the parent object
214
- # (the owner of the collection) is not yet stored in the database.
215
- # * If saving any of the objects being added to a collection (via #push or similar) fails, then #push returns false.
216
- # * You can add an object to a collection without automatically saving it by using the #collection.build method (documented below).
217
- # * All unsaved (new_record? == true) members of the collection are automatically saved when the parent is saved.
218
- #
219
- # === Association callbacks
220
- #
221
- # Similiar to the normal callbacks that hook into the lifecycle of an Active Record object, you can also define callbacks that get
222
- # trigged when you add an object to or removing an object from a association collection. Example:
223
- #
224
- # class Project
225
- # has_and_belongs_to_many :developers, :after_add => :evaluate_velocity
226
- #
227
- # def evaluate_velocity(developer)
228
- # ...
229
- # end
230
- # end
231
- #
232
- # It's possible to stack callbacks by passing them as an array. Example:
233
- #
234
- # class Project
235
- # has_and_belongs_to_many :developers, :after_add => [:evaluate_velocity, Proc.new { |p, d| p.shipping_date = Time.now}]
236
- # end
237
- #
238
- # Possible callbacks are: before_add, after_add, before_remove and after_remove.
239
- #
240
- # Should any of the before_add callbacks throw an exception, the object does not get added to the collection. Same with
241
- # the before_remove callbacks, if an exception is thrown the object doesn't get removed.
242
- #
243
- # === Association extensions
244
- #
245
- # The proxy objects that controls the access to associations can be extended through anonymous modules. This is especially
246
- # beneficial for adding new finders, creators, and other factory-type methods that are only used as part of this association.
247
- # Example:
248
- #
249
- # class Account < ActiveRecord::Base
250
- # has_many :people do
251
- # def find_or_create_by_name(name)
252
- # first_name, last_name = name.split(" ", 2)
253
- # find_or_create_by_first_name_and_last_name(first_name, last_name)
254
- # end
255
- # end
256
- # end
257
- #
258
- # person = Account.find(:first).people.find_or_create_by_name("David Heinemeier Hansson")
259
- # person.first_name # => "David"
260
- # person.last_name # => "Heinemeier Hansson"
261
- #
262
- # If you need to share the same extensions between many associations, you can use a named extension module. Example:
263
- #
264
- # module FindOrCreateByNameExtension
265
- # def find_or_create_by_name(name)
266
- # first_name, last_name = name.split(" ", 2)
267
- # find_or_create_by_first_name_and_last_name(first_name, last_name)
268
- # end
269
- # end
270
- #
271
- # class Account < ActiveRecord::Base
272
- # has_many :people, :extend => FindOrCreateByNameExtension
273
- # end
274
- #
275
- # class Company < ActiveRecord::Base
276
- # has_many :people, :extend => FindOrCreateByNameExtension
277
- # end
278
- #
279
- # If you need to use multiple named extension modules, you can specify an array of modules with the :extend option.
280
- # In the case of name conflicts between methods in the modules, methods in modules later in the array supercede
281
- # those earlier in the array. Example:
282
- #
283
- # class Account < ActiveRecord::Base
284
- # has_many :people, :extend => [FindOrCreateByNameExtension, FindRecentExtension]
285
- # end
286
- #
287
- # Some extensions can only be made to work with knowledge of the association proxy's internals.
288
- # Extensions can access relevant state using accessors on the association proxy:
289
- #
290
- # * +proxy_owner+ - Returns the object the association is part of.
291
- # * +proxy_reflection+ - Returns the reflection object that describes the association.
292
- # * +proxy_target+ - Returns the associated object for belongs_to and has_one, or the collection of associated objects for has_many and has_and_belongs_to_many.
293
- #
294
- # === Association Join Models
295
- #
296
- # Has Many associations can be configured with the :through option to use an explicit join model to retrieve the data. This
297
- # operates similarly to a <tt>has_and_belongs_to_many</tt> association. The advantage is that you're able to add validations,
298
- # callbacks, and extra attributes on the join model. Consider the following schema:
299
- #
300
- # class Author < ActiveRecord::Base
301
- # has_many :authorships
302
- # has_many :books, :through => :authorships
303
- # end
304
- #
305
- # class Authorship < ActiveRecord::Base
306
- # belongs_to :author
307
- # belongs_to :book
308
- # end
309
- #
310
- # @author = Author.find :first
311
- # @author.authorships.collect { |a| a.book } # selects all books that the author's authorships belong to.
312
- # @author.books # selects all books by using the Authorship join model
313
- #
314
- # You can also go through a has_many association on the join model:
315
- #
316
- # class Firm < ActiveRecord::Base
317
- # has_many :clients
318
- # has_many :invoices, :through => :clients
319
- # end
320
- #
321
- # class Client < ActiveRecord::Base
322
- # belongs_to :firm
323
- # has_many :invoices
324
- # end
325
- #
326
- # class Invoice < ActiveRecord::Base
327
- # belongs_to :client
328
- # end
329
- #
330
- # @firm = Firm.find :first
331
- # @firm.clients.collect { |c| c.invoices }.flatten # select all invoices for all clients of the firm
332
- # @firm.invoices # selects all invoices by going through the Client join model.
333
- #
334
- # === Polymorphic Associations
335
- #
336
- # Polymorphic associations on models are not restricted on what types of models they can be associated with. Rather, they
337
- # specify an interface that a has_many association must adhere to.
338
- #
339
- # class Asset < ActiveRecord::Base
340
- # belongs_to :attachable, :polymorphic => true
341
- # end
342
- #
343
- # class Post < ActiveRecord::Base
344
- # has_many :assets, :as => :attachable # The <tt>:as</tt> option specifies the polymorphic interface to use.
345
- # end
346
- #
347
- # @asset.attachable = @post
348
- #
349
- # This works by using a type column in addition to a foreign key to specify the associated record. In the Asset example, you'd need
350
- # an attachable_id integer column and an attachable_type string column.
351
- #
352
- # Using polymorphic associations in combination with single table inheritance (STI) is a little tricky. In order
353
- # for the associations to work as expected, ensure that you store the base model for the STI models in the
354
- # type column of the polymorphic association. To continue with the asset example above, suppose there are guest posts
355
- # and member posts that use the posts table for STI. So there will be an additional 'type' column in the posts table.
356
- #
357
- # class Asset < ActiveRecord::Base
358
- # belongs_to :attachable, :polymorphic => true
359
- #
360
- # def attachable_type=(sType)
361
- # super(sType.to_s.classify.constantize.base_class.to_s)
362
- # end
363
- # end
364
- #
365
- # class Post < ActiveRecord::Base
366
- # # because we store "Post" in attachable_type now :dependent => :destroy will work
367
- # has_many :assets, :as => :attachable, :dependent => :destroy
368
- # end
369
- #
370
- # class GuestPost < ActiveRecord::Base
371
- # end
372
- #
373
- # class MemberPost < ActiveRecord::Base
374
- # end
375
- #
376
- # == Caching
377
- #
378
- # All of the methods are built on a simple caching principle that will keep the result of the last query around unless specifically
379
- # instructed not to. The cache is even shared across methods to make it even cheaper to use the macro-added methods without
380
- # worrying too much about performance at the first go. Example:
381
- #
382
- # project.milestones # fetches milestones from the database
383
- # project.milestones.size # uses the milestone cache
384
- # project.milestones.empty? # uses the milestone cache
385
- # project.milestones(true).size # fetches milestones from the database
386
- # project.milestones # uses the milestone cache
387
- #
388
- # == Eager loading of associations
389
- #
390
- # Eager loading is a way to find objects of a certain class and a number of named associations along with it in a single SQL call. This is
391
- # one of the easiest ways of to prevent the dreaded 1+N problem in which fetching 100 posts that each needs to display their author
392
- # triggers 101 database queries. Through the use of eager loading, the 101 queries can be reduced to 1. Example:
393
- #
394
- # class Post < ActiveRecord::Base
395
- # belongs_to :author
396
- # has_many :comments
397
- # end
398
- #
399
- # Consider the following loop using the class above:
400
- #
401
- # for post in Post.find(:all)
402
- # puts "Post: " + post.title
403
- # puts "Written by: " + post.author.name
404
- # puts "Last comment on: " + post.comments.first.created_on
405
- # end
406
- #
407
- # To iterate over these one hundred posts, we'll generate 201 database queries. Let's first just optimize it for retrieving the author:
408
- #
409
- # for post in Post.find(:all, :include => :author)
410
- #
411
- # This references the name of the belongs_to association that also used the :author symbol, so the find will now weave in a join something
412
- # like this: LEFT OUTER JOIN authors ON authors.id = posts.author_id. Doing so will cut down the number of queries from 201 to 101.
413
- #
414
- # We can improve upon the situation further by referencing both associations in the finder with:
415
- #
416
- # for post in Post.find(:all, :include => [ :author, :comments ])
417
- #
418
- # That'll add another join along the lines of: LEFT OUTER JOIN comments ON comments.post_id = posts.id. And we'll be down to 1 query.
419
- # But that shouldn't fool you to think that you can pull out huge amounts of data with no performance penalty just because you've reduced
420
- # the number of queries. The database still needs to send all the data to Active Record and it still needs to be processed. So it's no
421
- # catch-all for performance problems, but it's a great way to cut down on the number of queries in a situation as the one described above.
422
- #
423
- # Since the eager loading pulls from multiple tables, you'll have to disambiguate any column references in both conditions and orders. So
424
- # :order => "posts.id DESC" will work while :order => "id DESC" will not. Because eager loading generates the SELECT statement too, the
425
- # :select option is ignored.
426
- #
427
- # You can use eager loading on multiple associations from the same table, but you cannot use those associations in orders and conditions
428
- # as there is currently not any way to disambiguate them. Eager loading will not pull additional attributes on join tables, so "rich
429
- # associations" with has_and_belongs_to_many are not a good fit for eager loading.
430
- #
431
- # When eager loaded, conditions are interpolated in the context of the model class, not the model instance. Conditions are lazily interpolated
432
- # before the actual model exists.
433
- #
434
- # == Table Aliasing
435
- #
436
- # ActiveRecord uses table aliasing in the case that a table is referenced multiple times in a join. If a table is referenced only once,
437
- # the standard table name is used. The second time, the table is aliased as #{reflection_name}_#{parent_table_name}. Indexes are appended
438
- # for any more successive uses of the table name.
439
- #
440
- # Post.find :all, :include => :comments
441
- # # => SELECT ... FROM posts LEFT OUTER JOIN comments ON ...
442
- # Post.find :all, :include => :special_comments # STI
443
- # # => SELECT ... FROM posts LEFT OUTER JOIN comments ON ... AND comments.type = 'SpecialComment'
444
- # Post.find :all, :include => [:comments, :special_comments] # special_comments is the reflection name, posts is the parent table name
445
- # # => SELECT ... FROM posts LEFT OUTER JOIN comments ON ... LEFT OUTER JOIN comments special_comments_posts
446
- #
447
- # Acts as tree example:
448
- #
449
- # TreeMixin.find :all, :include => :children
450
- # # => SELECT ... FROM mixins LEFT OUTER JOIN mixins childrens_mixins ...
451
- # TreeMixin.find :all, :include => {:children => :parent} # using cascading eager includes
452
- # # => SELECT ... FROM mixins LEFT OUTER JOIN mixins childrens_mixins ...
453
- # LEFT OUTER JOIN parents_mixins ...
454
- # TreeMixin.find :all, :include => {:children => {:parent => :children}}
455
- # # => SELECT ... FROM mixins LEFT OUTER JOIN mixins childrens_mixins ...
456
- # LEFT OUTER JOIN parents_mixins ...
457
- # LEFT OUTER JOIN mixins childrens_mixins_2
458
- #
459
- # Has and Belongs to Many join tables use the same idea, but add a _join suffix:
460
- #
461
- # Post.find :all, :include => :categories
462
- # # => SELECT ... FROM posts LEFT OUTER JOIN categories_posts ... LEFT OUTER JOIN categories ...
463
- # Post.find :all, :include => {:categories => :posts}
464
- # # => SELECT ... FROM posts LEFT OUTER JOIN categories_posts ... LEFT OUTER JOIN categories ...
465
- # LEFT OUTER JOIN categories_posts posts_categories_join LEFT OUTER JOIN posts posts_categories
466
- # Post.find :all, :include => {:categories => {:posts => :categories}}
467
- # # => SELECT ... FROM posts LEFT OUTER JOIN categories_posts ... LEFT OUTER JOIN categories ...
468
- # LEFT OUTER JOIN categories_posts posts_categories_join LEFT OUTER JOIN posts posts_categories
469
- # LEFT OUTER JOIN categories_posts categories_posts_join LEFT OUTER JOIN categories categories_posts
470
- #
471
- # If you wish to specify your own custom joins using a :joins option, those table names will take precedence over the eager associations..
472
- #
473
- # Post.find :all, :include => :comments, :joins => "inner join comments ..."
474
- # # => SELECT ... FROM posts LEFT OUTER JOIN comments_posts ON ... INNER JOIN comments ...
475
- # Post.find :all, :include => [:comments, :special_comments], :joins => "inner join comments ..."
476
- # # => SELECT ... FROM posts LEFT OUTER JOIN comments comments_posts ON ...
477
- # LEFT OUTER JOIN comments special_comments_posts ...
478
- # INNER JOIN comments ...
479
- #
480
- # Table aliases are automatically truncated according to the maximum length of table identifiers according to the specific database.
481
- #
482
- # == Modules
483
- #
484
- # By default, associations will look for objects within the current module scope. Consider:
485
- #
486
- # module MyApplication
487
- # module Business
488
- # class Firm < ActiveRecord::Base
489
- # has_many :clients
490
- # end
491
- #
492
- # class Company < ActiveRecord::Base; end
493
- # end
494
- # end
495
- #
496
- # When Firm#clients is called, it'll in turn call <tt>MyApplication::Business::Company.find(firm.id)</tt>. If you want to associate
497
- # with a class in another module scope this can be done by specifying the complete class name, such as:
498
- #
499
- # module MyApplication
500
- # module Business
501
- # class Firm < ActiveRecord::Base; end
502
- # end
503
- #
504
- # module Billing
505
- # class Account < ActiveRecord::Base
506
- # belongs_to :firm, :class_name => "MyApplication::Business::Firm"
507
- # end
508
- # end
509
- # end
510
- #
511
- # == Type safety with ActiveRecord::AssociationTypeMismatch
512
- #
513
- # If you attempt to assign an object to an association that doesn't match the inferred or specified <tt>:class_name</tt>, you'll
514
- # get a ActiveRecord::AssociationTypeMismatch.
515
- #
516
- # == Options
517
- #
518
- # All of the association macros can be specialized through options which makes more complex cases than the simple and guessable ones
519
- # possible.
520
- module ClassMethods
521
- # Adds the following methods for retrieval and query of collections of associated objects.
522
- # +collection+ is replaced with the symbol passed as the first argument, so
523
- # <tt>has_many :clients</tt> would add among others <tt>clients.empty?</tt>.
524
- # * <tt>collection(force_reload = false)</tt> - returns an array of all the associated objects.
525
- # An empty array is returned if none are found.
526
- # * <tt>collection<<(object, ...)</tt> - adds one or more objects to the collection by setting their foreign keys to the collection's primary key.
527
- # * <tt>collection.delete(object, ...)</tt> - removes one or more objects from the collection by setting their foreign keys to NULL.
528
- # This will also destroy the objects if they're declared as belongs_to and dependent on this model.
529
- # * <tt>collection=objects</tt> - replaces the collections content by deleting and adding objects as appropriate.
530
- # * <tt>collection_singular_ids</tt> - returns an array of the associated objects ids
531
- # * <tt>collection_singular_ids=ids</tt> - replace the collection by the objects identified by the primary keys in +ids+
532
- # * <tt>collection.clear</tt> - removes every object from the collection. This destroys the associated objects if they
533
- # are associated with <tt>:dependent => :destroy</tt>, deletes them directly from the database if <tt>:dependent => :delete_all</tt>,
534
- # and sets their foreign keys to NULL otherwise.
535
- # * <tt>collection.empty?</tt> - returns true if there are no associated objects.
536
- # * <tt>collection.size</tt> - returns the number of associated objects.
537
- # * <tt>collection.find</tt> - finds an associated object according to the same rules as Base.find.
538
- # * <tt>collection.build(attributes = {})</tt> - returns a new object of the collection type that has been instantiated
539
- # with +attributes+ and linked to this object through a foreign key but has not yet been saved. *Note:* This only works if an
540
- # associated object already exists, not if it's nil!
541
- # * <tt>collection.create(attributes = {})</tt> - returns a new object of the collection type that has been instantiated
542
- # with +attributes+ and linked to this object through a foreign key and that has already been saved (if it passed the validation).
543
- # *Note:* This only works if an associated object already exists, not if it's nil!
544
- #
545
- # Example: A Firm class declares <tt>has_many :clients</tt>, which will add:
546
- # * <tt>Firm#clients</tt> (similar to <tt>Clients.find :all, :conditions => "firm_id = #{id}"</tt>)
547
- # * <tt>Firm#clients<<</tt>
548
- # * <tt>Firm#clients.delete</tt>
549
- # * <tt>Firm#clients=</tt>
550
- # * <tt>Firm#client_ids</tt>
551
- # * <tt>Firm#client_ids=</tt>
552
- # * <tt>Firm#clients.clear</tt>
553
- # * <tt>Firm#clients.empty?</tt> (similar to <tt>firm.clients.size == 0</tt>)
554
- # * <tt>Firm#clients.size</tt> (similar to <tt>Client.count "firm_id = #{id}"</tt>)
555
- # * <tt>Firm#clients.find</tt> (similar to <tt>Client.find(id, :conditions => "firm_id = #{id}")</tt>)
556
- # * <tt>Firm#clients.build</tt> (similar to <tt>Client.new("firm_id" => id)</tt>)
557
- # * <tt>Firm#clients.create</tt> (similar to <tt>c = Client.new("firm_id" => id); c.save; c</tt>)
558
- # The declaration can also include an options hash to specialize the behavior of the association.
559
- #
560
- # Options are:
561
- # * <tt>:class_name</tt> - specify the class name of the association. Use it only if that name can't be inferred
562
- # from the association name. So <tt>has_many :products</tt> will by default be linked to the +Product+ class, but
563
- # if the real class name is +SpecialProduct+, you'll have to specify it with this option.
564
- # * <tt>:conditions</tt> - specify the conditions that the associated objects must meet in order to be included as a "WHERE"
565
- # sql fragment, such as "price > 5 AND name LIKE 'B%'".
566
- # * <tt>:order</tt> - specify the order in which the associated objects are returned as a "ORDER BY" sql fragment,
567
- # such as "last_name, first_name DESC"
568
- # * <tt>:group</tt> - specify the attribute by which the associated objects are returned as a "GROUP BY" sql fragment,
569
- # such as "category"
570
- # * <tt>:foreign_key</tt> - specify the foreign key used for the association. By default this is guessed to be the name
571
- # of this class in lower-case and "_id" suffixed. So a +Person+ class that makes a has_many association will use "person_id"
572
- # as the default foreign_key.
573
- # * <tt>:dependent</tt> - if set to :destroy all the associated objects are destroyed
574
- # alongside this object by calling their destroy method. If set to :delete_all all associated
575
- # objects are deleted *without* calling their destroy method. If set to :nullify all associated
576
- # objects' foreign keys are set to NULL *without* calling their save callbacks.
577
- # NOTE: :dependent => true is deprecated and has been replaced with :dependent => :destroy.
578
- # May not be set if :exclusively_dependent is also set.
579
- # * <tt>:exclusively_dependent</tt> - Deprecated; equivalent to :dependent => :delete_all. If set to true all
580
- # the associated object are deleted in one SQL statement without having their
581
- # before_destroy callback run. This should only be used on associations that depend solely on this class and don't need to do any
582
- # clean-up in before_destroy. The upside is that it's much faster, especially if there's a counter_cache involved.
583
- # May not be set if :dependent is also set.
584
- # * <tt>:finder_sql</tt> - specify a complete SQL statement to fetch the association. This is a good way to go for complex
585
- # associations that depend on multiple tables. Note: When this option is used, +find_in_collection+ is _not_ added.
586
- # * <tt>:counter_sql</tt> - specify a complete SQL statement to fetch the size of the association. If +:finder_sql+ is
587
- # specified but +:counter_sql+, +:counter_sql+ will be generated by replacing SELECT ... FROM with SELECT COUNT(*) FROM.
588
- # * <tt>:extend</tt> - specify a named module for extending the proxy, see "Association extensions".
589
- # * <tt>:include</tt> - specify second-order associations that should be eager loaded when the collection is loaded.
590
- # * <tt>:group</tt>: An attribute name by which the result should be grouped. Uses the GROUP BY SQL-clause.
591
- # * <tt>:limit</tt>: An integer determining the limit on the number of rows that should be returned.
592
- # * <tt>:offset</tt>: An integer determining the offset from where the rows should be fetched. So at 5, it would skip the first 4 rows.
593
- # * <tt>:select</tt>: By default, this is * as in SELECT * FROM, but can be changed if you for example want to do a join, but not
594
- # include the joined columns.
595
- # * <tt>:as</tt>: Specifies a polymorphic interface (See #belongs_to).
596
- # * <tt>:through</tt>: Specifies a Join Model to perform the query through. Options for <tt>:class_name</tt> and <tt>:foreign_key</tt>
597
- # are ignored, as the association uses the source reflection. You can only use a <tt>:through</tt> query through a <tt>belongs_to</tt>
598
- # or <tt>has_many</tt> association.
599
- # * <tt>:source</tt>: Specifies the source association name used by <tt>has_many :through</tt> queries. Only use it if the name cannot be
600
- # inferred from the association. <tt>has_many :subscribers, :through => :subscriptions</tt> will look for either +:subscribers+ or
601
- # +:subscriber+ on +Subscription+, unless a +:source+ is given.
602
- # * <tt>:source_type</tt>: Specifies type of the source association used by <tt>has_many :through</tt> queries where the source association
603
- # is a polymorphic belongs_to.
604
- # * <tt>:uniq</tt> - if set to true, duplicates will be omitted from the collection. Useful in conjunction with :through.
605
- #
606
- # Option examples:
607
- # has_many :comments, :order => "posted_on"
608
- # has_many :comments, :include => :author
609
- # has_many :people, :class_name => "Person", :conditions => "deleted = 0", :order => "name"
610
- # has_many :tracks, :order => "position", :dependent => :destroy
611
- # has_many :comments, :dependent => :nullify
612
- # has_many :tags, :as => :taggable
613
- # has_many :subscribers, :through => :subscriptions, :source => :user
614
- # has_many :subscribers, :class_name => "Person", :finder_sql =>
615
- # 'SELECT DISTINCT people.* ' +
616
- # 'FROM people p, post_subscriptions ps ' +
617
- # 'WHERE ps.post_id = #{id} AND ps.person_id = p.id ' +
618
- # 'ORDER BY p.first_name'
619
- def has_many(association_id, options = {}, &extension)
620
- reflection = create_has_many_reflection(association_id, options, &extension)
621
-
622
- configure_dependency_for_has_many(reflection)
623
-
624
- if options[:through]
625
- collection_reader_method(reflection, HasManyThroughAssociation)
626
- else
627
- add_multiple_associated_save_callbacks(reflection.name)
628
- add_association_callbacks(reflection.name, reflection.options)
629
- collection_accessor_methods(reflection, HasManyAssociation)
630
- end
631
-
632
- add_deprecated_api_for_has_many(reflection.name)
633
- end
634
-
635
- # Adds the following methods for retrieval and query of a single associated object.
636
- # +association+ is replaced with the symbol passed as the first argument, so
637
- # <tt>has_one :manager</tt> would add among others <tt>manager.nil?</tt>.
638
- # * <tt>association(force_reload = false)</tt> - returns the associated object. Nil is returned if none is found.
639
- # * <tt>association=(associate)</tt> - assigns the associate object, extracts the primary key, sets it as the foreign key,
640
- # and saves the associate object.
641
- # * <tt>association.nil?</tt> - returns true if there is no associated object.
642
- # * <tt>build_association(attributes = {})</tt> - returns a new object of the associated type that has been instantiated
643
- # with +attributes+ and linked to this object through a foreign key but has not yet been saved. Note: This ONLY works if
644
- # an association already exists. It will NOT work if the association is nil.
645
- # * <tt>create_association(attributes = {})</tt> - returns a new object of the associated type that has been instantiated
646
- # with +attributes+ and linked to this object through a foreign key and that has already been saved (if it passed the validation).
647
- #
648
- # Example: An Account class declares <tt>has_one :beneficiary</tt>, which will add:
649
- # * <tt>Account#beneficiary</tt> (similar to <tt>Beneficiary.find(:first, :conditions => "account_id = #{id}")</tt>)
650
- # * <tt>Account#beneficiary=(beneficiary)</tt> (similar to <tt>beneficiary.account_id = account.id; beneficiary.save</tt>)
651
- # * <tt>Account#beneficiary.nil?</tt>
652
- # * <tt>Account#build_beneficiary</tt> (similar to <tt>Beneficiary.new("account_id" => id)</tt>)
653
- # * <tt>Account#create_beneficiary</tt> (similar to <tt>b = Beneficiary.new("account_id" => id); b.save; b</tt>)
654
- #
655
- # The declaration can also include an options hash to specialize the behavior of the association.
656
- #
657
- # Options are:
658
- # * <tt>:class_name</tt> - specify the class name of the association. Use it only if that name can't be inferred
659
- # from the association name. So <tt>has_one :manager</tt> will by default be linked to the +Manager+ class, but
660
- # if the real class name is +Person+, you'll have to specify it with this option.
661
- # * <tt>:conditions</tt> - specify the conditions that the associated object must meet in order to be included as a "WHERE"
662
- # sql fragment, such as "rank = 5".
663
- # * <tt>:order</tt> - specify the order from which the associated object will be picked at the top. Specified as
664
- # an "ORDER BY" sql fragment, such as "last_name, first_name DESC"
665
- # * <tt>:dependent</tt> - if set to :destroy (or true) the associated object is destroyed when this object is. If set to
666
- # :delete the associated object is deleted *without* calling its destroy method. If set to :nullify the associated
667
- # object's foreign key is set to NULL. Also, association is assigned.
668
- # * <tt>:foreign_key</tt> - specify the foreign key used for the association. By default this is guessed to be the name
669
- # of this class in lower-case and "_id" suffixed. So a +Person+ class that makes a has_one association will use "person_id"
670
- # as the default foreign_key.
671
- # * <tt>:include</tt> - specify second-order associations that should be eager loaded when this object is loaded.
672
- # * <tt>:as</tt>: Specifies a polymorphic interface (See #belongs_to).
673
- #
674
- # Option examples:
675
- # has_one :credit_card, :dependent => :destroy # destroys the associated credit card
676
- # has_one :credit_card, :dependent => :nullify # updates the associated records foriegn key value to null rather than destroying it
677
- # has_one :last_comment, :class_name => "Comment", :order => "posted_on"
678
- # has_one :project_manager, :class_name => "Person", :conditions => "role = 'project_manager'"
679
- # has_one :attachment, :as => :attachable
680
- def has_one(association_id, options = {})
681
- reflection = create_has_one_reflection(association_id, options)
682
-
683
- module_eval do
684
- after_save <<-EOF
685
- association = instance_variable_get("@#{reflection.name}")
686
- if !association.nil? && (new_record? || association.new_record? || association["#{reflection.primary_key_name}"] != id)
687
- association["#{reflection.primary_key_name}"] = id
688
- association.save(true)
689
- end
690
- EOF
691
- end
692
-
693
- association_accessor_methods(reflection, HasOneAssociation)
694
- association_constructor_method(:build, reflection, HasOneAssociation)
695
- association_constructor_method(:create, reflection, HasOneAssociation)
696
-
697
- configure_dependency_for_has_one(reflection)
698
-
699
- # deprecated api
700
- deprecated_has_association_method(reflection.name)
701
- deprecated_association_comparison_method(reflection.name, reflection.class_name)
702
- end
703
-
704
- # Adds the following methods for retrieval and query for a single associated object that this object holds an id to.
705
- # +association+ is replaced with the symbol passed as the first argument, so
706
- # <tt>belongs_to :author</tt> would add among others <tt>author.nil?</tt>.
707
- # * <tt>association(force_reload = false)</tt> - returns the associated object. Nil is returned if none is found.
708
- # * <tt>association=(associate)</tt> - assigns the associate object, extracts the primary key, and sets it as the foreign key.
709
- # * <tt>association.nil?</tt> - returns true if there is no associated object.
710
- # * <tt>build_association(attributes = {})</tt> - returns a new object of the associated type that has been instantiated
711
- # with +attributes+ and linked to this object through a foreign key but has not yet been saved.
712
- # * <tt>create_association(attributes = {})</tt> - returns a new object of the associated type that has been instantiated
713
- # with +attributes+ and linked to this object through a foreign key and that has already been saved (if it passed the validation).
714
- #
715
- # Example: A Post class declares <tt>belongs_to :author</tt>, which will add:
716
- # * <tt>Post#author</tt> (similar to <tt>Author.find(author_id)</tt>)
717
- # * <tt>Post#author=(author)</tt> (similar to <tt>post.author_id = author.id</tt>)
718
- # * <tt>Post#author?</tt> (similar to <tt>post.author == some_author</tt>)
719
- # * <tt>Post#author.nil?</tt>
720
- # * <tt>Post#build_author</tt> (similar to <tt>post.author = Author.new</tt>)
721
- # * <tt>Post#create_author</tt> (similar to <tt>post.author = Author.new; post.author.save; post.author</tt>)
722
- # The declaration can also include an options hash to specialize the behavior of the association.
723
- #
724
- # Options are:
725
- # * <tt>:class_name</tt> - specify the class name of the association. Use it only if that name can't be inferred
726
- # from the association name. So <tt>has_one :author</tt> will by default be linked to the +Author+ class, but
727
- # if the real class name is +Person+, you'll have to specify it with this option.
728
- # * <tt>:conditions</tt> - specify the conditions that the associated object must meet in order to be included as a "WHERE"
729
- # sql fragment, such as "authorized = 1".
730
- # * <tt>:order</tt> - specify the order from which the associated object will be picked at the top. Specified as
731
- # an "ORDER BY" sql fragment, such as "last_name, first_name DESC"
732
- # * <tt>:foreign_key</tt> - specify the foreign key used for the association. By default this is guessed to be the name
733
- # of the associated class in lower-case and "_id" suffixed. So a +Person+ class that makes a belongs_to association to a
734
- # +Boss+ class will use "boss_id" as the default foreign_key.
735
- # * <tt>:counter_cache</tt> - caches the number of belonging objects on the associate class through use of increment_counter
736
- # and decrement_counter. The counter cache is incremented when an object of this class is created and decremented when it's
737
- # destroyed. This requires that a column named "#{table_name}_count" (such as comments_count for a belonging Comment class)
738
- # is used on the associate class (such as a Post class). You can also specify a custom counter cache column by given that
739
- # name instead of a true/false value to this option (e.g., <tt>:counter_cache => :my_custom_counter</tt>.)
740
- # * <tt>:include</tt> - specify second-order associations that should be eager loaded when this object is loaded.
741
- # * <tt>:polymorphic</tt> - specify this association is a polymorphic association by passing true.
742
- #
743
- # Option examples:
744
- # belongs_to :firm, :foreign_key => "client_of"
745
- # belongs_to :author, :class_name => "Person", :foreign_key => "author_id"
746
- # belongs_to :valid_coupon, :class_name => "Coupon", :foreign_key => "coupon_id",
747
- # :conditions => 'discounts > #{payments_count}'
748
- # belongs_to :attachable, :polymorphic => true
749
- def belongs_to(association_id, options = {})
750
- if options.include?(:class_name) && !options.include?(:foreign_key)
751
- ::ActiveSupport::Deprecation.warn(
752
- "The inferred foreign_key name will change in Rails 2.0 to use the association name instead of its class name when they differ. When using :class_name in belongs_to, use the :foreign_key option to explicitly set the key name to avoid problems in the transition.",
753
- caller)
754
- end
755
-
756
- reflection = create_belongs_to_reflection(association_id, options)
757
-
758
- if reflection.options[:polymorphic]
759
- association_accessor_methods(reflection, BelongsToPolymorphicAssociation)
760
-
761
- module_eval do
762
- before_save <<-EOF
763
- association = instance_variable_get("@#{reflection.name}")
764
- if association && association.target
765
- if association.new_record?
766
- association.save(true)
767
- end
768
-
769
- if association.updated?
770
- self["#{reflection.primary_key_name}"] = association.id
771
- self["#{reflection.options[:foreign_type]}"] = association.class.base_class.name.to_s
772
- end
773
- end
774
- EOF
775
- end
776
- else
777
- association_accessor_methods(reflection, BelongsToAssociation)
778
- association_constructor_method(:build, reflection, BelongsToAssociation)
779
- association_constructor_method(:create, reflection, BelongsToAssociation)
780
-
781
- module_eval do
782
- before_save <<-EOF
783
- association = instance_variable_get("@#{reflection.name}")
784
- if !association.nil?
785
- if association.new_record?
786
- association.save(true)
787
- end
788
-
789
- if association.updated?
790
- self["#{reflection.primary_key_name}"] = association.id
791
- end
792
- end
793
- EOF
794
- end
795
-
796
- # deprecated api
797
- deprecated_has_association_method(reflection.name)
798
- deprecated_association_comparison_method(reflection.name, reflection.class_name)
799
- end
800
-
801
- # Create the callbacks to update counter cache
802
- if options[:counter_cache]
803
- cache_column = options[:counter_cache] == true ?
804
- "#{self.to_s.underscore.pluralize}_count" :
805
- options[:counter_cache]
806
-
807
- module_eval(
808
- "after_create '#{reflection.name}.class.increment_counter(\"#{cache_column}\", #{reflection.primary_key_name})" +
809
- " unless #{reflection.name}.nil?'"
810
- )
811
-
812
- module_eval(
813
- "before_destroy '#{reflection.name}.class.decrement_counter(\"#{cache_column}\", #{reflection.primary_key_name})" +
814
- " unless #{reflection.name}.nil?'"
815
- )
816
- end
817
- end
818
-
819
- # Associates two classes via an intermediate join table. Unless the join table is explicitly specified as
820
- # an option, it is guessed using the lexical order of the class names. So a join between Developer and Project
821
- # will give the default join table name of "developers_projects" because "D" outranks "P". Note that this precedence
822
- # is calculated using the <tt><</tt> operator for <tt>String</tt>. This means that if the strings are of different lengths,
823
- # and the strings are equal when compared up to the shortest length, then the longer string is considered of higher
824
- # lexical precedence than the shorter one. For example, one would expect the tables <tt>paper_boxes</tt> and <tt>papers</tt>
825
- # to generate a join table name of <tt>papers_paper_boxes</tt> because of the length of the name <tt>paper_boxes</tt>,
826
- # but it in fact generates a join table name of <tt>paper_boxes_papers</tt>. Be aware of this caveat, and use the
827
- # custom <tt>join_table</tt> option if you need to.
828
- #
829
- # Deprecated: Any additional fields added to the join table will be placed as attributes when pulling records out through
830
- # has_and_belongs_to_many associations. Records returned from join tables with additional attributes will be marked as
831
- # ReadOnly (because we can't save changes to the additional attrbutes). It's strongly recommended that you upgrade any
832
- # associations with attributes to a real join model (see introduction).
833
- #
834
- # Adds the following methods for retrieval and query.
835
- # +collection+ is replaced with the symbol passed as the first argument, so
836
- # <tt>has_and_belongs_to_many :categories</tt> would add among others <tt>categories.empty?</tt>.
837
- # * <tt>collection(force_reload = false)</tt> - returns an array of all the associated objects.
838
- # An empty array is returned if none is found.
839
- # * <tt>collection<<(object, ...)</tt> - adds one or more objects to the collection by creating associations in the join table
840
- # (collection.push and collection.concat are aliases to this method).
841
- # * <tt>collection.push_with_attributes(object, join_attributes)</tt> - adds one to the collection by creating an association in the join table that
842
- # also holds the attributes from <tt>join_attributes</tt> (should be a hash with the column names as keys). This can be used to have additional
843
- # attributes on the join, which will be injected into the associated objects when they are retrieved through the collection.
844
- # (collection.concat_with_attributes is an alias to this method). This method is now deprecated.
845
- # * <tt>collection.delete(object, ...)</tt> - removes one or more objects from the collection by removing their associations from the join table.
846
- # This does not destroy the objects.
847
- # * <tt>collection=objects</tt> - replaces the collections content by deleting and adding objects as appropriate.
848
- # * <tt>collection_singular_ids</tt> - returns an array of the associated objects ids
849
- # * <tt>collection_singular_ids=ids</tt> - replace the collection by the objects identified by the primary keys in +ids+
850
- # * <tt>collection.clear</tt> - removes every object from the collection. This does not destroy the objects.
851
- # * <tt>collection.empty?</tt> - returns true if there are no associated objects.
852
- # * <tt>collection.size</tt> - returns the number of associated objects.
853
- # * <tt>collection.find(id)</tt> - finds an associated object responding to the +id+ and that
854
- # meets the condition that it has to be associated with this object.
855
- # * <tt>collection.build(attributes = {})</tt> - returns a new object of the collection type that has been instantiated
856
- # with +attributes+ and linked to this object through the join table but has not yet been saved.
857
- # * <tt>collection.create(attributes = {})</tt> - returns a new object of the collection type that has been instantiated
858
- # with +attributes+ and linked to this object through the join table and that has already been saved (if it passed the validation).
859
- #
860
- # Example: An Developer class declares <tt>has_and_belongs_to_many :projects</tt>, which will add:
861
- # * <tt>Developer#projects</tt>
862
- # * <tt>Developer#projects<<</tt>
863
- # * <tt>Developer#projects.delete</tt>
864
- # * <tt>Developer#projects=</tt>
865
- # * <tt>Developer#project_ids</tt>
866
- # * <tt>Developer#project_ids=</tt>
867
- # * <tt>Developer#projects.clear</tt>
868
- # * <tt>Developer#projects.empty?</tt>
869
- # * <tt>Developer#projects.size</tt>
870
- # * <tt>Developer#projects.find(id)</tt>
871
- # * <tt>Developer#projects.build</tt> (similar to <tt>Project.new("project_id" => id)</tt>)
872
- # * <tt>Developer#projects.create</tt> (similar to <tt>c = Project.new("project_id" => id); c.save; c</tt>)
873
- # The declaration may include an options hash to specialize the behavior of the association.
874
- #
875
- # Options are:
876
- # * <tt>:class_name</tt> - specify the class name of the association. Use it only if that name can't be inferred
877
- # from the association name. So <tt>has_and_belongs_to_many :projects</tt> will by default be linked to the
878
- # +Project+ class, but if the real class name is +SuperProject+, you'll have to specify it with this option.
879
- # * <tt>:join_table</tt> - specify the name of the join table if the default based on lexical order isn't what you want.
880
- # WARNING: If you're overwriting the table name of either class, the table_name method MUST be declared underneath any
881
- # has_and_belongs_to_many declaration in order to work.
882
- # * <tt>:foreign_key</tt> - specify the foreign key used for the association. By default this is guessed to be the name
883
- # of this class in lower-case and "_id" suffixed. So a +Person+ class that makes a has_and_belongs_to_many association
884
- # will use "person_id" as the default foreign_key.
885
- # * <tt>:association_foreign_key</tt> - specify the association foreign key used for the association. By default this is
886
- # guessed to be the name of the associated class in lower-case and "_id" suffixed. So if the associated class is +Project+,
887
- # the has_and_belongs_to_many association will use "project_id" as the default association foreign_key.
888
- # * <tt>:conditions</tt> - specify the conditions that the associated object must meet in order to be included as a "WHERE"
889
- # sql fragment, such as "authorized = 1".
890
- # * <tt>:order</tt> - specify the order in which the associated objects are returned as a "ORDER BY" sql fragment, such as "last_name, first_name DESC"
891
- # * <tt>:uniq</tt> - if set to true, duplicate associated objects will be ignored by accessors and query methods
892
- # * <tt>:finder_sql</tt> - overwrite the default generated SQL used to fetch the association with a manual one
893
- # * <tt>:delete_sql</tt> - overwrite the default generated SQL used to remove links between the associated
894
- # classes with a manual one
895
- # * <tt>:insert_sql</tt> - overwrite the default generated SQL used to add links between the associated classes
896
- # with a manual one
897
- # * <tt>:extend</tt> - anonymous module for extending the proxy, see "Association extensions".
898
- # * <tt>:include</tt> - specify second-order associations that should be eager loaded when the collection is loaded.
899
- # * <tt>:group</tt>: An attribute name by which the result should be grouped. Uses the GROUP BY SQL-clause.
900
- # * <tt>:limit</tt>: An integer determining the limit on the number of rows that should be returned.
901
- # * <tt>:offset</tt>: An integer determining the offset from where the rows should be fetched. So at 5, it would skip the first 4 rows.
902
- # * <tt>:select</tt>: By default, this is * as in SELECT * FROM, but can be changed if you for example want to do a join, but not
903
- # include the joined columns.
904
- #
905
- # Option examples:
906
- # has_and_belongs_to_many :projects
907
- # has_and_belongs_to_many :projects, :include => [ :milestones, :manager ]
908
- # has_and_belongs_to_many :nations, :class_name => "Country"
909
- # has_and_belongs_to_many :categories, :join_table => "prods_cats"
910
- # has_and_belongs_to_many :active_projects, :join_table => 'developers_projects', :delete_sql =>
911
- # 'DELETE FROM developers_projects WHERE active=1 AND developer_id = #{id} AND project_id = #{record.id}'
912
- def has_and_belongs_to_many(association_id, options = {}, &extension)
913
- reflection = create_has_and_belongs_to_many_reflection(association_id, options, &extension)
914
-
915
- add_multiple_associated_save_callbacks(reflection.name)
916
- collection_accessor_methods(reflection, HasAndBelongsToManyAssociation)
917
-
918
- # Don't use a before_destroy callback since users' before_destroy
919
- # callbacks will be executed after the association is wiped out.
920
- old_method = "destroy_without_habtm_shim_for_#{reflection.name}"
921
- class_eval <<-end_eval
922
- alias_method :#{old_method}, :destroy_without_callbacks
923
- def destroy_without_callbacks
924
- #{reflection.name}.clear
925
- #{old_method}
926
- end
927
- end_eval
928
-
929
- add_association_callbacks(reflection.name, options)
930
-
931
- # deprecated api
932
- deprecated_collection_count_method(reflection.name)
933
- deprecated_add_association_relation(reflection.name)
934
- deprecated_remove_association_relation(reflection.name)
935
- deprecated_has_collection_method(reflection.name)
936
- end
937
-
938
- private
939
- # Generate a join table name from two provided tables names.
940
- # The order of names in join name is determined by lexical precedence.
941
- # join_table_name("members", "clubs")
942
- # => "clubs_members"
943
- # join_table_name("members", "special_clubs")
944
- # => "members_special_clubs"
945
- def join_table_name(first_table_name, second_table_name)
946
- if first_table_name < second_table_name
947
- join_table = "#{first_table_name}_#{second_table_name}"
948
- else
949
- join_table = "#{second_table_name}_#{first_table_name}"
950
- end
951
-
952
- table_name_prefix + join_table + table_name_suffix
953
- end
954
-
955
- def association_accessor_methods(reflection, association_proxy_class)
956
- define_method(reflection.name) do |*params|
957
- force_reload = params.first unless params.empty?
958
- association = instance_variable_get("@#{reflection.name}")
959
-
960
- if association.nil? || force_reload
961
- association = association_proxy_class.new(self, reflection)
962
- retval = association.reload
963
- if retval.nil? and association_proxy_class == BelongsToAssociation
964
- instance_variable_set("@#{reflection.name}", nil)
965
- return nil
966
- end
967
- instance_variable_set("@#{reflection.name}", association)
968
- end
969
-
970
- association.target.nil? ? nil : association
971
- end
972
-
973
- define_method("#{reflection.name}=") do |new_value|
974
- association = instance_variable_get("@#{reflection.name}")
975
- if association.nil?
976
- association = association_proxy_class.new(self, reflection)
977
- end
978
-
979
- association.replace(new_value)
980
-
981
- unless new_value.nil?
982
- instance_variable_set("@#{reflection.name}", association)
983
- else
984
- instance_variable_set("@#{reflection.name}", nil)
985
- return nil
986
- end
987
-
988
- association
989
- end
990
-
991
- define_method("set_#{reflection.name}_target") do |target|
992
- return if target.nil? and association_proxy_class == BelongsToAssociation
993
- association = association_proxy_class.new(self, reflection)
994
- association.target = target
995
- instance_variable_set("@#{reflection.name}", association)
996
- end
997
- end
998
-
999
- def collection_reader_method(reflection, association_proxy_class)
1000
- define_method(reflection.name) do |*params|
1001
- force_reload = params.first unless params.empty?
1002
- association = instance_variable_get("@#{reflection.name}")
1003
-
1004
- unless association.respond_to?(:loaded?)
1005
- association = association_proxy_class.new(self, reflection)
1006
- instance_variable_set("@#{reflection.name}", association)
1007
- end
1008
-
1009
- association.reload if force_reload
1010
-
1011
- association
1012
- end
1013
- end
1014
-
1015
- def collection_accessor_methods(reflection, association_proxy_class)
1016
- collection_reader_method(reflection, association_proxy_class)
1017
-
1018
- define_method("#{reflection.name}=") do |new_value|
1019
- # Loads proxy class instance (defined in collection_reader_method) if not already loaded
1020
- association = send(reflection.name)
1021
- association.replace(new_value)
1022
- association
1023
- end
1024
-
1025
- define_method("#{reflection.name.to_s.singularize}_ids") do
1026
- send(reflection.name).map(&:id)
1027
- end
1028
-
1029
- define_method("#{reflection.name.to_s.singularize}_ids=") do |new_value|
1030
- ids = (new_value || []).reject { |nid| nid.blank? }
1031
- send("#{reflection.name}=", reflection.class_name.constantize.find(ids))
1032
- end
1033
- end
1034
-
1035
- def add_multiple_associated_save_callbacks(association_name)
1036
- method_name = "validate_associated_records_for_#{association_name}".to_sym
1037
- define_method(method_name) do
1038
- association = instance_variable_get("@#{association_name}")
1039
- if association.respond_to?(:loaded?)
1040
- if new_record?
1041
- association
1042
- else
1043
- association.select { |record| record.new_record? }
1044
- end.each do |record|
1045
- errors.add "#{association_name}" unless record.valid?
1046
- end
1047
- end
1048
- end
1049
-
1050
- validate method_name
1051
- before_save("@new_record_before_save = new_record?; true")
1052
-
1053
- after_callback = <<-end_eval
1054
- association = instance_variable_get("@#{association_name}")
1055
-
1056
- if association.respond_to?(:loaded?)
1057
- if @new_record_before_save
1058
- records_to_save = association
1059
- else
1060
- records_to_save = association.select { |record| record.new_record? }
1061
- end
1062
- records_to_save.each { |record| association.send(:insert_record, record) }
1063
- association.send(:construct_sql) # reconstruct the SQL queries now that we know the owner's id
1064
- end
1065
- end_eval
1066
-
1067
- # Doesn't use after_save as that would save associations added in after_create/after_update twice
1068
- after_create(after_callback)
1069
- after_update(after_callback)
1070
- end
1071
-
1072
- def association_constructor_method(constructor, reflection, association_proxy_class)
1073
- define_method("#{constructor}_#{reflection.name}") do |*params|
1074
- attributees = params.first unless params.empty?
1075
- replace_existing = params[1].nil? ? true : params[1]
1076
- association = instance_variable_get("@#{reflection.name}")
1077
-
1078
- if association.nil?
1079
- association = association_proxy_class.new(self, reflection)
1080
- instance_variable_set("@#{reflection.name}", association)
1081
- end
1082
-
1083
- if association_proxy_class == HasOneAssociation
1084
- association.send(constructor, attributees, replace_existing)
1085
- else
1086
- association.send(constructor, attributees)
1087
- end
1088
- end
1089
- end
1090
-
1091
- def find_with_associations(options = {})
1092
- catch :invalid_query do
1093
- join_dependency = JoinDependency.new(self, merge_includes(scope(:find, :include), options[:include]), options[:joins])
1094
- rows = select_all_rows(options, join_dependency)
1095
- return join_dependency.instantiate(rows)
1096
- end
1097
- []
1098
- end
1099
-
1100
- def configure_dependency_for_has_many(reflection)
1101
- if reflection.options[:dependent] == true
1102
- ::ActiveSupport::Deprecation.warn("The :dependent => true option is deprecated and will be removed from Rails 2.0. Please use :dependent => :destroy instead. See http://www.rubyonrails.org/deprecation for details.", caller)
1103
- end
1104
-
1105
- if reflection.options[:dependent] && reflection.options[:exclusively_dependent]
1106
- raise ArgumentError, ':dependent and :exclusively_dependent are mutually exclusive options. You may specify one or the other.'
1107
- end
1108
-
1109
- if reflection.options[:exclusively_dependent]
1110
- reflection.options[:dependent] = :delete_all
1111
- ::ActiveSupport::Deprecation.warn("The :exclusively_dependent option is deprecated and will be removed from Rails 2.0. Please use :dependent => :delete_all instead. See http://www.rubyonrails.org/deprecation for details.", caller)
1112
- end
1113
-
1114
- # See HasManyAssociation#delete_records. Dependent associations
1115
- # delete children, otherwise foreign key is set to NULL.
1116
-
1117
- # Add polymorphic type if the :as option is present
1118
- dependent_conditions = %(#{reflection.primary_key_name} = \#{record.quoted_id})
1119
- if reflection.options[:as]
1120
- dependent_conditions += " AND #{reflection.options[:as]}_type = '#{base_class.name}'"
1121
- end
1122
-
1123
- case reflection.options[:dependent]
1124
- when :destroy, true
1125
- module_eval "before_destroy '#{reflection.name}.each { |o| o.destroy }'"
1126
- when :delete_all
1127
- module_eval "before_destroy { |record| #{reflection.class_name}.delete_all(%(#{dependent_conditions})) }"
1128
- when :nullify
1129
- module_eval "before_destroy { |record| #{reflection.class_name}.update_all(%(#{reflection.primary_key_name} = NULL), %(#{dependent_conditions})) }"
1130
- when nil, false
1131
- # pass
1132
- else
1133
- raise ArgumentError, 'The :dependent option expects either :destroy, :delete_all, or :nullify'
1134
- end
1135
- end
1136
-
1137
- def configure_dependency_for_has_one(reflection)
1138
- case reflection.options[:dependent]
1139
- when :destroy, true
1140
- module_eval "before_destroy '#{reflection.name}.destroy unless #{reflection.name}.nil?'"
1141
- when :delete
1142
- module_eval "before_destroy '#{reflection.class_name}.delete(#{reflection.name}.id) unless #{reflection.name}.nil?'"
1143
- when :nullify
1144
- module_eval "before_destroy '#{reflection.name}.update_attribute(\"#{reflection.primary_key_name}\", nil) unless #{reflection.name}.nil?'"
1145
- when nil, false
1146
- # pass
1147
- else
1148
- raise ArgumentError, "The :dependent option expects either :destroy, :delete or :nullify."
1149
- end
1150
- end
1151
-
1152
-
1153
- def add_deprecated_api_for_has_many(association_name)
1154
- deprecated_collection_count_method(association_name)
1155
- deprecated_add_association_relation(association_name)
1156
- deprecated_remove_association_relation(association_name)
1157
- deprecated_has_collection_method(association_name)
1158
- deprecated_find_in_collection_method(association_name)
1159
- deprecated_find_all_in_collection_method(association_name)
1160
- deprecated_collection_create_method(association_name)
1161
- deprecated_collection_build_method(association_name)
1162
- end
1163
-
1164
- def create_has_many_reflection(association_id, options, &extension)
1165
- options.assert_valid_keys(
1166
- :class_name, :table_name, :foreign_key,
1167
- :exclusively_dependent, :dependent,
1168
- :select, :conditions, :include, :order, :group, :limit, :offset,
1169
- :as, :through, :source, :source_type,
1170
- :uniq,
1171
- :finder_sql, :counter_sql,
1172
- :before_add, :after_add, :before_remove, :after_remove,
1173
- :extend
1174
- )
1175
-
1176
- options[:extend] = create_extension_module(association_id, extension) if block_given?
1177
-
1178
- create_reflection(:has_many, association_id, options, self)
1179
- end
1180
-
1181
- def create_has_one_reflection(association_id, options)
1182
- options.assert_valid_keys(
1183
- :class_name, :foreign_key, :remote, :conditions, :order, :include, :dependent, :counter_cache, :extend, :as
1184
- )
1185
-
1186
- create_reflection(:has_one, association_id, options, self)
1187
- end
1188
-
1189
- def create_belongs_to_reflection(association_id, options)
1190
- options.assert_valid_keys(
1191
- :class_name, :foreign_key, :foreign_type, :remote, :conditions, :order, :include, :dependent,
1192
- :counter_cache, :extend, :polymorphic
1193
- )
1194
-
1195
- reflection = create_reflection(:belongs_to, association_id, options, self)
1196
-
1197
- if options[:polymorphic]
1198
- reflection.options[:foreign_type] ||= reflection.class_name.underscore + "_type"
1199
- end
1200
-
1201
- reflection
1202
- end
1203
-
1204
- def create_has_and_belongs_to_many_reflection(association_id, options, &extension)
1205
- options.assert_valid_keys(
1206
- :class_name, :table_name, :join_table, :foreign_key, :association_foreign_key,
1207
- :select, :conditions, :include, :order, :group, :limit, :offset,
1208
- :uniq,
1209
- :finder_sql, :delete_sql, :insert_sql,
1210
- :before_add, :after_add, :before_remove, :after_remove,
1211
- :extend
1212
- )
1213
-
1214
- options[:extend] = create_extension_module(association_id, extension) if block_given?
1215
-
1216
- reflection = create_reflection(:has_and_belongs_to_many, association_id, options, self)
1217
-
1218
- reflection.options[:join_table] ||= join_table_name(undecorated_table_name(self.to_s), undecorated_table_name(reflection.class_name))
1219
-
1220
- reflection
1221
- end
1222
-
1223
- def reflect_on_included_associations(associations)
1224
- [ associations ].flatten.collect { |association| reflect_on_association(association.to_s.intern) }
1225
- end
1226
-
1227
- def guard_against_unlimitable_reflections(reflections, options)
1228
- if (options[:offset] || options[:limit]) && !using_limitable_reflections?(reflections)
1229
- raise(
1230
- ConfigurationError,
1231
- "You can not use offset and limit together with has_many or has_and_belongs_to_many associations"
1232
- )
1233
- end
1234
- end
1235
-
1236
- def select_all_rows(options, join_dependency)
1237
- connection.select_all(
1238
- construct_finder_sql_with_included_associations(options, join_dependency),
1239
- "#{name} Load Including Associations"
1240
- )
1241
- end
1242
-
1243
- def construct_finder_sql_with_included_associations(options, join_dependency)
1244
- scope = scope(:find)
1245
- sql = "SELECT #{column_aliases(join_dependency)} FROM #{(scope && scope[:from]) || options[:from] || table_name} "
1246
- sql << join_dependency.join_associations.collect{|join| join.association_join }.join
1247
-
1248
- add_joins!(sql, options, scope)
1249
- add_conditions!(sql, options[:conditions], scope)
1250
- add_limited_ids_condition!(sql, options, join_dependency) if !using_limitable_reflections?(join_dependency.reflections) && ((scope && scope[:limit]) || options[:limit])
1251
-
1252
- sql << "GROUP BY #{options[:group]} " if options[:group]
1253
-
1254
- add_order!(sql, options[:order], scope)
1255
- add_limit!(sql, options, scope) if using_limitable_reflections?(join_dependency.reflections)
1256
- add_lock!(sql, options, scope)
1257
-
1258
- return sanitize_sql(sql)
1259
- end
1260
-
1261
- def add_limited_ids_condition!(sql, options, join_dependency)
1262
- unless (id_list = select_limited_ids_list(options, join_dependency)).empty?
1263
- sql << "#{condition_word(sql)} #{table_name}.#{primary_key} IN (#{id_list}) "
1264
- else
1265
- throw :invalid_query
1266
- end
1267
- end
1268
-
1269
- def select_limited_ids_list(options, join_dependency)
1270
- connection.select_all(
1271
- construct_finder_sql_for_association_limiting(options, join_dependency),
1272
- "#{name} Load IDs For Limited Eager Loading"
1273
- ).collect { |row| connection.quote(row[primary_key]) }.join(", ")
1274
- end
1275
-
1276
- def construct_finder_sql_for_association_limiting(options, join_dependency)
1277
- scope = scope(:find)
1278
- is_distinct = include_eager_conditions?(options) || include_eager_order?(options)
1279
- sql = "SELECT "
1280
- if is_distinct
1281
- sql << connection.distinct("#{table_name}.#{primary_key}", options[:order])
1282
- else
1283
- sql << primary_key
1284
- end
1285
- sql << " FROM #{table_name} "
1286
-
1287
- if is_distinct
1288
- sql << join_dependency.join_associations.collect(&:association_join).join
1289
- add_joins!(sql, options, scope)
1290
- end
1291
-
1292
- add_conditions!(sql, options[:conditions], scope)
1293
- if options[:order]
1294
- if is_distinct
1295
- connection.add_order_by_for_association_limiting!(sql, options)
1296
- else
1297
- sql << "ORDER BY #{options[:order]}"
1298
- end
1299
- end
1300
- add_limit!(sql, options, scope)
1301
- return sanitize_sql(sql)
1302
- end
1303
-
1304
- # Checks if the conditions reference a table other than the current model table
1305
- def include_eager_conditions?(options)
1306
- # look in both sets of conditions
1307
- conditions = [scope(:find, :conditions), options[:conditions]].inject([]) do |all, cond|
1308
- case cond
1309
- when nil then all
1310
- when Array then all << cond.first
1311
- else all << cond
1312
- end
1313
- end
1314
- return false unless conditions.any?
1315
- conditions.join(' ').scan(/([\.\w]+)\.\w+/).flatten.any? do |condition_table_name|
1316
- condition_table_name != table_name
1317
- end
1318
- end
1319
-
1320
- # Checks if the query order references a table other than the current model's table.
1321
- def include_eager_order?(options)
1322
- order = options[:order]
1323
- return false unless order
1324
- order.scan(/([\.\w]+)\.\w+/).flatten.any? do |order_table_name|
1325
- order_table_name != table_name
1326
- end
1327
- end
1328
-
1329
- def using_limitable_reflections?(reflections)
1330
- reflections.reject { |r| [ :belongs_to, :has_one ].include?(r.macro) }.length.zero?
1331
- end
1332
-
1333
- def column_aliases(join_dependency)
1334
- join_dependency.joins.collect{|join| join.column_names_with_alias.collect{|column_name, aliased_name|
1335
- "#{join.aliased_table_name}.#{connection.quote_column_name column_name} AS #{aliased_name}"}}.flatten.join(", ")
1336
- end
1337
-
1338
- def add_association_callbacks(association_name, options)
1339
- callbacks = %w(before_add after_add before_remove after_remove)
1340
- callbacks.each do |callback_name|
1341
- full_callback_name = "#{callback_name}_for_#{association_name}"
1342
- defined_callbacks = options[callback_name.to_sym]
1343
- if options.has_key?(callback_name.to_sym)
1344
- class_inheritable_reader full_callback_name.to_sym
1345
- write_inheritable_array(full_callback_name.to_sym, [defined_callbacks].flatten)
1346
- end
1347
- end
1348
- end
1349
-
1350
- def condition_word(sql)
1351
- sql =~ /where/i ? " AND " : "WHERE "
1352
- end
1353
-
1354
- def create_extension_module(association_id, extension)
1355
- extension_module_name = "#{self.to_s}#{association_id.to_s.camelize}AssociationExtension"
1356
-
1357
- silence_warnings do
1358
- Object.const_set(extension_module_name, Module.new(&extension))
1359
- end
1360
-
1361
- extension_module_name.constantize
1362
- end
1363
-
1364
- class JoinDependency # :nodoc:
1365
- attr_reader :joins, :reflections, :table_aliases
1366
-
1367
- def initialize(base, associations, joins)
1368
- @joins = [JoinBase.new(base, joins)]
1369
- @associations = associations
1370
- @reflections = []
1371
- @base_records_hash = {}
1372
- @base_records_in_order = []
1373
- @table_aliases = Hash.new { |aliases, table| aliases[table] = 0 }
1374
- @table_aliases[base.table_name] = 1
1375
- build(associations)
1376
- end
1377
-
1378
- def join_associations
1379
- @joins[1..-1].to_a
1380
- end
1381
-
1382
- def join_base
1383
- @joins[0]
1384
- end
1385
-
1386
- def instantiate(rows)
1387
- rows.each_with_index do |row, i|
1388
- primary_id = join_base.record_id(row)
1389
- unless @base_records_hash[primary_id]
1390
- @base_records_in_order << (@base_records_hash[primary_id] = join_base.instantiate(row))
1391
- end
1392
- construct(@base_records_hash[primary_id], @associations, join_associations.dup, row)
1393
- end
1394
- return @base_records_in_order
1395
- end
1396
-
1397
- def aliased_table_names_for(table_name)
1398
- joins.select{|join| join.table_name == table_name }.collect{|join| join.aliased_table_name}
1399
- end
1400
-
1401
- protected
1402
- def build(associations, parent = nil)
1403
- parent ||= @joins.last
1404
- case associations
1405
- when Symbol, String
1406
- reflection = parent.reflections[associations.to_s.intern] or
1407
- raise ConfigurationError, "Association named '#{ associations }' was not found; perhaps you misspelled it?"
1408
- @reflections << reflection
1409
- @joins << JoinAssociation.new(reflection, self, parent)
1410
- when Array
1411
- associations.each do |association|
1412
- build(association, parent)
1413
- end
1414
- when Hash
1415
- associations.keys.sort{|a,b|a.to_s<=>b.to_s}.each do |name|
1416
- build(name, parent)
1417
- build(associations[name])
1418
- end
1419
- else
1420
- raise ConfigurationError, associations.inspect
1421
- end
1422
- end
1423
-
1424
- def construct(parent, associations, joins, row)
1425
- case associations
1426
- when Symbol, String
1427
- while (join = joins.shift).reflection.name.to_s != associations.to_s
1428
- raise ConfigurationError, "Not Enough Associations" if joins.empty?
1429
- end
1430
- construct_association(parent, join, row)
1431
- when Array
1432
- associations.each do |association|
1433
- construct(parent, association, joins, row)
1434
- end
1435
- when Hash
1436
- associations.keys.sort{|a,b|a.to_s<=>b.to_s}.each do |name|
1437
- association = construct_association(parent, joins.shift, row)
1438
- construct(association, associations[name], joins, row) if association
1439
- end
1440
- else
1441
- raise ConfigurationError, associations.inspect
1442
- end
1443
- end
1444
-
1445
- def construct_association(record, join, row)
1446
- case join.reflection.macro
1447
- when :has_many, :has_and_belongs_to_many
1448
- collection = record.send(join.reflection.name)
1449
- collection.loaded
1450
-
1451
- return nil if record.id.to_s != join.parent.record_id(row).to_s or row[join.aliased_primary_key].nil?
1452
- association = join.instantiate(row)
1453
- collection.target.push(association) unless collection.target.include?(association)
1454
- when :has_one
1455
- return if record.id.to_s != join.parent.record_id(row).to_s
1456
- association = join.instantiate(row) unless row[join.aliased_primary_key].nil?
1457
- record.send("set_#{join.reflection.name}_target", association)
1458
- when :belongs_to
1459
- return if record.id.to_s != join.parent.record_id(row).to_s or row[join.aliased_primary_key].nil?
1460
- association = join.instantiate(row)
1461
- record.send("set_#{join.reflection.name}_target", association)
1462
- else
1463
- raise ConfigurationError, "unknown macro: #{join.reflection.macro}"
1464
- end
1465
- return association
1466
- end
1467
-
1468
- class JoinBase # :nodoc:
1469
- attr_reader :active_record, :table_joins
1470
- delegate :table_name, :column_names, :primary_key, :reflections, :sanitize_sql, :to => :active_record
1471
-
1472
- def initialize(active_record, joins = nil)
1473
- @active_record = active_record
1474
- @cached_record = {}
1475
- @table_joins = joins
1476
- end
1477
-
1478
- def aliased_prefix
1479
- "t0"
1480
- end
1481
-
1482
- def aliased_primary_key
1483
- "#{ aliased_prefix }_r0"
1484
- end
1485
-
1486
- def aliased_table_name
1487
- active_record.table_name
1488
- end
1489
-
1490
- def column_names_with_alias
1491
- unless @column_names_with_alias
1492
- @column_names_with_alias = []
1493
- ([primary_key] + (column_names - [primary_key])).each_with_index do |column_name, i|
1494
- @column_names_with_alias << [column_name, "#{ aliased_prefix }_r#{ i }"]
1495
- end
1496
- end
1497
- return @column_names_with_alias
1498
- end
1499
-
1500
- def extract_record(row)
1501
- column_names_with_alias.inject({}){|record, (cn, an)| record[cn] = row[an]; record}
1502
- end
1503
-
1504
- def record_id(row)
1505
- row[aliased_primary_key]
1506
- end
1507
-
1508
- def instantiate(row)
1509
- @cached_record[record_id(row)] ||= active_record.send(:instantiate, extract_record(row))
1510
- end
1511
- end
1512
-
1513
- class JoinAssociation < JoinBase # :nodoc:
1514
- attr_reader :reflection, :parent, :aliased_table_name, :aliased_prefix, :aliased_join_table_name, :parent_table_name
1515
- delegate :options, :klass, :through_reflection, :source_reflection, :to => :reflection
1516
-
1517
- def initialize(reflection, join_dependency, parent = nil)
1518
- reflection.check_validity!
1519
- if reflection.options[:polymorphic]
1520
- raise EagerLoadPolymorphicError.new(reflection)
1521
- end
1522
-
1523
- super(reflection.klass)
1524
- @parent = parent
1525
- @reflection = reflection
1526
- @aliased_prefix = "t#{ join_dependency.joins.size }"
1527
- @aliased_table_name = table_name #.tr('.', '_') # start with the table name, sub out any .'s
1528
- @parent_table_name = parent.active_record.table_name
1529
-
1530
- if !parent.table_joins.blank? && parent.table_joins.to_s.downcase =~ %r{join(\s+\w+)?\s+#{aliased_table_name.downcase}\son}
1531
- join_dependency.table_aliases[aliased_table_name] += 1
1532
- end
1533
-
1534
- unless join_dependency.table_aliases[aliased_table_name].zero?
1535
- # if the table name has been used, then use an alias
1536
- @aliased_table_name = active_record.connection.table_alias_for "#{pluralize(reflection.name)}_#{parent_table_name}"
1537
- table_index = join_dependency.table_aliases[aliased_table_name]
1538
- join_dependency.table_aliases[aliased_table_name] += 1
1539
- @aliased_table_name = @aliased_table_name[0..active_record.connection.table_alias_length-3] + "_#{table_index+1}" if table_index > 0
1540
- else
1541
- join_dependency.table_aliases[aliased_table_name] += 1
1542
- end
1543
-
1544
- if reflection.macro == :has_and_belongs_to_many || (reflection.macro == :has_many && reflection.options[:through])
1545
- @aliased_join_table_name = reflection.macro == :has_and_belongs_to_many ? reflection.options[:join_table] : reflection.through_reflection.klass.table_name
1546
- unless join_dependency.table_aliases[aliased_join_table_name].zero?
1547
- @aliased_join_table_name = active_record.connection.table_alias_for "#{pluralize(reflection.name)}_#{parent_table_name}_join"
1548
- table_index = join_dependency.table_aliases[aliased_join_table_name]
1549
- join_dependency.table_aliases[aliased_join_table_name] += 1
1550
- @aliased_join_table_name = @aliased_join_table_name[0..active_record.connection.table_alias_length-3] + "_#{table_index+1}" if table_index > 0
1551
- else
1552
- join_dependency.table_aliases[aliased_join_table_name] += 1
1553
- end
1554
- end
1555
- end
1556
-
1557
- def association_join
1558
- join = case reflection.macro
1559
- when :has_and_belongs_to_many
1560
- " LEFT OUTER JOIN %s ON %s.%s = %s.%s " % [
1561
- table_alias_for(options[:join_table], aliased_join_table_name),
1562
- aliased_join_table_name,
1563
- options[:foreign_key] || reflection.active_record.to_s.foreign_key,
1564
- parent.aliased_table_name, reflection.active_record.primary_key] +
1565
- " LEFT OUTER JOIN %s ON %s.%s = %s.%s " % [
1566
- table_name_and_alias, aliased_table_name, klass.primary_key,
1567
- aliased_join_table_name, options[:association_foreign_key] || klass.to_s.foreign_key
1568
- ]
1569
- when :has_many, :has_one
1570
- case
1571
- when reflection.macro == :has_many && reflection.options[:through]
1572
- through_conditions = through_reflection.options[:conditions] ? "AND #{interpolate_sql(sanitize_sql(through_reflection.options[:conditions]))}" : ''
1573
-
1574
- jt_foreign_key = jt_as_extra = jt_source_extra = jt_sti_extra = nil
1575
- first_key = second_key = as_extra = nil
1576
-
1577
- if through_reflection.options[:as] # has_many :through against a polymorphic join
1578
- jt_foreign_key = through_reflection.options[:as].to_s + '_id'
1579
- jt_as_extra = " AND %s.%s = %s" % [
1580
- aliased_join_table_name,
1581
- reflection.active_record.connection.quote_column_name(through_reflection.options[:as].to_s + '_type'),
1582
- klass.quote_value(parent.active_record.base_class.name)
1583
- ]
1584
- else
1585
- jt_foreign_key = through_reflection.primary_key_name
1586
- end
1587
-
1588
- case source_reflection.macro
1589
- when :has_many
1590
- if source_reflection.options[:as]
1591
- first_key = "#{source_reflection.options[:as]}_id"
1592
- second_key = options[:foreign_key] || primary_key
1593
- as_extra = " AND %s.%s = %s" % [
1594
- aliased_table_name,
1595
- reflection.active_record.connection.quote_column_name("#{source_reflection.options[:as]}_type"),
1596
- klass.quote_value(source_reflection.active_record.base_class.name)
1597
- ]
1598
- else
1599
- first_key = through_reflection.klass.base_class.to_s.foreign_key
1600
- second_key = options[:foreign_key] || primary_key
1601
- end
1602
-
1603
- unless through_reflection.klass.descends_from_active_record?
1604
- jt_sti_extra = " AND %s.%s = %s" % [
1605
- aliased_join_table_name,
1606
- reflection.active_record.connection.quote_column_name(through_reflection.active_record.inheritance_column),
1607
- through_reflection.klass.quote_value(through_reflection.klass.name.demodulize)]
1608
- end
1609
- when :belongs_to
1610
- first_key = primary_key
1611
- if reflection.options[:source_type]
1612
- second_key = source_reflection.association_foreign_key
1613
- jt_source_extra = " AND %s.%s = %s" % [
1614
- aliased_join_table_name,
1615
- reflection.active_record.connection.quote_column_name(reflection.source_reflection.options[:foreign_type]),
1616
- klass.quote_value(reflection.options[:source_type])
1617
- ]
1618
- else
1619
- second_key = source_reflection.options[:foreign_key] || klass.to_s.foreign_key
1620
- end
1621
- end
1622
-
1623
- " LEFT OUTER JOIN %s ON (%s.%s = %s.%s%s%s%s) " % [
1624
- table_alias_for(through_reflection.klass.table_name, aliased_join_table_name),
1625
- parent.aliased_table_name, reflection.active_record.connection.quote_column_name(parent.primary_key),
1626
- aliased_join_table_name, reflection.active_record.connection.quote_column_name(jt_foreign_key),
1627
- jt_as_extra, jt_source_extra, jt_sti_extra
1628
- ] +
1629
- " LEFT OUTER JOIN %s ON (%s.%s = %s.%s%s) " % [
1630
- table_name_and_alias,
1631
- aliased_table_name, reflection.active_record.connection.quote_column_name(first_key),
1632
- aliased_join_table_name, reflection.active_record.connection.quote_column_name(second_key),
1633
- as_extra
1634
- ]
1635
-
1636
- when reflection.macro == :has_many && reflection.options[:as]
1637
- " LEFT OUTER JOIN %s ON %s.%s = %s.%s AND %s.%s = %s" % [
1638
- table_name_and_alias,
1639
- aliased_table_name, "#{reflection.options[:as]}_id",
1640
- parent.aliased_table_name, parent.primary_key,
1641
- aliased_table_name, "#{reflection.options[:as]}_type",
1642
- klass.quote_value(parent.active_record.base_class.name)
1643
- ]
1644
- when reflection.macro == :has_one && reflection.options[:as]
1645
- " LEFT OUTER JOIN %s ON %s.%s = %s.%s AND %s.%s = %s " % [
1646
- table_name_and_alias,
1647
- aliased_table_name, "#{reflection.options[:as]}_id",
1648
- parent.aliased_table_name, parent.primary_key,
1649
- aliased_table_name, "#{reflection.options[:as]}_type",
1650
- klass.quote_value(reflection.active_record.base_class.name)
1651
- ]
1652
- else
1653
- foreign_key = options[:foreign_key] || reflection.active_record.name.foreign_key
1654
- " LEFT OUTER JOIN %s ON %s.%s = %s.%s " % [
1655
- table_name_and_alias,
1656
- aliased_table_name, foreign_key,
1657
- parent.aliased_table_name, parent.primary_key
1658
- ]
1659
- end
1660
- when :belongs_to
1661
- " LEFT OUTER JOIN %s ON %s.%s = %s.%s " % [
1662
- table_name_and_alias, aliased_table_name, reflection.klass.primary_key,
1663
- parent.aliased_table_name, options[:foreign_key] || klass.to_s.foreign_key
1664
- ]
1665
- else
1666
- ""
1667
- end || ''
1668
- join << %(AND %s.%s = %s ) % [
1669
- aliased_table_name,
1670
- reflection.active_record.connection.quote_column_name(klass.inheritance_column),
1671
- klass.quote_value(klass.name.demodulize)] unless klass.descends_from_active_record?
1672
-
1673
- [through_reflection, reflection].each do |ref|
1674
- join << "AND #{interpolate_sql(sanitize_sql(ref.options[:conditions]))} " if ref && ref.options[:conditions]
1675
- end
1676
-
1677
- join
1678
- end
1679
-
1680
- protected
1681
-
1682
- def pluralize(table_name)
1683
- ActiveRecord::Base.pluralize_table_names ? table_name.to_s.pluralize : table_name
1684
- end
1685
-
1686
- def table_alias_for(table_name, table_alias)
1687
- "#{table_name} #{table_alias if table_name != table_alias}".strip
1688
- end
1689
-
1690
- def table_name_and_alias
1691
- table_alias_for table_name, @aliased_table_name
1692
- end
1693
-
1694
- def interpolate_sql(sql)
1695
- instance_eval("%@#{sql.gsub('@', '\@')}@")
1696
- end
1697
- end
1698
- end
1699
- end
1700
- end
1701
- end