activejob-lock 0.0.1

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 (2864) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +14 -0
  3. data/Gemfile +21 -0
  4. data/LICENSE.txt +22 -0
  5. data/README.md +48 -0
  6. data/Rakefile +77 -0
  7. data/activejob-lock.gemspec +30 -0
  8. data/lib/activejob/lock/queue_adapters/resque_adapter.rb +44 -0
  9. data/lib/activejob/lock/queue_adapters.rb +1 -0
  10. data/lib/activejob/lock/version.rb +5 -0
  11. data/lib/activejob/lock.rb +38 -0
  12. data/rails/.gitignore +21 -0
  13. data/rails/.travis.yml +62 -0
  14. data/rails/.yardopts +4 -0
  15. data/rails/CONTRIBUTING.md +17 -0
  16. data/rails/Gemfile +126 -0
  17. data/rails/Gemfile.lock +273 -0
  18. data/rails/RAILS_VERSION +1 -0
  19. data/rails/README.md +85 -0
  20. data/rails/RELEASING_RAILS.rdoc +217 -0
  21. data/rails/Rakefile +67 -0
  22. data/rails/actionmailer/CHANGELOG.md +63 -0
  23. data/rails/actionmailer/MIT-LICENSE +21 -0
  24. data/rails/actionmailer/README.rdoc +176 -0
  25. data/rails/actionmailer/Rakefile +35 -0
  26. data/rails/actionmailer/actionmailer.gemspec +28 -0
  27. data/rails/actionmailer/lib/action_mailer/base.rb +947 -0
  28. data/rails/actionmailer/lib/action_mailer/collector.rb +30 -0
  29. data/rails/actionmailer/lib/action_mailer/delivery_job.rb +13 -0
  30. data/rails/actionmailer/lib/action_mailer/delivery_methods.rb +84 -0
  31. data/rails/actionmailer/lib/action_mailer/gem_version.rb +15 -0
  32. data/rails/actionmailer/lib/action_mailer/log_subscriber.rb +39 -0
  33. data/rails/actionmailer/lib/action_mailer/mail_helper.rb +58 -0
  34. data/rails/actionmailer/lib/action_mailer/message_delivery.rb +115 -0
  35. data/rails/actionmailer/lib/action_mailer/preview.rb +118 -0
  36. data/rails/actionmailer/lib/action_mailer/railtie.rb +64 -0
  37. data/rails/actionmailer/lib/action_mailer/test_case.rb +104 -0
  38. data/rails/actionmailer/lib/action_mailer/test_helper.rb +62 -0
  39. data/rails/actionmailer/lib/action_mailer/version.rb +9 -0
  40. data/rails/actionmailer/lib/action_mailer.rb +50 -0
  41. data/rails/actionmailer/lib/rails/generators/mailer/USAGE +17 -0
  42. data/rails/actionmailer/lib/rails/generators/mailer/mailer_generator.rb +19 -0
  43. data/rails/actionmailer/lib/rails/generators/mailer/templates/application_mailer.rb +4 -0
  44. data/rails/actionmailer/lib/rails/generators/mailer/templates/mailer.rb +17 -0
  45. data/rails/actionmailer/test/abstract_unit.rb +49 -0
  46. data/rails/actionmailer/test/assert_select_email_test.rb +47 -0
  47. data/rails/actionmailer/test/asset_host_test.rb +37 -0
  48. data/rails/actionmailer/test/base_test.rb +885 -0
  49. data/rails/actionmailer/test/delivery_methods_test.rb +237 -0
  50. data/rails/actionmailer/test/fixtures/anonymous/welcome.erb +1 -0
  51. data/rails/actionmailer/test/fixtures/another.path/base_mailer/welcome.erb +1 -0
  52. data/rails/actionmailer/test/fixtures/asset_host_mailer/email_with_asset.html.erb +1 -0
  53. data/rails/actionmailer/test/fixtures/asset_mailer/welcome.html.erb +1 -0
  54. data/rails/actionmailer/test/fixtures/async_mailer/welcome.erb +1 -0
  55. data/rails/actionmailer/test/fixtures/attachments/foo.jpg +0 -0
  56. data/rails/actionmailer/test/fixtures/attachments/test.jpg +0 -0
  57. data/rails/actionmailer/test/fixtures/auto_layout_mailer/hello.html.erb +1 -0
  58. data/rails/actionmailer/test/fixtures/auto_layout_mailer/multipart.html.erb +1 -0
  59. data/rails/actionmailer/test/fixtures/auto_layout_mailer/multipart.text.erb +1 -0
  60. data/rails/actionmailer/test/fixtures/base_mailer/attachment_with_content.erb +1 -0
  61. data/rails/actionmailer/test/fixtures/base_mailer/attachment_with_hash.html.erb +0 -0
  62. data/rails/actionmailer/test/fixtures/base_mailer/attachment_with_hash_default_encoding.html.erb +0 -0
  63. data/rails/actionmailer/test/fixtures/base_mailer/different_layout.html.erb +1 -0
  64. data/rails/actionmailer/test/fixtures/base_mailer/different_layout.text.erb +1 -0
  65. data/rails/actionmailer/test/fixtures/base_mailer/email_custom_layout.text.html.erb +1 -0
  66. data/rails/actionmailer/test/fixtures/base_mailer/email_with_translations.html.erb +1 -0
  67. data/rails/actionmailer/test/fixtures/base_mailer/explicit_multipart_templates.html.erb +1 -0
  68. data/rails/actionmailer/test/fixtures/base_mailer/explicit_multipart_templates.text.erb +1 -0
  69. data/rails/actionmailer/test/fixtures/base_mailer/explicit_multipart_with_one_template.erb +1 -0
  70. data/rails/actionmailer/test/fixtures/base_mailer/html_only.html.erb +1 -0
  71. data/rails/actionmailer/test/fixtures/base_mailer/implicit_multipart.html.erb +1 -0
  72. data/rails/actionmailer/test/fixtures/base_mailer/implicit_multipart.text.erb +1 -0
  73. data/rails/actionmailer/test/fixtures/base_mailer/implicit_with_locale.en.html.erb +1 -0
  74. data/rails/actionmailer/test/fixtures/base_mailer/implicit_with_locale.html.erb +1 -0
  75. data/rails/actionmailer/test/fixtures/base_mailer/implicit_with_locale.pl.text.erb +1 -0
  76. data/rails/actionmailer/test/fixtures/base_mailer/implicit_with_locale.text.erb +1 -0
  77. data/rails/actionmailer/test/fixtures/base_mailer/inline_attachment.html.erb +5 -0
  78. data/rails/actionmailer/test/fixtures/base_mailer/inline_attachment.text.erb +4 -0
  79. data/rails/actionmailer/test/fixtures/base_mailer/plain_text_only.text.erb +1 -0
  80. data/rails/actionmailer/test/fixtures/base_mailer/welcome.erb +1 -0
  81. data/rails/actionmailer/test/fixtures/base_mailer/welcome_with_headers.html.erb +0 -0
  82. data/rails/actionmailer/test/fixtures/base_mailer/without_mail_call.erb +1 -0
  83. data/rails/actionmailer/test/fixtures/base_test/after_action_mailer/welcome.html.erb +0 -0
  84. data/rails/actionmailer/test/fixtures/base_test/before_action_mailer/welcome.html.erb +0 -0
  85. data/rails/actionmailer/test/fixtures/base_test/default_inline_attachment_mailer/welcome.html.erb +0 -0
  86. data/rails/actionmailer/test/fixtures/base_test/late_inline_attachment_mailer/on_render.erb +7 -0
  87. data/rails/actionmailer/test/fixtures/explicit_layout_mailer/logout.html.erb +1 -0
  88. data/rails/actionmailer/test/fixtures/explicit_layout_mailer/signup.html.erb +1 -0
  89. data/rails/actionmailer/test/fixtures/first_mailer/share.erb +1 -0
  90. data/rails/actionmailer/test/fixtures/i18n_test_mailer/mail_with_i18n_subject.erb +4 -0
  91. data/rails/actionmailer/test/fixtures/layouts/auto_layout_mailer.html.erb +1 -0
  92. data/rails/actionmailer/test/fixtures/layouts/auto_layout_mailer.text.erb +1 -0
  93. data/rails/actionmailer/test/fixtures/layouts/different_layout.html.erb +1 -0
  94. data/rails/actionmailer/test/fixtures/layouts/different_layout.text.erb +1 -0
  95. data/rails/actionmailer/test/fixtures/layouts/spam.html.erb +1 -0
  96. data/rails/actionmailer/test/fixtures/mail_delivery_test/delivery_mailer/welcome.html.erb +0 -0
  97. data/rails/actionmailer/test/fixtures/nested_layout_mailer/signup.html.erb +1 -0
  98. data/rails/actionmailer/test/fixtures/path.with.dots/funky_path_mailer/multipart_with_template_path_with_dots.erb +1 -0
  99. data/rails/actionmailer/test/fixtures/proc_mailer/welcome.html.erb +0 -0
  100. data/rails/actionmailer/test/fixtures/raw_email +14 -0
  101. data/rails/actionmailer/test/fixtures/second_mailer/share.erb +1 -0
  102. data/rails/actionmailer/test/fixtures/templates/signed_up.erb +3 -0
  103. data/rails/actionmailer/test/fixtures/test_helper_mailer/welcome +1 -0
  104. data/rails/actionmailer/test/fixtures/test_mailer/_subtemplate.text.erb +1 -0
  105. data/rails/actionmailer/test/fixtures/test_mailer/custom_templating_extension.html.haml +6 -0
  106. data/rails/actionmailer/test/fixtures/test_mailer/custom_templating_extension.text.haml +6 -0
  107. data/rails/actionmailer/test/fixtures/test_mailer/implicitly_multipart_example.html.erb +10 -0
  108. data/rails/actionmailer/test/fixtures/test_mailer/implicitly_multipart_example.html.erb~ +10 -0
  109. data/rails/actionmailer/test/fixtures/test_mailer/implicitly_multipart_example.ignored.erb +1 -0
  110. data/rails/actionmailer/test/fixtures/test_mailer/implicitly_multipart_example.rhtml.bak +1 -0
  111. data/rails/actionmailer/test/fixtures/test_mailer/implicitly_multipart_example.text.erb +2 -0
  112. data/rails/actionmailer/test/fixtures/test_mailer/implicitly_multipart_example.yaml.erb +1 -0
  113. data/rails/actionmailer/test/fixtures/test_mailer/included_subtemplate.text.erb +1 -0
  114. data/rails/actionmailer/test/fixtures/test_mailer/multipart_alternative.html.erb +1 -0
  115. data/rails/actionmailer/test/fixtures/test_mailer/multipart_alternative.plain.erb +1 -0
  116. data/rails/actionmailer/test/fixtures/test_mailer/rxml_template.rxml +2 -0
  117. data/rails/actionmailer/test/fixtures/test_mailer/signed_up.html.erb +3 -0
  118. data/rails/actionmailer/test/fixtures/url_test_mailer/exercise_url_for.erb +1 -0
  119. data/rails/actionmailer/test/fixtures/url_test_mailer/signed_up_with_url.erb +5 -0
  120. data/rails/actionmailer/test/i18n_with_controller_test.rb +70 -0
  121. data/rails/actionmailer/test/log_subscriber_test.rb +47 -0
  122. data/rails/actionmailer/test/mail_helper_test.rb +111 -0
  123. data/rails/actionmailer/test/mail_layout_test.rb +95 -0
  124. data/rails/actionmailer/test/mailers/asset_mailer.rb +7 -0
  125. data/rails/actionmailer/test/mailers/base_mailer.rb +130 -0
  126. data/rails/actionmailer/test/mailers/delayed_mailer.rb +6 -0
  127. data/rails/actionmailer/test/mailers/proc_mailer.rb +17 -0
  128. data/rails/actionmailer/test/message_delivery_test.rb +104 -0
  129. data/rails/actionmailer/test/test_case_test.rb +28 -0
  130. data/rails/actionmailer/test/test_helper_test.rb +135 -0
  131. data/rails/actionmailer/test/url_test.rb +138 -0
  132. data/rails/actionpack/CHANGELOG.md +501 -0
  133. data/rails/actionpack/MIT-LICENSE +21 -0
  134. data/rails/actionpack/README.rdoc +58 -0
  135. data/rails/actionpack/Rakefile +53 -0
  136. data/rails/actionpack/actionpack.gemspec +31 -0
  137. data/rails/actionpack/lib/abstract_controller/asset_paths.rb +10 -0
  138. data/rails/actionpack/lib/abstract_controller/base.rb +269 -0
  139. data/rails/actionpack/lib/abstract_controller/callbacks.rb +196 -0
  140. data/rails/actionpack/lib/abstract_controller/collector.rb +46 -0
  141. data/rails/actionpack/lib/abstract_controller/helpers.rb +194 -0
  142. data/rails/actionpack/lib/abstract_controller/logger.rb +12 -0
  143. data/rails/actionpack/lib/abstract_controller/railties/routes_helpers.rb +18 -0
  144. data/rails/actionpack/lib/abstract_controller/rendering.rb +120 -0
  145. data/rails/actionpack/lib/abstract_controller/translation.rb +28 -0
  146. data/rails/actionpack/lib/abstract_controller/url_for.rb +33 -0
  147. data/rails/actionpack/lib/abstract_controller.rb +20 -0
  148. data/rails/actionpack/lib/action_controller/base.rb +268 -0
  149. data/rails/actionpack/lib/action_controller/caching/fragments.rb +103 -0
  150. data/rails/actionpack/lib/action_controller/caching.rb +89 -0
  151. data/rails/actionpack/lib/action_controller/log_subscriber.rb +83 -0
  152. data/rails/actionpack/lib/action_controller/metal/conditional_get.rb +200 -0
  153. data/rails/actionpack/lib/action_controller/metal/cookies.rb +16 -0
  154. data/rails/actionpack/lib/action_controller/metal/data_streaming.rb +171 -0
  155. data/rails/actionpack/lib/action_controller/metal/etag_with_template_digest.rb +50 -0
  156. data/rails/actionpack/lib/action_controller/metal/exceptions.rb +59 -0
  157. data/rails/actionpack/lib/action_controller/metal/flash.rb +60 -0
  158. data/rails/actionpack/lib/action_controller/metal/force_ssl.rb +97 -0
  159. data/rails/actionpack/lib/action_controller/metal/head.rb +56 -0
  160. data/rails/actionpack/lib/action_controller/metal/helpers.rb +113 -0
  161. data/rails/actionpack/lib/action_controller/metal/hide_actions.rb +40 -0
  162. data/rails/actionpack/lib/action_controller/metal/http_authentication.rb +507 -0
  163. data/rails/actionpack/lib/action_controller/metal/implicit_render.rb +19 -0
  164. data/rails/actionpack/lib/action_controller/metal/instrumentation.rb +109 -0
  165. data/rails/actionpack/lib/action_controller/metal/live.rb +328 -0
  166. data/rails/actionpack/lib/action_controller/metal/mime_responds.rb +324 -0
  167. data/rails/actionpack/lib/action_controller/metal/params_wrapper.rb +285 -0
  168. data/rails/actionpack/lib/action_controller/metal/rack_delegation.rb +32 -0
  169. data/rails/actionpack/lib/action_controller/metal/redirecting.rb +112 -0
  170. data/rails/actionpack/lib/action_controller/metal/renderers.rb +140 -0
  171. data/rails/actionpack/lib/action_controller/metal/rendering.rb +100 -0
  172. data/rails/actionpack/lib/action_controller/metal/request_forgery_protection.rb +334 -0
  173. data/rails/actionpack/lib/action_controller/metal/rescue.rb +35 -0
  174. data/rails/actionpack/lib/action_controller/metal/streaming.rb +221 -0
  175. data/rails/actionpack/lib/action_controller/metal/strong_parameters.rb +667 -0
  176. data/rails/actionpack/lib/action_controller/metal/testing.rb +31 -0
  177. data/rails/actionpack/lib/action_controller/metal/url_for.rb +49 -0
  178. data/rails/actionpack/lib/action_controller/metal.rb +241 -0
  179. data/rails/actionpack/lib/action_controller/middleware.rb +39 -0
  180. data/rails/actionpack/lib/action_controller/model_naming.rb +12 -0
  181. data/rails/actionpack/lib/action_controller/railtie.rb +71 -0
  182. data/rails/actionpack/lib/action_controller/railties/helpers.rb +22 -0
  183. data/rails/actionpack/lib/action_controller/test_case.rb +754 -0
  184. data/rails/actionpack/lib/action_controller.rb +58 -0
  185. data/rails/actionpack/lib/action_dispatch/http/cache.rb +176 -0
  186. data/rails/actionpack/lib/action_dispatch/http/filter_parameters.rb +78 -0
  187. data/rails/actionpack/lib/action_dispatch/http/filter_redirect.rb +38 -0
  188. data/rails/actionpack/lib/action_dispatch/http/headers.rb +99 -0
  189. data/rails/actionpack/lib/action_dispatch/http/mime_negotiation.rb +156 -0
  190. data/rails/actionpack/lib/action_dispatch/http/mime_type.rb +315 -0
  191. data/rails/actionpack/lib/action_dispatch/http/mime_types.rb +36 -0
  192. data/rails/actionpack/lib/action_dispatch/http/parameter_filter.rb +72 -0
  193. data/rails/actionpack/lib/action_dispatch/http/parameters.rb +67 -0
  194. data/rails/actionpack/lib/action_dispatch/http/rack_cache.rb +61 -0
  195. data/rails/actionpack/lib/action_dispatch/http/request.rb +348 -0
  196. data/rails/actionpack/lib/action_dispatch/http/response.rb +406 -0
  197. data/rails/actionpack/lib/action_dispatch/http/upload.rb +72 -0
  198. data/rails/actionpack/lib/action_dispatch/http/url.rb +268 -0
  199. data/rails/actionpack/lib/action_dispatch/journey/backwards.rb +5 -0
  200. data/rails/actionpack/lib/action_dispatch/journey/formatter.rb +166 -0
  201. data/rails/actionpack/lib/action_dispatch/journey/gtg/builder.rb +162 -0
  202. data/rails/actionpack/lib/action_dispatch/journey/gtg/simulator.rb +47 -0
  203. data/rails/actionpack/lib/action_dispatch/journey/gtg/transition_table.rb +157 -0
  204. data/rails/actionpack/lib/action_dispatch/journey/nfa/builder.rb +76 -0
  205. data/rails/actionpack/lib/action_dispatch/journey/nfa/dot.rb +36 -0
  206. data/rails/actionpack/lib/action_dispatch/journey/nfa/simulator.rb +47 -0
  207. data/rails/actionpack/lib/action_dispatch/journey/nfa/transition_table.rb +163 -0
  208. data/rails/actionpack/lib/action_dispatch/journey/nodes/node.rb +128 -0
  209. data/rails/actionpack/lib/action_dispatch/journey/parser.rb +198 -0
  210. data/rails/actionpack/lib/action_dispatch/journey/parser.y +49 -0
  211. data/rails/actionpack/lib/action_dispatch/journey/parser_extras.rb +23 -0
  212. data/rails/actionpack/lib/action_dispatch/journey/path/pattern.rb +193 -0
  213. data/rails/actionpack/lib/action_dispatch/journey/route.rb +125 -0
  214. data/rails/actionpack/lib/action_dispatch/journey/router/strexp.rb +27 -0
  215. data/rails/actionpack/lib/action_dispatch/journey/router/utils.rb +93 -0
  216. data/rails/actionpack/lib/action_dispatch/journey/router.rb +144 -0
  217. data/rails/actionpack/lib/action_dispatch/journey/routes.rb +76 -0
  218. data/rails/actionpack/lib/action_dispatch/journey/scanner.rb +61 -0
  219. data/rails/actionpack/lib/action_dispatch/journey/visitors.rb +221 -0
  220. data/rails/actionpack/lib/action_dispatch/journey/visualizer/fsm.css +30 -0
  221. data/rails/actionpack/lib/action_dispatch/journey/visualizer/fsm.js +134 -0
  222. data/rails/actionpack/lib/action_dispatch/journey/visualizer/index.html.erb +52 -0
  223. data/rails/actionpack/lib/action_dispatch/journey.rb +5 -0
  224. data/rails/actionpack/lib/action_dispatch/middleware/callbacks.rb +37 -0
  225. data/rails/actionpack/lib/action_dispatch/middleware/cookies.rb +574 -0
  226. data/rails/actionpack/lib/action_dispatch/middleware/debug_exceptions.rb +110 -0
  227. data/rails/actionpack/lib/action_dispatch/middleware/exception_wrapper.rb +148 -0
  228. data/rails/actionpack/lib/action_dispatch/middleware/flash.rb +276 -0
  229. data/rails/actionpack/lib/action_dispatch/middleware/params_parser.rb +60 -0
  230. data/rails/actionpack/lib/action_dispatch/middleware/public_exceptions.rb +55 -0
  231. data/rails/actionpack/lib/action_dispatch/middleware/reloader.rb +98 -0
  232. data/rails/actionpack/lib/action_dispatch/middleware/remote_ip.rb +173 -0
  233. data/rails/actionpack/lib/action_dispatch/middleware/request_id.rb +35 -0
  234. data/rails/actionpack/lib/action_dispatch/middleware/session/abstract_store.rb +90 -0
  235. data/rails/actionpack/lib/action_dispatch/middleware/session/cache_store.rb +49 -0
  236. data/rails/actionpack/lib/action_dispatch/middleware/session/cookie_store.rb +123 -0
  237. data/rails/actionpack/lib/action_dispatch/middleware/session/mem_cache_store.rb +22 -0
  238. data/rails/actionpack/lib/action_dispatch/middleware/show_exceptions.rb +58 -0
  239. data/rails/actionpack/lib/action_dispatch/middleware/ssl.rb +72 -0
  240. data/rails/actionpack/lib/action_dispatch/middleware/stack.rb +129 -0
  241. data/rails/actionpack/lib/action_dispatch/middleware/static.rb +116 -0
  242. data/rails/actionpack/lib/action_dispatch/middleware/templates/rescues/_request_and_response.html.erb +34 -0
  243. data/rails/actionpack/lib/action_dispatch/middleware/templates/rescues/_request_and_response.text.erb +23 -0
  244. data/rails/actionpack/lib/action_dispatch/middleware/templates/rescues/_source.erb +27 -0
  245. data/rails/actionpack/lib/action_dispatch/middleware/templates/rescues/_trace.html.erb +52 -0
  246. data/rails/actionpack/lib/action_dispatch/middleware/templates/rescues/_trace.text.erb +9 -0
  247. data/rails/actionpack/lib/action_dispatch/middleware/templates/rescues/diagnostics.html.erb +16 -0
  248. data/rails/actionpack/lib/action_dispatch/middleware/templates/rescues/diagnostics.text.erb +9 -0
  249. data/rails/actionpack/lib/action_dispatch/middleware/templates/rescues/layout.erb +160 -0
  250. data/rails/actionpack/lib/action_dispatch/middleware/templates/rescues/missing_template.html.erb +11 -0
  251. data/rails/actionpack/lib/action_dispatch/middleware/templates/rescues/missing_template.text.erb +3 -0
  252. data/rails/actionpack/lib/action_dispatch/middleware/templates/rescues/routing_error.html.erb +32 -0
  253. data/rails/actionpack/lib/action_dispatch/middleware/templates/rescues/routing_error.text.erb +11 -0
  254. data/rails/actionpack/lib/action_dispatch/middleware/templates/rescues/template_error.html.erb +20 -0
  255. data/rails/actionpack/lib/action_dispatch/middleware/templates/rescues/template_error.text.erb +7 -0
  256. data/rails/actionpack/lib/action_dispatch/middleware/templates/rescues/unknown_action.html.erb +6 -0
  257. data/rails/actionpack/lib/action_dispatch/middleware/templates/rescues/unknown_action.text.erb +3 -0
  258. data/rails/actionpack/lib/action_dispatch/middleware/templates/routes/_route.html.erb +16 -0
  259. data/rails/actionpack/lib/action_dispatch/middleware/templates/routes/_table.html.erb +200 -0
  260. data/rails/actionpack/lib/action_dispatch/railtie.rb +45 -0
  261. data/rails/actionpack/lib/action_dispatch/request/session.rb +193 -0
  262. data/rails/actionpack/lib/action_dispatch/request/utils.rb +35 -0
  263. data/rails/actionpack/lib/action_dispatch/routing/endpoint.rb +10 -0
  264. data/rails/actionpack/lib/action_dispatch/routing/inspector.rb +234 -0
  265. data/rails/actionpack/lib/action_dispatch/routing/mapper.rb +1979 -0
  266. data/rails/actionpack/lib/action_dispatch/routing/polymorphic_routes.rb +330 -0
  267. data/rails/actionpack/lib/action_dispatch/routing/redirection.rb +191 -0
  268. data/rails/actionpack/lib/action_dispatch/routing/route_set.rb +862 -0
  269. data/rails/actionpack/lib/action_dispatch/routing/routes_proxy.rb +41 -0
  270. data/rails/actionpack/lib/action_dispatch/routing/url_for.rb +195 -0
  271. data/rails/actionpack/lib/action_dispatch/routing.rb +261 -0
  272. data/rails/actionpack/lib/action_dispatch/testing/assertions/dom.rb +3 -0
  273. data/rails/actionpack/lib/action_dispatch/testing/assertions/response.rb +82 -0
  274. data/rails/actionpack/lib/action_dispatch/testing/assertions/routing.rb +212 -0
  275. data/rails/actionpack/lib/action_dispatch/testing/assertions/selector.rb +3 -0
  276. data/rails/actionpack/lib/action_dispatch/testing/assertions/tag.rb +3 -0
  277. data/rails/actionpack/lib/action_dispatch/testing/assertions.rb +22 -0
  278. data/rails/actionpack/lib/action_dispatch/testing/integration.rb +511 -0
  279. data/rails/actionpack/lib/action_dispatch/testing/test_process.rb +44 -0
  280. data/rails/actionpack/lib/action_dispatch/testing/test_request.rb +78 -0
  281. data/rails/actionpack/lib/action_dispatch/testing/test_response.rb +36 -0
  282. data/rails/actionpack/lib/action_dispatch.rb +105 -0
  283. data/rails/actionpack/lib/action_pack/gem_version.rb +15 -0
  284. data/rails/actionpack/lib/action_pack/version.rb +8 -0
  285. data/rails/actionpack/lib/action_pack.rb +24 -0
  286. data/rails/actionpack/test/abstract/callbacks_test.rb +315 -0
  287. data/rails/actionpack/test/abstract/collector_test.rb +63 -0
  288. data/rails/actionpack/test/abstract/translation_test.rb +50 -0
  289. data/rails/actionpack/test/abstract_unit.rb +521 -0
  290. data/rails/actionpack/test/assertions/response_assertions_test.rb +63 -0
  291. data/rails/actionpack/test/controller/action_pack_assertions_test.rb +657 -0
  292. data/rails/actionpack/test/controller/base_test.rb +342 -0
  293. data/rails/actionpack/test/controller/caching_test.rb +351 -0
  294. data/rails/actionpack/test/controller/content_type_test.rb +167 -0
  295. data/rails/actionpack/test/controller/controller_fixtures/app/controllers/admin/user_controller.rb +0 -0
  296. data/rails/actionpack/test/controller/controller_fixtures/app/controllers/user_controller.rb +0 -0
  297. data/rails/actionpack/test/controller/controller_fixtures/vendor/plugins/bad_plugin/lib/plugin_controller.rb +0 -0
  298. data/rails/actionpack/test/controller/default_url_options_with_before_action_test.rb +29 -0
  299. data/rails/actionpack/test/controller/filters_test.rb +1047 -0
  300. data/rails/actionpack/test/controller/flash_hash_test.rb +211 -0
  301. data/rails/actionpack/test/controller/flash_test.rb +335 -0
  302. data/rails/actionpack/test/controller/force_ssl_test.rb +324 -0
  303. data/rails/actionpack/test/controller/helper_test.rb +297 -0
  304. data/rails/actionpack/test/controller/http_basic_authentication_test.rb +144 -0
  305. data/rails/actionpack/test/controller/http_digest_authentication_test.rb +289 -0
  306. data/rails/actionpack/test/controller/http_token_authentication_test.rb +200 -0
  307. data/rails/actionpack/test/controller/integration_test.rb +899 -0
  308. data/rails/actionpack/test/controller/live_stream_test.rb +454 -0
  309. data/rails/actionpack/test/controller/localized_templates_test.rb +46 -0
  310. data/rails/actionpack/test/controller/log_subscriber_test.rb +345 -0
  311. data/rails/actionpack/test/controller/mime/accept_format_test.rb +92 -0
  312. data/rails/actionpack/test/controller/mime/respond_to_test.rb +784 -0
  313. data/rails/actionpack/test/controller/mime/responders_test.rb +32 -0
  314. data/rails/actionpack/test/controller/new_base/bare_metal_test.rb +153 -0
  315. data/rails/actionpack/test/controller/new_base/base_test.rb +132 -0
  316. data/rails/actionpack/test/controller/new_base/content_negotiation_test.rb +27 -0
  317. data/rails/actionpack/test/controller/new_base/content_type_test.rb +112 -0
  318. data/rails/actionpack/test/controller/new_base/metal_test.rb +45 -0
  319. data/rails/actionpack/test/controller/new_base/middleware_test.rb +110 -0
  320. data/rails/actionpack/test/controller/new_base/render_action_test.rb +315 -0
  321. data/rails/actionpack/test/controller/new_base/render_body_test.rb +170 -0
  322. data/rails/actionpack/test/controller/new_base/render_context_test.rb +54 -0
  323. data/rails/actionpack/test/controller/new_base/render_file_test.rb +70 -0
  324. data/rails/actionpack/test/controller/new_base/render_html_test.rb +190 -0
  325. data/rails/actionpack/test/controller/new_base/render_implicit_action_test.rb +57 -0
  326. data/rails/actionpack/test/controller/new_base/render_layout_test.rb +127 -0
  327. data/rails/actionpack/test/controller/new_base/render_partial_test.rb +63 -0
  328. data/rails/actionpack/test/controller/new_base/render_plain_test.rb +168 -0
  329. data/rails/actionpack/test/controller/new_base/render_streaming_test.rb +114 -0
  330. data/rails/actionpack/test/controller/new_base/render_template_test.rb +239 -0
  331. data/rails/actionpack/test/controller/new_base/render_test.rb +136 -0
  332. data/rails/actionpack/test/controller/new_base/render_text_test.rb +158 -0
  333. data/rails/actionpack/test/controller/new_base/render_xml_test.rb +11 -0
  334. data/rails/actionpack/test/controller/output_escaping_test.rb +17 -0
  335. data/rails/actionpack/test/controller/parameters/accessors_test.rb +125 -0
  336. data/rails/actionpack/test/controller/parameters/always_permitted_parameters_test.rb +29 -0
  337. data/rails/actionpack/test/controller/parameters/log_on_unpermitted_params_test.rb +72 -0
  338. data/rails/actionpack/test/controller/parameters/multi_parameter_attributes_test.rb +38 -0
  339. data/rails/actionpack/test/controller/parameters/mutators_test.rb +99 -0
  340. data/rails/actionpack/test/controller/parameters/nested_parameters_test.rb +187 -0
  341. data/rails/actionpack/test/controller/parameters/parameters_permit_test.rb +289 -0
  342. data/rails/actionpack/test/controller/parameters/raise_on_unpermitted_params_test.rb +33 -0
  343. data/rails/actionpack/test/controller/params_wrapper_test.rb +362 -0
  344. data/rails/actionpack/test/controller/permitted_params_test.rb +25 -0
  345. data/rails/actionpack/test/controller/redirect_test.rb +354 -0
  346. data/rails/actionpack/test/controller/render_js_test.rb +34 -0
  347. data/rails/actionpack/test/controller/render_json_test.rb +136 -0
  348. data/rails/actionpack/test/controller/render_other_test.rb +24 -0
  349. data/rails/actionpack/test/controller/render_test.rb +579 -0
  350. data/rails/actionpack/test/controller/render_xml_test.rb +97 -0
  351. data/rails/actionpack/test/controller/request/test_request_test.rb +35 -0
  352. data/rails/actionpack/test/controller/request_forgery_protection_test.rb +510 -0
  353. data/rails/actionpack/test/controller/required_params_test.rb +51 -0
  354. data/rails/actionpack/test/controller/rescue_test.rb +348 -0
  355. data/rails/actionpack/test/controller/resources_test.rb +1334 -0
  356. data/rails/actionpack/test/controller/routing_test.rb +2026 -0
  357. data/rails/actionpack/test/controller/runner_test.rb +22 -0
  358. data/rails/actionpack/test/controller/send_file_test.rb +209 -0
  359. data/rails/actionpack/test/controller/show_exceptions_test.rb +112 -0
  360. data/rails/actionpack/test/controller/streaming_test.rb +26 -0
  361. data/rails/actionpack/test/controller/test_case_test.rb +913 -0
  362. data/rails/actionpack/test/controller/url_for_integration_test.rb +188 -0
  363. data/rails/actionpack/test/controller/url_for_test.rb +446 -0
  364. data/rails/actionpack/test/controller/url_rewriter_test.rb +90 -0
  365. data/rails/actionpack/test/controller/webservice_test.rb +114 -0
  366. data/rails/actionpack/test/dispatch/callbacks_test.rb +58 -0
  367. data/rails/actionpack/test/dispatch/cookies_test.rb +1159 -0
  368. data/rails/actionpack/test/dispatch/debug_exceptions_test.rb +350 -0
  369. data/rails/actionpack/test/dispatch/exception_wrapper_test.rb +97 -0
  370. data/rails/actionpack/test/dispatch/header_test.rb +139 -0
  371. data/rails/actionpack/test/dispatch/live_response_test.rb +94 -0
  372. data/rails/actionpack/test/dispatch/mapper_test.rb +112 -0
  373. data/rails/actionpack/test/dispatch/middleware_stack/middleware_test.rb +77 -0
  374. data/rails/actionpack/test/dispatch/middleware_stack_test.rb +117 -0
  375. data/rails/actionpack/test/dispatch/mime_type_test.rb +203 -0
  376. data/rails/actionpack/test/dispatch/mount_test.rb +93 -0
  377. data/rails/actionpack/test/dispatch/prefix_generation_test.rb +465 -0
  378. data/rails/actionpack/test/dispatch/rack_cache_test.rb +21 -0
  379. data/rails/actionpack/test/dispatch/reloader_test.rb +176 -0
  380. data/rails/actionpack/test/dispatch/request/json_params_parsing_test.rb +164 -0
  381. data/rails/actionpack/test/dispatch/request/multipart_params_parsing_test.rb +186 -0
  382. data/rails/actionpack/test/dispatch/request/query_string_parsing_test.rb +171 -0
  383. data/rails/actionpack/test/dispatch/request/session_test.rb +116 -0
  384. data/rails/actionpack/test/dispatch/request/url_encoded_params_parsing_test.rb +177 -0
  385. data/rails/actionpack/test/dispatch/request_id_test.rb +65 -0
  386. data/rails/actionpack/test/dispatch/request_test.rb +1159 -0
  387. data/rails/actionpack/test/dispatch/response_test.rb +344 -0
  388. data/rails/actionpack/test/dispatch/routing/concerns_test.rb +120 -0
  389. data/rails/actionpack/test/dispatch/routing/inspector_test.rb +326 -0
  390. data/rails/actionpack/test/dispatch/routing/route_set_test.rb +205 -0
  391. data/rails/actionpack/test/dispatch/routing_assertions_test.rb +131 -0
  392. data/rails/actionpack/test/dispatch/routing_test.rb +4475 -0
  393. data/rails/actionpack/test/dispatch/session/abstract_store_test.rb +56 -0
  394. data/rails/actionpack/test/dispatch/session/cache_store_test.rb +179 -0
  395. data/rails/actionpack/test/dispatch/session/cookie_store_test.rb +356 -0
  396. data/rails/actionpack/test/dispatch/session/mem_cache_store_test.rb +201 -0
  397. data/rails/actionpack/test/dispatch/session/test_session_test.rb +43 -0
  398. data/rails/actionpack/test/dispatch/show_exceptions_test.rb +115 -0
  399. data/rails/actionpack/test/dispatch/ssl_test.rb +219 -0
  400. data/rails/actionpack/test/dispatch/static_test.rb +239 -0
  401. data/rails/actionpack/test/dispatch/template_assertions_test.rb +110 -0
  402. data/rails/actionpack/test/dispatch/test_request_test.rb +99 -0
  403. data/rails/actionpack/test/dispatch/test_response_test.rb +21 -0
  404. data/rails/actionpack/test/dispatch/uploaded_file_test.rb +105 -0
  405. data/rails/actionpack/test/dispatch/url_generation_test.rb +134 -0
  406. data/rails/actionpack/test/fixtures/_top_level_partial_only.erb +1 -0
  407. data/rails/actionpack/test/fixtures/alternate_helpers/foo_helper.rb +3 -0
  408. data/rails/actionpack/test/fixtures/bad_customers/_bad_customer.html.erb +1 -0
  409. data/rails/actionpack/test/fixtures/company.rb +9 -0
  410. data/rails/actionpack/test/fixtures/filter_test/implicit_actions/edit.html.erb +1 -0
  411. data/rails/actionpack/test/fixtures/filter_test/implicit_actions/show.html.erb +1 -0
  412. data/rails/actionpack/test/fixtures/functional_caching/_partial.erb +3 -0
  413. data/rails/actionpack/test/fixtures/functional_caching/formatted_fragment_cached.html.erb +3 -0
  414. data/rails/actionpack/test/fixtures/functional_caching/formatted_fragment_cached.xml.builder +5 -0
  415. data/rails/actionpack/test/fixtures/functional_caching/formatted_fragment_cached_with_variant.html+phone.erb +3 -0
  416. data/rails/actionpack/test/fixtures/functional_caching/fragment_cached.html.erb +3 -0
  417. data/rails/actionpack/test/fixtures/functional_caching/fragment_cached_without_digest.html.erb +3 -0
  418. data/rails/actionpack/test/fixtures/functional_caching/html_fragment_cached_with_partial.html.erb +1 -0
  419. data/rails/actionpack/test/fixtures/functional_caching/inline_fragment_cached.html.erb +2 -0
  420. data/rails/actionpack/test/fixtures/helpers/abc_helper.rb +3 -0
  421. data/rails/actionpack/test/fixtures/helpers/fun/games_helper.rb +5 -0
  422. data/rails/actionpack/test/fixtures/helpers/fun/pdf_helper.rb +5 -0
  423. data/rails/actionpack/test/fixtures/helpers/just_me_helper.rb +3 -0
  424. data/rails/actionpack/test/fixtures/helpers/me_too_helper.rb +3 -0
  425. data/rails/actionpack/test/fixtures/helpers1_pack/pack1_helper.rb +5 -0
  426. data/rails/actionpack/test/fixtures/helpers2_pack/pack2_helper.rb +5 -0
  427. data/rails/actionpack/test/fixtures/helpers_typo/admin/users_helper.rb +5 -0
  428. data/rails/actionpack/test/fixtures/layouts/_customers.erb +1 -0
  429. data/rails/actionpack/test/fixtures/layouts/block_with_layout.erb +3 -0
  430. data/rails/actionpack/test/fixtures/layouts/builder.builder +3 -0
  431. data/rails/actionpack/test/fixtures/layouts/partial_with_layout.erb +3 -0
  432. data/rails/actionpack/test/fixtures/layouts/standard.html.erb +1 -0
  433. data/rails/actionpack/test/fixtures/layouts/talk_from_action.erb +2 -0
  434. data/rails/actionpack/test/fixtures/layouts/with_html_partial.html.erb +1 -0
  435. data/rails/actionpack/test/fixtures/layouts/xhr.html.erb +2 -0
  436. data/rails/actionpack/test/fixtures/layouts/yield.erb +2 -0
  437. data/rails/actionpack/test/fixtures/localized/hello_world.de.html +1 -0
  438. data/rails/actionpack/test/fixtures/localized/hello_world.en.html +1 -0
  439. data/rails/actionpack/test/fixtures/localized/hello_world.it.erb +1 -0
  440. data/rails/actionpack/test/fixtures/multipart/binary_file +0 -0
  441. data/rails/actionpack/test/fixtures/multipart/boundary_problem_file +10 -0
  442. data/rails/actionpack/test/fixtures/multipart/bracketed_param +5 -0
  443. data/rails/actionpack/test/fixtures/multipart/bracketed_utf8_param +5 -0
  444. data/rails/actionpack/test/fixtures/multipart/empty +10 -0
  445. data/rails/actionpack/test/fixtures/multipart/hello.txt +1 -0
  446. data/rails/actionpack/test/fixtures/multipart/large_text_file +10 -0
  447. data/rails/actionpack/test/fixtures/multipart/mixed_files +0 -0
  448. data/rails/actionpack/test/fixtures/multipart/mona_lisa.jpg +0 -0
  449. data/rails/actionpack/test/fixtures/multipart/none +9 -0
  450. data/rails/actionpack/test/fixtures/multipart/single_parameter +5 -0
  451. data/rails/actionpack/test/fixtures/multipart/single_utf8_param +5 -0
  452. data/rails/actionpack/test/fixtures/multipart/text_file +10 -0
  453. data/rails/actionpack/test/fixtures/old_content_type/render_default_content_types_for_respond_to.xml.erb +1 -0
  454. data/rails/actionpack/test/fixtures/old_content_type/render_default_for_builder.builder +1 -0
  455. data/rails/actionpack/test/fixtures/old_content_type/render_default_for_erb.erb +1 -0
  456. data/rails/actionpack/test/fixtures/post_test/layouts/post.html.erb +1 -0
  457. data/rails/actionpack/test/fixtures/post_test/layouts/super_post.iphone.erb +1 -0
  458. data/rails/actionpack/test/fixtures/post_test/post/index.html.erb +1 -0
  459. data/rails/actionpack/test/fixtures/post_test/post/index.iphone.erb +1 -0
  460. data/rails/actionpack/test/fixtures/post_test/super_post/index.html.erb +1 -0
  461. data/rails/actionpack/test/fixtures/post_test/super_post/index.iphone.erb +1 -0
  462. data/rails/actionpack/test/fixtures/public/400.html +1 -0
  463. data/rails/actionpack/test/fixtures/public/404.html +1 -0
  464. data/rails/actionpack/test/fixtures/public/500.da.html +1 -0
  465. data/rails/actionpack/test/fixtures/public/500.html +1 -0
  466. data/rails/actionpack/test/fixtures/public/bar/index.html +1 -0
  467. data/rails/actionpack/test/fixtures/public/bar.html +1 -0
  468. data/rails/actionpack/test/fixtures/public/foo/bar.html +1 -0
  469. data/rails/actionpack/test/fixtures/public/foo/baz.css +3 -0
  470. data/rails/actionpack/test/fixtures/public/foo/index.html +1 -0
  471. data/rails/actionpack/test/fixtures/public/foo//343/201/223/343/202/223/343/201/253/343/201/241/343/201/257.html +1 -0
  472. data/rails/actionpack/test/fixtures/public/gzip/application-a71b3024f80aea3181c09774ca17e712.js +4 -0
  473. data/rails/actionpack/test/fixtures/public/gzip/application-a71b3024f80aea3181c09774ca17e712.js.gz +0 -0
  474. data/rails/actionpack/test/fixtures/public/gzip/foo.zoo +4 -0
  475. data/rails/actionpack/test/fixtures/public/gzip/foo.zoo.gz +0 -0
  476. data/rails/actionpack/test/fixtures/public/index.html +1 -0
  477. data/rails/actionpack/test/fixtures/respond_to/all_types_with_layout.html.erb +1 -0
  478. data/rails/actionpack/test/fixtures/respond_to/custom_constant_handling_without_block.mobile.erb +1 -0
  479. data/rails/actionpack/test/fixtures/respond_to/iphone_with_html_response_type.html.erb +1 -0
  480. data/rails/actionpack/test/fixtures/respond_to/iphone_with_html_response_type.iphone.erb +1 -0
  481. data/rails/actionpack/test/fixtures/respond_to/layouts/missing.html.erb +1 -0
  482. data/rails/actionpack/test/fixtures/respond_to/layouts/standard.html.erb +1 -0
  483. data/rails/actionpack/test/fixtures/respond_to/layouts/standard.iphone.erb +1 -0
  484. data/rails/actionpack/test/fixtures/respond_to/using_defaults.html.erb +1 -0
  485. data/rails/actionpack/test/fixtures/respond_to/using_defaults.xml.builder +1 -0
  486. data/rails/actionpack/test/fixtures/respond_to/using_defaults_with_all.html.erb +1 -0
  487. data/rails/actionpack/test/fixtures/respond_to/using_defaults_with_type_list.html.erb +1 -0
  488. data/rails/actionpack/test/fixtures/respond_to/using_defaults_with_type_list.xml.builder +1 -0
  489. data/rails/actionpack/test/fixtures/respond_to/variant_any_implicit_render.html+phablet.erb +1 -0
  490. data/rails/actionpack/test/fixtures/respond_to/variant_any_implicit_render.html+tablet.erb +1 -0
  491. data/rails/actionpack/test/fixtures/respond_to/variant_inline_syntax_without_block.html+phone.erb +1 -0
  492. data/rails/actionpack/test/fixtures/respond_to/variant_plus_none_for_format.html.erb +1 -0
  493. data/rails/actionpack/test/fixtures/respond_to/variant_with_implicit_rendering.html+mobile.erb +1 -0
  494. data/rails/actionpack/test/fixtures/ruby_template.ruby +2 -0
  495. data/rails/actionpack/test/fixtures/session_autoload_test/session_autoload_test/foo.rb +10 -0
  496. data/rails/actionpack/test/fixtures/shared.html.erb +1 -0
  497. data/rails/actionpack/test/fixtures/star_star_mime/index.js.erb +1 -0
  498. data/rails/actionpack/test/fixtures/symlink_parent/symlinked_layout.erb +5 -0
  499. data/rails/actionpack/test/fixtures/test/_partial.erb +1 -0
  500. data/rails/actionpack/test/fixtures/test/_partial.html.erb +1 -0
  501. data/rails/actionpack/test/fixtures/test/_partial.js.erb +1 -0
  502. data/rails/actionpack/test/fixtures/test/dot.directory/render_file_with_ivar.erb +1 -0
  503. data/rails/actionpack/test/fixtures/test/formatted_xml_erb.builder +1 -0
  504. data/rails/actionpack/test/fixtures/test/formatted_xml_erb.html.erb +1 -0
  505. data/rails/actionpack/test/fixtures/test/formatted_xml_erb.xml.erb +1 -0
  506. data/rails/actionpack/test/fixtures/test/hello/hello.erb +1 -0
  507. data/rails/actionpack/test/fixtures/test/hello_world.erb +1 -0
  508. data/rails/actionpack/test/fixtures/test/hello_world_with_partial.html.erb +2 -0
  509. data/rails/actionpack/test/fixtures/test/hello_xml_world.builder +11 -0
  510. data/rails/actionpack/test/fixtures/test/implicit_content_type.atom.builder +2 -0
  511. data/rails/actionpack/test/fixtures/test/render_file_with_ivar.erb +1 -0
  512. data/rails/actionpack/test/fixtures/test/render_file_with_locals.erb +1 -0
  513. data/rails/actionpack/test/fixtures//345/205/254/345/205/261/bar/index.html +1 -0
  514. data/rails/actionpack/test/fixtures//345/205/254/345/205/261/bar.html +1 -0
  515. data/rails/actionpack/test/fixtures//345/205/254/345/205/261/foo/bar.html +1 -0
  516. data/rails/actionpack/test/fixtures//345/205/254/345/205/261/foo/baz.css +3 -0
  517. data/rails/actionpack/test/fixtures//345/205/254/345/205/261/foo/index.html +1 -0
  518. data/rails/actionpack/test/fixtures//345/205/254/345/205/261/foo//343/201/223/343/202/223/343/201/253/343/201/241/343/201/257.html +1 -0
  519. data/rails/actionpack/test/fixtures//345/205/254/345/205/261/gzip/application-a71b3024f80aea3181c09774ca17e712.js +4 -0
  520. data/rails/actionpack/test/fixtures//345/205/254/345/205/261/gzip/application-a71b3024f80aea3181c09774ca17e712.js.gz +0 -0
  521. data/rails/actionpack/test/fixtures//345/205/254/345/205/261/gzip/foo.zoo +4 -0
  522. data/rails/actionpack/test/fixtures//345/205/254/345/205/261/gzip/foo.zoo.gz +0 -0
  523. data/rails/actionpack/test/fixtures//345/205/254/345/205/261/index.html +1 -0
  524. data/rails/actionpack/test/journey/gtg/builder_test.rb +79 -0
  525. data/rails/actionpack/test/journey/gtg/transition_table_test.rb +115 -0
  526. data/rails/actionpack/test/journey/nfa/simulator_test.rb +98 -0
  527. data/rails/actionpack/test/journey/nfa/transition_table_test.rb +72 -0
  528. data/rails/actionpack/test/journey/nodes/symbol_test.rb +17 -0
  529. data/rails/actionpack/test/journey/path/pattern_test.rb +284 -0
  530. data/rails/actionpack/test/journey/route/definition/parser_test.rb +110 -0
  531. data/rails/actionpack/test/journey/route/definition/scanner_test.rb +69 -0
  532. data/rails/actionpack/test/journey/route_test.rb +106 -0
  533. data/rails/actionpack/test/journey/router/utils_test.rb +38 -0
  534. data/rails/actionpack/test/journey/router_test.rb +622 -0
  535. data/rails/actionpack/test/journey/routes_test.rb +53 -0
  536. data/rails/actionpack/test/lib/controller/fake_controllers.rb +35 -0
  537. data/rails/actionpack/test/lib/controller/fake_models.rb +73 -0
  538. data/rails/actionpack/test/routing/helper_test.rb +45 -0
  539. data/rails/actionpack/test/tmp/.gitignore +0 -0
  540. data/rails/actionview/CHANGELOG.md +228 -0
  541. data/rails/actionview/MIT-LICENSE +21 -0
  542. data/rails/actionview/README.rdoc +39 -0
  543. data/rails/actionview/RUNNING_UNIT_TESTS.rdoc +27 -0
  544. data/rails/actionview/Rakefile +83 -0
  545. data/rails/actionview/actionview.gemspec +31 -0
  546. data/rails/actionview/lib/action_view/base.rb +205 -0
  547. data/rails/actionview/lib/action_view/buffers.rb +50 -0
  548. data/rails/actionview/lib/action_view/context.rb +36 -0
  549. data/rails/actionview/lib/action_view/dependency_tracker.rb +141 -0
  550. data/rails/actionview/lib/action_view/digestor.rb +122 -0
  551. data/rails/actionview/lib/action_view/flows.rb +76 -0
  552. data/rails/actionview/lib/action_view/gem_version.rb +15 -0
  553. data/rails/actionview/lib/action_view/helpers/active_model_helper.rb +49 -0
  554. data/rails/actionview/lib/action_view/helpers/asset_tag_helper.rb +329 -0
  555. data/rails/actionview/lib/action_view/helpers/asset_url_helper.rb +366 -0
  556. data/rails/actionview/lib/action_view/helpers/atom_feed_helper.rb +203 -0
  557. data/rails/actionview/lib/action_view/helpers/cache_helper.rb +200 -0
  558. data/rails/actionview/lib/action_view/helpers/capture_helper.rb +207 -0
  559. data/rails/actionview/lib/action_view/helpers/controller_helper.rb +25 -0
  560. data/rails/actionview/lib/action_view/helpers/csrf_helper.rb +33 -0
  561. data/rails/actionview/lib/action_view/helpers/date_helper.rb +1098 -0
  562. data/rails/actionview/lib/action_view/helpers/debug_helper.rb +35 -0
  563. data/rails/actionview/lib/action_view/helpers/form_helper.rb +1942 -0
  564. data/rails/actionview/lib/action_view/helpers/form_options_helper.rb +841 -0
  565. data/rails/actionview/lib/action_view/helpers/form_tag_helper.rb +877 -0
  566. data/rails/actionview/lib/action_view/helpers/javascript_helper.rb +81 -0
  567. data/rails/actionview/lib/action_view/helpers/number_helper.rb +432 -0
  568. data/rails/actionview/lib/action_view/helpers/output_safety_helper.rb +38 -0
  569. data/rails/actionview/lib/action_view/helpers/record_tag_helper.rb +108 -0
  570. data/rails/actionview/lib/action_view/helpers/rendering_helper.rb +98 -0
  571. data/rails/actionview/lib/action_view/helpers/sanitize_helper.rb +172 -0
  572. data/rails/actionview/lib/action_view/helpers/tag_helper.rb +188 -0
  573. data/rails/actionview/lib/action_view/helpers/tags/base.rb +155 -0
  574. data/rails/actionview/lib/action_view/helpers/tags/check_box.rb +64 -0
  575. data/rails/actionview/lib/action_view/helpers/tags/checkable.rb +16 -0
  576. data/rails/actionview/lib/action_view/helpers/tags/collection_check_boxes.rb +57 -0
  577. data/rails/actionview/lib/action_view/helpers/tags/collection_helpers.rb +85 -0
  578. data/rails/actionview/lib/action_view/helpers/tags/collection_radio_buttons.rb +36 -0
  579. data/rails/actionview/lib/action_view/helpers/tags/collection_select.rb +28 -0
  580. data/rails/actionview/lib/action_view/helpers/tags/color_field.rb +25 -0
  581. data/rails/actionview/lib/action_view/helpers/tags/date_field.rb +13 -0
  582. data/rails/actionview/lib/action_view/helpers/tags/date_select.rb +72 -0
  583. data/rails/actionview/lib/action_view/helpers/tags/datetime_field.rb +30 -0
  584. data/rails/actionview/lib/action_view/helpers/tags/datetime_local_field.rb +19 -0
  585. data/rails/actionview/lib/action_view/helpers/tags/datetime_select.rb +8 -0
  586. data/rails/actionview/lib/action_view/helpers/tags/email_field.rb +8 -0
  587. data/rails/actionview/lib/action_view/helpers/tags/file_field.rb +8 -0
  588. data/rails/actionview/lib/action_view/helpers/tags/grouped_collection_select.rb +29 -0
  589. data/rails/actionview/lib/action_view/helpers/tags/hidden_field.rb +8 -0
  590. data/rails/actionview/lib/action_view/helpers/tags/label.rb +79 -0
  591. data/rails/actionview/lib/action_view/helpers/tags/month_field.rb +13 -0
  592. data/rails/actionview/lib/action_view/helpers/tags/number_field.rb +18 -0
  593. data/rails/actionview/lib/action_view/helpers/tags/password_field.rb +12 -0
  594. data/rails/actionview/lib/action_view/helpers/tags/placeholderable.rb +22 -0
  595. data/rails/actionview/lib/action_view/helpers/tags/radio_button.rb +31 -0
  596. data/rails/actionview/lib/action_view/helpers/tags/range_field.rb +8 -0
  597. data/rails/actionview/lib/action_view/helpers/tags/search_field.rb +22 -0
  598. data/rails/actionview/lib/action_view/helpers/tags/select.rb +41 -0
  599. data/rails/actionview/lib/action_view/helpers/tags/tel_field.rb +8 -0
  600. data/rails/actionview/lib/action_view/helpers/tags/text_area.rb +22 -0
  601. data/rails/actionview/lib/action_view/helpers/tags/text_field.rb +33 -0
  602. data/rails/actionview/lib/action_view/helpers/tags/time_field.rb +13 -0
  603. data/rails/actionview/lib/action_view/helpers/tags/time_select.rb +8 -0
  604. data/rails/actionview/lib/action_view/helpers/tags/time_zone_select.rb +20 -0
  605. data/rails/actionview/lib/action_view/helpers/tags/translator.rb +40 -0
  606. data/rails/actionview/lib/action_view/helpers/tags/url_field.rb +8 -0
  607. data/rails/actionview/lib/action_view/helpers/tags/week_field.rb +13 -0
  608. data/rails/actionview/lib/action_view/helpers/tags.rb +42 -0
  609. data/rails/actionview/lib/action_view/helpers/text_helper.rb +467 -0
  610. data/rails/actionview/lib/action_view/helpers/translation_helper.rb +106 -0
  611. data/rails/actionview/lib/action_view/helpers/url_helper.rb +620 -0
  612. data/rails/actionview/lib/action_view/helpers.rb +64 -0
  613. data/rails/actionview/lib/action_view/layouts.rb +426 -0
  614. data/rails/actionview/lib/action_view/locale/en.yml +56 -0
  615. data/rails/actionview/lib/action_view/log_subscriber.rb +44 -0
  616. data/rails/actionview/lib/action_view/lookup_context.rb +255 -0
  617. data/rails/actionview/lib/action_view/model_naming.rb +12 -0
  618. data/rails/actionview/lib/action_view/path_set.rb +77 -0
  619. data/rails/actionview/lib/action_view/railtie.rb +49 -0
  620. data/rails/actionview/lib/action_view/record_identifier.rb +84 -0
  621. data/rails/actionview/lib/action_view/renderer/abstract_renderer.rb +49 -0
  622. data/rails/actionview/lib/action_view/renderer/partial_renderer.rb +548 -0
  623. data/rails/actionview/lib/action_view/renderer/renderer.rb +50 -0
  624. data/rails/actionview/lib/action_view/renderer/streaming_template_renderer.rb +103 -0
  625. data/rails/actionview/lib/action_view/renderer/template_renderer.rb +101 -0
  626. data/rails/actionview/lib/action_view/rendering.rb +146 -0
  627. data/rails/actionview/lib/action_view/routing_url_for.rb +134 -0
  628. data/rails/actionview/lib/action_view/tasks/dependencies.rake +21 -0
  629. data/rails/actionview/lib/action_view/template/error.rb +141 -0
  630. data/rails/actionview/lib/action_view/template/handlers/builder.rb +26 -0
  631. data/rails/actionview/lib/action_view/template/handlers/erb.rb +145 -0
  632. data/rails/actionview/lib/action_view/template/handlers/raw.rb +11 -0
  633. data/rails/actionview/lib/action_view/template/handlers.rb +62 -0
  634. data/rails/actionview/lib/action_view/template/html.rb +34 -0
  635. data/rails/actionview/lib/action_view/template/resolver.rb +349 -0
  636. data/rails/actionview/lib/action_view/template/text.rb +34 -0
  637. data/rails/actionview/lib/action_view/template/types.rb +57 -0
  638. data/rails/actionview/lib/action_view/template.rb +336 -0
  639. data/rails/actionview/lib/action_view/test_case.rb +278 -0
  640. data/rails/actionview/lib/action_view/testing/resolvers.rb +54 -0
  641. data/rails/actionview/lib/action_view/version.rb +8 -0
  642. data/rails/actionview/lib/action_view/view_paths.rb +111 -0
  643. data/rails/actionview/lib/action_view.rb +96 -0
  644. data/rails/actionview/test/abstract_unit.rb +345 -0
  645. data/rails/actionview/test/actionpack/abstract/abstract_controller_test.rb +310 -0
  646. data/rails/actionview/test/actionpack/abstract/helper_test.rb +127 -0
  647. data/rails/actionview/test/actionpack/abstract/layouts_test.rb +384 -0
  648. data/rails/actionview/test/actionpack/abstract/render_test.rb +103 -0
  649. data/rails/actionview/test/actionpack/abstract/views/abstract_controller/testing/me3/formatted.html.erb +1 -0
  650. data/rails/actionview/test/actionpack/abstract/views/abstract_controller/testing/me3/index.erb +1 -0
  651. data/rails/actionview/test/actionpack/abstract/views/abstract_controller/testing/me4/index.erb +1 -0
  652. data/rails/actionview/test/actionpack/abstract/views/abstract_controller/testing/me5/index.erb +1 -0
  653. data/rails/actionview/test/actionpack/abstract/views/action_with_ivars.erb +1 -0
  654. data/rails/actionview/test/actionpack/abstract/views/helper_test.erb +1 -0
  655. data/rails/actionview/test/actionpack/abstract/views/index.erb +1 -0
  656. data/rails/actionview/test/actionpack/abstract/views/layouts/abstract_controller/testing/me4.erb +1 -0
  657. data/rails/actionview/test/actionpack/abstract/views/layouts/application.erb +1 -0
  658. data/rails/actionview/test/actionpack/abstract/views/naked_render.erb +1 -0
  659. data/rails/actionview/test/actionpack/controller/capture_test.rb +81 -0
  660. data/rails/actionview/test/actionpack/controller/layout_test.rb +269 -0
  661. data/rails/actionview/test/actionpack/controller/render_test.rb +1344 -0
  662. data/rails/actionview/test/actionpack/controller/view_paths_test.rb +174 -0
  663. data/rails/actionview/test/active_record_unit.rb +91 -0
  664. data/rails/actionview/test/activerecord/controller_runtime_test.rb +93 -0
  665. data/rails/actionview/test/activerecord/debug_helper_test.rb +8 -0
  666. data/rails/actionview/test/activerecord/form_helper_activerecord_test.rb +92 -0
  667. data/rails/actionview/test/activerecord/polymorphic_routes_test.rb +733 -0
  668. data/rails/actionview/test/activerecord/render_partial_with_record_identification_test.rb +210 -0
  669. data/rails/actionview/test/fixtures/_top_level_partial.html.erb +1 -0
  670. data/rails/actionview/test/fixtures/_top_level_partial_only.erb +1 -0
  671. data/rails/actionview/test/fixtures/actionpack/bad_customers/_bad_customer.html.erb +1 -0
  672. data/rails/actionview/test/fixtures/actionpack/customers/_customer.html.erb +1 -0
  673. data/rails/actionview/test/fixtures/actionpack/fun/games/_form.erb +1 -0
  674. data/rails/actionview/test/fixtures/actionpack/fun/games/hello_world.erb +1 -0
  675. data/rails/actionview/test/fixtures/actionpack/good_customers/_good_customer.html.erb +1 -0
  676. data/rails/actionview/test/fixtures/actionpack/hello.html +1 -0
  677. data/rails/actionview/test/fixtures/actionpack/layout_tests/alt/layouts/alt.erb +0 -0
  678. data/rails/actionview/test/fixtures/actionpack/layout_tests/layouts/controller_name_space/nested.erb +1 -0
  679. data/rails/actionview/test/fixtures/actionpack/layout_tests/layouts/item.erb +1 -0
  680. data/rails/actionview/test/fixtures/actionpack/layout_tests/layouts/layout_test.erb +1 -0
  681. data/rails/actionview/test/fixtures/actionpack/layout_tests/layouts/multiple_extensions.html.erb +1 -0
  682. data/rails/actionview/test/fixtures/actionpack/layout_tests/layouts/symlinked/symlinked_layout.erb +5 -0
  683. data/rails/actionview/test/fixtures/actionpack/layout_tests/layouts/third_party_template_library.mab +1 -0
  684. data/rails/actionview/test/fixtures/actionpack/layout_tests/views/goodbye.erb +1 -0
  685. data/rails/actionview/test/fixtures/actionpack/layout_tests/views/hello.erb +1 -0
  686. data/rails/actionview/test/fixtures/actionpack/layouts/_column.html.erb +2 -0
  687. data/rails/actionview/test/fixtures/actionpack/layouts/_customers.erb +1 -0
  688. data/rails/actionview/test/fixtures/actionpack/layouts/_partial_and_yield.erb +2 -0
  689. data/rails/actionview/test/fixtures/actionpack/layouts/_yield_only.erb +1 -0
  690. data/rails/actionview/test/fixtures/actionpack/layouts/_yield_with_params.erb +1 -0
  691. data/rails/actionview/test/fixtures/actionpack/layouts/block_with_layout.erb +3 -0
  692. data/rails/actionview/test/fixtures/actionpack/layouts/builder.builder +3 -0
  693. data/rails/actionview/test/fixtures/actionpack/layouts/partial_with_layout.erb +3 -0
  694. data/rails/actionview/test/fixtures/actionpack/layouts/standard.html.erb +1 -0
  695. data/rails/actionview/test/fixtures/actionpack/layouts/streaming.erb +4 -0
  696. data/rails/actionview/test/fixtures/actionpack/layouts/talk_from_action.erb +2 -0
  697. data/rails/actionview/test/fixtures/actionpack/layouts/with_html_partial.html.erb +1 -0
  698. data/rails/actionview/test/fixtures/actionpack/layouts/xhr.html.erb +2 -0
  699. data/rails/actionview/test/fixtures/actionpack/layouts/yield.erb +2 -0
  700. data/rails/actionview/test/fixtures/actionpack/layouts/yield_with_render_inline_inside.erb +2 -0
  701. data/rails/actionview/test/fixtures/actionpack/layouts/yield_with_render_partial_inside.erb +2 -0
  702. data/rails/actionview/test/fixtures/actionpack/quiz/questions/_question.html.erb +1 -0
  703. data/rails/actionview/test/fixtures/actionpack/shared.html.erb +1 -0
  704. data/rails/actionview/test/fixtures/actionpack/test/_changing_priority.html.erb +1 -0
  705. data/rails/actionview/test/fixtures/actionpack/test/_changing_priority.json.erb +1 -0
  706. data/rails/actionview/test/fixtures/actionpack/test/_counter.html.erb +1 -0
  707. data/rails/actionview/test/fixtures/actionpack/test/_customer.erb +1 -0
  708. data/rails/actionview/test/fixtures/actionpack/test/_customer_counter.erb +1 -0
  709. data/rails/actionview/test/fixtures/actionpack/test/_customer_counter_with_as.erb +1 -0
  710. data/rails/actionview/test/fixtures/actionpack/test/_customer_greeting.erb +1 -0
  711. data/rails/actionview/test/fixtures/actionpack/test/_customer_iteration.erb +1 -0
  712. data/rails/actionview/test/fixtures/actionpack/test/_customer_iteration_with_as.erb +1 -0
  713. data/rails/actionview/test/fixtures/actionpack/test/_customer_with_var.erb +1 -0
  714. data/rails/actionview/test/fixtures/actionpack/test/_directory/_partial_with_locales.html.erb +1 -0
  715. data/rails/actionview/test/fixtures/actionpack/test/_first_json_partial.json.erb +1 -0
  716. data/rails/actionview/test/fixtures/actionpack/test/_form.erb +1 -0
  717. data/rails/actionview/test/fixtures/actionpack/test/_hash_greeting.erb +1 -0
  718. data/rails/actionview/test/fixtures/actionpack/test/_hash_object.erb +2 -0
  719. data/rails/actionview/test/fixtures/actionpack/test/_hello.builder +1 -0
  720. data/rails/actionview/test/fixtures/actionpack/test/_json_change_priority.json.erb +0 -0
  721. data/rails/actionview/test/fixtures/actionpack/test/_labelling_form.erb +1 -0
  722. data/rails/actionview/test/fixtures/actionpack/test/_layout_for_partial.html.erb +3 -0
  723. data/rails/actionview/test/fixtures/actionpack/test/_partial.erb +1 -0
  724. data/rails/actionview/test/fixtures/actionpack/test/_partial.html.erb +1 -0
  725. data/rails/actionview/test/fixtures/actionpack/test/_partial.js.erb +1 -0
  726. data/rails/actionview/test/fixtures/actionpack/test/_partial_for_use_in_layout.html.erb +1 -0
  727. data/rails/actionview/test/fixtures/actionpack/test/_partial_html_erb.html.erb +1 -0
  728. data/rails/actionview/test/fixtures/actionpack/test/_partial_name_local_variable.erb +1 -0
  729. data/rails/actionview/test/fixtures/actionpack/test/_partial_only.erb +1 -0
  730. data/rails/actionview/test/fixtures/actionpack/test/_partial_only_html.html +1 -0
  731. data/rails/actionview/test/fixtures/actionpack/test/_partial_with_partial.erb +2 -0
  732. data/rails/actionview/test/fixtures/actionpack/test/_person.erb +2 -0
  733. data/rails/actionview/test/fixtures/actionpack/test/_raise_indentation.html.erb +13 -0
  734. data/rails/actionview/test/fixtures/actionpack/test/_second_json_partial.json.erb +1 -0
  735. data/rails/actionview/test/fixtures/actionpack/test/action_talk_to_layout.erb +2 -0
  736. data/rails/actionview/test/fixtures/actionpack/test/calling_partial_with_layout.html.erb +1 -0
  737. data/rails/actionview/test/fixtures/actionpack/test/capturing.erb +4 -0
  738. data/rails/actionview/test/fixtures/actionpack/test/change_priority.html.erb +2 -0
  739. data/rails/actionview/test/fixtures/actionpack/test/content_for.erb +1 -0
  740. data/rails/actionview/test/fixtures/actionpack/test/content_for_concatenated.erb +3 -0
  741. data/rails/actionview/test/fixtures/actionpack/test/content_for_with_parameter.erb +2 -0
  742. data/rails/actionview/test/fixtures/actionpack/test/dot.directory/render_file_with_ivar.erb +1 -0
  743. data/rails/actionview/test/fixtures/actionpack/test/formatted_html_erb.html.erb +1 -0
  744. data/rails/actionview/test/fixtures/actionpack/test/formatted_xml_erb.builder +1 -0
  745. data/rails/actionview/test/fixtures/actionpack/test/formatted_xml_erb.html.erb +1 -0
  746. data/rails/actionview/test/fixtures/actionpack/test/formatted_xml_erb.xml.erb +1 -0
  747. data/rails/actionview/test/fixtures/actionpack/test/greeting.html.erb +1 -0
  748. data/rails/actionview/test/fixtures/actionpack/test/greeting.xml.erb +1 -0
  749. data/rails/actionview/test/fixtures/actionpack/test/hello/hello.erb +1 -0
  750. data/rails/actionview/test/fixtures/actionpack/test/hello,world.erb +1 -0
  751. data/rails/actionview/test/fixtures/actionpack/test/hello.builder +4 -0
  752. data/rails/actionview/test/fixtures/actionpack/test/hello_world.erb +1 -0
  753. data/rails/actionview/test/fixtures/actionpack/test/hello_world_container.builder +3 -0
  754. data/rails/actionview/test/fixtures/actionpack/test/hello_world_from_rxml.builder +3 -0
  755. data/rails/actionview/test/fixtures/actionpack/test/hello_world_with_layout_false.erb +1 -0
  756. data/rails/actionview/test/fixtures/actionpack/test/hello_world_with_partial.html.erb +2 -0
  757. data/rails/actionview/test/fixtures/actionpack/test/hello_xml_world.builder +11 -0
  758. data/rails/actionview/test/fixtures/actionpack/test/html_template.html.erb +1 -0
  759. data/rails/actionview/test/fixtures/actionpack/test/hyphen-ated.erb +1 -0
  760. data/rails/actionview/test/fixtures/actionpack/test/implicit_content_type.atom.builder +2 -0
  761. data/rails/actionview/test/fixtures/actionpack/test/list.erb +1 -0
  762. data/rails/actionview/test/fixtures/actionpack/test/non_erb_block_content_for.builder +4 -0
  763. data/rails/actionview/test/fixtures/actionpack/test/potential_conflicts.erb +4 -0
  764. data/rails/actionview/test/fixtures/actionpack/test/proper_block_detection.erb +1 -0
  765. data/rails/actionview/test/fixtures/actionpack/test/render_file_from_template.html.erb +1 -0
  766. data/rails/actionview/test/fixtures/actionpack/test/render_file_with_ivar.erb +1 -0
  767. data/rails/actionview/test/fixtures/actionpack/test/render_file_with_locals.erb +1 -0
  768. data/rails/actionview/test/fixtures/actionpack/test/render_file_with_locals_and_default.erb +1 -0
  769. data/rails/actionview/test/fixtures/actionpack/test/render_implicit_html_template_from_xhr_request.da.html.erb +1 -0
  770. data/rails/actionview/test/fixtures/actionpack/test/render_implicit_html_template_from_xhr_request.html.erb +1 -0
  771. data/rails/actionview/test/fixtures/actionpack/test/render_implicit_js_template_without_layout.js.erb +1 -0
  772. data/rails/actionview/test/fixtures/actionpack/test/render_partial_inside_directory.html.erb +1 -0
  773. data/rails/actionview/test/fixtures/actionpack/test/render_to_string_test.erb +1 -0
  774. data/rails/actionview/test/fixtures/actionpack/test/render_two_partials.html.erb +2 -0
  775. data/rails/actionview/test/fixtures/actionpack/test/using_layout_around_block.html.erb +1 -0
  776. data/rails/actionview/test/fixtures/actionpack/test/with_html_partial.html.erb +1 -0
  777. data/rails/actionview/test/fixtures/actionpack/test/with_partial.html.erb +1 -0
  778. data/rails/actionview/test/fixtures/actionpack/test/with_partial.text.erb +1 -0
  779. data/rails/actionview/test/fixtures/actionpack/test/with_xml_template.html.erb +1 -0
  780. data/rails/actionview/test/fixtures/blog_public/.gitignore +1 -0
  781. data/rails/actionview/test/fixtures/blog_public/blog.html +1 -0
  782. data/rails/actionview/test/fixtures/blog_public/index.html +1 -0
  783. data/rails/actionview/test/fixtures/blog_public/subdir/index.html +1 -0
  784. data/rails/actionview/test/fixtures/comments/empty.de.html.erb +1 -0
  785. data/rails/actionview/test/fixtures/comments/empty.html.builder +1 -0
  786. data/rails/actionview/test/fixtures/comments/empty.html.erb +1 -0
  787. data/rails/actionview/test/fixtures/comments/empty.xml.erb +1 -0
  788. data/rails/actionview/test/fixtures/companies.yml +24 -0
  789. data/rails/actionview/test/fixtures/company.rb +9 -0
  790. data/rails/actionview/test/fixtures/custom_pattern/another.html.erb +1 -0
  791. data/rails/actionview/test/fixtures/custom_pattern/html/another.erb +1 -0
  792. data/rails/actionview/test/fixtures/custom_pattern/html/path.erb +1 -0
  793. data/rails/actionview/test/fixtures/customers/_customer.html.erb +1 -0
  794. data/rails/actionview/test/fixtures/customers/_customer.xml.erb +1 -0
  795. data/rails/actionview/test/fixtures/db_definitions/sqlite.sql +49 -0
  796. data/rails/actionview/test/fixtures/developer.rb +6 -0
  797. data/rails/actionview/test/fixtures/developers/_developer.erb +1 -0
  798. data/rails/actionview/test/fixtures/developers.yml +21 -0
  799. data/rails/actionview/test/fixtures/developers_projects.yml +13 -0
  800. data/rails/actionview/test/fixtures/digestor/comments/_comment.html.erb +1 -0
  801. data/rails/actionview/test/fixtures/digestor/comments/_comments.html.erb +1 -0
  802. data/rails/actionview/test/fixtures/digestor/events/_event.html.erb +0 -0
  803. data/rails/actionview/test/fixtures/digestor/level/_recursion.html.erb +1 -0
  804. data/rails/actionview/test/fixtures/digestor/level/below/_header.html.erb +0 -0
  805. data/rails/actionview/test/fixtures/digestor/level/below/index.html.erb +1 -0
  806. data/rails/actionview/test/fixtures/digestor/level/recursion.html.erb +1 -0
  807. data/rails/actionview/test/fixtures/digestor/messages/_form.html.erb +0 -0
  808. data/rails/actionview/test/fixtures/digestor/messages/_header.html.erb +0 -0
  809. data/rails/actionview/test/fixtures/digestor/messages/_message.html.erb +1 -0
  810. data/rails/actionview/test/fixtures/digestor/messages/actions/_move.html.erb +0 -0
  811. data/rails/actionview/test/fixtures/digestor/messages/edit.html.erb +5 -0
  812. data/rails/actionview/test/fixtures/digestor/messages/index.html.erb +2 -0
  813. data/rails/actionview/test/fixtures/digestor/messages/new.html+iphone.erb +15 -0
  814. data/rails/actionview/test/fixtures/digestor/messages/show.html.erb +14 -0
  815. data/rails/actionview/test/fixtures/fun/games/_game.erb +1 -0
  816. data/rails/actionview/test/fixtures/fun/games/hello_world.erb +1 -0
  817. data/rails/actionview/test/fixtures/fun/serious/games/_game.erb +1 -0
  818. data/rails/actionview/test/fixtures/functional_caching/fragment_cached_without_digest.html.erb +3 -0
  819. data/rails/actionview/test/fixtures/games/_game.erb +1 -0
  820. data/rails/actionview/test/fixtures/good_customers/_good_customer.html.erb +1 -0
  821. data/rails/actionview/test/fixtures/happy_path/render_action/hello_world.erb +1 -0
  822. data/rails/actionview/test/fixtures/helpers/abc_helper.rb +3 -0
  823. data/rails/actionview/test/fixtures/helpers/helpery_test_helper.rb +5 -0
  824. data/rails/actionview/test/fixtures/helpers_missing/invalid_require_helper.rb +5 -0
  825. data/rails/actionview/test/fixtures/layout_tests/alt/hello.erb +1 -0
  826. data/rails/actionview/test/fixtures/layouts/_column.html.erb +2 -0
  827. data/rails/actionview/test/fixtures/layouts/_customers.erb +1 -0
  828. data/rails/actionview/test/fixtures/layouts/_partial_and_yield.erb +2 -0
  829. data/rails/actionview/test/fixtures/layouts/_yield_only.erb +1 -0
  830. data/rails/actionview/test/fixtures/layouts/_yield_with_params.erb +1 -0
  831. data/rails/actionview/test/fixtures/layouts/streaming.erb +4 -0
  832. data/rails/actionview/test/fixtures/layouts/yield.erb +2 -0
  833. data/rails/actionview/test/fixtures/layouts/yield_with_render_inline_inside.erb +2 -0
  834. data/rails/actionview/test/fixtures/layouts/yield_with_render_partial_inside.erb +2 -0
  835. data/rails/actionview/test/fixtures/mascot.rb +3 -0
  836. data/rails/actionview/test/fixtures/mascots/_mascot.html.erb +1 -0
  837. data/rails/actionview/test/fixtures/mascots.yml +4 -0
  838. data/rails/actionview/test/fixtures/multipart/bracketed_utf8_param +5 -0
  839. data/rails/actionview/test/fixtures/multipart/single_utf8_param +5 -0
  840. data/rails/actionview/test/fixtures/override/test/hello_world.erb +1 -0
  841. data/rails/actionview/test/fixtures/override2/layouts/test/sub.erb +1 -0
  842. data/rails/actionview/test/fixtures/plain_text.raw +1 -0
  843. data/rails/actionview/test/fixtures/plain_text_with_characters.raw +1 -0
  844. data/rails/actionview/test/fixtures/project.rb +3 -0
  845. data/rails/actionview/test/fixtures/projects/_project.erb +1 -0
  846. data/rails/actionview/test/fixtures/projects.yml +7 -0
  847. data/rails/actionview/test/fixtures/public/.gitignore +1 -0
  848. data/rails/actionview/test/fixtures/public/elsewhere/cools.js +1 -0
  849. data/rails/actionview/test/fixtures/public/elsewhere/file.css +1 -0
  850. data/rails/actionview/test/fixtures/public/foo/baz.css +3 -0
  851. data/rails/actionview/test/fixtures/public/javascripts/application.js +1 -0
  852. data/rails/actionview/test/fixtures/public/javascripts/bank.js +1 -0
  853. data/rails/actionview/test/fixtures/public/javascripts/common.javascript +1 -0
  854. data/rails/actionview/test/fixtures/public/javascripts/controls.js +1 -0
  855. data/rails/actionview/test/fixtures/public/javascripts/dragdrop.js +1 -0
  856. data/rails/actionview/test/fixtures/public/javascripts/effects.js +1 -0
  857. data/rails/actionview/test/fixtures/public/javascripts/prototype.js +1 -0
  858. data/rails/actionview/test/fixtures/public/javascripts/robber.js +1 -0
  859. data/rails/actionview/test/fixtures/public/javascripts/subdir/subdir.js +1 -0
  860. data/rails/actionview/test/fixtures/public/javascripts/version.1.0.js +1 -0
  861. data/rails/actionview/test/fixtures/public/stylesheets/bank.css +1 -0
  862. data/rails/actionview/test/fixtures/public/stylesheets/random.styles +1 -0
  863. data/rails/actionview/test/fixtures/public/stylesheets/robber.css +1 -0
  864. data/rails/actionview/test/fixtures/public/stylesheets/subdir/subdir.css +1 -0
  865. data/rails/actionview/test/fixtures/public/stylesheets/version.1.0.css +1 -0
  866. data/rails/actionview/test/fixtures/replies/_reply.erb +1 -0
  867. data/rails/actionview/test/fixtures/replies.yml +15 -0
  868. data/rails/actionview/test/fixtures/reply.rb +7 -0
  869. data/rails/actionview/test/fixtures/respond_to/using_defaults_with_all.html.erb +1 -0
  870. data/rails/actionview/test/fixtures/ruby_template.ruby +2 -0
  871. data/rails/actionview/test/fixtures/scope/test/modgreet.erb +1 -0
  872. data/rails/actionview/test/fixtures/shared.html.erb +1 -0
  873. data/rails/actionview/test/fixtures/test/_200.html.erb +1 -0
  874. data/rails/actionview/test/fixtures/test/_b_layout_for_partial.html.erb +1 -0
  875. data/rails/actionview/test/fixtures/test/_b_layout_for_partial_with_object.html.erb +1 -0
  876. data/rails/actionview/test/fixtures/test/_b_layout_for_partial_with_object_counter.html.erb +1 -0
  877. data/rails/actionview/test/fixtures/test/_changing_priority.html.erb +1 -0
  878. data/rails/actionview/test/fixtures/test/_changing_priority.json.erb +1 -0
  879. data/rails/actionview/test/fixtures/test/_content_tag_nested_in_content_tag.erb +3 -0
  880. data/rails/actionview/test/fixtures/test/_counter.html.erb +1 -0
  881. data/rails/actionview/test/fixtures/test/_customer.erb +1 -0
  882. data/rails/actionview/test/fixtures/test/_customer_greeting.erb +1 -0
  883. data/rails/actionview/test/fixtures/test/_customer_with_var.erb +1 -0
  884. data/rails/actionview/test/fixtures/test/_directory/_partial_with_locales.html.erb +1 -0
  885. data/rails/actionview/test/fixtures/test/_first_json_partial.json.erb +1 -0
  886. data/rails/actionview/test/fixtures/test/_from_helper.erb +1 -0
  887. data/rails/actionview/test/fixtures/test/_json_change_priority.json.erb +0 -0
  888. data/rails/actionview/test/fixtures/test/_label_with_block.erb +4 -0
  889. data/rails/actionview/test/fixtures/test/_layout_for_block_with_args.html.erb +3 -0
  890. data/rails/actionview/test/fixtures/test/_layout_for_partial.html.erb +3 -0
  891. data/rails/actionview/test/fixtures/test/_layout_with_partial_and_yield.html.erb +4 -0
  892. data/rails/actionview/test/fixtures/test/_local_inspector.html.erb +1 -0
  893. data/rails/actionview/test/fixtures/test/_object_inspector.erb +1 -0
  894. data/rails/actionview/test/fixtures/test/_one.html.erb +1 -0
  895. data/rails/actionview/test/fixtures/test/_partial.erb +1 -0
  896. data/rails/actionview/test/fixtures/test/_partial.html.erb +1 -0
  897. data/rails/actionview/test/fixtures/test/_partial.js.erb +1 -0
  898. data/rails/actionview/test/fixtures/test/_partial_for_use_in_layout.html.erb +1 -0
  899. data/rails/actionview/test/fixtures/test/_partial_name_local_variable.erb +1 -0
  900. data/rails/actionview/test/fixtures/test/_partial_only.erb +1 -0
  901. data/rails/actionview/test/fixtures/test/_partial_with_layout.erb +2 -0
  902. data/rails/actionview/test/fixtures/test/_partial_with_layout_block_content.erb +4 -0
  903. data/rails/actionview/test/fixtures/test/_partial_with_layout_block_partial.erb +4 -0
  904. data/rails/actionview/test/fixtures/test/_partial_with_only_html_version.html.erb +1 -0
  905. data/rails/actionview/test/fixtures/test/_partial_with_partial.erb +2 -0
  906. data/rails/actionview/test/fixtures/test/_raise.html.erb +1 -0
  907. data/rails/actionview/test/fixtures/test/_raise_indentation.html.erb +13 -0
  908. data/rails/actionview/test/fixtures/test/_second_json_partial.json.erb +1 -0
  909. data/rails/actionview/test/fixtures/test/_two.html.erb +1 -0
  910. data/rails/actionview/test/fixtures/test/_utf8_partial.html.erb +1 -0
  911. data/rails/actionview/test/fixtures/test/_utf8_partial_magic.html.erb +2 -0
  912. data/rails/actionview/test/fixtures/test/basic.html.erb +1 -0
  913. data/rails/actionview/test/fixtures/test/calling_partial_with_layout.html.erb +1 -0
  914. data/rails/actionview/test/fixtures/test/change_priority.html.erb +2 -0
  915. data/rails/actionview/test/fixtures/test/dont_pick_me +1 -0
  916. data/rails/actionview/test/fixtures/test/dot.directory/render_file_with_ivar.erb +1 -0
  917. data/rails/actionview/test/fixtures/test/greeting.xml.erb +1 -0
  918. data/rails/actionview/test/fixtures/test/hello/hello.erb +1 -0
  919. data/rails/actionview/test/fixtures/test/hello.builder +4 -0
  920. data/rails/actionview/test/fixtures/test/hello_world.da.html.erb +1 -0
  921. data/rails/actionview/test/fixtures/test/hello_world.erb +1 -0
  922. data/rails/actionview/test/fixtures/test/hello_world.erb~ +1 -0
  923. data/rails/actionview/test/fixtures/test/hello_world.html+phone.erb +1 -0
  924. data/rails/actionview/test/fixtures/test/hello_world.pt-BR.html.erb +1 -0
  925. data/rails/actionview/test/fixtures/test/hello_world.text+phone.erb +1 -0
  926. data/rails/actionview/test/fixtures/test/hello_world_with_partial.html.erb +2 -0
  927. data/rails/actionview/test/fixtures/test/html_template.html.erb +1 -0
  928. data/rails/actionview/test/fixtures/test/layout_render_file.erb +2 -0
  929. data/rails/actionview/test/fixtures/test/layout_render_object.erb +1 -0
  930. data/rails/actionview/test/fixtures/test/list.erb +1 -0
  931. data/rails/actionview/test/fixtures/test/malformed/malformed.en.html.erb~ +1 -0
  932. data/rails/actionview/test/fixtures/test/malformed/malformed.erb~ +1 -0
  933. data/rails/actionview/test/fixtures/test/malformed/malformed.html.erb~ +1 -0
  934. data/rails/actionview/test/fixtures/test/malformed/malformed~ +1 -0
  935. data/rails/actionview/test/fixtures/test/nested_layout.erb +3 -0
  936. data/rails/actionview/test/fixtures/test/nested_streaming.erb +3 -0
  937. data/rails/actionview/test/fixtures/test/nil_return.erb +1 -0
  938. data/rails/actionview/test/fixtures/test/one.html.erb +1 -0
  939. data/rails/actionview/test/fixtures/test/render_file_with_ivar.erb +1 -0
  940. data/rails/actionview/test/fixtures/test/render_file_with_locals.erb +1 -0
  941. data/rails/actionview/test/fixtures/test/render_file_with_locals_and_default.erb +1 -0
  942. data/rails/actionview/test/fixtures/test/render_partial_inside_directory.html.erb +1 -0
  943. data/rails/actionview/test/fixtures/test/render_two_partials.html.erb +2 -0
  944. data/rails/actionview/test/fixtures/test/streaming.erb +3 -0
  945. data/rails/actionview/test/fixtures/test/streaming_buster.erb +3 -0
  946. data/rails/actionview/test/fixtures/test/sub_template_raise.html.erb +1 -0
  947. data/rails/actionview/test/fixtures/test/template.erb +1 -0
  948. data/rails/actionview/test/fixtures/test/update_element_with_capture.erb +9 -0
  949. data/rails/actionview/test/fixtures/test/utf8.html.erb +4 -0
  950. data/rails/actionview/test/fixtures/test/utf8_magic.html.erb +5 -0
  951. data/rails/actionview/test/fixtures/test/utf8_magic_with_bare_partial.html.erb +5 -0
  952. data/rails/actionview/test/fixtures/topic.rb +3 -0
  953. data/rails/actionview/test/fixtures/topics/_topic.html.erb +1 -0
  954. data/rails/actionview/test/fixtures/topics.yml +22 -0
  955. data/rails/actionview/test/fixtures/translations/templates/array.erb +1 -0
  956. data/rails/actionview/test/fixtures/translations/templates/default.erb +1 -0
  957. data/rails/actionview/test/fixtures/translations/templates/found.erb +1 -0
  958. data/rails/actionview/test/fixtures/translations/templates/missing.erb +1 -0
  959. data/rails/actionview/test/fixtures/with_format.json.erb +1 -0
  960. data/rails/actionview/test/lib/controller/fake_models.rb +201 -0
  961. data/rails/actionview/test/template/active_model_helper_test.rb +99 -0
  962. data/rails/actionview/test/template/asset_tag_helper_test.rb +796 -0
  963. data/rails/actionview/test/template/atom_feed_helper_test.rb +349 -0
  964. data/rails/actionview/test/template/capture_helper_test.rb +219 -0
  965. data/rails/actionview/test/template/compiled_templates_test.rb +59 -0
  966. data/rails/actionview/test/template/date_helper_i18n_test.rb +148 -0
  967. data/rails/actionview/test/template/date_helper_test.rb +3228 -0
  968. data/rails/actionview/test/template/dependency_tracker_test.rb +196 -0
  969. data/rails/actionview/test/template/digestor_test.rb +312 -0
  970. data/rails/actionview/test/template/erb/form_for_test.rb +11 -0
  971. data/rails/actionview/test/template/erb/helper.rb +24 -0
  972. data/rails/actionview/test/template/erb/tag_helper_test.rb +30 -0
  973. data/rails/actionview/test/template/erb_util_test.rb +107 -0
  974. data/rails/actionview/test/template/form_collections_helper_test.rb +459 -0
  975. data/rails/actionview/test/template/form_helper_test.rb +3461 -0
  976. data/rails/actionview/test/template/form_options_helper_i18n_test.rb +27 -0
  977. data/rails/actionview/test/template/form_options_helper_test.rb +1358 -0
  978. data/rails/actionview/test/template/form_tag_helper_test.rb +656 -0
  979. data/rails/actionview/test/template/html_test.rb +17 -0
  980. data/rails/actionview/test/template/javascript_helper_test.rb +69 -0
  981. data/rails/actionview/test/template/log_subscriber_test.rb +91 -0
  982. data/rails/actionview/test/template/lookup_context_test.rb +282 -0
  983. data/rails/actionview/test/template/number_helper_test.rb +197 -0
  984. data/rails/actionview/test/template/output_safety_helper_test.rb +35 -0
  985. data/rails/actionview/test/template/partial_iteration_test.rb +33 -0
  986. data/rails/actionview/test/template/record_identifier_test.rb +49 -0
  987. data/rails/actionview/test/template/record_tag_helper_test.rb +117 -0
  988. data/rails/actionview/test/template/render_test.rb +600 -0
  989. data/rails/actionview/test/template/resolver_patterns_test.rb +31 -0
  990. data/rails/actionview/test/template/sanitize_helper_test.rb +35 -0
  991. data/rails/actionview/test/template/streaming_render_test.rb +108 -0
  992. data/rails/actionview/test/template/tag_helper_test.rb +166 -0
  993. data/rails/actionview/test/template/template_error_test.rb +20 -0
  994. data/rails/actionview/test/template/template_test.rb +200 -0
  995. data/rails/actionview/test/template/test_case_test.rb +378 -0
  996. data/rails/actionview/test/template/test_test.rb +92 -0
  997. data/rails/actionview/test/template/testing/fixture_resolver_test.rb +18 -0
  998. data/rails/actionview/test/template/testing/null_resolver_test.rb +12 -0
  999. data/rails/actionview/test/template/text_helper_test.rb +510 -0
  1000. data/rails/actionview/test/template/text_test.rb +17 -0
  1001. data/rails/actionview/test/template/translation_helper_test.rb +193 -0
  1002. data/rails/actionview/test/template/url_helper_test.rb +798 -0
  1003. data/rails/actionview/test/tmp/.gitkeep +0 -0
  1004. data/rails/activejob/.gitignore +1 -0
  1005. data/rails/activejob/CHANGELOG.md +7 -0
  1006. data/rails/activejob/MIT-LICENSE +21 -0
  1007. data/rails/activejob/README.md +131 -0
  1008. data/rails/activejob/Rakefile +90 -0
  1009. data/rails/activejob/activejob.gemspec +23 -0
  1010. data/rails/activejob/lib/active_job/arguments.rb +144 -0
  1011. data/rails/activejob/lib/active_job/base.rb +66 -0
  1012. data/rails/activejob/lib/active_job/callbacks.rb +146 -0
  1013. data/rails/activejob/lib/active_job/configured_job.rb +16 -0
  1014. data/rails/activejob/lib/active_job/core.rb +88 -0
  1015. data/rails/activejob/lib/active_job/enqueuing.rb +77 -0
  1016. data/rails/activejob/lib/active_job/execution.rb +42 -0
  1017. data/rails/activejob/lib/active_job/gem_version.rb +15 -0
  1018. data/rails/activejob/lib/active_job/logging.rb +107 -0
  1019. data/rails/activejob/lib/active_job/queue_adapter.rb +35 -0
  1020. data/rails/activejob/lib/active_job/queue_adapters/backburner_adapter.rb +36 -0
  1021. data/rails/activejob/lib/active_job/queue_adapters/delayed_job_adapter.rb +39 -0
  1022. data/rails/activejob/lib/active_job/queue_adapters/inline_adapter.rb +23 -0
  1023. data/rails/activejob/lib/active_job/queue_adapters/qu_adapter.rb +42 -0
  1024. data/rails/activejob/lib/active_job/queue_adapters/que_adapter.rb +35 -0
  1025. data/rails/activejob/lib/active_job/queue_adapters/queue_classic_adapter.rb +54 -0
  1026. data/rails/activejob/lib/active_job/queue_adapters/resque_adapter.rb +52 -0
  1027. data/rails/activejob/lib/active_job/queue_adapters/sidekiq_adapter.rb +45 -0
  1028. data/rails/activejob/lib/active_job/queue_adapters/sneakers_adapter.rb +46 -0
  1029. data/rails/activejob/lib/active_job/queue_adapters/sucker_punch_adapter.rb +40 -0
  1030. data/rails/activejob/lib/active_job/queue_adapters/test_adapter.rb +51 -0
  1031. data/rails/activejob/lib/active_job/queue_adapters.rb +52 -0
  1032. data/rails/activejob/lib/active_job/queue_name.rb +51 -0
  1033. data/rails/activejob/lib/active_job/railtie.rb +23 -0
  1034. data/rails/activejob/lib/active_job/test_case.rb +7 -0
  1035. data/rails/activejob/lib/active_job/test_helper.rb +230 -0
  1036. data/rails/activejob/lib/active_job/version.rb +8 -0
  1037. data/rails/activejob/lib/active_job.rb +37 -0
  1038. data/rails/activejob/lib/rails/generators/job/job_generator.rb +24 -0
  1039. data/rails/activejob/lib/rails/generators/job/templates/job.rb +9 -0
  1040. data/rails/activejob/test/adapters/backburner.rb +3 -0
  1041. data/rails/activejob/test/adapters/delayed_job.rb +7 -0
  1042. data/rails/activejob/test/adapters/inline.rb +1 -0
  1043. data/rails/activejob/test/adapters/qu.rb +3 -0
  1044. data/rails/activejob/test/adapters/que.rb +4 -0
  1045. data/rails/activejob/test/adapters/queue_classic.rb +2 -0
  1046. data/rails/activejob/test/adapters/resque.rb +2 -0
  1047. data/rails/activejob/test/adapters/sidekiq.rb +2 -0
  1048. data/rails/activejob/test/adapters/sneakers.rb +2 -0
  1049. data/rails/activejob/test/adapters/sucker_punch.rb +2 -0
  1050. data/rails/activejob/test/adapters/test.rb +3 -0
  1051. data/rails/activejob/test/cases/adapter_test.rb +7 -0
  1052. data/rails/activejob/test/cases/argument_serialization_test.rb +105 -0
  1053. data/rails/activejob/test/cases/callbacks_test.rb +23 -0
  1054. data/rails/activejob/test/cases/job_serialization_test.rb +15 -0
  1055. data/rails/activejob/test/cases/logging_test.rb +114 -0
  1056. data/rails/activejob/test/cases/queue_naming_test.rb +102 -0
  1057. data/rails/activejob/test/cases/queuing_test.rb +44 -0
  1058. data/rails/activejob/test/cases/rescue_test.rb +34 -0
  1059. data/rails/activejob/test/cases/test_case_test.rb +14 -0
  1060. data/rails/activejob/test/cases/test_helper_test.rb +265 -0
  1061. data/rails/activejob/test/helper.rb +30 -0
  1062. data/rails/activejob/test/integration/queuing_test.rb +47 -0
  1063. data/rails/activejob/test/jobs/callback_job.rb +29 -0
  1064. data/rails/activejob/test/jobs/gid_job.rb +8 -0
  1065. data/rails/activejob/test/jobs/hello_job.rb +7 -0
  1066. data/rails/activejob/test/jobs/kwargs_job.rb +7 -0
  1067. data/rails/activejob/test/jobs/logging_job.rb +10 -0
  1068. data/rails/activejob/test/jobs/nested_job.rb +10 -0
  1069. data/rails/activejob/test/jobs/rescue_job.rb +27 -0
  1070. data/rails/activejob/test/models/person.rb +20 -0
  1071. data/rails/activejob/test/support/backburner/inline.rb +8 -0
  1072. data/rails/activejob/test/support/delayed_job/delayed/backend/test.rb +113 -0
  1073. data/rails/activejob/test/support/delayed_job/delayed/serialization/test.rb +0 -0
  1074. data/rails/activejob/test/support/integration/adapters/backburner.rb +38 -0
  1075. data/rails/activejob/test/support/integration/adapters/delayed_job.rb +20 -0
  1076. data/rails/activejob/test/support/integration/adapters/inline.rb +15 -0
  1077. data/rails/activejob/test/support/integration/adapters/qu.rb +38 -0
  1078. data/rails/activejob/test/support/integration/adapters/que.rb +37 -0
  1079. data/rails/activejob/test/support/integration/adapters/queue_classic.rb +39 -0
  1080. data/rails/activejob/test/support/integration/adapters/resque.rb +49 -0
  1081. data/rails/activejob/test/support/integration/adapters/sidekiq.rb +57 -0
  1082. data/rails/activejob/test/support/integration/adapters/sneakers.rb +90 -0
  1083. data/rails/activejob/test/support/integration/adapters/sucker_punch.rb +6 -0
  1084. data/rails/activejob/test/support/integration/dummy_app_template.rb +27 -0
  1085. data/rails/activejob/test/support/integration/helper.rb +30 -0
  1086. data/rails/activejob/test/support/integration/jobs_manager.rb +27 -0
  1087. data/rails/activejob/test/support/integration/test_case_helpers.rb +48 -0
  1088. data/rails/activejob/test/support/job_buffer.rb +19 -0
  1089. data/rails/activejob/test/support/que/inline.rb +9 -0
  1090. data/rails/activejob/test/support/queue_classic/inline.rb +23 -0
  1091. data/rails/activejob/test/support/sneakers/inline.rb +12 -0
  1092. data/rails/activemodel/CHANGELOG.md +61 -0
  1093. data/rails/activemodel/MIT-LICENSE +21 -0
  1094. data/rails/activemodel/README.rdoc +272 -0
  1095. data/rails/activemodel/Rakefile +36 -0
  1096. data/rails/activemodel/activemodel.gemspec +24 -0
  1097. data/rails/activemodel/lib/active_model/attribute_methods.rb +478 -0
  1098. data/rails/activemodel/lib/active_model/callbacks.rb +149 -0
  1099. data/rails/activemodel/lib/active_model/conversion.rb +100 -0
  1100. data/rails/activemodel/lib/active_model/dirty.rb +267 -0
  1101. data/rails/activemodel/lib/active_model/errors.rb +475 -0
  1102. data/rails/activemodel/lib/active_model/forbidden_attributes_protection.rb +28 -0
  1103. data/rails/activemodel/lib/active_model/gem_version.rb +15 -0
  1104. data/rails/activemodel/lib/active_model/lint.rb +113 -0
  1105. data/rails/activemodel/lib/active_model/locale/en.yml +35 -0
  1106. data/rails/activemodel/lib/active_model/model.rb +99 -0
  1107. data/rails/activemodel/lib/active_model/naming.rb +316 -0
  1108. data/rails/activemodel/lib/active_model/railtie.rb +12 -0
  1109. data/rails/activemodel/lib/active_model/secure_password.rb +134 -0
  1110. data/rails/activemodel/lib/active_model/serialization.rb +163 -0
  1111. data/rails/activemodel/lib/active_model/serializers/json.rb +145 -0
  1112. data/rails/activemodel/lib/active_model/serializers/xml.rb +238 -0
  1113. data/rails/activemodel/lib/active_model/test_case.rb +4 -0
  1114. data/rails/activemodel/lib/active_model/translation.rb +69 -0
  1115. data/rails/activemodel/lib/active_model/validations/absence.rb +31 -0
  1116. data/rails/activemodel/lib/active_model/validations/acceptance.rb +55 -0
  1117. data/rails/activemodel/lib/active_model/validations/callbacks.rb +117 -0
  1118. data/rails/activemodel/lib/active_model/validations/clusivity.rb +51 -0
  1119. data/rails/activemodel/lib/active_model/validations/confirmation.rb +67 -0
  1120. data/rails/activemodel/lib/active_model/validations/exclusion.rb +46 -0
  1121. data/rails/activemodel/lib/active_model/validations/format.rb +113 -0
  1122. data/rails/activemodel/lib/active_model/validations/inclusion.rb +46 -0
  1123. data/rails/activemodel/lib/active_model/validations/length.rb +126 -0
  1124. data/rails/activemodel/lib/active_model/validations/numericality.rb +159 -0
  1125. data/rails/activemodel/lib/active_model/validations/presence.rb +39 -0
  1126. data/rails/activemodel/lib/active_model/validations/validates.rb +173 -0
  1127. data/rails/activemodel/lib/active_model/validations/with.rb +153 -0
  1128. data/rails/activemodel/lib/active_model/validations.rb +401 -0
  1129. data/rails/activemodel/lib/active_model/validator.rb +182 -0
  1130. data/rails/activemodel/lib/active_model/version.rb +8 -0
  1131. data/rails/activemodel/lib/active_model.rb +71 -0
  1132. data/rails/activemodel/test/cases/attribute_methods_test.rb +281 -0
  1133. data/rails/activemodel/test/cases/callbacks_test.rb +114 -0
  1134. data/rails/activemodel/test/cases/conversion_test.rb +50 -0
  1135. data/rails/activemodel/test/cases/dirty_test.rb +228 -0
  1136. data/rails/activemodel/test/cases/errors_test.rb +326 -0
  1137. data/rails/activemodel/test/cases/forbidden_attributes_protection_test.rb +36 -0
  1138. data/rails/activemodel/test/cases/helper.rb +20 -0
  1139. data/rails/activemodel/test/cases/lint_test.rb +20 -0
  1140. data/rails/activemodel/test/cases/model_test.rb +75 -0
  1141. data/rails/activemodel/test/cases/naming_test.rb +280 -0
  1142. data/rails/activemodel/test/cases/railtie_test.rb +32 -0
  1143. data/rails/activemodel/test/cases/secure_password_test.rb +218 -0
  1144. data/rails/activemodel/test/cases/serialization_test.rb +168 -0
  1145. data/rails/activemodel/test/cases/serializers/json_serialization_test.rb +198 -0
  1146. data/rails/activemodel/test/cases/serializers/xml_serialization_test.rb +250 -0
  1147. data/rails/activemodel/test/cases/translation_test.rb +108 -0
  1148. data/rails/activemodel/test/cases/validations/absence_validation_test.rb +68 -0
  1149. data/rails/activemodel/test/cases/validations/acceptance_validation_test.rb +68 -0
  1150. data/rails/activemodel/test/cases/validations/callbacks_test.rb +98 -0
  1151. data/rails/activemodel/test/cases/validations/conditional_validation_test.rb +139 -0
  1152. data/rails/activemodel/test/cases/validations/confirmation_validation_test.rb +108 -0
  1153. data/rails/activemodel/test/cases/validations/exclusion_validation_test.rb +92 -0
  1154. data/rails/activemodel/test/cases/validations/format_validation_test.rb +149 -0
  1155. data/rails/activemodel/test/cases/validations/i18n_generate_message_validation_test.rb +150 -0
  1156. data/rails/activemodel/test/cases/validations/i18n_validation_test.rb +373 -0
  1157. data/rails/activemodel/test/cases/validations/inclusion_validation_test.rb +147 -0
  1158. data/rails/activemodel/test/cases/validations/length_validation_test.rb +424 -0
  1159. data/rails/activemodel/test/cases/validations/numericality_validation_test.rb +211 -0
  1160. data/rails/activemodel/test/cases/validations/presence_validation_test.rb +107 -0
  1161. data/rails/activemodel/test/cases/validations/validates_test.rb +158 -0
  1162. data/rails/activemodel/test/cases/validations/validations_context_test.rb +50 -0
  1163. data/rails/activemodel/test/cases/validations/with_validation_test.rb +172 -0
  1164. data/rails/activemodel/test/cases/validations_test.rb +429 -0
  1165. data/rails/activemodel/test/config.rb +3 -0
  1166. data/rails/activemodel/test/models/account.rb +5 -0
  1167. data/rails/activemodel/test/models/blog_post.rb +9 -0
  1168. data/rails/activemodel/test/models/contact.rb +41 -0
  1169. data/rails/activemodel/test/models/custom_reader.rb +15 -0
  1170. data/rails/activemodel/test/models/helicopter.rb +7 -0
  1171. data/rails/activemodel/test/models/person.rb +17 -0
  1172. data/rails/activemodel/test/models/person_with_validator.rb +24 -0
  1173. data/rails/activemodel/test/models/project.rb +3 -0
  1174. data/rails/activemodel/test/models/reply.rb +32 -0
  1175. data/rails/activemodel/test/models/sheep.rb +3 -0
  1176. data/rails/activemodel/test/models/topic.rb +40 -0
  1177. data/rails/activemodel/test/models/track_back.rb +11 -0
  1178. data/rails/activemodel/test/models/user.rb +10 -0
  1179. data/rails/activemodel/test/models/visitor.rb +10 -0
  1180. data/rails/activemodel/test/validators/email_validator.rb +6 -0
  1181. data/rails/activemodel/test/validators/namespace/email_validator.rb +6 -0
  1182. data/rails/activerecord/CHANGELOG.md +1568 -0
  1183. data/rails/activerecord/MIT-LICENSE +20 -0
  1184. data/rails/activerecord/README.rdoc +218 -0
  1185. data/rails/activerecord/RUNNING_UNIT_TESTS.rdoc +44 -0
  1186. data/rails/activerecord/Rakefile +168 -0
  1187. data/rails/activerecord/activerecord.gemspec +28 -0
  1188. data/rails/activerecord/examples/.gitignore +1 -0
  1189. data/rails/activerecord/examples/performance.rb +184 -0
  1190. data/rails/activerecord/examples/simple.rb +14 -0
  1191. data/rails/activerecord/lib/active_record/aggregations.rb +266 -0
  1192. data/rails/activerecord/lib/active_record/association_relation.rb +22 -0
  1193. data/rails/activerecord/lib/active_record/associations/alias_tracker.rb +87 -0
  1194. data/rails/activerecord/lib/active_record/associations/association.rb +253 -0
  1195. data/rails/activerecord/lib/active_record/associations/association_scope.rb +194 -0
  1196. data/rails/activerecord/lib/active_record/associations/belongs_to_association.rb +115 -0
  1197. data/rails/activerecord/lib/active_record/associations/belongs_to_polymorphic_association.rb +40 -0
  1198. data/rails/activerecord/lib/active_record/associations/builder/association.rb +149 -0
  1199. data/rails/activerecord/lib/active_record/associations/builder/belongs_to.rb +116 -0
  1200. data/rails/activerecord/lib/active_record/associations/builder/collection_association.rb +95 -0
  1201. data/rails/activerecord/lib/active_record/associations/builder/has_and_belongs_to_many.rb +124 -0
  1202. data/rails/activerecord/lib/active_record/associations/builder/has_many.rb +15 -0
  1203. data/rails/activerecord/lib/active_record/associations/builder/has_one.rb +23 -0
  1204. data/rails/activerecord/lib/active_record/associations/builder/singular_association.rb +38 -0
  1205. data/rails/activerecord/lib/active_record/associations/collection_association.rb +639 -0
  1206. data/rails/activerecord/lib/active_record/associations/collection_proxy.rb +1028 -0
  1207. data/rails/activerecord/lib/active_record/associations/foreign_association.rb +11 -0
  1208. data/rails/activerecord/lib/active_record/associations/has_many_association.rb +192 -0
  1209. data/rails/activerecord/lib/active_record/associations/has_many_through_association.rb +238 -0
  1210. data/rails/activerecord/lib/active_record/associations/has_one_association.rb +106 -0
  1211. data/rails/activerecord/lib/active_record/associations/has_one_through_association.rb +36 -0
  1212. data/rails/activerecord/lib/active_record/associations/join_dependency/join_association.rb +122 -0
  1213. data/rails/activerecord/lib/active_record/associations/join_dependency/join_base.rb +22 -0
  1214. data/rails/activerecord/lib/active_record/associations/join_dependency/join_part.rb +71 -0
  1215. data/rails/activerecord/lib/active_record/associations/join_dependency.rb +282 -0
  1216. data/rails/activerecord/lib/active_record/associations/preloader/association.rb +162 -0
  1217. data/rails/activerecord/lib/active_record/associations/preloader/belongs_to.rb +17 -0
  1218. data/rails/activerecord/lib/active_record/associations/preloader/collection_association.rb +24 -0
  1219. data/rails/activerecord/lib/active_record/associations/preloader/has_many.rb +17 -0
  1220. data/rails/activerecord/lib/active_record/associations/preloader/has_many_through.rb +19 -0
  1221. data/rails/activerecord/lib/active_record/associations/preloader/has_one.rb +23 -0
  1222. data/rails/activerecord/lib/active_record/associations/preloader/has_one_through.rb +9 -0
  1223. data/rails/activerecord/lib/active_record/associations/preloader/singular_association.rb +21 -0
  1224. data/rails/activerecord/lib/active_record/associations/preloader/through_association.rb +96 -0
  1225. data/rails/activerecord/lib/active_record/associations/preloader.rb +203 -0
  1226. data/rails/activerecord/lib/active_record/associations/singular_association.rb +86 -0
  1227. data/rails/activerecord/lib/active_record/associations/through_association.rb +107 -0
  1228. data/rails/activerecord/lib/active_record/associations.rb +1725 -0
  1229. data/rails/activerecord/lib/active_record/attribute.rb +163 -0
  1230. data/rails/activerecord/lib/active_record/attribute_assignment.rb +212 -0
  1231. data/rails/activerecord/lib/active_record/attribute_decorators.rb +66 -0
  1232. data/rails/activerecord/lib/active_record/attribute_methods/before_type_cast.rb +76 -0
  1233. data/rails/activerecord/lib/active_record/attribute_methods/dirty.rb +185 -0
  1234. data/rails/activerecord/lib/active_record/attribute_methods/primary_key.rb +128 -0
  1235. data/rails/activerecord/lib/active_record/attribute_methods/query.rb +40 -0
  1236. data/rails/activerecord/lib/active_record/attribute_methods/read.rb +103 -0
  1237. data/rails/activerecord/lib/active_record/attribute_methods/serialization.rb +70 -0
  1238. data/rails/activerecord/lib/active_record/attribute_methods/time_zone_conversion.rb +69 -0
  1239. data/rails/activerecord/lib/active_record/attribute_methods/write.rb +83 -0
  1240. data/rails/activerecord/lib/active_record/attribute_methods.rb +439 -0
  1241. data/rails/activerecord/lib/active_record/attribute_set/builder.rb +96 -0
  1242. data/rails/activerecord/lib/active_record/attribute_set.rb +77 -0
  1243. data/rails/activerecord/lib/active_record/attributes.rb +146 -0
  1244. data/rails/activerecord/lib/active_record/autosave_association.rb +454 -0
  1245. data/rails/activerecord/lib/active_record/base.rb +317 -0
  1246. data/rails/activerecord/lib/active_record/callbacks.rb +313 -0
  1247. data/rails/activerecord/lib/active_record/coders/json.rb +13 -0
  1248. data/rails/activerecord/lib/active_record/coders/yaml_column.rb +38 -0
  1249. data/rails/activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb +661 -0
  1250. data/rails/activerecord/lib/active_record/connection_adapters/abstract/database_limits.rb +67 -0
  1251. data/rails/activerecord/lib/active_record/connection_adapters/abstract/database_statements.rb +384 -0
  1252. data/rails/activerecord/lib/active_record/connection_adapters/abstract/query_cache.rb +95 -0
  1253. data/rails/activerecord/lib/active_record/connection_adapters/abstract/quoting.rb +133 -0
  1254. data/rails/activerecord/lib/active_record/connection_adapters/abstract/savepoints.rb +21 -0
  1255. data/rails/activerecord/lib/active_record/connection_adapters/abstract/schema_creation.rb +125 -0
  1256. data/rails/activerecord/lib/active_record/connection_adapters/abstract/schema_definitions.rb +592 -0
  1257. data/rails/activerecord/lib/active_record/connection_adapters/abstract/schema_dumper.rb +50 -0
  1258. data/rails/activerecord/lib/active_record/connection_adapters/abstract/schema_statements.rb +1023 -0
  1259. data/rails/activerecord/lib/active_record/connection_adapters/abstract/transaction.rb +219 -0
  1260. data/rails/activerecord/lib/active_record/connection_adapters/abstract_adapter.rb +494 -0
  1261. data/rails/activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb +905 -0
  1262. data/rails/activerecord/lib/active_record/connection_adapters/column.rb +82 -0
  1263. data/rails/activerecord/lib/active_record/connection_adapters/connection_specification.rb +275 -0
  1264. data/rails/activerecord/lib/active_record/connection_adapters/mysql2_adapter.rb +282 -0
  1265. data/rails/activerecord/lib/active_record/connection_adapters/mysql_adapter.rb +491 -0
  1266. data/rails/activerecord/lib/active_record/connection_adapters/postgresql/array_parser.rb +93 -0
  1267. data/rails/activerecord/lib/active_record/connection_adapters/postgresql/column.rb +20 -0
  1268. data/rails/activerecord/lib/active_record/connection_adapters/postgresql/database_statements.rb +232 -0
  1269. data/rails/activerecord/lib/active_record/connection_adapters/postgresql/oid/array.rb +99 -0
  1270. data/rails/activerecord/lib/active_record/connection_adapters/postgresql/oid/bit.rb +52 -0
  1271. data/rails/activerecord/lib/active_record/connection_adapters/postgresql/oid/bit_varying.rb +13 -0
  1272. data/rails/activerecord/lib/active_record/connection_adapters/postgresql/oid/bytea.rb +15 -0
  1273. data/rails/activerecord/lib/active_record/connection_adapters/postgresql/oid/cidr.rb +46 -0
  1274. data/rails/activerecord/lib/active_record/connection_adapters/postgresql/oid/date.rb +11 -0
  1275. data/rails/activerecord/lib/active_record/connection_adapters/postgresql/oid/date_time.rb +36 -0
  1276. data/rails/activerecord/lib/active_record/connection_adapters/postgresql/oid/decimal.rb +13 -0
  1277. data/rails/activerecord/lib/active_record/connection_adapters/postgresql/oid/enum.rb +17 -0
  1278. data/rails/activerecord/lib/active_record/connection_adapters/postgresql/oid/float.rb +21 -0
  1279. data/rails/activerecord/lib/active_record/connection_adapters/postgresql/oid/hstore.rb +59 -0
  1280. data/rails/activerecord/lib/active_record/connection_adapters/postgresql/oid/inet.rb +13 -0
  1281. data/rails/activerecord/lib/active_record/connection_adapters/postgresql/oid/infinity.rb +13 -0
  1282. data/rails/activerecord/lib/active_record/connection_adapters/postgresql/oid/integer.rb +11 -0
  1283. data/rails/activerecord/lib/active_record/connection_adapters/postgresql/oid/json.rb +35 -0
  1284. data/rails/activerecord/lib/active_record/connection_adapters/postgresql/oid/jsonb.rb +23 -0
  1285. data/rails/activerecord/lib/active_record/connection_adapters/postgresql/oid/money.rb +43 -0
  1286. data/rails/activerecord/lib/active_record/connection_adapters/postgresql/oid/point.rb +43 -0
  1287. data/rails/activerecord/lib/active_record/connection_adapters/postgresql/oid/range.rb +79 -0
  1288. data/rails/activerecord/lib/active_record/connection_adapters/postgresql/oid/specialized_string.rb +19 -0
  1289. data/rails/activerecord/lib/active_record/connection_adapters/postgresql/oid/time.rb +11 -0
  1290. data/rails/activerecord/lib/active_record/connection_adapters/postgresql/oid/type_map_initializer.rb +97 -0
  1291. data/rails/activerecord/lib/active_record/connection_adapters/postgresql/oid/uuid.rb +21 -0
  1292. data/rails/activerecord/lib/active_record/connection_adapters/postgresql/oid/vector.rb +26 -0
  1293. data/rails/activerecord/lib/active_record/connection_adapters/postgresql/oid/xml.rb +28 -0
  1294. data/rails/activerecord/lib/active_record/connection_adapters/postgresql/oid.rb +36 -0
  1295. data/rails/activerecord/lib/active_record/connection_adapters/postgresql/quoting.rb +108 -0
  1296. data/rails/activerecord/lib/active_record/connection_adapters/postgresql/referential_integrity.rb +30 -0
  1297. data/rails/activerecord/lib/active_record/connection_adapters/postgresql/schema_definitions.rb +152 -0
  1298. data/rails/activerecord/lib/active_record/connection_adapters/postgresql/schema_statements.rb +587 -0
  1299. data/rails/activerecord/lib/active_record/connection_adapters/postgresql/utils.rb +77 -0
  1300. data/rails/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb +754 -0
  1301. data/rails/activerecord/lib/active_record/connection_adapters/schema_cache.rb +94 -0
  1302. data/rails/activerecord/lib/active_record/connection_adapters/sqlite3_adapter.rb +622 -0
  1303. data/rails/activerecord/lib/active_record/connection_adapters/statement_pool.rb +40 -0
  1304. data/rails/activerecord/lib/active_record/connection_handling.rb +132 -0
  1305. data/rails/activerecord/lib/active_record/core.rb +572 -0
  1306. data/rails/activerecord/lib/active_record/counter_cache.rb +175 -0
  1307. data/rails/activerecord/lib/active_record/dynamic_matchers.rb +140 -0
  1308. data/rails/activerecord/lib/active_record/enum.rb +198 -0
  1309. data/rails/activerecord/lib/active_record/errors.rb +252 -0
  1310. data/rails/activerecord/lib/active_record/explain.rb +38 -0
  1311. data/rails/activerecord/lib/active_record/explain_registry.rb +30 -0
  1312. data/rails/activerecord/lib/active_record/explain_subscriber.rb +29 -0
  1313. data/rails/activerecord/lib/active_record/fixture_set/file.rb +56 -0
  1314. data/rails/activerecord/lib/active_record/fixtures.rb +1007 -0
  1315. data/rails/activerecord/lib/active_record/gem_version.rb +15 -0
  1316. data/rails/activerecord/lib/active_record/inheritance.rb +247 -0
  1317. data/rails/activerecord/lib/active_record/integration.rb +113 -0
  1318. data/rails/activerecord/lib/active_record/locale/en.yml +47 -0
  1319. data/rails/activerecord/lib/active_record/locking/optimistic.rb +206 -0
  1320. data/rails/activerecord/lib/active_record/locking/pessimistic.rb +77 -0
  1321. data/rails/activerecord/lib/active_record/log_subscriber.rb +75 -0
  1322. data/rails/activerecord/lib/active_record/migration/command_recorder.rb +197 -0
  1323. data/rails/activerecord/lib/active_record/migration/join_table.rb +15 -0
  1324. data/rails/activerecord/lib/active_record/migration.rb +1051 -0
  1325. data/rails/activerecord/lib/active_record/model_schema.rb +340 -0
  1326. data/rails/activerecord/lib/active_record/nested_attributes.rb +548 -0
  1327. data/rails/activerecord/lib/active_record/no_touching.rb +52 -0
  1328. data/rails/activerecord/lib/active_record/null_relation.rb +81 -0
  1329. data/rails/activerecord/lib/active_record/persistence.rb +532 -0
  1330. data/rails/activerecord/lib/active_record/query_cache.rb +56 -0
  1331. data/rails/activerecord/lib/active_record/querying.rb +68 -0
  1332. data/rails/activerecord/lib/active_record/railtie.rb +162 -0
  1333. data/rails/activerecord/lib/active_record/railties/console_sandbox.rb +5 -0
  1334. data/rails/activerecord/lib/active_record/railties/controller_runtime.rb +50 -0
  1335. data/rails/activerecord/lib/active_record/railties/databases.rake +391 -0
  1336. data/rails/activerecord/lib/active_record/railties/jdbcmysql_error.rb +16 -0
  1337. data/rails/activerecord/lib/active_record/readonly_attributes.rb +23 -0
  1338. data/rails/activerecord/lib/active_record/reflection.rb +881 -0
  1339. data/rails/activerecord/lib/active_record/relation/batches.rb +138 -0
  1340. data/rails/activerecord/lib/active_record/relation/calculations.rb +403 -0
  1341. data/rails/activerecord/lib/active_record/relation/delegation.rb +140 -0
  1342. data/rails/activerecord/lib/active_record/relation/finder_methods.rb +528 -0
  1343. data/rails/activerecord/lib/active_record/relation/merger.rb +170 -0
  1344. data/rails/activerecord/lib/active_record/relation/predicate_builder/array_handler.rb +47 -0
  1345. data/rails/activerecord/lib/active_record/relation/predicate_builder/relation_handler.rb +13 -0
  1346. data/rails/activerecord/lib/active_record/relation/predicate_builder.rb +141 -0
  1347. data/rails/activerecord/lib/active_record/relation/query_methods.rb +1177 -0
  1348. data/rails/activerecord/lib/active_record/relation/spawn_methods.rb +75 -0
  1349. data/rails/activerecord/lib/active_record/relation.rb +681 -0
  1350. data/rails/activerecord/lib/active_record/result.rb +131 -0
  1351. data/rails/activerecord/lib/active_record/runtime_registry.rb +22 -0
  1352. data/rails/activerecord/lib/active_record/sanitization.rb +191 -0
  1353. data/rails/activerecord/lib/active_record/schema.rb +64 -0
  1354. data/rails/activerecord/lib/active_record/schema_dumper.rb +251 -0
  1355. data/rails/activerecord/lib/active_record/schema_migration.rb +56 -0
  1356. data/rails/activerecord/lib/active_record/scoping/default.rb +134 -0
  1357. data/rails/activerecord/lib/active_record/scoping/named.rb +164 -0
  1358. data/rails/activerecord/lib/active_record/scoping.rb +87 -0
  1359. data/rails/activerecord/lib/active_record/serialization.rb +22 -0
  1360. data/rails/activerecord/lib/active_record/serializers/xml_serializer.rb +193 -0
  1361. data/rails/activerecord/lib/active_record/statement_cache.rb +111 -0
  1362. data/rails/activerecord/lib/active_record/store.rb +205 -0
  1363. data/rails/activerecord/lib/active_record/tasks/database_tasks.rb +296 -0
  1364. data/rails/activerecord/lib/active_record/tasks/mysql_database_tasks.rb +145 -0
  1365. data/rails/activerecord/lib/active_record/tasks/postgresql_database_tasks.rb +90 -0
  1366. data/rails/activerecord/lib/active_record/tasks/sqlite_database_tasks.rb +55 -0
  1367. data/rails/activerecord/lib/active_record/timestamp.rb +121 -0
  1368. data/rails/activerecord/lib/active_record/transactions.rb +415 -0
  1369. data/rails/activerecord/lib/active_record/translation.rb +22 -0
  1370. data/rails/activerecord/lib/active_record/type/big_integer.rb +13 -0
  1371. data/rails/activerecord/lib/active_record/type/binary.rb +50 -0
  1372. data/rails/activerecord/lib/active_record/type/boolean.rb +30 -0
  1373. data/rails/activerecord/lib/active_record/type/date.rb +46 -0
  1374. data/rails/activerecord/lib/active_record/type/date_time.rb +54 -0
  1375. data/rails/activerecord/lib/active_record/type/decimal.rb +48 -0
  1376. data/rails/activerecord/lib/active_record/type/decimal_without_scale.rb +11 -0
  1377. data/rails/activerecord/lib/active_record/type/decorator.rb +14 -0
  1378. data/rails/activerecord/lib/active_record/type/float.rb +19 -0
  1379. data/rails/activerecord/lib/active_record/type/hash_lookup_type_map.rb +17 -0
  1380. data/rails/activerecord/lib/active_record/type/integer.rb +59 -0
  1381. data/rails/activerecord/lib/active_record/type/mutable.rb +16 -0
  1382. data/rails/activerecord/lib/active_record/type/numeric.rb +36 -0
  1383. data/rails/activerecord/lib/active_record/type/serialized.rb +56 -0
  1384. data/rails/activerecord/lib/active_record/type/string.rb +40 -0
  1385. data/rails/activerecord/lib/active_record/type/text.rb +11 -0
  1386. data/rails/activerecord/lib/active_record/type/time.rb +26 -0
  1387. data/rails/activerecord/lib/active_record/type/time_value.rb +38 -0
  1388. data/rails/activerecord/lib/active_record/type/type_map.rb +64 -0
  1389. data/rails/activerecord/lib/active_record/type/unsigned_integer.rb +15 -0
  1390. data/rails/activerecord/lib/active_record/type/value.rb +105 -0
  1391. data/rails/activerecord/lib/active_record/type.rb +23 -0
  1392. data/rails/activerecord/lib/active_record/validations/associated.rb +51 -0
  1393. data/rails/activerecord/lib/active_record/validations/presence.rb +67 -0
  1394. data/rails/activerecord/lib/active_record/validations/uniqueness.rb +229 -0
  1395. data/rails/activerecord/lib/active_record/validations.rb +90 -0
  1396. data/rails/activerecord/lib/active_record/version.rb +8 -0
  1397. data/rails/activerecord/lib/active_record.rb +173 -0
  1398. data/rails/activerecord/lib/rails/generators/active_record/migration/migration_generator.rb +70 -0
  1399. data/rails/activerecord/lib/rails/generators/active_record/migration/templates/create_table_migration.rb +19 -0
  1400. data/rails/activerecord/lib/rails/generators/active_record/migration/templates/migration.rb +39 -0
  1401. data/rails/activerecord/lib/rails/generators/active_record/migration.rb +18 -0
  1402. data/rails/activerecord/lib/rails/generators/active_record/model/model_generator.rb +52 -0
  1403. data/rails/activerecord/lib/rails/generators/active_record/model/templates/model.rb +10 -0
  1404. data/rails/activerecord/lib/rails/generators/active_record/model/templates/module.rb +7 -0
  1405. data/rails/activerecord/lib/rails/generators/active_record.rb +17 -0
  1406. data/rails/activerecord/test/.gitignore +1 -0
  1407. data/rails/activerecord/test/active_record/connection_adapters/fake_adapter.rb +46 -0
  1408. data/rails/activerecord/test/assets/example.log +1 -0
  1409. data/rails/activerecord/test/assets/flowers.jpg +0 -0
  1410. data/rails/activerecord/test/assets/test.txt +1 -0
  1411. data/rails/activerecord/test/cases/adapter_test.rb +261 -0
  1412. data/rails/activerecord/test/cases/adapters/mysql/active_schema_test.rb +155 -0
  1413. data/rails/activerecord/test/cases/adapters/mysql/case_sensitivity_test.rb +55 -0
  1414. data/rails/activerecord/test/cases/adapters/mysql/connection_test.rb +184 -0
  1415. data/rails/activerecord/test/cases/adapters/mysql/consistency_test.rb +49 -0
  1416. data/rails/activerecord/test/cases/adapters/mysql/datetime_test.rb +87 -0
  1417. data/rails/activerecord/test/cases/adapters/mysql/enum_test.rb +10 -0
  1418. data/rails/activerecord/test/cases/adapters/mysql/mysql_adapter_test.rb +153 -0
  1419. data/rails/activerecord/test/cases/adapters/mysql/quoting_test.rb +25 -0
  1420. data/rails/activerecord/test/cases/adapters/mysql/reserved_word_test.rb +153 -0
  1421. data/rails/activerecord/test/cases/adapters/mysql/schema_test.rb +100 -0
  1422. data/rails/activerecord/test/cases/adapters/mysql/sp_test.rb +15 -0
  1423. data/rails/activerecord/test/cases/adapters/mysql/sql_types_test.rb +14 -0
  1424. data/rails/activerecord/test/cases/adapters/mysql/statement_pool_test.rb +23 -0
  1425. data/rails/activerecord/test/cases/adapters/mysql/unsigned_type_test.rb +30 -0
  1426. data/rails/activerecord/test/cases/adapters/mysql2/active_schema_test.rb +155 -0
  1427. data/rails/activerecord/test/cases/adapters/mysql2/bind_parameter_test.rb +50 -0
  1428. data/rails/activerecord/test/cases/adapters/mysql2/boolean_test.rb +92 -0
  1429. data/rails/activerecord/test/cases/adapters/mysql2/case_sensitivity_test.rb +55 -0
  1430. data/rails/activerecord/test/cases/adapters/mysql2/connection_test.rb +134 -0
  1431. data/rails/activerecord/test/cases/adapters/mysql2/datetime_test.rb +87 -0
  1432. data/rails/activerecord/test/cases/adapters/mysql2/enum_test.rb +10 -0
  1433. data/rails/activerecord/test/cases/adapters/mysql2/explain_test.rb +27 -0
  1434. data/rails/activerecord/test/cases/adapters/mysql2/reserved_word_test.rb +152 -0
  1435. data/rails/activerecord/test/cases/adapters/mysql2/schema_migrations_test.rb +47 -0
  1436. data/rails/activerecord/test/cases/adapters/mysql2/schema_test.rb +81 -0
  1437. data/rails/activerecord/test/cases/adapters/mysql2/sql_types_test.rb +14 -0
  1438. data/rails/activerecord/test/cases/adapters/mysql2/unsigned_type_test.rb +30 -0
  1439. data/rails/activerecord/test/cases/adapters/postgresql/active_schema_test.rb +58 -0
  1440. data/rails/activerecord/test/cases/adapters/postgresql/array_test.rb +295 -0
  1441. data/rails/activerecord/test/cases/adapters/postgresql/bit_string_test.rb +78 -0
  1442. data/rails/activerecord/test/cases/adapters/postgresql/bytea_test.rb +125 -0
  1443. data/rails/activerecord/test/cases/adapters/postgresql/change_schema_test.rb +31 -0
  1444. data/rails/activerecord/test/cases/adapters/postgresql/citext_test.rb +71 -0
  1445. data/rails/activerecord/test/cases/adapters/postgresql/composite_test.rb +131 -0
  1446. data/rails/activerecord/test/cases/adapters/postgresql/connection_test.rb +215 -0
  1447. data/rails/activerecord/test/cases/adapters/postgresql/datatype_test.rb +126 -0
  1448. data/rails/activerecord/test/cases/adapters/postgresql/domain_test.rb +47 -0
  1449. data/rails/activerecord/test/cases/adapters/postgresql/enum_test.rb +83 -0
  1450. data/rails/activerecord/test/cases/adapters/postgresql/explain_test.rb +26 -0
  1451. data/rails/activerecord/test/cases/adapters/postgresql/extension_migration_test.rb +63 -0
  1452. data/rails/activerecord/test/cases/adapters/postgresql/full_text_test.rb +26 -0
  1453. data/rails/activerecord/test/cases/adapters/postgresql/geometric_test.rb +72 -0
  1454. data/rails/activerecord/test/cases/adapters/postgresql/hstore_test.rb +345 -0
  1455. data/rails/activerecord/test/cases/adapters/postgresql/infinity_test.rb +60 -0
  1456. data/rails/activerecord/test/cases/adapters/postgresql/integer_test.rb +25 -0
  1457. data/rails/activerecord/test/cases/adapters/postgresql/json_test.rb +206 -0
  1458. data/rails/activerecord/test/cases/adapters/postgresql/ltree_test.rb +46 -0
  1459. data/rails/activerecord/test/cases/adapters/postgresql/money_test.rb +96 -0
  1460. data/rails/activerecord/test/cases/adapters/postgresql/network_test.rb +71 -0
  1461. data/rails/activerecord/test/cases/adapters/postgresql/postgresql_adapter_test.rb +462 -0
  1462. data/rails/activerecord/test/cases/adapters/postgresql/quoting_test.rb +74 -0
  1463. data/rails/activerecord/test/cases/adapters/postgresql/range_test.rb +323 -0
  1464. data/rails/activerecord/test/cases/adapters/postgresql/rename_table_test.rb +34 -0
  1465. data/rails/activerecord/test/cases/adapters/postgresql/schema_authorization_test.rb +114 -0
  1466. data/rails/activerecord/test/cases/adapters/postgresql/schema_test.rb +462 -0
  1467. data/rails/activerecord/test/cases/adapters/postgresql/statement_pool_test.rb +41 -0
  1468. data/rails/activerecord/test/cases/adapters/postgresql/timestamp_test.rb +170 -0
  1469. data/rails/activerecord/test/cases/adapters/postgresql/type_lookup_test.rb +33 -0
  1470. data/rails/activerecord/test/cases/adapters/postgresql/utils_test.rb +61 -0
  1471. data/rails/activerecord/test/cases/adapters/postgresql/uuid_test.rb +315 -0
  1472. data/rails/activerecord/test/cases/adapters/postgresql/view_test.rb +63 -0
  1473. data/rails/activerecord/test/cases/adapters/postgresql/xml_test.rb +48 -0
  1474. data/rails/activerecord/test/cases/adapters/sqlite3/copy_table_test.rb +98 -0
  1475. data/rails/activerecord/test/cases/adapters/sqlite3/explain_test.rb +27 -0
  1476. data/rails/activerecord/test/cases/adapters/sqlite3/quoting_test.rb +116 -0
  1477. data/rails/activerecord/test/cases/adapters/sqlite3/sqlite3_adapter_test.rb +461 -0
  1478. data/rails/activerecord/test/cases/adapters/sqlite3/sqlite3_create_folder_test.rb +21 -0
  1479. data/rails/activerecord/test/cases/adapters/sqlite3/statement_pool_test.rb +25 -0
  1480. data/rails/activerecord/test/cases/aggregations_test.rb +158 -0
  1481. data/rails/activerecord/test/cases/ar_schema_test.rb +161 -0
  1482. data/rails/activerecord/test/cases/associations/association_scope_test.rb +21 -0
  1483. data/rails/activerecord/test/cases/associations/belongs_to_associations_test.rb +978 -0
  1484. data/rails/activerecord/test/cases/associations/callbacks_test.rb +190 -0
  1485. data/rails/activerecord/test/cases/associations/cascaded_eager_loading_test.rb +188 -0
  1486. data/rails/activerecord/test/cases/associations/deprecated_counter_cache_on_has_many_through_test.rb +26 -0
  1487. data/rails/activerecord/test/cases/associations/eager_load_includes_full_sti_class_test.rb +36 -0
  1488. data/rails/activerecord/test/cases/associations/eager_load_nested_include_test.rb +128 -0
  1489. data/rails/activerecord/test/cases/associations/eager_singularization_test.rb +148 -0
  1490. data/rails/activerecord/test/cases/associations/eager_test.rb +1366 -0
  1491. data/rails/activerecord/test/cases/associations/extension_test.rb +82 -0
  1492. data/rails/activerecord/test/cases/associations/has_and_belongs_to_many_associations_test.rb +905 -0
  1493. data/rails/activerecord/test/cases/associations/has_many_associations_test.rb +2099 -0
  1494. data/rails/activerecord/test/cases/associations/has_many_through_associations_test.rb +1163 -0
  1495. data/rails/activerecord/test/cases/associations/has_one_associations_test.rb +610 -0
  1496. data/rails/activerecord/test/cases/associations/has_one_through_associations_test.rb +346 -0
  1497. data/rails/activerecord/test/cases/associations/inner_join_association_test.rb +139 -0
  1498. data/rails/activerecord/test/cases/associations/inverse_associations_test.rb +693 -0
  1499. data/rails/activerecord/test/cases/associations/join_model_test.rb +751 -0
  1500. data/rails/activerecord/test/cases/associations/nested_through_associations_test.rb +579 -0
  1501. data/rails/activerecord/test/cases/associations/required_test.rb +82 -0
  1502. data/rails/activerecord/test/cases/associations_test.rb +380 -0
  1503. data/rails/activerecord/test/cases/attribute_decorators_test.rb +125 -0
  1504. data/rails/activerecord/test/cases/attribute_methods/read_test.rb +60 -0
  1505. data/rails/activerecord/test/cases/attribute_methods_test.rb +941 -0
  1506. data/rails/activerecord/test/cases/attribute_set_test.rb +200 -0
  1507. data/rails/activerecord/test/cases/attribute_test.rb +180 -0
  1508. data/rails/activerecord/test/cases/attributes_test.rb +115 -0
  1509. data/rails/activerecord/test/cases/autosave_association_test.rb +1588 -0
  1510. data/rails/activerecord/test/cases/base_test.rb +1627 -0
  1511. data/rails/activerecord/test/cases/batches_test.rb +212 -0
  1512. data/rails/activerecord/test/cases/binary_test.rb +49 -0
  1513. data/rails/activerecord/test/cases/bind_parameter_test.rb +100 -0
  1514. data/rails/activerecord/test/cases/calculations_test.rb +634 -0
  1515. data/rails/activerecord/test/cases/callbacks_test.rb +539 -0
  1516. data/rails/activerecord/test/cases/clone_test.rb +40 -0
  1517. data/rails/activerecord/test/cases/coders/yaml_column_test.rb +63 -0
  1518. data/rails/activerecord/test/cases/column_alias_test.rb +17 -0
  1519. data/rails/activerecord/test/cases/column_definition_test.rb +123 -0
  1520. data/rails/activerecord/test/cases/connection_adapters/adapter_leasing_test.rb +54 -0
  1521. data/rails/activerecord/test/cases/connection_adapters/connection_handler_test.rb +53 -0
  1522. data/rails/activerecord/test/cases/connection_adapters/connection_specification_test.rb +12 -0
  1523. data/rails/activerecord/test/cases/connection_adapters/merge_and_resolve_default_url_config_test.rb +293 -0
  1524. data/rails/activerecord/test/cases/connection_adapters/mysql_type_lookup_test.rb +65 -0
  1525. data/rails/activerecord/test/cases/connection_adapters/quoting_test.rb +13 -0
  1526. data/rails/activerecord/test/cases/connection_adapters/schema_cache_test.rb +56 -0
  1527. data/rails/activerecord/test/cases/connection_adapters/type_lookup_test.rb +106 -0
  1528. data/rails/activerecord/test/cases/connection_management_test.rb +122 -0
  1529. data/rails/activerecord/test/cases/connection_pool_test.rb +346 -0
  1530. data/rails/activerecord/test/cases/connection_specification/resolver_test.rb +116 -0
  1531. data/rails/activerecord/test/cases/core_test.rb +112 -0
  1532. data/rails/activerecord/test/cases/counter_cache_test.rb +201 -0
  1533. data/rails/activerecord/test/cases/custom_locking_test.rb +17 -0
  1534. data/rails/activerecord/test/cases/database_statements_test.rb +19 -0
  1535. data/rails/activerecord/test/cases/date_time_test.rb +61 -0
  1536. data/rails/activerecord/test/cases/defaults_test.rb +223 -0
  1537. data/rails/activerecord/test/cases/dirty_test.rb +759 -0
  1538. data/rails/activerecord/test/cases/disconnected_test.rb +28 -0
  1539. data/rails/activerecord/test/cases/dup_test.rb +157 -0
  1540. data/rails/activerecord/test/cases/enum_test.rb +290 -0
  1541. data/rails/activerecord/test/cases/explain_subscriber_test.rb +59 -0
  1542. data/rails/activerecord/test/cases/explain_test.rb +76 -0
  1543. data/rails/activerecord/test/cases/finder_respond_to_test.rb +60 -0
  1544. data/rails/activerecord/test/cases/finder_test.rb +1163 -0
  1545. data/rails/activerecord/test/cases/fixture_set/file_test.rb +138 -0
  1546. data/rails/activerecord/test/cases/fixtures_test.rb +869 -0
  1547. data/rails/activerecord/test/cases/forbidden_attributes_protection_test.rb +99 -0
  1548. data/rails/activerecord/test/cases/habtm_destroy_order_test.rb +61 -0
  1549. data/rails/activerecord/test/cases/helper.rb +210 -0
  1550. data/rails/activerecord/test/cases/hot_compatibility_test.rb +54 -0
  1551. data/rails/activerecord/test/cases/i18n_test.rb +45 -0
  1552. data/rails/activerecord/test/cases/inheritance_test.rb +369 -0
  1553. data/rails/activerecord/test/cases/integration_test.rb +139 -0
  1554. data/rails/activerecord/test/cases/invalid_connection_test.rb +22 -0
  1555. data/rails/activerecord/test/cases/invalid_date_test.rb +32 -0
  1556. data/rails/activerecord/test/cases/invertible_migration_test.rb +295 -0
  1557. data/rails/activerecord/test/cases/json_serialization_test.rb +300 -0
  1558. data/rails/activerecord/test/cases/locking_test.rb +477 -0
  1559. data/rails/activerecord/test/cases/log_subscriber_test.rb +136 -0
  1560. data/rails/activerecord/test/cases/migration/change_schema_test.rb +450 -0
  1561. data/rails/activerecord/test/cases/migration/change_table_test.rb +224 -0
  1562. data/rails/activerecord/test/cases/migration/column_attributes_test.rb +185 -0
  1563. data/rails/activerecord/test/cases/migration/column_positioning_test.rb +56 -0
  1564. data/rails/activerecord/test/cases/migration/columns_test.rb +299 -0
  1565. data/rails/activerecord/test/cases/migration/command_recorder_test.rb +305 -0
  1566. data/rails/activerecord/test/cases/migration/create_join_table_test.rb +148 -0
  1567. data/rails/activerecord/test/cases/migration/foreign_key_test.rb +250 -0
  1568. data/rails/activerecord/test/cases/migration/helper.rb +39 -0
  1569. data/rails/activerecord/test/cases/migration/index_test.rb +208 -0
  1570. data/rails/activerecord/test/cases/migration/logger_test.rb +36 -0
  1571. data/rails/activerecord/test/cases/migration/pending_migrations_test.rb +53 -0
  1572. data/rails/activerecord/test/cases/migration/references_foreign_key_test.rb +111 -0
  1573. data/rails/activerecord/test/cases/migration/references_index_test.rb +101 -0
  1574. data/rails/activerecord/test/cases/migration/references_statements_test.rb +116 -0
  1575. data/rails/activerecord/test/cases/migration/rename_table_test.rb +93 -0
  1576. data/rails/activerecord/test/cases/migration/table_and_index_test.rb +24 -0
  1577. data/rails/activerecord/test/cases/migration_test.rb +939 -0
  1578. data/rails/activerecord/test/cases/migrator_test.rb +388 -0
  1579. data/rails/activerecord/test/cases/mixin_test.rb +70 -0
  1580. data/rails/activerecord/test/cases/modules_test.rb +173 -0
  1581. data/rails/activerecord/test/cases/multiparameter_attributes_test.rb +350 -0
  1582. data/rails/activerecord/test/cases/multiple_db_test.rb +115 -0
  1583. data/rails/activerecord/test/cases/nested_attributes_test.rb +1057 -0
  1584. data/rails/activerecord/test/cases/nested_attributes_with_callbacks_test.rb +144 -0
  1585. data/rails/activerecord/test/cases/persistence_test.rb +881 -0
  1586. data/rails/activerecord/test/cases/pooled_connections_test.rb +81 -0
  1587. data/rails/activerecord/test/cases/primary_keys_test.rb +236 -0
  1588. data/rails/activerecord/test/cases/query_cache_test.rb +322 -0
  1589. data/rails/activerecord/test/cases/quoting_test.rb +156 -0
  1590. data/rails/activerecord/test/cases/readonly_test.rb +118 -0
  1591. data/rails/activerecord/test/cases/reaper_test.rb +85 -0
  1592. data/rails/activerecord/test/cases/reflection_test.rb +454 -0
  1593. data/rails/activerecord/test/cases/relation/delegation_test.rb +68 -0
  1594. data/rails/activerecord/test/cases/relation/merging_test.rb +161 -0
  1595. data/rails/activerecord/test/cases/relation/mutation_test.rb +165 -0
  1596. data/rails/activerecord/test/cases/relation/predicate_builder_test.rb +14 -0
  1597. data/rails/activerecord/test/cases/relation/where_chain_test.rb +181 -0
  1598. data/rails/activerecord/test/cases/relation/where_test.rb +278 -0
  1599. data/rails/activerecord/test/cases/relation_test.rb +267 -0
  1600. data/rails/activerecord/test/cases/relations_test.rb +1756 -0
  1601. data/rails/activerecord/test/cases/reload_models_test.rb +22 -0
  1602. data/rails/activerecord/test/cases/result_test.rb +80 -0
  1603. data/rails/activerecord/test/cases/sanitize_test.rb +83 -0
  1604. data/rails/activerecord/test/cases/schema_dumper_test.rb +445 -0
  1605. data/rails/activerecord/test/cases/scoping/default_scoping_test.rb +436 -0
  1606. data/rails/activerecord/test/cases/scoping/named_scoping_test.rb +524 -0
  1607. data/rails/activerecord/test/cases/scoping/relation_scoping_test.rb +357 -0
  1608. data/rails/activerecord/test/cases/serialization_test.rb +104 -0
  1609. data/rails/activerecord/test/cases/serialized_attribute_test.rb +267 -0
  1610. data/rails/activerecord/test/cases/statement_cache_test.rb +98 -0
  1611. data/rails/activerecord/test/cases/store_test.rb +194 -0
  1612. data/rails/activerecord/test/cases/tasks/database_tasks_test.rb +380 -0
  1613. data/rails/activerecord/test/cases/tasks/mysql_rake_test.rb +311 -0
  1614. data/rails/activerecord/test/cases/tasks/postgresql_rake_test.rb +245 -0
  1615. data/rails/activerecord/test/cases/tasks/sqlite_rake_test.rb +193 -0
  1616. data/rails/activerecord/test/cases/test_case.rb +123 -0
  1617. data/rails/activerecord/test/cases/timestamp_test.rb +446 -0
  1618. data/rails/activerecord/test/cases/transaction_callbacks_test.rb +444 -0
  1619. data/rails/activerecord/test/cases/transaction_isolation_test.rb +106 -0
  1620. data/rails/activerecord/test/cases/transactions_test.rb +792 -0
  1621. data/rails/activerecord/test/cases/type/decimal_test.rb +51 -0
  1622. data/rails/activerecord/test/cases/type/integer_test.rb +121 -0
  1623. data/rails/activerecord/test/cases/type/string_test.rb +36 -0
  1624. data/rails/activerecord/test/cases/type/type_map_test.rb +177 -0
  1625. data/rails/activerecord/test/cases/type/unsigned_integer_test.rb +18 -0
  1626. data/rails/activerecord/test/cases/types_test.rb +141 -0
  1627. data/rails/activerecord/test/cases/unconnected_test.rb +33 -0
  1628. data/rails/activerecord/test/cases/validations/association_validation_test.rb +86 -0
  1629. data/rails/activerecord/test/cases/validations/i18n_generate_message_validation_test.rb +84 -0
  1630. data/rails/activerecord/test/cases/validations/i18n_validation_test.rb +90 -0
  1631. data/rails/activerecord/test/cases/validations/length_validation_test.rb +47 -0
  1632. data/rails/activerecord/test/cases/validations/presence_validation_test.rb +68 -0
  1633. data/rails/activerecord/test/cases/validations/uniqueness_validation_test.rb +406 -0
  1634. data/rails/activerecord/test/cases/validations_repair_helper.rb +23 -0
  1635. data/rails/activerecord/test/cases/validations_test.rb +165 -0
  1636. data/rails/activerecord/test/cases/view_test.rb +113 -0
  1637. data/rails/activerecord/test/cases/xml_serialization_test.rb +447 -0
  1638. data/rails/activerecord/test/cases/yaml_serialization_test.rb +86 -0
  1639. data/rails/activerecord/test/config.example.yml +106 -0
  1640. data/rails/activerecord/test/config.rb +5 -0
  1641. data/rails/activerecord/test/fixtures/.gitignore +1 -0
  1642. data/rails/activerecord/test/fixtures/accounts.yml +29 -0
  1643. data/rails/activerecord/test/fixtures/admin/accounts.yml +2 -0
  1644. data/rails/activerecord/test/fixtures/admin/randomly_named_a9.yml +7 -0
  1645. data/rails/activerecord/test/fixtures/admin/randomly_named_b0.yml +7 -0
  1646. data/rails/activerecord/test/fixtures/admin/users.yml +10 -0
  1647. data/rails/activerecord/test/fixtures/all/developers.yml +0 -0
  1648. data/rails/activerecord/test/fixtures/all/people.yml +0 -0
  1649. data/rails/activerecord/test/fixtures/all/tasks.yml +0 -0
  1650. data/rails/activerecord/test/fixtures/author_addresses.yml +5 -0
  1651. data/rails/activerecord/test/fixtures/author_favorites.yml +4 -0
  1652. data/rails/activerecord/test/fixtures/authors.yml +15 -0
  1653. data/rails/activerecord/test/fixtures/binaries.yml +133 -0
  1654. data/rails/activerecord/test/fixtures/books.yml +11 -0
  1655. data/rails/activerecord/test/fixtures/bulbs.yml +5 -0
  1656. data/rails/activerecord/test/fixtures/cars.yml +9 -0
  1657. data/rails/activerecord/test/fixtures/categories/special_categories.yml +9 -0
  1658. data/rails/activerecord/test/fixtures/categories/subsubdir/arbitrary_filename.yml +4 -0
  1659. data/rails/activerecord/test/fixtures/categories.yml +19 -0
  1660. data/rails/activerecord/test/fixtures/categories_ordered.yml +7 -0
  1661. data/rails/activerecord/test/fixtures/categories_posts.yml +31 -0
  1662. data/rails/activerecord/test/fixtures/categorizations.yml +23 -0
  1663. data/rails/activerecord/test/fixtures/clubs.yml +8 -0
  1664. data/rails/activerecord/test/fixtures/collections.yml +3 -0
  1665. data/rails/activerecord/test/fixtures/colleges.yml +3 -0
  1666. data/rails/activerecord/test/fixtures/comments.yml +65 -0
  1667. data/rails/activerecord/test/fixtures/companies.yml +67 -0
  1668. data/rails/activerecord/test/fixtures/computers.yml +10 -0
  1669. data/rails/activerecord/test/fixtures/courses.yml +8 -0
  1670. data/rails/activerecord/test/fixtures/customers.yml +26 -0
  1671. data/rails/activerecord/test/fixtures/dashboards.yml +6 -0
  1672. data/rails/activerecord/test/fixtures/developers.yml +22 -0
  1673. data/rails/activerecord/test/fixtures/developers_projects.yml +17 -0
  1674. data/rails/activerecord/test/fixtures/dog_lovers.yml +7 -0
  1675. data/rails/activerecord/test/fixtures/dogs.yml +4 -0
  1676. data/rails/activerecord/test/fixtures/edges.yml +5 -0
  1677. data/rails/activerecord/test/fixtures/entrants.yml +14 -0
  1678. data/rails/activerecord/test/fixtures/essays.yml +6 -0
  1679. data/rails/activerecord/test/fixtures/faces.yml +11 -0
  1680. data/rails/activerecord/test/fixtures/fk_test_has_fk.yml +3 -0
  1681. data/rails/activerecord/test/fixtures/fk_test_has_pk.yml +2 -0
  1682. data/rails/activerecord/test/fixtures/friendships.yml +4 -0
  1683. data/rails/activerecord/test/fixtures/funny_jokes.yml +10 -0
  1684. data/rails/activerecord/test/fixtures/interests.yml +33 -0
  1685. data/rails/activerecord/test/fixtures/items.yml +3 -0
  1686. data/rails/activerecord/test/fixtures/jobs.yml +7 -0
  1687. data/rails/activerecord/test/fixtures/legacy_things.yml +3 -0
  1688. data/rails/activerecord/test/fixtures/mateys.yml +4 -0
  1689. data/rails/activerecord/test/fixtures/member_details.yml +8 -0
  1690. data/rails/activerecord/test/fixtures/member_types.yml +6 -0
  1691. data/rails/activerecord/test/fixtures/members.yml +11 -0
  1692. data/rails/activerecord/test/fixtures/memberships.yml +34 -0
  1693. data/rails/activerecord/test/fixtures/men.yml +5 -0
  1694. data/rails/activerecord/test/fixtures/minimalistics.yml +2 -0
  1695. data/rails/activerecord/test/fixtures/minivans.yml +5 -0
  1696. data/rails/activerecord/test/fixtures/mixed_case_monkeys.yml +6 -0
  1697. data/rails/activerecord/test/fixtures/mixins.yml +29 -0
  1698. data/rails/activerecord/test/fixtures/movies.yml +7 -0
  1699. data/rails/activerecord/test/fixtures/naked/csv/accounts.csv +1 -0
  1700. data/rails/activerecord/test/fixtures/naked/yml/accounts.yml +1 -0
  1701. data/rails/activerecord/test/fixtures/naked/yml/companies.yml +1 -0
  1702. data/rails/activerecord/test/fixtures/naked/yml/courses.yml +1 -0
  1703. data/rails/activerecord/test/fixtures/organizations.yml +5 -0
  1704. data/rails/activerecord/test/fixtures/other_topics.yml +42 -0
  1705. data/rails/activerecord/test/fixtures/owners.yml +9 -0
  1706. data/rails/activerecord/test/fixtures/parrots.yml +27 -0
  1707. data/rails/activerecord/test/fixtures/parrots_pirates.yml +7 -0
  1708. data/rails/activerecord/test/fixtures/people.yml +24 -0
  1709. data/rails/activerecord/test/fixtures/peoples_treasures.yml +3 -0
  1710. data/rails/activerecord/test/fixtures/pets.yml +19 -0
  1711. data/rails/activerecord/test/fixtures/pirates.yml +12 -0
  1712. data/rails/activerecord/test/fixtures/posts.yml +80 -0
  1713. data/rails/activerecord/test/fixtures/price_estimates.yml +7 -0
  1714. data/rails/activerecord/test/fixtures/products.yml +4 -0
  1715. data/rails/activerecord/test/fixtures/projects.yml +7 -0
  1716. data/rails/activerecord/test/fixtures/randomly_named_a9.yml +7 -0
  1717. data/rails/activerecord/test/fixtures/ratings.yml +14 -0
  1718. data/rails/activerecord/test/fixtures/readers.yml +11 -0
  1719. data/rails/activerecord/test/fixtures/references.yml +17 -0
  1720. data/rails/activerecord/test/fixtures/reserved_words/distinct.yml +5 -0
  1721. data/rails/activerecord/test/fixtures/reserved_words/distinct_select.yml +11 -0
  1722. data/rails/activerecord/test/fixtures/reserved_words/group.yml +14 -0
  1723. data/rails/activerecord/test/fixtures/reserved_words/select.yml +8 -0
  1724. data/rails/activerecord/test/fixtures/reserved_words/values.yml +7 -0
  1725. data/rails/activerecord/test/fixtures/ships.yml +6 -0
  1726. data/rails/activerecord/test/fixtures/speedometers.yml +8 -0
  1727. data/rails/activerecord/test/fixtures/sponsors.yml +12 -0
  1728. data/rails/activerecord/test/fixtures/string_key_objects.yml +7 -0
  1729. data/rails/activerecord/test/fixtures/subscribers.yml +11 -0
  1730. data/rails/activerecord/test/fixtures/subscriptions.yml +12 -0
  1731. data/rails/activerecord/test/fixtures/taggings.yml +78 -0
  1732. data/rails/activerecord/test/fixtures/tags.yml +11 -0
  1733. data/rails/activerecord/test/fixtures/tasks.yml +7 -0
  1734. data/rails/activerecord/test/fixtures/teapots.yml +3 -0
  1735. data/rails/activerecord/test/fixtures/to_be_linked/accounts.yml +2 -0
  1736. data/rails/activerecord/test/fixtures/to_be_linked/users.yml +10 -0
  1737. data/rails/activerecord/test/fixtures/topics.yml +49 -0
  1738. data/rails/activerecord/test/fixtures/toys.yml +14 -0
  1739. data/rails/activerecord/test/fixtures/traffic_lights.yml +10 -0
  1740. data/rails/activerecord/test/fixtures/treasures.yml +10 -0
  1741. data/rails/activerecord/test/fixtures/uuid_children.yml +3 -0
  1742. data/rails/activerecord/test/fixtures/uuid_parents.yml +2 -0
  1743. data/rails/activerecord/test/fixtures/variants.yml +4 -0
  1744. data/rails/activerecord/test/fixtures/vegetables.yml +20 -0
  1745. data/rails/activerecord/test/fixtures/vertices.yml +4 -0
  1746. data/rails/activerecord/test/fixtures/warehouse-things.yml +3 -0
  1747. data/rails/activerecord/test/fixtures/zines.yml +5 -0
  1748. data/rails/activerecord/test/migrations/10_urban/9_add_expressions.rb +11 -0
  1749. data/rails/activerecord/test/migrations/decimal/1_give_me_big_numbers.rb +15 -0
  1750. data/rails/activerecord/test/migrations/empty/.gitkeep +0 -0
  1751. data/rails/activerecord/test/migrations/magic/1_currencies_have_symbols.rb +12 -0
  1752. data/rails/activerecord/test/migrations/missing/1000_people_have_middle_names.rb +9 -0
  1753. data/rails/activerecord/test/migrations/missing/1_people_have_last_names.rb +9 -0
  1754. data/rails/activerecord/test/migrations/missing/3_we_need_reminders.rb +12 -0
  1755. data/rails/activerecord/test/migrations/missing/4_innocent_jointable.rb +12 -0
  1756. data/rails/activerecord/test/migrations/rename/1_we_need_things.rb +11 -0
  1757. data/rails/activerecord/test/migrations/rename/2_rename_things.rb +9 -0
  1758. data/rails/activerecord/test/migrations/to_copy/1_people_have_hobbies.rb +9 -0
  1759. data/rails/activerecord/test/migrations/to_copy/2_people_have_descriptions.rb +9 -0
  1760. data/rails/activerecord/test/migrations/to_copy2/1_create_articles.rb +7 -0
  1761. data/rails/activerecord/test/migrations/to_copy2/2_create_comments.rb +7 -0
  1762. data/rails/activerecord/test/migrations/to_copy_with_name_collision/1_people_have_hobbies.rb +9 -0
  1763. data/rails/activerecord/test/migrations/to_copy_with_timestamps/20090101010101_people_have_hobbies.rb +9 -0
  1764. data/rails/activerecord/test/migrations/to_copy_with_timestamps/20090101010202_people_have_descriptions.rb +9 -0
  1765. data/rails/activerecord/test/migrations/to_copy_with_timestamps2/20090101010101_create_articles.rb +7 -0
  1766. data/rails/activerecord/test/migrations/to_copy_with_timestamps2/20090101010202_create_comments.rb +7 -0
  1767. data/rails/activerecord/test/migrations/valid/1_valid_people_have_last_names.rb +9 -0
  1768. data/rails/activerecord/test/migrations/valid/2_we_need_reminders.rb +12 -0
  1769. data/rails/activerecord/test/migrations/valid/3_innocent_jointable.rb +12 -0
  1770. data/rails/activerecord/test/migrations/valid_with_subdirectories/1_valid_people_have_last_names.rb +9 -0
  1771. data/rails/activerecord/test/migrations/valid_with_subdirectories/sub/2_we_need_reminders.rb +12 -0
  1772. data/rails/activerecord/test/migrations/valid_with_subdirectories/sub1/3_innocent_jointable.rb +12 -0
  1773. data/rails/activerecord/test/migrations/valid_with_timestamps/20100101010101_valid_with_timestamps_people_have_last_names.rb +9 -0
  1774. data/rails/activerecord/test/migrations/valid_with_timestamps/20100201010101_valid_with_timestamps_we_need_reminders.rb +12 -0
  1775. data/rails/activerecord/test/migrations/valid_with_timestamps/20100301010101_valid_with_timestamps_innocent_jointable.rb +12 -0
  1776. data/rails/activerecord/test/migrations/version_check/20131219224947_migration_version_check.rb +8 -0
  1777. data/rails/activerecord/test/models/admin/account.rb +3 -0
  1778. data/rails/activerecord/test/models/admin/randomly_named_c1.rb +3 -0
  1779. data/rails/activerecord/test/models/admin/user.rb +40 -0
  1780. data/rails/activerecord/test/models/admin.rb +5 -0
  1781. data/rails/activerecord/test/models/aircraft.rb +4 -0
  1782. data/rails/activerecord/test/models/arunit2_model.rb +3 -0
  1783. data/rails/activerecord/test/models/author.rb +212 -0
  1784. data/rails/activerecord/test/models/auto_id.rb +4 -0
  1785. data/rails/activerecord/test/models/autoloadable/extra_firm.rb +2 -0
  1786. data/rails/activerecord/test/models/binary.rb +2 -0
  1787. data/rails/activerecord/test/models/bird.rb +12 -0
  1788. data/rails/activerecord/test/models/book.rb +18 -0
  1789. data/rails/activerecord/test/models/boolean.rb +2 -0
  1790. data/rails/activerecord/test/models/bulb.rb +51 -0
  1791. data/rails/activerecord/test/models/cake_designer.rb +3 -0
  1792. data/rails/activerecord/test/models/car.rb +26 -0
  1793. data/rails/activerecord/test/models/categorization.rb +19 -0
  1794. data/rails/activerecord/test/models/category.rb +35 -0
  1795. data/rails/activerecord/test/models/chef.rb +3 -0
  1796. data/rails/activerecord/test/models/citation.rb +3 -0
  1797. data/rails/activerecord/test/models/club.rb +23 -0
  1798. data/rails/activerecord/test/models/college.rb +10 -0
  1799. data/rails/activerecord/test/models/column.rb +3 -0
  1800. data/rails/activerecord/test/models/column_name.rb +3 -0
  1801. data/rails/activerecord/test/models/comment.rb +59 -0
  1802. data/rails/activerecord/test/models/company.rb +225 -0
  1803. data/rails/activerecord/test/models/company_in_module.rb +98 -0
  1804. data/rails/activerecord/test/models/computer.rb +3 -0
  1805. data/rails/activerecord/test/models/contact.rb +41 -0
  1806. data/rails/activerecord/test/models/contract.rb +20 -0
  1807. data/rails/activerecord/test/models/country.rb +7 -0
  1808. data/rails/activerecord/test/models/course.rb +6 -0
  1809. data/rails/activerecord/test/models/customer.rb +77 -0
  1810. data/rails/activerecord/test/models/dashboard.rb +3 -0
  1811. data/rails/activerecord/test/models/default.rb +2 -0
  1812. data/rails/activerecord/test/models/department.rb +4 -0
  1813. data/rails/activerecord/test/models/developer.rb +252 -0
  1814. data/rails/activerecord/test/models/dog.rb +5 -0
  1815. data/rails/activerecord/test/models/dog_lover.rb +5 -0
  1816. data/rails/activerecord/test/models/drink_designer.rb +3 -0
  1817. data/rails/activerecord/test/models/edge.rb +5 -0
  1818. data/rails/activerecord/test/models/electron.rb +5 -0
  1819. data/rails/activerecord/test/models/engine.rb +4 -0
  1820. data/rails/activerecord/test/models/entrant.rb +3 -0
  1821. data/rails/activerecord/test/models/essay.rb +5 -0
  1822. data/rails/activerecord/test/models/event.rb +3 -0
  1823. data/rails/activerecord/test/models/eye.rb +37 -0
  1824. data/rails/activerecord/test/models/face.rb +9 -0
  1825. data/rails/activerecord/test/models/friendship.rb +6 -0
  1826. data/rails/activerecord/test/models/guid.rb +2 -0
  1827. data/rails/activerecord/test/models/hotel.rb +6 -0
  1828. data/rails/activerecord/test/models/image.rb +3 -0
  1829. data/rails/activerecord/test/models/interest.rb +5 -0
  1830. data/rails/activerecord/test/models/invoice.rb +4 -0
  1831. data/rails/activerecord/test/models/item.rb +7 -0
  1832. data/rails/activerecord/test/models/job.rb +7 -0
  1833. data/rails/activerecord/test/models/joke.rb +7 -0
  1834. data/rails/activerecord/test/models/keyboard.rb +3 -0
  1835. data/rails/activerecord/test/models/legacy_thing.rb +3 -0
  1836. data/rails/activerecord/test/models/lesson.rb +11 -0
  1837. data/rails/activerecord/test/models/line_item.rb +3 -0
  1838. data/rails/activerecord/test/models/liquid.rb +4 -0
  1839. data/rails/activerecord/test/models/man.rb +11 -0
  1840. data/rails/activerecord/test/models/matey.rb +4 -0
  1841. data/rails/activerecord/test/models/member.rb +38 -0
  1842. data/rails/activerecord/test/models/member_detail.rb +7 -0
  1843. data/rails/activerecord/test/models/member_type.rb +3 -0
  1844. data/rails/activerecord/test/models/membership.rb +20 -0
  1845. data/rails/activerecord/test/models/minimalistic.rb +2 -0
  1846. data/rails/activerecord/test/models/minivan.rb +9 -0
  1847. data/rails/activerecord/test/models/mixed_case_monkey.rb +3 -0
  1848. data/rails/activerecord/test/models/molecule.rb +6 -0
  1849. data/rails/activerecord/test/models/movie.rb +5 -0
  1850. data/rails/activerecord/test/models/order.rb +4 -0
  1851. data/rails/activerecord/test/models/organization.rb +14 -0
  1852. data/rails/activerecord/test/models/owner.rb +34 -0
  1853. data/rails/activerecord/test/models/parrot.rb +29 -0
  1854. data/rails/activerecord/test/models/person.rb +143 -0
  1855. data/rails/activerecord/test/models/personal_legacy_thing.rb +4 -0
  1856. data/rails/activerecord/test/models/pet.rb +15 -0
  1857. data/rails/activerecord/test/models/pirate.rb +92 -0
  1858. data/rails/activerecord/test/models/possession.rb +3 -0
  1859. data/rails/activerecord/test/models/post.rb +243 -0
  1860. data/rails/activerecord/test/models/price_estimate.rb +4 -0
  1861. data/rails/activerecord/test/models/project.rb +29 -0
  1862. data/rails/activerecord/test/models/publisher/article.rb +4 -0
  1863. data/rails/activerecord/test/models/publisher/magazine.rb +3 -0
  1864. data/rails/activerecord/test/models/publisher.rb +2 -0
  1865. data/rails/activerecord/test/models/randomly_named_c1.rb +3 -0
  1866. data/rails/activerecord/test/models/rating.rb +4 -0
  1867. data/rails/activerecord/test/models/reader.rb +23 -0
  1868. data/rails/activerecord/test/models/record.rb +2 -0
  1869. data/rails/activerecord/test/models/reference.rb +22 -0
  1870. data/rails/activerecord/test/models/reply.rb +61 -0
  1871. data/rails/activerecord/test/models/ship.rb +26 -0
  1872. data/rails/activerecord/test/models/ship_part.rb +8 -0
  1873. data/rails/activerecord/test/models/shop.rb +17 -0
  1874. data/rails/activerecord/test/models/speedometer.rb +6 -0
  1875. data/rails/activerecord/test/models/sponsor.rb +7 -0
  1876. data/rails/activerecord/test/models/string_key_object.rb +3 -0
  1877. data/rails/activerecord/test/models/student.rb +4 -0
  1878. data/rails/activerecord/test/models/subject.rb +16 -0
  1879. data/rails/activerecord/test/models/subscriber.rb +8 -0
  1880. data/rails/activerecord/test/models/subscription.rb +4 -0
  1881. data/rails/activerecord/test/models/tag.rb +7 -0
  1882. data/rails/activerecord/test/models/tagging.rb +13 -0
  1883. data/rails/activerecord/test/models/task.rb +5 -0
  1884. data/rails/activerecord/test/models/topic.rb +124 -0
  1885. data/rails/activerecord/test/models/toy.rb +6 -0
  1886. data/rails/activerecord/test/models/traffic_light.rb +4 -0
  1887. data/rails/activerecord/test/models/treasure.rb +13 -0
  1888. data/rails/activerecord/test/models/treaty.rb +7 -0
  1889. data/rails/activerecord/test/models/tyre.rb +11 -0
  1890. data/rails/activerecord/test/models/uuid_child.rb +3 -0
  1891. data/rails/activerecord/test/models/uuid_parent.rb +3 -0
  1892. data/rails/activerecord/test/models/vegetables.rb +24 -0
  1893. data/rails/activerecord/test/models/vertex.rb +9 -0
  1894. data/rails/activerecord/test/models/warehouse_thing.rb +5 -0
  1895. data/rails/activerecord/test/models/wheel.rb +3 -0
  1896. data/rails/activerecord/test/models/without_table.rb +3 -0
  1897. data/rails/activerecord/test/models/zine.rb +3 -0
  1898. data/rails/activerecord/test/schema/mysql2_specific_schema.rb +58 -0
  1899. data/rails/activerecord/test/schema/mysql_specific_schema.rb +70 -0
  1900. data/rails/activerecord/test/schema/oracle_specific_schema.rb +43 -0
  1901. data/rails/activerecord/test/schema/postgresql_specific_schema.rb +198 -0
  1902. data/rails/activerecord/test/schema/schema.rb +905 -0
  1903. data/rails/activerecord/test/schema/sqlite_specific_schema.rb +22 -0
  1904. data/rails/activerecord/test/support/config.rb +43 -0
  1905. data/rails/activerecord/test/support/connection.rb +21 -0
  1906. data/rails/activerecord/test/support/connection_helper.rb +14 -0
  1907. data/rails/activerecord/test/support/ddl_helper.rb +8 -0
  1908. data/rails/activerecord/test/support/schema_dumping_helper.rb +20 -0
  1909. data/rails/activesupport/CHANGELOG.md +418 -0
  1910. data/rails/activesupport/MIT-LICENSE +20 -0
  1911. data/rails/activesupport/README.rdoc +40 -0
  1912. data/rails/activesupport/Rakefile +32 -0
  1913. data/rails/activesupport/activesupport.gemspec +28 -0
  1914. data/rails/activesupport/bin/generate_tables +144 -0
  1915. data/rails/activesupport/lib/active_support/all.rb +3 -0
  1916. data/rails/activesupport/lib/active_support/backtrace_cleaner.rb +103 -0
  1917. data/rails/activesupport/lib/active_support/benchmarkable.rb +49 -0
  1918. data/rails/activesupport/lib/active_support/builder.rb +6 -0
  1919. data/rails/activesupport/lib/active_support/cache/file_store.rb +190 -0
  1920. data/rails/activesupport/lib/active_support/cache/mem_cache_store.rb +198 -0
  1921. data/rails/activesupport/lib/active_support/cache/memory_store.rb +172 -0
  1922. data/rails/activesupport/lib/active_support/cache/null_store.rb +44 -0
  1923. data/rails/activesupport/lib/active_support/cache/strategy/local_cache.rb +161 -0
  1924. data/rails/activesupport/lib/active_support/cache/strategy/local_cache_middleware.rb +44 -0
  1925. data/rails/activesupport/lib/active_support/cache.rb +717 -0
  1926. data/rails/activesupport/lib/active_support/callbacks.rb +793 -0
  1927. data/rails/activesupport/lib/active_support/concern.rb +142 -0
  1928. data/rails/activesupport/lib/active_support/concurrency/latch.rb +27 -0
  1929. data/rails/activesupport/lib/active_support/configurable.rb +147 -0
  1930. data/rails/activesupport/lib/active_support/core_ext/array/access.rb +64 -0
  1931. data/rails/activesupport/lib/active_support/core_ext/array/conversions.rb +209 -0
  1932. data/rails/activesupport/lib/active_support/core_ext/array/extract_options.rb +29 -0
  1933. data/rails/activesupport/lib/active_support/core_ext/array/grouping.rb +116 -0
  1934. data/rails/activesupport/lib/active_support/core_ext/array/prepend_and_append.rb +7 -0
  1935. data/rails/activesupport/lib/active_support/core_ext/array/wrap.rb +45 -0
  1936. data/rails/activesupport/lib/active_support/core_ext/array.rb +6 -0
  1937. data/rails/activesupport/lib/active_support/core_ext/benchmark.rb +14 -0
  1938. data/rails/activesupport/lib/active_support/core_ext/big_decimal/conversions.rb +16 -0
  1939. data/rails/activesupport/lib/active_support/core_ext/big_decimal/yaml_conversions.rb +14 -0
  1940. data/rails/activesupport/lib/active_support/core_ext/big_decimal.rb +1 -0
  1941. data/rails/activesupport/lib/active_support/core_ext/class/attribute.rb +127 -0
  1942. data/rails/activesupport/lib/active_support/core_ext/class/attribute_accessors.rb +4 -0
  1943. data/rails/activesupport/lib/active_support/core_ext/class/delegating_attributes.rb +45 -0
  1944. data/rails/activesupport/lib/active_support/core_ext/class/subclasses.rb +42 -0
  1945. data/rails/activesupport/lib/active_support/core_ext/class.rb +3 -0
  1946. data/rails/activesupport/lib/active_support/core_ext/date/acts_like.rb +8 -0
  1947. data/rails/activesupport/lib/active_support/core_ext/date/calculations.rb +143 -0
  1948. data/rails/activesupport/lib/active_support/core_ext/date/conversions.rb +88 -0
  1949. data/rails/activesupport/lib/active_support/core_ext/date/zones.rb +6 -0
  1950. data/rails/activesupport/lib/active_support/core_ext/date.rb +5 -0
  1951. data/rails/activesupport/lib/active_support/core_ext/date_and_time/calculations.rb +251 -0
  1952. data/rails/activesupport/lib/active_support/core_ext/date_and_time/zones.rb +41 -0
  1953. data/rails/activesupport/lib/active_support/core_ext/date_time/acts_like.rb +14 -0
  1954. data/rails/activesupport/lib/active_support/core_ext/date_time/calculations.rb +173 -0
  1955. data/rails/activesupport/lib/active_support/core_ext/date_time/conversions.rb +103 -0
  1956. data/rails/activesupport/lib/active_support/core_ext/date_time/zones.rb +6 -0
  1957. data/rails/activesupport/lib/active_support/core_ext/date_time.rb +4 -0
  1958. data/rails/activesupport/lib/active_support/core_ext/digest/uuid.rb +51 -0
  1959. data/rails/activesupport/lib/active_support/core_ext/enumerable.rb +80 -0
  1960. data/rails/activesupport/lib/active_support/core_ext/file/atomic.rb +63 -0
  1961. data/rails/activesupport/lib/active_support/core_ext/file.rb +1 -0
  1962. data/rails/activesupport/lib/active_support/core_ext/hash/compact.rb +20 -0
  1963. data/rails/activesupport/lib/active_support/core_ext/hash/conversions.rb +243 -0
  1964. data/rails/activesupport/lib/active_support/core_ext/hash/deep_merge.rb +38 -0
  1965. data/rails/activesupport/lib/active_support/core_ext/hash/except.rb +21 -0
  1966. data/rails/activesupport/lib/active_support/core_ext/hash/indifferent_access.rb +23 -0
  1967. data/rails/activesupport/lib/active_support/core_ext/hash/keys.rb +166 -0
  1968. data/rails/activesupport/lib/active_support/core_ext/hash/reverse_merge.rb +22 -0
  1969. data/rails/activesupport/lib/active_support/core_ext/hash/slice.rb +48 -0
  1970. data/rails/activesupport/lib/active_support/core_ext/hash/transform_values.rb +23 -0
  1971. data/rails/activesupport/lib/active_support/core_ext/hash.rb +9 -0
  1972. data/rails/activesupport/lib/active_support/core_ext/integer/inflections.rb +29 -0
  1973. data/rails/activesupport/lib/active_support/core_ext/integer/multiple.rb +10 -0
  1974. data/rails/activesupport/lib/active_support/core_ext/integer/time.rb +44 -0
  1975. data/rails/activesupport/lib/active_support/core_ext/integer.rb +3 -0
  1976. data/rails/activesupport/lib/active_support/core_ext/kernel/agnostics.rb +11 -0
  1977. data/rails/activesupport/lib/active_support/core_ext/kernel/concern.rb +10 -0
  1978. data/rails/activesupport/lib/active_support/core_ext/kernel/debugger.rb +10 -0
  1979. data/rails/activesupport/lib/active_support/core_ext/kernel/reporting.rb +124 -0
  1980. data/rails/activesupport/lib/active_support/core_ext/kernel/singleton_class.rb +6 -0
  1981. data/rails/activesupport/lib/active_support/core_ext/kernel.rb +5 -0
  1982. data/rails/activesupport/lib/active_support/core_ext/load_error.rb +28 -0
  1983. data/rails/activesupport/lib/active_support/core_ext/marshal.rb +21 -0
  1984. data/rails/activesupport/lib/active_support/core_ext/module/aliasing.rb +69 -0
  1985. data/rails/activesupport/lib/active_support/core_ext/module/anonymous.rb +19 -0
  1986. data/rails/activesupport/lib/active_support/core_ext/module/attr_internal.rb +39 -0
  1987. data/rails/activesupport/lib/active_support/core_ext/module/attribute_accessors.rb +212 -0
  1988. data/rails/activesupport/lib/active_support/core_ext/module/concerning.rb +135 -0
  1989. data/rails/activesupport/lib/active_support/core_ext/module/delegation.rb +217 -0
  1990. data/rails/activesupport/lib/active_support/core_ext/module/deprecation.rb +23 -0
  1991. data/rails/activesupport/lib/active_support/core_ext/module/introspection.rb +62 -0
  1992. data/rails/activesupport/lib/active_support/core_ext/module/method_transplanting.rb +11 -0
  1993. data/rails/activesupport/lib/active_support/core_ext/module/qualified_const.rb +52 -0
  1994. data/rails/activesupport/lib/active_support/core_ext/module/reachable.rb +8 -0
  1995. data/rails/activesupport/lib/active_support/core_ext/module/remove_method.rb +12 -0
  1996. data/rails/activesupport/lib/active_support/core_ext/module.rb +11 -0
  1997. data/rails/activesupport/lib/active_support/core_ext/name_error.rb +18 -0
  1998. data/rails/activesupport/lib/active_support/core_ext/numeric/bytes.rb +44 -0
  1999. data/rails/activesupport/lib/active_support/core_ext/numeric/conversions.rb +135 -0
  2000. data/rails/activesupport/lib/active_support/core_ext/numeric/time.rb +69 -0
  2001. data/rails/activesupport/lib/active_support/core_ext/numeric.rb +3 -0
  2002. data/rails/activesupport/lib/active_support/core_ext/object/acts_like.rb +10 -0
  2003. data/rails/activesupport/lib/active_support/core_ext/object/blank.rb +131 -0
  2004. data/rails/activesupport/lib/active_support/core_ext/object/conversions.rb +4 -0
  2005. data/rails/activesupport/lib/active_support/core_ext/object/deep_dup.rb +46 -0
  2006. data/rails/activesupport/lib/active_support/core_ext/object/duplicable.rb +103 -0
  2007. data/rails/activesupport/lib/active_support/core_ext/object/inclusion.rb +27 -0
  2008. data/rails/activesupport/lib/active_support/core_ext/object/instance_variables.rb +28 -0
  2009. data/rails/activesupport/lib/active_support/core_ext/object/itself.rb +15 -0
  2010. data/rails/activesupport/lib/active_support/core_ext/object/json.rb +197 -0
  2011. data/rails/activesupport/lib/active_support/core_ext/object/to_param.rb +1 -0
  2012. data/rails/activesupport/lib/active_support/core_ext/object/to_query.rb +84 -0
  2013. data/rails/activesupport/lib/active_support/core_ext/object/try.rb +100 -0
  2014. data/rails/activesupport/lib/active_support/core_ext/object/with_options.rb +69 -0
  2015. data/rails/activesupport/lib/active_support/core_ext/object.rb +15 -0
  2016. data/rails/activesupport/lib/active_support/core_ext/range/conversions.rb +19 -0
  2017. data/rails/activesupport/lib/active_support/core_ext/range/each.rb +23 -0
  2018. data/rails/activesupport/lib/active_support/core_ext/range/include_range.rb +23 -0
  2019. data/rails/activesupport/lib/active_support/core_ext/range/overlaps.rb +8 -0
  2020. data/rails/activesupport/lib/active_support/core_ext/range.rb +4 -0
  2021. data/rails/activesupport/lib/active_support/core_ext/regexp.rb +5 -0
  2022. data/rails/activesupport/lib/active_support/core_ext/string/access.rb +104 -0
  2023. data/rails/activesupport/lib/active_support/core_ext/string/behavior.rb +6 -0
  2024. data/rails/activesupport/lib/active_support/core_ext/string/conversions.rb +56 -0
  2025. data/rails/activesupport/lib/active_support/core_ext/string/exclude.rb +11 -0
  2026. data/rails/activesupport/lib/active_support/core_ext/string/filters.rb +102 -0
  2027. data/rails/activesupport/lib/active_support/core_ext/string/indent.rb +43 -0
  2028. data/rails/activesupport/lib/active_support/core_ext/string/inflections.rb +217 -0
  2029. data/rails/activesupport/lib/active_support/core_ext/string/inquiry.rb +13 -0
  2030. data/rails/activesupport/lib/active_support/core_ext/string/multibyte.rb +49 -0
  2031. data/rails/activesupport/lib/active_support/core_ext/string/output_safety.rb +262 -0
  2032. data/rails/activesupport/lib/active_support/core_ext/string/starts_ends_with.rb +4 -0
  2033. data/rails/activesupport/lib/active_support/core_ext/string/strip.rb +26 -0
  2034. data/rails/activesupport/lib/active_support/core_ext/string/zones.rb +14 -0
  2035. data/rails/activesupport/lib/active_support/core_ext/string.rb +13 -0
  2036. data/rails/activesupport/lib/active_support/core_ext/struct.rb +6 -0
  2037. data/rails/activesupport/lib/active_support/core_ext/thread.rb +86 -0
  2038. data/rails/activesupport/lib/active_support/core_ext/time/acts_like.rb +8 -0
  2039. data/rails/activesupport/lib/active_support/core_ext/time/calculations.rb +265 -0
  2040. data/rails/activesupport/lib/active_support/core_ext/time/conversions.rb +65 -0
  2041. data/rails/activesupport/lib/active_support/core_ext/time/marshal.rb +30 -0
  2042. data/rails/activesupport/lib/active_support/core_ext/time/zones.rb +79 -0
  2043. data/rails/activesupport/lib/active_support/core_ext/time.rb +5 -0
  2044. data/rails/activesupport/lib/active_support/core_ext/uri.rb +26 -0
  2045. data/rails/activesupport/lib/active_support/core_ext.rb +3 -0
  2046. data/rails/activesupport/lib/active_support/dependencies/autoload.rb +77 -0
  2047. data/rails/activesupport/lib/active_support/dependencies.rb +762 -0
  2048. data/rails/activesupport/lib/active_support/deprecation/behaviors.rb +76 -0
  2049. data/rails/activesupport/lib/active_support/deprecation/instance_delegator.rb +24 -0
  2050. data/rails/activesupport/lib/active_support/deprecation/method_wrappers.rb +44 -0
  2051. data/rails/activesupport/lib/active_support/deprecation/proxy_wrappers.rb +126 -0
  2052. data/rails/activesupport/lib/active_support/deprecation/reporting.rb +94 -0
  2053. data/rails/activesupport/lib/active_support/deprecation.rb +43 -0
  2054. data/rails/activesupport/lib/active_support/descendants_tracker.rb +60 -0
  2055. data/rails/activesupport/lib/active_support/duration.rb +136 -0
  2056. data/rails/activesupport/lib/active_support/file_update_checker.rb +137 -0
  2057. data/rails/activesupport/lib/active_support/gem_version.rb +15 -0
  2058. data/rails/activesupport/lib/active_support/gzip.rb +36 -0
  2059. data/rails/activesupport/lib/active_support/hash_with_indifferent_access.rb +281 -0
  2060. data/rails/activesupport/lib/active_support/i18n.rb +13 -0
  2061. data/rails/activesupport/lib/active_support/i18n_railtie.rb +94 -0
  2062. data/rails/activesupport/lib/active_support/inflections.rb +70 -0
  2063. data/rails/activesupport/lib/active_support/inflector/inflections.rb +211 -0
  2064. data/rails/activesupport/lib/active_support/inflector/methods.rb +383 -0
  2065. data/rails/activesupport/lib/active_support/inflector/transliterate.rb +97 -0
  2066. data/rails/activesupport/lib/active_support/inflector.rb +7 -0
  2067. data/rails/activesupport/lib/active_support/json/decoding.rb +73 -0
  2068. data/rails/activesupport/lib/active_support/json/encoding.rb +172 -0
  2069. data/rails/activesupport/lib/active_support/json.rb +2 -0
  2070. data/rails/activesupport/lib/active_support/key_generator.rb +73 -0
  2071. data/rails/activesupport/lib/active_support/lazy_load_hooks.rb +48 -0
  2072. data/rails/activesupport/lib/active_support/locale/en.yml +133 -0
  2073. data/rails/activesupport/lib/active_support/log_subscriber/test_helper.rb +104 -0
  2074. data/rails/activesupport/lib/active_support/log_subscriber.rb +109 -0
  2075. data/rails/activesupport/lib/active_support/logger.rb +57 -0
  2076. data/rails/activesupport/lib/active_support/logger_silence.rb +24 -0
  2077. data/rails/activesupport/lib/active_support/message_encryptor.rb +107 -0
  2078. data/rails/activesupport/lib/active_support/message_verifier.rb +72 -0
  2079. data/rails/activesupport/lib/active_support/multibyte/chars.rb +222 -0
  2080. data/rails/activesupport/lib/active_support/multibyte/unicode.rb +390 -0
  2081. data/rails/activesupport/lib/active_support/multibyte.rb +21 -0
  2082. data/rails/activesupport/lib/active_support/notifications/fanout.rb +157 -0
  2083. data/rails/activesupport/lib/active_support/notifications/instrumenter.rb +73 -0
  2084. data/rails/activesupport/lib/active_support/notifications.rb +212 -0
  2085. data/rails/activesupport/lib/active_support/number_helper/number_converter.rb +182 -0
  2086. data/rails/activesupport/lib/active_support/number_helper/number_to_currency_converter.rb +46 -0
  2087. data/rails/activesupport/lib/active_support/number_helper/number_to_delimited_converter.rb +23 -0
  2088. data/rails/activesupport/lib/active_support/number_helper/number_to_human_converter.rb +66 -0
  2089. data/rails/activesupport/lib/active_support/number_helper/number_to_human_size_converter.rb +58 -0
  2090. data/rails/activesupport/lib/active_support/number_helper/number_to_percentage_converter.rb +12 -0
  2091. data/rails/activesupport/lib/active_support/number_helper/number_to_phone_converter.rb +49 -0
  2092. data/rails/activesupport/lib/active_support/number_helper/number_to_rounded_converter.rb +87 -0
  2093. data/rails/activesupport/lib/active_support/number_helper.rb +345 -0
  2094. data/rails/activesupport/lib/active_support/option_merger.rb +25 -0
  2095. data/rails/activesupport/lib/active_support/ordered_hash.rb +48 -0
  2096. data/rails/activesupport/lib/active_support/ordered_options.rb +67 -0
  2097. data/rails/activesupport/lib/active_support/per_thread_registry.rb +53 -0
  2098. data/rails/activesupport/lib/active_support/proxy_object.rb +13 -0
  2099. data/rails/activesupport/lib/active_support/rails.rb +27 -0
  2100. data/rails/activesupport/lib/active_support/railtie.rb +46 -0
  2101. data/rails/activesupport/lib/active_support/rescuable.rb +119 -0
  2102. data/rails/activesupport/lib/active_support/security_utils.rb +20 -0
  2103. data/rails/activesupport/lib/active_support/string_inquirer.rb +26 -0
  2104. data/rails/activesupport/lib/active_support/subscriber.rb +125 -0
  2105. data/rails/activesupport/lib/active_support/tagged_logging.rb +76 -0
  2106. data/rails/activesupport/lib/active_support/test_case.rb +100 -0
  2107. data/rails/activesupport/lib/active_support/testing/assertions.rb +97 -0
  2108. data/rails/activesupport/lib/active_support/testing/autorun.rb +5 -0
  2109. data/rails/activesupport/lib/active_support/testing/constant_lookup.rb +50 -0
  2110. data/rails/activesupport/lib/active_support/testing/declarative.rb +26 -0
  2111. data/rails/activesupport/lib/active_support/testing/deprecation.rb +35 -0
  2112. data/rails/activesupport/lib/active_support/testing/isolation.rb +101 -0
  2113. data/rails/activesupport/lib/active_support/testing/setup_and_teardown.rb +50 -0
  2114. data/rails/activesupport/lib/active_support/testing/tagged_logging.rb +25 -0
  2115. data/rails/activesupport/lib/active_support/testing/time_helpers.rb +131 -0
  2116. data/rails/activesupport/lib/active_support/time.rb +18 -0
  2117. data/rails/activesupport/lib/active_support/time_with_zone.rb +409 -0
  2118. data/rails/activesupport/lib/active_support/values/time_zone.rb +428 -0
  2119. data/rails/activesupport/lib/active_support/values/unicode_tables.dat +0 -0
  2120. data/rails/activesupport/lib/active_support/version.rb +8 -0
  2121. data/rails/activesupport/lib/active_support/xml_mini/jdom.rb +180 -0
  2122. data/rails/activesupport/lib/active_support/xml_mini/libxml.rb +79 -0
  2123. data/rails/activesupport/lib/active_support/xml_mini/libxmlsax.rb +85 -0
  2124. data/rails/activesupport/lib/active_support/xml_mini/nokogiri.rb +83 -0
  2125. data/rails/activesupport/lib/active_support/xml_mini/nokogirisax.rb +87 -0
  2126. data/rails/activesupport/lib/active_support/xml_mini/rexml.rb +129 -0
  2127. data/rails/activesupport/lib/active_support/xml_mini.rb +191 -0
  2128. data/rails/activesupport/lib/active_support.rb +85 -0
  2129. data/rails/activesupport/test/abstract_unit.rb +45 -0
  2130. data/rails/activesupport/test/autoload_test.rb +81 -0
  2131. data/rails/activesupport/test/autoloading_fixtures/a/b.rb +2 -0
  2132. data/rails/activesupport/test/autoloading_fixtures/a/c/d.rb +2 -0
  2133. data/rails/activesupport/test/autoloading_fixtures/a/c/e/f.rb +2 -0
  2134. data/rails/activesupport/test/autoloading_fixtures/application.rb +1 -0
  2135. data/rails/activesupport/test/autoloading_fixtures/circular1.rb +6 -0
  2136. data/rails/activesupport/test/autoloading_fixtures/circular2.rb +4 -0
  2137. data/rails/activesupport/test/autoloading_fixtures/class_folder/class_folder_subclass.rb +3 -0
  2138. data/rails/activesupport/test/autoloading_fixtures/class_folder/inline_class.rb +2 -0
  2139. data/rails/activesupport/test/autoloading_fixtures/class_folder/nested_class.rb +7 -0
  2140. data/rails/activesupport/test/autoloading_fixtures/class_folder.rb +3 -0
  2141. data/rails/activesupport/test/autoloading_fixtures/conflict.rb +1 -0
  2142. data/rails/activesupport/test/autoloading_fixtures/counting_loader.rb +5 -0
  2143. data/rails/activesupport/test/autoloading_fixtures/cross_site_dependency.rb +2 -0
  2144. data/rails/activesupport/test/autoloading_fixtures/e.rb +2 -0
  2145. data/rails/activesupport/test/autoloading_fixtures/html/some_class.rb +4 -0
  2146. data/rails/activesupport/test/autoloading_fixtures/load_path/loaded_constant.rb +3 -0
  2147. data/rails/activesupport/test/autoloading_fixtures/loads_constant.rb +5 -0
  2148. data/rails/activesupport/test/autoloading_fixtures/module_folder/inline_class.rb +2 -0
  2149. data/rails/activesupport/test/autoloading_fixtures/module_folder/nested_class.rb +4 -0
  2150. data/rails/activesupport/test/autoloading_fixtures/module_folder/nested_sibling.rb +2 -0
  2151. data/rails/activesupport/test/autoloading_fixtures/module_with_custom_const_missing/a/b.rb +1 -0
  2152. data/rails/activesupport/test/autoloading_fixtures/multiple_constant_file.rb +2 -0
  2153. data/rails/activesupport/test/autoloading_fixtures/raises_name_error.rb +3 -0
  2154. data/rails/activesupport/test/autoloading_fixtures/raises_no_method_error.rb +3 -0
  2155. data/rails/activesupport/test/autoloading_fixtures/requires_constant.rb +5 -0
  2156. data/rails/activesupport/test/autoloading_fixtures/should_not_be_required.rb +1 -0
  2157. data/rails/activesupport/test/autoloading_fixtures/typo.rb +2 -0
  2158. data/rails/activesupport/test/benchmarkable_test.rb +62 -0
  2159. data/rails/activesupport/test/broadcast_logger_test.rb +82 -0
  2160. data/rails/activesupport/test/caching_test.rb +1076 -0
  2161. data/rails/activesupport/test/callback_inheritance_test.rb +176 -0
  2162. data/rails/activesupport/test/callbacks_test.rb +1003 -0
  2163. data/rails/activesupport/test/class_cache_test.rb +78 -0
  2164. data/rails/activesupport/test/clean_backtrace_test.rb +75 -0
  2165. data/rails/activesupport/test/clean_logger_test.rb +29 -0
  2166. data/rails/activesupport/test/concern_test.rb +104 -0
  2167. data/rails/activesupport/test/configurable_test.rb +123 -0
  2168. data/rails/activesupport/test/constantize_test_cases.rb +116 -0
  2169. data/rails/activesupport/test/core_ext/array/access_test.rb +30 -0
  2170. data/rails/activesupport/test/core_ext/array/conversions_test.rb +197 -0
  2171. data/rails/activesupport/test/core_ext/array/extract_options_test.rb +45 -0
  2172. data/rails/activesupport/test/core_ext/array/grouping_test.rb +126 -0
  2173. data/rails/activesupport/test/core_ext/array/prepend_append_test.rb +12 -0
  2174. data/rails/activesupport/test/core_ext/array/wrap_test.rb +77 -0
  2175. data/rails/activesupport/test/core_ext/big_decimal/yaml_conversions_test.rb +11 -0
  2176. data/rails/activesupport/test/core_ext/bigdecimal_test.rb +9 -0
  2177. data/rails/activesupport/test/core_ext/class/attribute_test.rb +91 -0
  2178. data/rails/activesupport/test/core_ext/class/delegating_attributes_test.rb +122 -0
  2179. data/rails/activesupport/test/core_ext/class_test.rb +28 -0
  2180. data/rails/activesupport/test/core_ext/date_and_time_behavior.rb +241 -0
  2181. data/rails/activesupport/test/core_ext/date_ext_test.rb +373 -0
  2182. data/rails/activesupport/test/core_ext/date_time_ext_test.rb +358 -0
  2183. data/rails/activesupport/test/core_ext/digest/uuid_test.rb +24 -0
  2184. data/rails/activesupport/test/core_ext/duration_test.rb +223 -0
  2185. data/rails/activesupport/test/core_ext/enumerable_test.rb +106 -0
  2186. data/rails/activesupport/test/core_ext/file_test.rb +68 -0
  2187. data/rails/activesupport/test/core_ext/hash/transform_keys_test.rb +32 -0
  2188. data/rails/activesupport/test/core_ext/hash/transform_values_test.rb +61 -0
  2189. data/rails/activesupport/test/core_ext/hash_ext_test.rb +1688 -0
  2190. data/rails/activesupport/test/core_ext/integer_ext_test.rb +30 -0
  2191. data/rails/activesupport/test/core_ext/kernel/concern_test.rb +13 -0
  2192. data/rails/activesupport/test/core_ext/kernel_test.rb +138 -0
  2193. data/rails/activesupport/test/core_ext/load_error_test.rb +41 -0
  2194. data/rails/activesupport/test/core_ext/marshal_test.rb +124 -0
  2195. data/rails/activesupport/test/core_ext/module/anonymous_test.rb +14 -0
  2196. data/rails/activesupport/test/core_ext/module/attr_internal_test.rb +53 -0
  2197. data/rails/activesupport/test/core_ext/module/attribute_accessor_test.rb +79 -0
  2198. data/rails/activesupport/test/core_ext/module/attribute_aliasing_test.rb +59 -0
  2199. data/rails/activesupport/test/core_ext/module/concerning_test.rb +65 -0
  2200. data/rails/activesupport/test/core_ext/module/qualified_const_test.rb +108 -0
  2201. data/rails/activesupport/test/core_ext/module/reachable_test.rb +41 -0
  2202. data/rails/activesupport/test/core_ext/module/remove_method_test.rb +29 -0
  2203. data/rails/activesupport/test/core_ext/module_test.rb +509 -0
  2204. data/rails/activesupport/test/core_ext/name_error_test.rb +21 -0
  2205. data/rails/activesupport/test/core_ext/numeric_ext_test.rb +392 -0
  2206. data/rails/activesupport/test/core_ext/object/acts_like_test.rb +33 -0
  2207. data/rails/activesupport/test/core_ext/object/blank_test.rb +36 -0
  2208. data/rails/activesupport/test/core_ext/object/deep_dup_test.rb +53 -0
  2209. data/rails/activesupport/test/core_ext/object/duplicable_test.rb +31 -0
  2210. data/rails/activesupport/test/core_ext/object/inclusion_test.rb +59 -0
  2211. data/rails/activesupport/test/core_ext/object/instance_variables_test.rb +31 -0
  2212. data/rails/activesupport/test/core_ext/object/itself_test.rb +9 -0
  2213. data/rails/activesupport/test/core_ext/object/json_cherry_pick_test.rb +42 -0
  2214. data/rails/activesupport/test/core_ext/object/to_param_test.rb +37 -0
  2215. data/rails/activesupport/test/core_ext/object/to_query_test.rb +82 -0
  2216. data/rails/activesupport/test/core_ext/object/try_test.rb +99 -0
  2217. data/rails/activesupport/test/core_ext/range_ext_test.rb +125 -0
  2218. data/rails/activesupport/test/core_ext/regexp_ext_test.rb +10 -0
  2219. data/rails/activesupport/test/core_ext/string_ext_test.rb +864 -0
  2220. data/rails/activesupport/test/core_ext/struct_test.rb +10 -0
  2221. data/rails/activesupport/test/core_ext/thread_test.rb +75 -0
  2222. data/rails/activesupport/test/core_ext/time_ext_test.rb +901 -0
  2223. data/rails/activesupport/test/core_ext/time_with_zone_test.rb +1121 -0
  2224. data/rails/activesupport/test/core_ext/uri_ext_test.rb +13 -0
  2225. data/rails/activesupport/test/dependencies/check_warnings.rb +2 -0
  2226. data/rails/activesupport/test/dependencies/conflict.rb +1 -0
  2227. data/rails/activesupport/test/dependencies/cross_site_depender.rb +3 -0
  2228. data/rails/activesupport/test/dependencies/mutual_one.rb +4 -0
  2229. data/rails/activesupport/test/dependencies/mutual_two.rb +4 -0
  2230. data/rails/activesupport/test/dependencies/raises_exception.rb +3 -0
  2231. data/rails/activesupport/test/dependencies/raises_exception_without_blame_file.rb +5 -0
  2232. data/rails/activesupport/test/dependencies/requires_nonexistent0.rb +1 -0
  2233. data/rails/activesupport/test/dependencies/requires_nonexistent1.rb +1 -0
  2234. data/rails/activesupport/test/dependencies/service_one.rb +5 -0
  2235. data/rails/activesupport/test/dependencies/service_two.rb +2 -0
  2236. data/rails/activesupport/test/dependencies_test.rb +1059 -0
  2237. data/rails/activesupport/test/dependencies_test_helpers.rb +28 -0
  2238. data/rails/activesupport/test/deprecation/proxy_wrappers_test.rb +22 -0
  2239. data/rails/activesupport/test/deprecation_test.rb +375 -0
  2240. data/rails/activesupport/test/descendants_tracker_test_cases.rb +65 -0
  2241. data/rails/activesupport/test/descendants_tracker_with_autoloading_test.rb +34 -0
  2242. data/rails/activesupport/test/descendants_tracker_without_autoloading_test.rb +17 -0
  2243. data/rails/activesupport/test/file_update_checker_test.rb +112 -0
  2244. data/rails/activesupport/test/fixtures/autoload/another_class.rb +2 -0
  2245. data/rails/activesupport/test/fixtures/autoload/some_class.rb +2 -0
  2246. data/rails/activesupport/test/fixtures/xml/jdom_doctype.dtd +1 -0
  2247. data/rails/activesupport/test/fixtures/xml/jdom_entities.txt +1 -0
  2248. data/rails/activesupport/test/fixtures/xml/jdom_include.txt +1 -0
  2249. data/rails/activesupport/test/gzip_test.rb +33 -0
  2250. data/rails/activesupport/test/hash_with_indifferent_access_test.rb +10 -0
  2251. data/rails/activesupport/test/i18n_test.rb +104 -0
  2252. data/rails/activesupport/test/inflector_test.rb +537 -0
  2253. data/rails/activesupport/test/inflector_test_cases.rb +324 -0
  2254. data/rails/activesupport/test/json/decoding_test.rb +113 -0
  2255. data/rails/activesupport/test/json/encoding_test.rb +547 -0
  2256. data/rails/activesupport/test/key_generator_test.rb +62 -0
  2257. data/rails/activesupport/test/lazy_load_hooks_test.rb +96 -0
  2258. data/rails/activesupport/test/load_paths_test.rb +16 -0
  2259. data/rails/activesupport/test/log_subscriber_test.rb +123 -0
  2260. data/rails/activesupport/test/logger_test.rb +133 -0
  2261. data/rails/activesupport/test/message_encryptor_test.rb +101 -0
  2262. data/rails/activesupport/test/message_verifier_test.rb +86 -0
  2263. data/rails/activesupport/test/multibyte_chars_test.rb +714 -0
  2264. data/rails/activesupport/test/multibyte_conformance_test.rb +133 -0
  2265. data/rails/activesupport/test/multibyte_proxy_test.rb +34 -0
  2266. data/rails/activesupport/test/multibyte_test_helpers.rb +19 -0
  2267. data/rails/activesupport/test/multibyte_unicode_database_test.rb +26 -0
  2268. data/rails/activesupport/test/notifications/evented_notification_test.rb +87 -0
  2269. data/rails/activesupport/test/notifications/instrumenter_test.rb +58 -0
  2270. data/rails/activesupport/test/notifications_test.rb +266 -0
  2271. data/rails/activesupport/test/number_helper_i18n_test.rb +148 -0
  2272. data/rails/activesupport/test/number_helper_test.rb +396 -0
  2273. data/rails/activesupport/test/option_merger_test.rb +95 -0
  2274. data/rails/activesupport/test/ordered_hash_test.rb +322 -0
  2275. data/rails/activesupport/test/ordered_options_test.rb +88 -0
  2276. data/rails/activesupport/test/rescuable_test.rb +105 -0
  2277. data/rails/activesupport/test/safe_buffer_test.rb +180 -0
  2278. data/rails/activesupport/test/security_utils_test.rb +9 -0
  2279. data/rails/activesupport/test/string_inquirer_test.rb +23 -0
  2280. data/rails/activesupport/test/subscriber_test.rb +54 -0
  2281. data/rails/activesupport/test/tagged_logging_test.rb +102 -0
  2282. data/rails/activesupport/test/test_case_test.rb +221 -0
  2283. data/rails/activesupport/test/testing/constant_lookup_test.rb +76 -0
  2284. data/rails/activesupport/test/time_travel_test.rb +72 -0
  2285. data/rails/activesupport/test/time_zone_test.rb +422 -0
  2286. data/rails/activesupport/test/time_zone_test_helpers.rb +16 -0
  2287. data/rails/activesupport/test/transliterate_test.rb +35 -0
  2288. data/rails/activesupport/test/xml_mini/jdom_engine_test.rb +188 -0
  2289. data/rails/activesupport/test/xml_mini/libxml_engine_test.rb +204 -0
  2290. data/rails/activesupport/test/xml_mini/libxmlsax_engine_test.rb +195 -0
  2291. data/rails/activesupport/test/xml_mini/nokogiri_engine_test.rb +217 -0
  2292. data/rails/activesupport/test/xml_mini/nokogirisax_engine_test.rb +218 -0
  2293. data/rails/activesupport/test/xml_mini/rexml_engine_test.rb +37 -0
  2294. data/rails/activesupport/test/xml_mini_test.rb +353 -0
  2295. data/rails/ci/travis.rb +145 -0
  2296. data/rails/guides/.document +0 -0
  2297. data/rails/guides/CHANGELOG.md +31 -0
  2298. data/rails/guides/Rakefile +79 -0
  2299. data/rails/guides/assets/images/akshaysurve.jpg +0 -0
  2300. data/rails/guides/assets/images/belongs_to.png +0 -0
  2301. data/rails/guides/assets/images/book_icon.gif +0 -0
  2302. data/rails/guides/assets/images/bullet.gif +0 -0
  2303. data/rails/guides/assets/images/chapters_icon.gif +0 -0
  2304. data/rails/guides/assets/images/check_bullet.gif +0 -0
  2305. data/rails/guides/assets/images/credits_pic_blank.gif +0 -0
  2306. data/rails/guides/assets/images/csrf.png +0 -0
  2307. data/rails/guides/assets/images/edge_badge.png +0 -0
  2308. data/rails/guides/assets/images/favicon.ico +0 -0
  2309. data/rails/guides/assets/images/feature_tile.gif +0 -0
  2310. data/rails/guides/assets/images/footer_tile.gif +0 -0
  2311. data/rails/guides/assets/images/fxn.png +0 -0
  2312. data/rails/guides/assets/images/getting_started/article_with_comments.png +0 -0
  2313. data/rails/guides/assets/images/getting_started/challenge.png +0 -0
  2314. data/rails/guides/assets/images/getting_started/confirm_dialog.png +0 -0
  2315. data/rails/guides/assets/images/getting_started/forbidden_attributes_for_new_article.png +0 -0
  2316. data/rails/guides/assets/images/getting_started/form_with_errors.png +0 -0
  2317. data/rails/guides/assets/images/getting_started/index_action_with_edit_link.png +0 -0
  2318. data/rails/guides/assets/images/getting_started/new_article.png +0 -0
  2319. data/rails/guides/assets/images/getting_started/rails_welcome.png +0 -0
  2320. data/rails/guides/assets/images/getting_started/routing_error_no_controller.png +0 -0
  2321. data/rails/guides/assets/images/getting_started/routing_error_no_route_matches.png +0 -0
  2322. data/rails/guides/assets/images/getting_started/show_action_for_articles.png +0 -0
  2323. data/rails/guides/assets/images/getting_started/template_is_missing_articles_new.png +0 -0
  2324. data/rails/guides/assets/images/getting_started/unknown_action_create_for_articles.png +0 -0
  2325. data/rails/guides/assets/images/getting_started/unknown_action_new_for_articles.png +0 -0
  2326. data/rails/guides/assets/images/grey_bullet.gif +0 -0
  2327. data/rails/guides/assets/images/habtm.png +0 -0
  2328. data/rails/guides/assets/images/has_many.png +0 -0
  2329. data/rails/guides/assets/images/has_many_through.png +0 -0
  2330. data/rails/guides/assets/images/has_one.png +0 -0
  2331. data/rails/guides/assets/images/has_one_through.png +0 -0
  2332. data/rails/guides/assets/images/header_backdrop.png +0 -0
  2333. data/rails/guides/assets/images/header_tile.gif +0 -0
  2334. data/rails/guides/assets/images/i18n/demo_html_safe.png +0 -0
  2335. data/rails/guides/assets/images/i18n/demo_localized_pirate.png +0 -0
  2336. data/rails/guides/assets/images/i18n/demo_translated_en.png +0 -0
  2337. data/rails/guides/assets/images/i18n/demo_translated_pirate.png +0 -0
  2338. data/rails/guides/assets/images/i18n/demo_translation_missing.png +0 -0
  2339. data/rails/guides/assets/images/i18n/demo_untranslated.png +0 -0
  2340. data/rails/guides/assets/images/icons/README +5 -0
  2341. data/rails/guides/assets/images/icons/callouts/1.png +0 -0
  2342. data/rails/guides/assets/images/icons/callouts/10.png +0 -0
  2343. data/rails/guides/assets/images/icons/callouts/11.png +0 -0
  2344. data/rails/guides/assets/images/icons/callouts/12.png +0 -0
  2345. data/rails/guides/assets/images/icons/callouts/13.png +0 -0
  2346. data/rails/guides/assets/images/icons/callouts/14.png +0 -0
  2347. data/rails/guides/assets/images/icons/callouts/15.png +0 -0
  2348. data/rails/guides/assets/images/icons/callouts/2.png +0 -0
  2349. data/rails/guides/assets/images/icons/callouts/3.png +0 -0
  2350. data/rails/guides/assets/images/icons/callouts/4.png +0 -0
  2351. data/rails/guides/assets/images/icons/callouts/5.png +0 -0
  2352. data/rails/guides/assets/images/icons/callouts/6.png +0 -0
  2353. data/rails/guides/assets/images/icons/callouts/7.png +0 -0
  2354. data/rails/guides/assets/images/icons/callouts/8.png +0 -0
  2355. data/rails/guides/assets/images/icons/callouts/9.png +0 -0
  2356. data/rails/guides/assets/images/icons/caution.png +0 -0
  2357. data/rails/guides/assets/images/icons/example.png +0 -0
  2358. data/rails/guides/assets/images/icons/home.png +0 -0
  2359. data/rails/guides/assets/images/icons/important.png +0 -0
  2360. data/rails/guides/assets/images/icons/next.png +0 -0
  2361. data/rails/guides/assets/images/icons/note.png +0 -0
  2362. data/rails/guides/assets/images/icons/prev.png +0 -0
  2363. data/rails/guides/assets/images/icons/tip.png +0 -0
  2364. data/rails/guides/assets/images/icons/up.png +0 -0
  2365. data/rails/guides/assets/images/icons/warning.png +0 -0
  2366. data/rails/guides/assets/images/nav_arrow.gif +0 -0
  2367. data/rails/guides/assets/images/oscardelben.jpg +0 -0
  2368. data/rails/guides/assets/images/polymorphic.png +0 -0
  2369. data/rails/guides/assets/images/radar.png +0 -0
  2370. data/rails/guides/assets/images/rails4_features.png +0 -0
  2371. data/rails/guides/assets/images/rails_guides_kindle_cover.jpg +0 -0
  2372. data/rails/guides/assets/images/rails_guides_logo.gif +0 -0
  2373. data/rails/guides/assets/images/rails_logo_remix.gif +0 -0
  2374. data/rails/guides/assets/images/session_fixation.png +0 -0
  2375. data/rails/guides/assets/images/tab_grey.gif +0 -0
  2376. data/rails/guides/assets/images/tab_info.gif +0 -0
  2377. data/rails/guides/assets/images/tab_note.gif +0 -0
  2378. data/rails/guides/assets/images/tab_red.gif +0 -0
  2379. data/rails/guides/assets/images/tab_yellow.gif +0 -0
  2380. data/rails/guides/assets/images/tab_yellow.png +0 -0
  2381. data/rails/guides/assets/images/vijaydev.jpg +0 -0
  2382. data/rails/guides/assets/javascripts/guides.js +59 -0
  2383. data/rails/guides/assets/javascripts/jquery.min.js +4 -0
  2384. data/rails/guides/assets/javascripts/responsive-tables.js +43 -0
  2385. data/rails/guides/assets/javascripts/syntaxhighlighter/shBrushAS3.js +59 -0
  2386. data/rails/guides/assets/javascripts/syntaxhighlighter/shBrushAppleScript.js +75 -0
  2387. data/rails/guides/assets/javascripts/syntaxhighlighter/shBrushBash.js +59 -0
  2388. data/rails/guides/assets/javascripts/syntaxhighlighter/shBrushCSharp.js +65 -0
  2389. data/rails/guides/assets/javascripts/syntaxhighlighter/shBrushColdFusion.js +100 -0
  2390. data/rails/guides/assets/javascripts/syntaxhighlighter/shBrushCpp.js +97 -0
  2391. data/rails/guides/assets/javascripts/syntaxhighlighter/shBrushCss.js +91 -0
  2392. data/rails/guides/assets/javascripts/syntaxhighlighter/shBrushDelphi.js +55 -0
  2393. data/rails/guides/assets/javascripts/syntaxhighlighter/shBrushDiff.js +41 -0
  2394. data/rails/guides/assets/javascripts/syntaxhighlighter/shBrushErlang.js +52 -0
  2395. data/rails/guides/assets/javascripts/syntaxhighlighter/shBrushGroovy.js +67 -0
  2396. data/rails/guides/assets/javascripts/syntaxhighlighter/shBrushJScript.js +52 -0
  2397. data/rails/guides/assets/javascripts/syntaxhighlighter/shBrushJava.js +57 -0
  2398. data/rails/guides/assets/javascripts/syntaxhighlighter/shBrushJavaFX.js +58 -0
  2399. data/rails/guides/assets/javascripts/syntaxhighlighter/shBrushPerl.js +72 -0
  2400. data/rails/guides/assets/javascripts/syntaxhighlighter/shBrushPhp.js +88 -0
  2401. data/rails/guides/assets/javascripts/syntaxhighlighter/shBrushPlain.js +33 -0
  2402. data/rails/guides/assets/javascripts/syntaxhighlighter/shBrushPowerShell.js +74 -0
  2403. data/rails/guides/assets/javascripts/syntaxhighlighter/shBrushPython.js +64 -0
  2404. data/rails/guides/assets/javascripts/syntaxhighlighter/shBrushRuby.js +55 -0
  2405. data/rails/guides/assets/javascripts/syntaxhighlighter/shBrushSass.js +94 -0
  2406. data/rails/guides/assets/javascripts/syntaxhighlighter/shBrushScala.js +51 -0
  2407. data/rails/guides/assets/javascripts/syntaxhighlighter/shBrushSql.js +66 -0
  2408. data/rails/guides/assets/javascripts/syntaxhighlighter/shBrushVb.js +56 -0
  2409. data/rails/guides/assets/javascripts/syntaxhighlighter/shBrushXml.js +69 -0
  2410. data/rails/guides/assets/javascripts/syntaxhighlighter/shCore.js +17 -0
  2411. data/rails/guides/assets/stylesheets/fixes.css +16 -0
  2412. data/rails/guides/assets/stylesheets/kindle.css +11 -0
  2413. data/rails/guides/assets/stylesheets/main.css +713 -0
  2414. data/rails/guides/assets/stylesheets/print.css +52 -0
  2415. data/rails/guides/assets/stylesheets/reset.css +43 -0
  2416. data/rails/guides/assets/stylesheets/responsive-tables.css +50 -0
  2417. data/rails/guides/assets/stylesheets/style.css +13 -0
  2418. data/rails/guides/assets/stylesheets/syntaxhighlighter/shCore.css +226 -0
  2419. data/rails/guides/assets/stylesheets/syntaxhighlighter/shCoreDefault.css +328 -0
  2420. data/rails/guides/assets/stylesheets/syntaxhighlighter/shCoreDjango.css +331 -0
  2421. data/rails/guides/assets/stylesheets/syntaxhighlighter/shCoreEclipse.css +339 -0
  2422. data/rails/guides/assets/stylesheets/syntaxhighlighter/shCoreEmacs.css +324 -0
  2423. data/rails/guides/assets/stylesheets/syntaxhighlighter/shCoreFadeToGrey.css +328 -0
  2424. data/rails/guides/assets/stylesheets/syntaxhighlighter/shCoreMDUltra.css +324 -0
  2425. data/rails/guides/assets/stylesheets/syntaxhighlighter/shCoreMidnight.css +324 -0
  2426. data/rails/guides/assets/stylesheets/syntaxhighlighter/shCoreRDark.css +324 -0
  2427. data/rails/guides/assets/stylesheets/syntaxhighlighter/shThemeDefault.css +117 -0
  2428. data/rails/guides/assets/stylesheets/syntaxhighlighter/shThemeDjango.css +120 -0
  2429. data/rails/guides/assets/stylesheets/syntaxhighlighter/shThemeEclipse.css +128 -0
  2430. data/rails/guides/assets/stylesheets/syntaxhighlighter/shThemeEmacs.css +113 -0
  2431. data/rails/guides/assets/stylesheets/syntaxhighlighter/shThemeFadeToGrey.css +117 -0
  2432. data/rails/guides/assets/stylesheets/syntaxhighlighter/shThemeMDUltra.css +113 -0
  2433. data/rails/guides/assets/stylesheets/syntaxhighlighter/shThemeMidnight.css +113 -0
  2434. data/rails/guides/assets/stylesheets/syntaxhighlighter/shThemeRDark.css +113 -0
  2435. data/rails/guides/assets/stylesheets/syntaxhighlighter/shThemeRailsGuides.css +116 -0
  2436. data/rails/guides/bug_report_templates/action_controller_gem.rb +47 -0
  2437. data/rails/guides/bug_report_templates/action_controller_master.rb +54 -0
  2438. data/rails/guides/bug_report_templates/active_record_gem.rb +40 -0
  2439. data/rails/guides/bug_report_templates/active_record_master.rb +49 -0
  2440. data/rails/guides/rails_guides/generator.rb +248 -0
  2441. data/rails/guides/rails_guides/helpers.rb +53 -0
  2442. data/rails/guides/rails_guides/indexer.rb +68 -0
  2443. data/rails/guides/rails_guides/kindle.rb +119 -0
  2444. data/rails/guides/rails_guides/levenshtein.rb +39 -0
  2445. data/rails/guides/rails_guides/markdown/renderer.rb +82 -0
  2446. data/rails/guides/rails_guides/markdown.rb +167 -0
  2447. data/rails/guides/rails_guides.rb +63 -0
  2448. data/rails/guides/source/2_2_release_notes.md +435 -0
  2449. data/rails/guides/source/2_3_release_notes.md +621 -0
  2450. data/rails/guides/source/3_0_release_notes.md +611 -0
  2451. data/rails/guides/source/3_1_release_notes.md +559 -0
  2452. data/rails/guides/source/3_2_release_notes.md +568 -0
  2453. data/rails/guides/source/4_0_release_notes.md +279 -0
  2454. data/rails/guides/source/4_1_release_notes.md +730 -0
  2455. data/rails/guides/source/4_2_release_notes.md +853 -0
  2456. data/rails/guides/source/_license.html.erb +2 -0
  2457. data/rails/guides/source/_welcome.html.erb +19 -0
  2458. data/rails/guides/source/action_controller_overview.md +1192 -0
  2459. data/rails/guides/source/action_mailer_basics.md +754 -0
  2460. data/rails/guides/source/action_view_overview.md +1620 -0
  2461. data/rails/guides/source/active_job_basics.md +318 -0
  2462. data/rails/guides/source/active_model_basics.md +554 -0
  2463. data/rails/guides/source/active_record_basics.md +374 -0
  2464. data/rails/guides/source/active_record_callbacks.md +413 -0
  2465. data/rails/guides/source/active_record_migrations.md +1018 -0
  2466. data/rails/guides/source/active_record_postgresql.md +433 -0
  2467. data/rails/guides/source/active_record_querying.md +1783 -0
  2468. data/rails/guides/source/active_record_validations.md +1178 -0
  2469. data/rails/guides/source/active_support_core_extensions.md +3904 -0
  2470. data/rails/guides/source/active_support_instrumentation.md +499 -0
  2471. data/rails/guides/source/api_documentation_guidelines.md +361 -0
  2472. data/rails/guides/source/asset_pipeline.md +1360 -0
  2473. data/rails/guides/source/association_basics.md +2235 -0
  2474. data/rails/guides/source/autoloading_and_reloading_constants.md +1310 -0
  2475. data/rails/guides/source/caching_with_rails.md +379 -0
  2476. data/rails/guides/source/command_line.md +625 -0
  2477. data/rails/guides/source/configuring.md +1045 -0
  2478. data/rails/guides/source/contributing_to_ruby_on_rails.md +628 -0
  2479. data/rails/guides/source/credits.html.erb +80 -0
  2480. data/rails/guides/source/debugging_rails_applications.md +861 -0
  2481. data/rails/guides/source/development_dependencies_install.md +289 -0
  2482. data/rails/guides/source/documents.yaml +205 -0
  2483. data/rails/guides/source/engines.md +1412 -0
  2484. data/rails/guides/source/form_helpers.md +1024 -0
  2485. data/rails/guides/source/generators.md +676 -0
  2486. data/rails/guides/source/getting_started.md +2091 -0
  2487. data/rails/guides/source/i18n.md +1087 -0
  2488. data/rails/guides/source/index.html.erb +28 -0
  2489. data/rails/guides/source/initialization.md +704 -0
  2490. data/rails/guides/source/kindle/copyright.html.erb +1 -0
  2491. data/rails/guides/source/kindle/layout.html.erb +27 -0
  2492. data/rails/guides/source/kindle/rails_guides.opf.erb +52 -0
  2493. data/rails/guides/source/kindle/toc.html.erb +24 -0
  2494. data/rails/guides/source/kindle/toc.ncx.erb +64 -0
  2495. data/rails/guides/source/kindle/welcome.html.erb +5 -0
  2496. data/rails/guides/source/layout.html.erb +143 -0
  2497. data/rails/guides/source/layouts_and_rendering.md +1227 -0
  2498. data/rails/guides/source/maintenance_policy.md +78 -0
  2499. data/rails/guides/source/nested_model_forms.md +228 -0
  2500. data/rails/guides/source/plugins.md +444 -0
  2501. data/rails/guides/source/rails_application_templates.md +266 -0
  2502. data/rails/guides/source/rails_on_rack.md +336 -0
  2503. data/rails/guides/source/routing.md +1141 -0
  2504. data/rails/guides/source/ruby_on_rails_guides_guidelines.md +127 -0
  2505. data/rails/guides/source/security.md +1024 -0
  2506. data/rails/guides/source/testing.md +1132 -0
  2507. data/rails/guides/source/upgrading_ruby_on_rails.md +1170 -0
  2508. data/rails/guides/source/working_with_javascript_in_rails.md +407 -0
  2509. data/rails/guides/w3c_validator.rb +97 -0
  2510. data/rails/install.rb +16 -0
  2511. data/rails/load_paths.rb +3 -0
  2512. data/rails/rails.gemspec +32 -0
  2513. data/rails/railties/.gitignore +1 -0
  2514. data/rails/railties/CHANGELOG.md +233 -0
  2515. data/rails/railties/MIT-LICENSE +20 -0
  2516. data/rails/railties/RDOC_MAIN.rdoc +73 -0
  2517. data/rails/railties/README.rdoc +41 -0
  2518. data/rails/railties/Rakefile +50 -0
  2519. data/rails/railties/bin/rails +9 -0
  2520. data/rails/railties/lib/rails/all.rb +16 -0
  2521. data/rails/railties/lib/rails/api/task.rb +170 -0
  2522. data/rails/railties/lib/rails/app_rails_loader.rb +63 -0
  2523. data/rails/railties/lib/rails/application/bootstrap.rb +94 -0
  2524. data/rails/railties/lib/rails/application/configuration.rb +208 -0
  2525. data/rails/railties/lib/rails/application/default_middleware_stack.rb +103 -0
  2526. data/rails/railties/lib/rails/application/finisher.rb +113 -0
  2527. data/rails/railties/lib/rails/application/routes_reloader.rb +56 -0
  2528. data/rails/railties/lib/rails/application.rb +539 -0
  2529. data/rails/railties/lib/rails/application_controller.rb +16 -0
  2530. data/rails/railties/lib/rails/backtrace_cleaner.rb +32 -0
  2531. data/rails/railties/lib/rails/cli.rb +15 -0
  2532. data/rails/railties/lib/rails/code_statistics.rb +104 -0
  2533. data/rails/railties/lib/rails/code_statistics_calculator.rb +79 -0
  2534. data/rails/railties/lib/rails/commands/application.rb +17 -0
  2535. data/rails/railties/lib/rails/commands/commands_tasks.rb +169 -0
  2536. data/rails/railties/lib/rails/commands/console.rb +113 -0
  2537. data/rails/railties/lib/rails/commands/dbconsole.rb +192 -0
  2538. data/rails/railties/lib/rails/commands/destroy.rb +11 -0
  2539. data/rails/railties/lib/rails/commands/generate.rb +13 -0
  2540. data/rails/railties/lib/rails/commands/plugin.rb +23 -0
  2541. data/rails/railties/lib/rails/commands/runner.rb +63 -0
  2542. data/rails/railties/lib/rails/commands/server.rb +148 -0
  2543. data/rails/railties/lib/rails/commands.rb +17 -0
  2544. data/rails/railties/lib/rails/configuration.rb +119 -0
  2545. data/rails/railties/lib/rails/console/app.rb +32 -0
  2546. data/rails/railties/lib/rails/console/helpers.rb +17 -0
  2547. data/rails/railties/lib/rails/deprecation.rb +19 -0
  2548. data/rails/railties/lib/rails/engine/commands.rb +41 -0
  2549. data/rails/railties/lib/rails/engine/configuration.rb +91 -0
  2550. data/rails/railties/lib/rails/engine/railties.rb +21 -0
  2551. data/rails/railties/lib/rails/engine.rb +694 -0
  2552. data/rails/railties/lib/rails/gem_version.rb +15 -0
  2553. data/rails/railties/lib/rails/generators/actions/create_migration.rb +69 -0
  2554. data/rails/railties/lib/rails/generators/actions.rb +282 -0
  2555. data/rails/railties/lib/rails/generators/active_model.rb +78 -0
  2556. data/rails/railties/lib/rails/generators/app_base.rb +354 -0
  2557. data/rails/railties/lib/rails/generators/base.rb +379 -0
  2558. data/rails/railties/lib/rails/generators/css/assets/assets_generator.rb +13 -0
  2559. data/rails/railties/lib/rails/generators/css/assets/templates/stylesheet.css +4 -0
  2560. data/rails/railties/lib/rails/generators/css/scaffold/scaffold_generator.rb +16 -0
  2561. data/rails/railties/lib/rails/generators/erb/controller/controller_generator.rb +22 -0
  2562. data/rails/railties/lib/rails/generators/erb/controller/templates/view.html.erb +2 -0
  2563. data/rails/railties/lib/rails/generators/erb/mailer/mailer_generator.rb +36 -0
  2564. data/rails/railties/lib/rails/generators/erb/mailer/templates/layout.html.erb +5 -0
  2565. data/rails/railties/lib/rails/generators/erb/mailer/templates/layout.text.erb +1 -0
  2566. data/rails/railties/lib/rails/generators/erb/mailer/templates/view.html.erb +5 -0
  2567. data/rails/railties/lib/rails/generators/erb/mailer/templates/view.text.erb +3 -0
  2568. data/rails/railties/lib/rails/generators/erb/scaffold/scaffold_generator.rb +31 -0
  2569. data/rails/railties/lib/rails/generators/erb/scaffold/templates/_form.html.erb +32 -0
  2570. data/rails/railties/lib/rails/generators/erb/scaffold/templates/edit.html.erb +6 -0
  2571. data/rails/railties/lib/rails/generators/erb/scaffold/templates/index.html.erb +31 -0
  2572. data/rails/railties/lib/rails/generators/erb/scaffold/templates/new.html.erb +5 -0
  2573. data/rails/railties/lib/rails/generators/erb/scaffold/templates/show.html.erb +11 -0
  2574. data/rails/railties/lib/rails/generators/erb.rb +25 -0
  2575. data/rails/railties/lib/rails/generators/generated_attribute.rb +170 -0
  2576. data/rails/railties/lib/rails/generators/js/assets/assets_generator.rb +13 -0
  2577. data/rails/railties/lib/rails/generators/js/assets/templates/javascript.js +2 -0
  2578. data/rails/railties/lib/rails/generators/migration.rb +69 -0
  2579. data/rails/railties/lib/rails/generators/model_helpers.rb +28 -0
  2580. data/rails/railties/lib/rails/generators/named_base.rb +205 -0
  2581. data/rails/railties/lib/rails/generators/rails/app/USAGE +15 -0
  2582. data/rails/railties/lib/rails/generators/rails/app/app_generator.rb +407 -0
  2583. data/rails/railties/lib/rails/generators/rails/app/templates/Gemfile +46 -0
  2584. data/rails/railties/lib/rails/generators/rails/app/templates/README.rdoc +28 -0
  2585. data/rails/railties/lib/rails/generators/rails/app/templates/Rakefile +6 -0
  2586. data/rails/railties/lib/rails/generators/rails/app/templates/app/assets/javascripts/application.js.tt +20 -0
  2587. data/rails/railties/lib/rails/generators/rails/app/templates/app/assets/stylesheets/application.css +15 -0
  2588. data/rails/railties/lib/rails/generators/rails/app/templates/app/controllers/application_controller.rb.tt +5 -0
  2589. data/rails/railties/lib/rails/generators/rails/app/templates/app/helpers/application_helper.rb +2 -0
  2590. data/rails/railties/lib/rails/generators/rails/app/templates/app/views/layouts/application.html.erb.tt +23 -0
  2591. data/rails/railties/lib/rails/generators/rails/app/templates/bin/bundle +2 -0
  2592. data/rails/railties/lib/rails/generators/rails/app/templates/bin/rails +3 -0
  2593. data/rails/railties/lib/rails/generators/rails/app/templates/bin/rake +3 -0
  2594. data/rails/railties/lib/rails/generators/rails/app/templates/bin/setup +28 -0
  2595. data/rails/railties/lib/rails/generators/rails/app/templates/config/application.rb +41 -0
  2596. data/rails/railties/lib/rails/generators/rails/app/templates/config/boot.rb +3 -0
  2597. data/rails/railties/lib/rails/generators/rails/app/templates/config/databases/frontbase.yml +49 -0
  2598. data/rails/railties/lib/rails/generators/rails/app/templates/config/databases/ibm_db.yml +85 -0
  2599. data/rails/railties/lib/rails/generators/rails/app/templates/config/databases/jdbc.yml +68 -0
  2600. data/rails/railties/lib/rails/generators/rails/app/templates/config/databases/jdbcmysql.yml +52 -0
  2601. data/rails/railties/lib/rails/generators/rails/app/templates/config/databases/jdbcpostgresql.yml +68 -0
  2602. data/rails/railties/lib/rails/generators/rails/app/templates/config/databases/jdbcsqlite3.yml +23 -0
  2603. data/rails/railties/lib/rails/generators/rails/app/templates/config/databases/mysql.yml +58 -0
  2604. data/rails/railties/lib/rails/generators/rails/app/templates/config/databases/oracle.yml +58 -0
  2605. data/rails/railties/lib/rails/generators/rails/app/templates/config/databases/postgresql.yml +85 -0
  2606. data/rails/railties/lib/rails/generators/rails/app/templates/config/databases/sqlite3.yml +25 -0
  2607. data/rails/railties/lib/rails/generators/rails/app/templates/config/databases/sqlserver.yml +68 -0
  2608. data/rails/railties/lib/rails/generators/rails/app/templates/config/environment.rb +5 -0
  2609. data/rails/railties/lib/rails/generators/rails/app/templates/config/environments/development.rb.tt +45 -0
  2610. data/rails/railties/lib/rails/generators/rails/app/templates/config/environments/production.rb.tt +83 -0
  2611. data/rails/railties/lib/rails/generators/rails/app/templates/config/environments/test.rb.tt +42 -0
  2612. data/rails/railties/lib/rails/generators/rails/app/templates/config/initializers/assets.rb.tt +11 -0
  2613. data/rails/railties/lib/rails/generators/rails/app/templates/config/initializers/backtrace_silencers.rb +7 -0
  2614. data/rails/railties/lib/rails/generators/rails/app/templates/config/initializers/cookies_serializer.rb +3 -0
  2615. data/rails/railties/lib/rails/generators/rails/app/templates/config/initializers/filter_parameter_logging.rb +4 -0
  2616. data/rails/railties/lib/rails/generators/rails/app/templates/config/initializers/inflections.rb +16 -0
  2617. data/rails/railties/lib/rails/generators/rails/app/templates/config/initializers/mime_types.rb +4 -0
  2618. data/rails/railties/lib/rails/generators/rails/app/templates/config/initializers/session_store.rb.tt +3 -0
  2619. data/rails/railties/lib/rails/generators/rails/app/templates/config/initializers/wrap_parameters.rb.tt +16 -0
  2620. data/rails/railties/lib/rails/generators/rails/app/templates/config/locales/en.yml +23 -0
  2621. data/rails/railties/lib/rails/generators/rails/app/templates/config/routes.rb +56 -0
  2622. data/rails/railties/lib/rails/generators/rails/app/templates/config/secrets.yml +22 -0
  2623. data/rails/railties/lib/rails/generators/rails/app/templates/config.ru +4 -0
  2624. data/rails/railties/lib/rails/generators/rails/app/templates/db/seeds.rb.tt +7 -0
  2625. data/rails/railties/lib/rails/generators/rails/app/templates/gitignore +19 -0
  2626. data/rails/railties/lib/rails/generators/rails/app/templates/public/404.html +67 -0
  2627. data/rails/railties/lib/rails/generators/rails/app/templates/public/422.html +67 -0
  2628. data/rails/railties/lib/rails/generators/rails/app/templates/public/500.html +66 -0
  2629. data/rails/railties/lib/rails/generators/rails/app/templates/public/favicon.ico +0 -0
  2630. data/rails/railties/lib/rails/generators/rails/app/templates/public/robots.txt +5 -0
  2631. data/rails/railties/lib/rails/generators/rails/app/templates/test/test_helper.rb +12 -0
  2632. data/rails/railties/lib/rails/generators/rails/assets/USAGE +20 -0
  2633. data/rails/railties/lib/rails/generators/rails/assets/assets_generator.rb +25 -0
  2634. data/rails/railties/lib/rails/generators/rails/assets/templates/javascript.js +2 -0
  2635. data/rails/railties/lib/rails/generators/rails/assets/templates/stylesheet.css +4 -0
  2636. data/rails/railties/lib/rails/generators/rails/controller/USAGE +18 -0
  2637. data/rails/railties/lib/rails/generators/rails/controller/controller_generator.rb +58 -0
  2638. data/rails/railties/lib/rails/generators/rails/controller/templates/controller.rb +13 -0
  2639. data/rails/railties/lib/rails/generators/rails/generator/USAGE +13 -0
  2640. data/rails/railties/lib/rails/generators/rails/generator/generator_generator.rb +27 -0
  2641. data/rails/railties/lib/rails/generators/rails/generator/templates/%file_name%_generator.rb.tt +3 -0
  2642. data/rails/railties/lib/rails/generators/rails/generator/templates/USAGE.tt +8 -0
  2643. data/rails/railties/lib/rails/generators/rails/generator/templates/templates/.empty_directory +0 -0
  2644. data/rails/railties/lib/rails/generators/rails/helper/USAGE +13 -0
  2645. data/rails/railties/lib/rails/generators/rails/helper/helper_generator.rb +13 -0
  2646. data/rails/railties/lib/rails/generators/rails/helper/templates/helper.rb +4 -0
  2647. data/rails/railties/lib/rails/generators/rails/integration_test/USAGE +10 -0
  2648. data/rails/railties/lib/rails/generators/rails/integration_test/integration_test_generator.rb +7 -0
  2649. data/rails/railties/lib/rails/generators/rails/migration/USAGE +35 -0
  2650. data/rails/railties/lib/rails/generators/rails/migration/migration_generator.rb +8 -0
  2651. data/rails/railties/lib/rails/generators/rails/model/USAGE +109 -0
  2652. data/rails/railties/lib/rails/generators/rails/model/model_generator.rb +12 -0
  2653. data/rails/railties/lib/rails/generators/rails/plugin/USAGE +10 -0
  2654. data/rails/railties/lib/rails/generators/rails/plugin/plugin_generator.rb +393 -0
  2655. data/rails/railties/lib/rails/generators/rails/plugin/templates/%name%.gemspec +27 -0
  2656. data/rails/railties/lib/rails/generators/rails/plugin/templates/Gemfile +51 -0
  2657. data/rails/railties/lib/rails/generators/rails/plugin/templates/MIT-LICENSE +20 -0
  2658. data/rails/railties/lib/rails/generators/rails/plugin/templates/README.rdoc +3 -0
  2659. data/rails/railties/lib/rails/generators/rails/plugin/templates/Rakefile +29 -0
  2660. data/rails/railties/lib/rails/generators/rails/plugin/templates/app/controllers/%name%/application_controller.rb.tt +4 -0
  2661. data/rails/railties/lib/rails/generators/rails/plugin/templates/app/helpers/%name%/application_helper.rb.tt +4 -0
  2662. data/rails/railties/lib/rails/generators/rails/plugin/templates/app/mailers/.empty_directory +0 -0
  2663. data/rails/railties/lib/rails/generators/rails/plugin/templates/app/models/.empty_directory +0 -0
  2664. data/rails/railties/lib/rails/generators/rails/plugin/templates/app/views/layouts/%name%/application.html.erb.tt +14 -0
  2665. data/rails/railties/lib/rails/generators/rails/plugin/templates/bin/rails.tt +11 -0
  2666. data/rails/railties/lib/rails/generators/rails/plugin/templates/config/routes.rb +6 -0
  2667. data/rails/railties/lib/rails/generators/rails/plugin/templates/gitignore +10 -0
  2668. data/rails/railties/lib/rails/generators/rails/plugin/templates/lib/%name%/engine.rb +7 -0
  2669. data/rails/railties/lib/rails/generators/rails/plugin/templates/lib/%name%/version.rb +3 -0
  2670. data/rails/railties/lib/rails/generators/rails/plugin/templates/lib/%name%.rb +6 -0
  2671. data/rails/railties/lib/rails/generators/rails/plugin/templates/lib/tasks/%name%_tasks.rake +4 -0
  2672. data/rails/railties/lib/rails/generators/rails/plugin/templates/rails/application.rb +18 -0
  2673. data/rails/railties/lib/rails/generators/rails/plugin/templates/rails/boot.rb +5 -0
  2674. data/rails/railties/lib/rails/generators/rails/plugin/templates/rails/javascripts.js +13 -0
  2675. data/rails/railties/lib/rails/generators/rails/plugin/templates/rails/routes.rb +4 -0
  2676. data/rails/railties/lib/rails/generators/rails/plugin/templates/rails/stylesheets.css +15 -0
  2677. data/rails/railties/lib/rails/generators/rails/plugin/templates/test/%name%_test.rb +7 -0
  2678. data/rails/railties/lib/rails/generators/rails/plugin/templates/test/integration/navigation_test.rb +12 -0
  2679. data/rails/railties/lib/rails/generators/rails/plugin/templates/test/test_helper.rb +24 -0
  2680. data/rails/railties/lib/rails/generators/rails/resource/USAGE +23 -0
  2681. data/rails/railties/lib/rails/generators/rails/resource/resource_generator.rb +20 -0
  2682. data/rails/railties/lib/rails/generators/rails/resource_route/resource_route_generator.rb +50 -0
  2683. data/rails/railties/lib/rails/generators/rails/scaffold/USAGE +41 -0
  2684. data/rails/railties/lib/rails/generators/rails/scaffold/scaffold_generator.rb +32 -0
  2685. data/rails/railties/lib/rails/generators/rails/scaffold/templates/scaffold.css +56 -0
  2686. data/rails/railties/lib/rails/generators/rails/scaffold_controller/USAGE +19 -0
  2687. data/rails/railties/lib/rails/generators/rails/scaffold_controller/scaffold_controller_generator.rb +28 -0
  2688. data/rails/railties/lib/rails/generators/rails/scaffold_controller/templates/controller.rb +68 -0
  2689. data/rails/railties/lib/rails/generators/rails/task/USAGE +9 -0
  2690. data/rails/railties/lib/rails/generators/rails/task/task_generator.rb +12 -0
  2691. data/rails/railties/lib/rails/generators/rails/task/templates/task.rb +8 -0
  2692. data/rails/railties/lib/rails/generators/resource_helpers.rb +82 -0
  2693. data/rails/railties/lib/rails/generators/test_case.rb +36 -0
  2694. data/rails/railties/lib/rails/generators/test_unit/controller/controller_generator.rb +15 -0
  2695. data/rails/railties/lib/rails/generators/test_unit/controller/templates/functional_test.rb +19 -0
  2696. data/rails/railties/lib/rails/generators/test_unit/generator/generator_generator.rb +26 -0
  2697. data/rails/railties/lib/rails/generators/test_unit/generator/templates/generator_test.rb +16 -0
  2698. data/rails/railties/lib/rails/generators/test_unit/helper/helper_generator.rb +9 -0
  2699. data/rails/railties/lib/rails/generators/test_unit/integration/integration_generator.rb +13 -0
  2700. data/rails/railties/lib/rails/generators/test_unit/integration/templates/integration_test.rb +7 -0
  2701. data/rails/railties/lib/rails/generators/test_unit/job/job_generator.rb +13 -0
  2702. data/rails/railties/lib/rails/generators/test_unit/job/templates/unit_test.rb.erb +9 -0
  2703. data/rails/railties/lib/rails/generators/test_unit/mailer/mailer_generator.rb +21 -0
  2704. data/rails/railties/lib/rails/generators/test_unit/mailer/templates/functional_test.rb +21 -0
  2705. data/rails/railties/lib/rails/generators/test_unit/mailer/templates/preview.rb +13 -0
  2706. data/rails/railties/lib/rails/generators/test_unit/model/model_generator.rb +36 -0
  2707. data/rails/railties/lib/rails/generators/test_unit/model/templates/fixtures.yml +27 -0
  2708. data/rails/railties/lib/rails/generators/test_unit/model/templates/unit_test.rb +9 -0
  2709. data/rails/railties/lib/rails/generators/test_unit/plugin/plugin_generator.rb +13 -0
  2710. data/rails/railties/lib/rails/generators/test_unit/plugin/templates/%file_name%_test.rb.tt +7 -0
  2711. data/rails/railties/lib/rails/generators/test_unit/plugin/templates/test_helper.rb +2 -0
  2712. data/rails/railties/lib/rails/generators/test_unit/scaffold/scaffold_generator.rb +33 -0
  2713. data/rails/railties/lib/rails/generators/test_unit/scaffold/templates/functional_test.rb +51 -0
  2714. data/rails/railties/lib/rails/generators/test_unit.rb +8 -0
  2715. data/rails/railties/lib/rails/generators/testing/assertions.rb +123 -0
  2716. data/rails/railties/lib/rails/generators/testing/behaviour.rb +123 -0
  2717. data/rails/railties/lib/rails/generators/testing/setup_and_teardown.rb +18 -0
  2718. data/rails/railties/lib/rails/generators.rb +373 -0
  2719. data/rails/railties/lib/rails/info.rb +102 -0
  2720. data/rails/railties/lib/rails/info_controller.rb +23 -0
  2721. data/rails/railties/lib/rails/initializable.rb +89 -0
  2722. data/rails/railties/lib/rails/mailers_controller.rb +73 -0
  2723. data/rails/railties/lib/rails/paths.rb +211 -0
  2724. data/rails/railties/lib/rails/rack/debugger.rb +24 -0
  2725. data/rails/railties/lib/rails/rack/log_tailer.rb +38 -0
  2726. data/rails/railties/lib/rails/rack/logger.rb +86 -0
  2727. data/rails/railties/lib/rails/rack.rb +7 -0
  2728. data/rails/railties/lib/rails/railtie/configurable.rb +35 -0
  2729. data/rails/railties/lib/rails/railtie/configuration.rb +100 -0
  2730. data/rails/railties/lib/rails/railtie.rb +250 -0
  2731. data/rails/railties/lib/rails/ruby_version_check.rb +13 -0
  2732. data/rails/railties/lib/rails/source_annotation_extractor.rb +133 -0
  2733. data/rails/railties/lib/rails/tasks/annotations.rake +20 -0
  2734. data/rails/railties/lib/rails/tasks/documentation.rake +70 -0
  2735. data/rails/railties/lib/rails/tasks/engine.rake +72 -0
  2736. data/rails/railties/lib/rails/tasks/framework.rake +66 -0
  2737. data/rails/railties/lib/rails/tasks/log.rake +23 -0
  2738. data/rails/railties/lib/rails/tasks/middleware.rake +7 -0
  2739. data/rails/railties/lib/rails/tasks/misc.rake +60 -0
  2740. data/rails/railties/lib/rails/tasks/routes.rake +7 -0
  2741. data/rails/railties/lib/rails/tasks/statistics.rake +29 -0
  2742. data/rails/railties/lib/rails/tasks/tmp.rake +45 -0
  2743. data/rails/railties/lib/rails/tasks.rb +14 -0
  2744. data/rails/railties/lib/rails/templates/layouts/application.html.erb +36 -0
  2745. data/rails/railties/lib/rails/templates/rails/info/properties.html.erb +1 -0
  2746. data/rails/railties/lib/rails/templates/rails/info/routes.html.erb +9 -0
  2747. data/rails/railties/lib/rails/templates/rails/mailers/email.html.erb +105 -0
  2748. data/rails/railties/lib/rails/templates/rails/mailers/index.html.erb +8 -0
  2749. data/rails/railties/lib/rails/templates/rails/mailers/mailer.html.erb +6 -0
  2750. data/rails/railties/lib/rails/templates/rails/welcome/index.html.erb +261 -0
  2751. data/rails/railties/lib/rails/test_help.rb +43 -0
  2752. data/rails/railties/lib/rails/test_unit/railtie.rb +18 -0
  2753. data/rails/railties/lib/rails/test_unit/sub_test_task.rb +126 -0
  2754. data/rails/railties/lib/rails/test_unit/testing.rake +66 -0
  2755. data/rails/railties/lib/rails/version.rb +8 -0
  2756. data/rails/railties/lib/rails/welcome_controller.rb +8 -0
  2757. data/rails/railties/lib/rails.rb +93 -0
  2758. data/rails/railties/railties.gemspec +33 -0
  2759. data/rails/railties/test/abstract_unit.rb +53 -0
  2760. data/rails/railties/test/app_rails_loader_test.rb +89 -0
  2761. data/rails/railties/test/application/asset_debugging_test.rb +64 -0
  2762. data/rails/railties/test/application/assets_test.rb +493 -0
  2763. data/rails/railties/test/application/build_original_fullpath_test.rb +27 -0
  2764. data/rails/railties/test/application/configuration/base_test.rb +37 -0
  2765. data/rails/railties/test/application/configuration/custom_test.rb +22 -0
  2766. data/rails/railties/test/application/configuration_test.rb +1344 -0
  2767. data/rails/railties/test/application/console_test.rb +153 -0
  2768. data/rails/railties/test/application/generators_test.rb +129 -0
  2769. data/rails/railties/test/application/initializers/frameworks_test.rb +231 -0
  2770. data/rails/railties/test/application/initializers/hooks_test.rb +90 -0
  2771. data/rails/railties/test/application/initializers/i18n_test.rb +216 -0
  2772. data/rails/railties/test/application/initializers/load_path_test.rb +110 -0
  2773. data/rails/railties/test/application/initializers/notifications_test.rb +56 -0
  2774. data/rails/railties/test/application/loading_test.rb +341 -0
  2775. data/rails/railties/test/application/mailer_previews_test.rb +494 -0
  2776. data/rails/railties/test/application/middleware/cache_test.rb +180 -0
  2777. data/rails/railties/test/application/middleware/cookies_test.rb +47 -0
  2778. data/rails/railties/test/application/middleware/exceptions_test.rb +126 -0
  2779. data/rails/railties/test/application/middleware/remote_ip_test.rb +78 -0
  2780. data/rails/railties/test/application/middleware/sendfile_test.rb +74 -0
  2781. data/rails/railties/test/application/middleware/session_test.rb +343 -0
  2782. data/rails/railties/test/application/middleware/static_test.rb +31 -0
  2783. data/rails/railties/test/application/middleware_test.rb +240 -0
  2784. data/rails/railties/test/application/multiple_applications_test.rb +176 -0
  2785. data/rails/railties/test/application/paths_test.rb +83 -0
  2786. data/rails/railties/test/application/rack/logger_test.rb +56 -0
  2787. data/rails/railties/test/application/rackup_test.rb +43 -0
  2788. data/rails/railties/test/application/rake/dbs_test.rb +233 -0
  2789. data/rails/railties/test/application/rake/migrations_test.rb +204 -0
  2790. data/rails/railties/test/application/rake/notes_test.rb +156 -0
  2791. data/rails/railties/test/application/rake_test.rb +286 -0
  2792. data/rails/railties/test/application/rendering_test.rb +45 -0
  2793. data/rails/railties/test/application/routing_test.rb +468 -0
  2794. data/rails/railties/test/application/runner_test.rb +89 -0
  2795. data/rails/railties/test/application/test_runner_test.rb +331 -0
  2796. data/rails/railties/test/application/test_test.rb +322 -0
  2797. data/rails/railties/test/application/url_generation_test.rb +46 -0
  2798. data/rails/railties/test/backtrace_cleaner_test.rb +24 -0
  2799. data/rails/railties/test/code_statistics_calculator_test.rb +288 -0
  2800. data/rails/railties/test/commands/console_test.rb +176 -0
  2801. data/rails/railties/test/commands/dbconsole_test.rb +274 -0
  2802. data/rails/railties/test/commands/server_test.rb +88 -0
  2803. data/rails/railties/test/configuration/middleware_stack_proxy_test.rb +61 -0
  2804. data/rails/railties/test/engine_test.rb +25 -0
  2805. data/rails/railties/test/env_helpers.rb +30 -0
  2806. data/rails/railties/test/fixtures/about_yml_plugins/bad_about_yml/about.yml +1 -0
  2807. data/rails/railties/test/fixtures/about_yml_plugins/bad_about_yml/init.rb +1 -0
  2808. data/rails/railties/test/fixtures/about_yml_plugins/plugin_without_about_yml/init.rb +1 -0
  2809. data/rails/railties/test/fixtures/lib/create_test_dummy_template.rb +1 -0
  2810. data/rails/railties/test/fixtures/lib/generators/active_record/fixjour_generator.rb +8 -0
  2811. data/rails/railties/test/fixtures/lib/generators/fixjour_generator.rb +2 -0
  2812. data/rails/railties/test/fixtures/lib/generators/model_generator.rb +1 -0
  2813. data/rails/railties/test/fixtures/lib/generators/usage_template/USAGE +1 -0
  2814. data/rails/railties/test/fixtures/lib/generators/usage_template/usage_template_generator.rb +5 -0
  2815. data/rails/railties/test/fixtures/lib/rails/generators/foobar/foobar_generator.rb +4 -0
  2816. data/rails/railties/test/fixtures/lib/template.rb +1 -0
  2817. data/rails/railties/test/generators/actions_test.rb +259 -0
  2818. data/rails/railties/test/generators/app_generator_test.rb +528 -0
  2819. data/rails/railties/test/generators/argv_scrubber_test.rb +136 -0
  2820. data/rails/railties/test/generators/assets_generator_test.rb +19 -0
  2821. data/rails/railties/test/generators/controller_generator_test.rb +101 -0
  2822. data/rails/railties/test/generators/create_migration_test.rb +134 -0
  2823. data/rails/railties/test/generators/generated_attribute_test.rb +152 -0
  2824. data/rails/railties/test/generators/generator_generator_test.rb +71 -0
  2825. data/rails/railties/test/generators/generator_test.rb +85 -0
  2826. data/rails/railties/test/generators/generators_test_helper.rb +52 -0
  2827. data/rails/railties/test/generators/helper_generator_test.rb +39 -0
  2828. data/rails/railties/test/generators/integration_test_generator_test.rb +12 -0
  2829. data/rails/railties/test/generators/mailer_generator_test.rb +170 -0
  2830. data/rails/railties/test/generators/migration_generator_test.rb +288 -0
  2831. data/rails/railties/test/generators/model_generator_test.rb +446 -0
  2832. data/rails/railties/test/generators/named_base_test.rb +145 -0
  2833. data/rails/railties/test/generators/namespaced_generators_test.rb +398 -0
  2834. data/rails/railties/test/generators/orm_test.rb +38 -0
  2835. data/rails/railties/test/generators/plugin_generator_test.rb +442 -0
  2836. data/rails/railties/test/generators/resource_generator_test.rb +88 -0
  2837. data/rails/railties/test/generators/scaffold_controller_generator_test.rb +177 -0
  2838. data/rails/railties/test/generators/scaffold_generator_test.rb +386 -0
  2839. data/rails/railties/test/generators/shared_generator_tests.rb +144 -0
  2840. data/rails/railties/test/generators/task_generator_test.rb +24 -0
  2841. data/rails/railties/test/generators_test.rb +234 -0
  2842. data/rails/railties/test/initializable_test.rb +230 -0
  2843. data/rails/railties/test/isolation/abstract_unit.rb +359 -0
  2844. data/rails/railties/test/path_generation_test.rb +88 -0
  2845. data/rails/railties/test/paths_test.rb +234 -0
  2846. data/rails/railties/test/rack_logger_test.rb +75 -0
  2847. data/rails/railties/test/rails_info_controller_test.rb +57 -0
  2848. data/rails/railties/test/rails_info_test.rb +71 -0
  2849. data/rails/railties/test/railties/engine_test.rb +1317 -0
  2850. data/rails/railties/test/railties/generators_test.rb +126 -0
  2851. data/rails/railties/test/railties/mounted_engine_test.rb +274 -0
  2852. data/rails/railties/test/railties/railtie_test.rb +208 -0
  2853. data/rails/railties/test/test_info_test.rb +60 -0
  2854. data/rails/railties/test/version_test.rb +12 -0
  2855. data/rails/tasks/release.rb +128 -0
  2856. data/rails/tools/README.md +7 -0
  2857. data/rails/tools/console +7 -0
  2858. data/rails/tools/line_statistics +42 -0
  2859. data/rails/tools/profile +136 -0
  2860. data/rails/version.rb +15 -0
  2861. data/test/cases/lock_test.rb +29 -0
  2862. data/test/helper.rb +30 -0
  2863. data/test/integration/lock_queuing_test.rb +43 -0
  2864. metadata +3007 -0
@@ -0,0 +1,1310 @@
1
+ Autoloading and Reloading Constants
2
+ ===================================
3
+
4
+ This guide documents how constant autoloading and reloading works.
5
+
6
+ After reading this guide, you will know:
7
+
8
+ * Key aspects of Ruby constants
9
+ * What is `autoload_paths`
10
+ * How constant autoloading works
11
+ * What is `require_dependency`
12
+ * How constant reloading works
13
+ * Solutions to common autoloading gotchas
14
+
15
+ --------------------------------------------------------------------------------
16
+
17
+
18
+ Introduction
19
+ ------------
20
+
21
+ Ruby on Rails allows applications to be written as if their code was preloaded.
22
+
23
+ In a normal Ruby program classes need to load their dependencies:
24
+
25
+ ```ruby
26
+ require 'application_controller'
27
+ require 'post'
28
+
29
+ class PostsController < ApplicationController
30
+ def index
31
+ @posts = Post.all
32
+ end
33
+ end
34
+ ```
35
+
36
+ Our Rubyist instinct quickly sees some redundancy in there: If classes were
37
+ defined in files matching their name, couldn't their loading be automated
38
+ somehow? We could save scanning the file for dependencies, which is brittle.
39
+
40
+ Moreover, `Kernel#require` loads files once, but development is much more smooth
41
+ if code gets refreshed when it changes without restarting the server. It would
42
+ be nice to be able to use `Kernel#load` in development, and `Kernel#require` in
43
+ production.
44
+
45
+ Indeed, those features are provided by Ruby on Rails, where we just write
46
+
47
+ ```ruby
48
+ class PostsController < ApplicationController
49
+ def index
50
+ @posts = Post.all
51
+ end
52
+ end
53
+ ```
54
+
55
+ This guide documents how that works.
56
+
57
+
58
+ Constants Refresher
59
+ -------------------
60
+
61
+ While constants are trivial in most programming languages, they are a rich
62
+ topic in Ruby.
63
+
64
+ It is beyond the scope of this guide to document Ruby constants, but we are
65
+ nevertheless going to highlight a few key topics. Truly grasping the following
66
+ sections is instrumental to understanding constant autoloading and reloading.
67
+
68
+ ### Nesting
69
+
70
+ Class and module definitions can be nested to create namespaces:
71
+
72
+ ```ruby
73
+ module XML
74
+ class SAXParser
75
+ # (1)
76
+ end
77
+ end
78
+ ```
79
+
80
+ The *nesting* at any given place is the collection of enclosing nested class and
81
+ module objects outwards. The nesting at any given place can be inspected with
82
+ `Module.nesting`. For example, in the previous example, the nesting at
83
+ (1) is
84
+
85
+ ```ruby
86
+ [XML::SAXParser, XML]
87
+ ```
88
+
89
+ It is important to understand that the nesting is composed of class and module
90
+ *objects*, it has nothing to do with the constants used to access them, and is
91
+ also unrelated to their names.
92
+
93
+ For instance, while this definition is similar to the previous one:
94
+
95
+ ```ruby
96
+ class XML::SAXParser
97
+ # (2)
98
+ end
99
+ ```
100
+
101
+ the nesting in (2) is different:
102
+
103
+ ```ruby
104
+ [XML::SAXParser]
105
+ ```
106
+
107
+ `XML` does not belong to it.
108
+
109
+ We can see in this example that the name of a class or module that belongs to a
110
+ certain nesting does not necessarily correlate with the namespaces at the spot.
111
+
112
+ Even more, they are totally independent, take for instance
113
+
114
+ ```ruby
115
+ module X
116
+ module Y
117
+ end
118
+ end
119
+
120
+ module A
121
+ module B
122
+ end
123
+ end
124
+
125
+ module X::Y
126
+ module A::B
127
+ # (3)
128
+ end
129
+ end
130
+ ```
131
+
132
+ The nesting in (3) consists of two module objects:
133
+
134
+ ```ruby
135
+ [A::B, X::Y]
136
+ ```
137
+
138
+ So, it not only doesn't end in `A`, which does not even belong to the nesting,
139
+ but it also contains `X::Y`, which is independent from `A::B`.
140
+
141
+ The nesting is an internal stack maintained by the interpreter, and it gets
142
+ modified according to these rules:
143
+
144
+ * The class object following a `class` keyword gets pushed when its body is
145
+ executed, and popped after it.
146
+
147
+ * The module object following a `module` keyword gets pushed when its body is
148
+ executed, and popped after it.
149
+
150
+ * A singleton class opened with `class << object` gets pushed, and popped later.
151
+
152
+ * When `instance_eval` is called using a string argument,
153
+ the singleton class of the receiver is pushed to the nesting of the eval'ed
154
+ code. When `class_eval` or `module_eval` is called using a string argument,
155
+ the receiver is pushed to the nesting of the eval'ed code.
156
+
157
+ * The nesting at the top-level of code interpreted by `Kernel#load` is empty
158
+ unless the `load` call receives a true value as second argument, in which case
159
+ a newly created anonymous module is pushed by Ruby.
160
+
161
+ It is interesting to observe that blocks do not modify the stack. In particular
162
+ the blocks that may be passed to `Class.new` and `Module.new` do not get the
163
+ class or module being defined pushed to their nesting. That's one of the
164
+ differences between defining classes and modules in one way or another.
165
+
166
+ ### Class and Module Definitions are Constant Assignments
167
+
168
+ Let's suppose the following snippet creates a class (rather than reopening it):
169
+
170
+ ```ruby
171
+ class C
172
+ end
173
+ ```
174
+
175
+ Ruby creates a constant `C` in `Object` and stores in that constant a class
176
+ object. The name of the class instance is "C", a string, named after the
177
+ constant.
178
+
179
+ That is,
180
+
181
+ ```ruby
182
+ class Project < ActiveRecord::Base
183
+ end
184
+ ```
185
+
186
+ performs a constant assignment equivalent to
187
+
188
+ ```ruby
189
+ Project = Class.new(ActiveRecord::Base)
190
+ ```
191
+
192
+ including setting the name of the class as a side-effect:
193
+
194
+ ```ruby
195
+ Project.name # => "Project"
196
+ ```
197
+
198
+ Constant assignment has a special rule to make that happen: if the object
199
+ being assigned is an anonymous class or module, Ruby sets the object's name to
200
+ the name of the constant.
201
+
202
+ INFO. From then on, what happens to the constant and the instance does not
203
+ matter. For example, the constant could be deleted, the class object could be
204
+ assigned to a different constant, be stored in no constant anymore, etc. Once
205
+ the name is set, it doesn't change.
206
+
207
+ Similarly, module creation using the `module` keyword as in
208
+
209
+ ```ruby
210
+ module Admin
211
+ end
212
+ ```
213
+
214
+ performs a constant assignment equivalent to
215
+
216
+ ```ruby
217
+ Admin = Module.new
218
+ ```
219
+
220
+ including setting the name as a side-effect:
221
+
222
+ ```ruby
223
+ Admin.name # => "Admin"
224
+ ```
225
+
226
+ WARNING. The execution context of a block passed to `Class.new` or `Module.new`
227
+ is not entirely equivalent to the one of the body of the definitions using the
228
+ `class` and `module` keywords. But both idioms result in the same constant
229
+ assignment.
230
+
231
+ Thus, when one informally says "the `String` class", that really means: the
232
+ class object stored in the constant called "String" in the class object stored
233
+ in the `Object` constant. `String` is otherwise an ordinary Ruby constant and
234
+ everything related to constants such as resolution algorithms applies to it.
235
+
236
+ Likewise, in the controller
237
+
238
+ ```ruby
239
+ class PostsController < ApplicationController
240
+ def index
241
+ @posts = Post.all
242
+ end
243
+ end
244
+ ```
245
+
246
+ `Post` is not syntax for a class. Rather, `Post` is a regular Ruby constant. If
247
+ all is good, the constant is evaluated to an object that responds to `all`.
248
+
249
+ That is why we talk about *constant* autoloading, Rails has the ability to
250
+ load constants on the fly.
251
+
252
+ ### Constants are Stored in Modules
253
+
254
+ Constants belong to modules in a very literal sense. Classes and modules have
255
+ a constant table; think of it as a hash table.
256
+
257
+ Let's analyze an example to really understand what that means. While common
258
+ abuses of language like "the `String` class" are convenient, the exposition is
259
+ going to be precise here for didactic purposes.
260
+
261
+ Let's consider the following module definition:
262
+
263
+ ```ruby
264
+ module Colors
265
+ RED = '0xff0000'
266
+ end
267
+ ```
268
+
269
+ First, when the `module` keyword is processed, the interpreter creates a new
270
+ entry in the constant table of the class object stored in the `Object` constant.
271
+ Said entry associates the name "Colors" to a newly created module object.
272
+ Furthermore, the interpreter sets the name of the new module object to be the
273
+ string "Colors".
274
+
275
+ Later, when the body of the module definition is interpreted, a new entry is
276
+ created in the constant table of the module object stored in the `Colors`
277
+ constant. That entry maps the name "RED" to the string "0xff0000".
278
+
279
+ In particular, `Colors::RED` is totally unrelated to any other `RED` constant
280
+ that may live in any other class or module object. If there were any, they
281
+ would have separate entries in their respective constant tables.
282
+
283
+ Pay special attention in the previous paragraphs to the distinction between
284
+ class and module objects, constant names, and value objects associated to them
285
+ in constant tables.
286
+
287
+ ### Resolution Algorithms
288
+
289
+ #### Resolution Algorithm for Relative Constants
290
+
291
+ At any given place in the code, let's define *cref* to be the first element of
292
+ the nesting if it is not empty, or `Object` otherwise.
293
+
294
+ Without getting too much into the details, the resolution algorithm for relative
295
+ constant references goes like this:
296
+
297
+ 1. If the nesting is not empty the constant is looked up in its elements and in
298
+ order. The ancestors of those elements are ignored.
299
+
300
+ 2. If not found, then the algorithm walks up the ancestor chain of the cref.
301
+
302
+ 3. If not found and the cref is a module, the constant is looked up in `Object`.
303
+
304
+ 4. If not found, `const_missing` is invoked on the cref. The default
305
+ implementation of `const_missing` raises `NameError`, but it can be overridden.
306
+
307
+ Rails autoloading **does not emulate this algorithm**, but its starting point is
308
+ the name of the constant to be autoloaded, and the cref. See more in [Relative
309
+ References](#autoloading-algorithms-relative-references).
310
+
311
+ #### Resolution Algorithm for Qualified Constants
312
+
313
+ Qualified constants look like this:
314
+
315
+ ```ruby
316
+ Billing::Invoice
317
+ ```
318
+
319
+ `Billing::Invoice` is composed of two constants: `Billing` is relative and is
320
+ resolved using the algorithm of the previous section.
321
+
322
+ INFO. Leading colons would make the first segment absolute rather than
323
+ relative: `::Billing::Invoice`. That would force `Billing` to be looked up
324
+ only as a top-level constant.
325
+
326
+ `Invoice` on the other hand is qualified by `Billing` and we are going to see
327
+ its resolution next. Let's define *parent* to be that qualifying class or module
328
+ object, that is, `Billing` in the example above. The algorithm for qualified
329
+ constants goes like this:
330
+
331
+ 1. The constant is looked up in the parent and its ancestors.
332
+
333
+ 2. If the lookup fails, `const_missing` is invoked in the parent. The default
334
+ implementation of `const_missing` raises `NameError`, but it can be overridden.
335
+
336
+ As you see, this algorithm is simpler than the one for relative constants. In
337
+ particular, the nesting plays no role here, and modules are not special-cased,
338
+ if neither they nor their ancestors have the constants, `Object` is **not**
339
+ checked.
340
+
341
+ Rails autoloading **does not emulate this algorithm**, but its starting point is
342
+ the name of the constant to be autoloaded, and the parent. See more in
343
+ [Qualified References](#autoloading-algorithms-qualified-references).
344
+
345
+
346
+ Vocabulary
347
+ ----------
348
+
349
+ ### Parent Namespaces
350
+
351
+ Given a string with a constant path we define its *parent namespace* to be the
352
+ string that results from removing its rightmost segment.
353
+
354
+ For example, the parent namespace of the string "A::B::C" is the string "A::B",
355
+ the parent namespace of "A::B" is "A", and the parent namespace of "A" is "".
356
+
357
+ The interpretation of a parent namespace when thinking about classes and modules
358
+ is tricky though. Let's consider a module M named "A::B":
359
+
360
+ * The parent namespace, "A", may not reflect nesting at a given spot.
361
+
362
+ * The constant `A` may no longer exist, some code could have removed it from
363
+ `Object`.
364
+
365
+ * If `A` exists, the class or module that was originally in `A` may not be there
366
+ anymore. For example, if after a constant removal there was another constant
367
+ assignment there would generally be a different object in there.
368
+
369
+ * In such case, it could even happen that the reassigned `A` held a new class or
370
+ module called also "A"!
371
+
372
+ * In the previous scenarios M would no longer be reachable through `A::B` but
373
+ the module object itself could still be alive somewhere and its name would
374
+ still be "A::B".
375
+
376
+ The idea of a parent namespace is at the core of the autoloading algorithms
377
+ and helps explain and understand their motivation intuitively, but as you see
378
+ that metaphor leaks easily. Given an edge case to reason about, take always into
379
+ account that by "parent namespace" the guide means exactly that specific string
380
+ derivation.
381
+
382
+ ### Loading Mechanism
383
+
384
+ Rails autoloads files with `Kernel#load` when `config.cache_classes` is false,
385
+ the default in development mode, and with `Kernel#require` otherwise, the
386
+ default in production mode.
387
+
388
+ `Kernel#load` allows Rails to execute files more than once if [constant
389
+ reloading](#constant-reloading) is enabled.
390
+
391
+ This guide uses the word "load" freely to mean a given file is interpreted, but
392
+ the actual mechanism can be `Kernel#load` or `Kernel#require` depending on that
393
+ flag.
394
+
395
+
396
+ Autoloading Availability
397
+ ------------------------
398
+
399
+ Rails is always able to autoload provided its environment is in place. For
400
+ example the `runner` command autoloads:
401
+
402
+ ```
403
+ $ bin/rails runner 'p User.column_names'
404
+ ["id", "email", "created_at", "updated_at"]
405
+ ```
406
+
407
+ The console autoloads, the test suite autoloads, and of course the application
408
+ autoloads.
409
+
410
+ By default, Rails eager loads the application files when it boots in production
411
+ mode, so most of the autoloading going on in development does not happen. But
412
+ autoloading may still be triggered during eager loading.
413
+
414
+ For example, given
415
+
416
+ ```ruby
417
+ class BeachHouse < House
418
+ end
419
+ ```
420
+
421
+ if `House` is still unknown when `app/models/beach_house.rb` is being eager
422
+ loaded, Rails autoloads it.
423
+
424
+
425
+ autoload_paths
426
+ --------------
427
+
428
+ As you probably know, when `require` gets a relative file name:
429
+
430
+ ```ruby
431
+ require 'erb'
432
+ ```
433
+
434
+ Ruby looks for the file in the directories listed in `$LOAD_PATH`. That is, Ruby
435
+ iterates over all its directories and for each one of them checks whether they
436
+ have a file called "erb.rb", or "erb.so", or "erb.o", or "erb.dll". If it finds
437
+ any of them, the interpreter loads it and ends the search. Otherwise, it tries
438
+ again in the next directory of the list. If the list gets exhausted, `LoadError`
439
+ is raised.
440
+
441
+ We are going to cover how constant autoloading works in more detail later, but
442
+ the idea is that when a constant like `Post` is hit and missing, if there's a
443
+ `post.rb` file for example in `app/models` Rails is going to find it, evaluate
444
+ it, and have `Post` defined as a side-effect.
445
+
446
+ Alright, Rails has a collection of directories similar to `$LOAD_PATH` in which
447
+ to look up `post.rb`. That collection is called `autoload_paths` and by
448
+ default it contains:
449
+
450
+ * All subdirectories of `app` in the application and engines. For example,
451
+ `app/controllers`. They do not need to be the default ones, any custom
452
+ directories like `app/workers` belong automatically to `autoload_paths`.
453
+
454
+ * Second level directories `app/{controllers,models}/concerns` in the
455
+ application and engines.
456
+
457
+ * The directory `test/mailers/previews`.
458
+
459
+ Also, this collection is configurable via `config.autoload_paths`. For example,
460
+ `lib` was in the list years ago, but no longer is. An application can opt-in
461
+ by adding this to `config/application.rb`:
462
+
463
+ ```ruby
464
+ config.autoload_paths += "#{Rails.root}/lib"
465
+ ```
466
+
467
+ The value of `autoload_paths` can be inspected. In a just generated application
468
+ it is (edited):
469
+
470
+ ```
471
+ $ bin/rails r 'puts ActiveSupport::Dependencies.autoload_paths'
472
+ .../app/assets
473
+ .../app/controllers
474
+ .../app/helpers
475
+ .../app/mailers
476
+ .../app/models
477
+ .../app/controllers/concerns
478
+ .../app/models/concerns
479
+ .../test/mailers/previews
480
+ ```
481
+
482
+ INFO. `autoload_paths` is computed and cached during the initialization process.
483
+ The application needs to be restarted to reflect any changes in the directory
484
+ structure.
485
+
486
+
487
+ Autoloading Algorithms
488
+ ----------------------
489
+
490
+ ### Relative References
491
+
492
+ A relative constant reference may appear in several places, for example, in
493
+
494
+ ```ruby
495
+ class PostsController < ApplicationController
496
+ def index
497
+ @posts = Post.all
498
+ end
499
+ end
500
+ ```
501
+
502
+ all three constant references are relative.
503
+
504
+ #### Constants after the `class` and `module` Keywords
505
+
506
+ Ruby performs a lookup for the constant that follows a `class` or `module`
507
+ keyword because it needs to know if the class or module is going to be created
508
+ or reopened.
509
+
510
+ If the constant is not defined at that point it is not considered to be a
511
+ missing constant, autoloading is **not** triggered.
512
+
513
+ So, in the previous example, if `PostsController` is not defined when the file
514
+ is interpreted Rails autoloading is not going to be triggered, Ruby will just
515
+ define the controller.
516
+
517
+ #### Top-Level Constants
518
+
519
+ On the contrary, if `ApplicationController` is unknown, the constant is
520
+ considered missing and an autoload is going to be attempted by Rails.
521
+
522
+ In order to load `ApplicationController`, Rails iterates over `autoload_paths`.
523
+ First checks if `app/assets/application_controller.rb` exists. If it does not,
524
+ which is normally the case, it continues and finds
525
+ `app/controllers/application_controller.rb`.
526
+
527
+ If the file defines the constant `ApplicationController` all is fine, otherwise
528
+ `LoadError` is raised:
529
+
530
+ ```
531
+ unable to autoload constant ApplicationController, expected
532
+ <full path to application_controller.rb> to define it (LoadError)
533
+ ```
534
+
535
+ INFO. Rails does not require the value of autoloaded constants to be a class or
536
+ module object. For example, if the file `app/models/max_clients.rb` defines
537
+ `MAX_CLIENTS = 100` autoloading `MAX_CLIENTS` works just fine.
538
+
539
+ #### Namespaces
540
+
541
+ Autoloading `ApplicationController` looks directly under the directories of
542
+ `autoload_paths` because the nesting in that spot is empty. The situation of
543
+ `Post` is different, the nesting in that line is `[PostsController]` and support
544
+ for namespaces comes into play.
545
+
546
+ The basic idea is that given
547
+
548
+ ```ruby
549
+ module Admin
550
+ class BaseController < ApplicationController
551
+ @@all_roles = Role.all
552
+ end
553
+ end
554
+ ```
555
+
556
+ to autoload `Role` we are going to check if it is defined in the current or
557
+ parent namespaces, one at a time. So, conceptually we want to try to autoload
558
+ any of
559
+
560
+ ```
561
+ Admin::BaseController::Role
562
+ Admin::Role
563
+ Role
564
+ ```
565
+
566
+ in that order. That's the idea. To do so, Rails looks in `autoload_paths`
567
+ respectively for file names like these:
568
+
569
+ ```
570
+ admin/base_controller/role.rb
571
+ admin/role.rb
572
+ role.rb
573
+ ```
574
+
575
+ modulus some additional directory lookups we are going to cover soon.
576
+
577
+ INFO. `'Constant::Name'.underscore` gives the relative path without extension of
578
+ the file name where `Constant::Name` is expected to be defined.
579
+
580
+ Let's see how Rails autoloads the `Post` constant in the `PostsController`
581
+ above assuming the application has a `Post` model defined in
582
+ `app/models/post.rb`.
583
+
584
+ First it checks for `posts_controller/post.rb` in `autoload_paths`:
585
+
586
+ ```
587
+ app/assets/posts_controller/post.rb
588
+ app/controllers/posts_controller/post.rb
589
+ app/helpers/posts_controller/post.rb
590
+ ...
591
+ test/mailers/previews/posts_controller/post.rb
592
+ ```
593
+
594
+ Since the lookup is exhausted without success, a similar search for a directory
595
+ is performed, we are going to see why in the [next section](#automatic-modules):
596
+
597
+ ```
598
+ app/assets/posts_controller/post
599
+ app/controllers/posts_controller/post
600
+ app/helpers/posts_controller/post
601
+ ...
602
+ test/mailers/previews/posts_controller/post
603
+ ```
604
+
605
+ If all those attempts fail, then Rails starts the lookup again in the parent
606
+ namespace. In this case only the top-level remains:
607
+
608
+ ```
609
+ app/assets/post.rb
610
+ app/controllers/post.rb
611
+ app/helpers/post.rb
612
+ app/mailers/post.rb
613
+ app/models/post.rb
614
+ ```
615
+
616
+ A matching file is found in `app/models/post.rb`. The lookup stops there and the
617
+ file is loaded. If the file actually defines `Post` all is fine, otherwise
618
+ `LoadError` is raised.
619
+
620
+ ### Qualified References
621
+
622
+ When a qualified constant is missing Rails does not look for it in the parent
623
+ namespaces. But there is a caveat: When a constant is missing, Rails is
624
+ unable to tell if the trigger was a relative reference or a qualified one.
625
+
626
+ For example, consider
627
+
628
+ ```ruby
629
+ module Admin
630
+ User
631
+ end
632
+ ```
633
+
634
+ and
635
+
636
+ ```ruby
637
+ Admin::User
638
+ ```
639
+
640
+ If `User` is missing, in either case all Rails knows is that a constant called
641
+ "User" was missing in a module called "Admin".
642
+
643
+ If there is a top-level `User` Ruby would resolve it in the former example, but
644
+ wouldn't in the latter. In general, Rails does not emulate the Ruby constant
645
+ resolution algorithms, but in this case it tries using the following heuristic:
646
+
647
+ > If none of the parent namespaces of the class or module has the missing
648
+ > constant then Rails assumes the reference is relative. Otherwise qualified.
649
+
650
+ For example, if this code triggers autoloading
651
+
652
+ ```ruby
653
+ Admin::User
654
+ ```
655
+
656
+ and the `User` constant is already present in `Object`, it is not possible that
657
+ the situation is
658
+
659
+ ```ruby
660
+ module Admin
661
+ User
662
+ end
663
+ ```
664
+
665
+ because otherwise Ruby would have resolved `User` and no autoloading would have
666
+ been triggered in the first place. Thus, Rails assumes a qualified reference and
667
+ considers the file `admin/user.rb` and directory `admin/user` to be the only
668
+ valid options.
669
+
670
+ In practice, this works quite well as long as the nesting matches all parent
671
+ namespaces respectively and the constants that make the rule apply are known at
672
+ that time.
673
+
674
+ However, autoloading happens on demand. If by chance the top-level `User` was
675
+ not yet loaded, then Rails assumes a relative reference by contract.
676
+
677
+ Naming conflicts of this kind are rare in practice, but if one occurs,
678
+ `require_dependency` provides a solution by ensuring that the constant needed
679
+ to trigger the heuristic is defined in the conflicting place.
680
+
681
+ ### Automatic Modules
682
+
683
+ When a module acts as a namespace, Rails does not require the application to
684
+ defines a file for it, a directory matching the namespace is enough.
685
+
686
+ Suppose an application has a back office whose controllers are stored in
687
+ `app/controllers/admin`. If the `Admin` module is not yet loaded when
688
+ `Admin::UsersController` is hit, Rails needs first to autoload the constant
689
+ `Admin`.
690
+
691
+ If `autoload_paths` has a file called `admin.rb` Rails is going to load that
692
+ one, but if there's no such file and a directory called `admin` is found, Rails
693
+ creates an empty module and assigns it to the `Admin` constant on the fly.
694
+
695
+ ### Generic Procedure
696
+
697
+ Relative references are reported to be missing in the cref where they were hit,
698
+ and qualified references are reported to be missing in their parent (see
699
+ [Resolution Algorithm for Relative
700
+ Constants](#resolution-algorithm-for-relative-constants) at the beginning of
701
+ this guide for the definition of *cref*, and [Resolution Algorithm for Qualified
702
+ Constants](#resolution-algorithm-for-qualified-constants) for the definition of
703
+ *parent*).
704
+
705
+ The procedure to autoload constant `C` in an arbitrary situation is as follows:
706
+
707
+ ```
708
+ if the class or module in which C is missing is Object
709
+ let ns = ''
710
+ else
711
+ let M = the class or module in which C is missing
712
+
713
+ if M is anonymous
714
+ let ns = ''
715
+ else
716
+ let ns = M.name
717
+ end
718
+ end
719
+
720
+ loop do
721
+ # Look for a regular file.
722
+ for dir in autoload_paths
723
+ if the file "#{dir}/#{ns.underscore}/c.rb" exists
724
+ load/require "#{dir}/#{ns.underscore}/c.rb"
725
+
726
+ if C is now defined
727
+ return
728
+ else
729
+ raise LoadError
730
+ end
731
+ end
732
+ end
733
+
734
+ # Look for an automatic module.
735
+ for dir in autoload_paths
736
+ if the directory "#{dir}/#{ns.underscore}/c" exists
737
+ if ns is an empty string
738
+ let C = Module.new in Object and return
739
+ else
740
+ let C = Module.new in ns.constantize and return
741
+ end
742
+ end
743
+ end
744
+
745
+ if ns is empty
746
+ # We reached the top-level without finding the constant.
747
+ raise NameError
748
+ else
749
+ if C exists in any of the parent namespaces
750
+ # Qualified constants heuristic.
751
+ raise NameError
752
+ else
753
+ # Try again in the parent namespace.
754
+ let ns = the parent namespace of ns and retry
755
+ end
756
+ end
757
+ end
758
+ ```
759
+
760
+
761
+ require_dependency
762
+ ------------------
763
+
764
+ Constant autoloading is triggered on demand and therefore code that uses a
765
+ certain constant may have it already defined or may trigger an autoload. That
766
+ depends on the execution path and it may vary between runs.
767
+
768
+ There are times, however, in which you want to make sure a certain constant is
769
+ known when the execution reaches some code. `require_dependency` provides a way
770
+ to load a file using the current [loading mechanism](#loading-mechanism), and
771
+ keeping track of constants defined in that file as if they were autoloaded to
772
+ have them reloaded as needed.
773
+
774
+ `require_dependency` is rarely needed, but see a couple of use-cases in
775
+ [Autoloading and STI](#autoloading-and-sti) and [When Constants aren't
776
+ Triggered](#when-constants-aren-t-missed).
777
+
778
+ WARNING. Unlike autoloading, `require_dependency` does not expect the file to
779
+ define any particular constant. Exploiting this behavior would be a bad practice
780
+ though, file and constant paths should match.
781
+
782
+
783
+ Constant Reloading
784
+ ------------------
785
+
786
+ When `config.cache_classes` is false Rails is able to reload autoloaded
787
+ constants.
788
+
789
+ For example, in you're in a console session and edit some file behind the
790
+ scenes, the code can be reloaded with the `reload!` command:
791
+
792
+ ```
793
+ > reload!
794
+ ```
795
+
796
+ When the application runs, code is reloaded when something relevant to this
797
+ logic changes. In order to do that, Rails monitors a number of things:
798
+
799
+ * `config/routes.rb`.
800
+
801
+ * Locales.
802
+
803
+ * Ruby files under `autoload_paths`.
804
+
805
+ * `db/schema.rb` and `db/structure.sql`.
806
+
807
+ If anything in there changes, there is a middleware that detects it and reloads
808
+ the code.
809
+
810
+ Autoloading keeps track of autoloaded constants. Reloading is implemented by
811
+ removing them all from their respective classes and modules using
812
+ `Module#remove_const`. That way, when the code goes on, those constants are
813
+ going to be unknown again, and files reloaded on demand.
814
+
815
+ INFO. This is an all-or-nothing operation, Rails does not attempt to reload only
816
+ what changed since dependencies between classes makes that really tricky.
817
+ Instead, everything is wiped.
818
+
819
+
820
+ Module#autoload isn't Involved
821
+ ------------------------------
822
+
823
+ `Module#autoload` provides a lazy way to load constants that is fully integrated
824
+ with the Ruby constant lookup algorithms, dynamic constant API, etc. It is quite
825
+ transparent.
826
+
827
+ Rails internals make extensive use of it to defer as much work as possible from
828
+ the boot process. But constant autoloading in Rails is **not** implemented with
829
+ `Module#autoload`.
830
+
831
+ One possible implementation based on `Module#autoload` would be to walk the
832
+ application tree and issue `autoload` calls that map existing file names to
833
+ their conventional constant name.
834
+
835
+ There are a number of reasons that prevent Rails from using that implementation.
836
+
837
+ For example, `Module#autoload` is only capable of loading files using `require`,
838
+ so reloading would not be possible. Not only that, it uses an internal `require`
839
+ which is not `Kernel#require`.
840
+
841
+ Then, it provides no way to remove declarations in case a file is deleted. If a
842
+ constant gets removed with `Module#remove_const` its `autoload` is not triggered
843
+ again. Also, it doesn't support qualified names, so files with namespaces should
844
+ be interpreted during the walk tree to install their own `autoload` calls, but
845
+ those files could have constant references not yet configured.
846
+
847
+ An implementation based on `Module#autoload` would be awesome but, as you see,
848
+ at least as of today it is not possible. Constant autoloading in Rails is
849
+ implemented with `Module#const_missing`, and that's why it has its own contract,
850
+ documented in this guide.
851
+
852
+
853
+ Common Gotchas
854
+ --------------
855
+
856
+ ### Nesting and Qualified Constants
857
+
858
+ Let's consider
859
+
860
+ ```ruby
861
+ module Admin
862
+ class UsersController < ApplicationController
863
+ def index
864
+ @users = User.all
865
+ end
866
+ end
867
+ end
868
+ ```
869
+
870
+ and
871
+
872
+ ```ruby
873
+ class Admin::UsersController < ApplicationController
874
+ def index
875
+ @users = User.all
876
+ end
877
+ end
878
+ ```
879
+
880
+ To resolve `User` Ruby checks `Admin` in the former case, but it does not in
881
+ the latter because it does not belong to the nesting (see [Nesting](#nesting)
882
+ and [Resolution Algorithms](#resolution-algorithms)).
883
+
884
+ Unfortunately Rails autoloading does not know the nesting in the spot where the
885
+ constant was missing and so it is not able to act as Ruby would. In particular,
886
+ `Admin::User` will get autoloaded in either case.
887
+
888
+ Albeit qualified constants with `class` and `module` keywords may technically
889
+ work with autoloading in some cases, it is preferable to use relative constants
890
+ instead:
891
+
892
+ ```ruby
893
+ module Admin
894
+ class UsersController < ApplicationController
895
+ def index
896
+ @users = User.all
897
+ end
898
+ end
899
+ end
900
+ ```
901
+
902
+ ### Autoloading and STI
903
+
904
+ Single Table Inheritance (STI) is a feature of Active Record that enables
905
+ storing a hierarchy of models in one single table. The API of such models is
906
+ aware of the hierarchy and encapsulates some common needs. For example, given
907
+ these classes:
908
+
909
+ ```ruby
910
+ # app/models/polygon.rb
911
+ class Polygon < ActiveRecord::Base
912
+ end
913
+
914
+ # app/models/triangle.rb
915
+ class Triangle < Polygon
916
+ end
917
+
918
+ # app/models/rectangle.rb
919
+ class Rectangle < Polygon
920
+ end
921
+ ```
922
+
923
+ `Triangle.create` creates a row that represents a triangle, and
924
+ `Rectangle.create` creates a row that represents a rectangle. If `id` is the
925
+ ID of an existing record, `Polygon.find(id)` returns an object of the correct
926
+ type.
927
+
928
+ Methods that operate on collections are also aware of the hierarchy. For
929
+ example, `Polygon.all` returns all the records of the table, because all
930
+ rectangles and triangles are polygons. Active Record takes care of returning
931
+ instances of their corresponding class in the result set.
932
+
933
+ Types are autoloaded as needed. For example, if `Polygon.first` is a rectangle
934
+ and `Rectangle` has not yet been loaded, Active Record autoloads it and the
935
+ record is correctly instantiated.
936
+
937
+ All good, but if instead of performing queries based on the root class we need
938
+ to work on some subclass, things get interesting.
939
+
940
+ While working with `Polygon` you do not need to be aware of all its descendants,
941
+ because anything in the table is by definition a polygon, but when working with
942
+ subclasses Active Record needs to be able to enumerate the types it is looking
943
+ for. Let’s see an example.
944
+
945
+ `Rectangle.all` only loads rectangles by adding a type constraint to the query:
946
+
947
+ ```sql
948
+ SELECT "polygons".* FROM "polygons"
949
+ WHERE "polygons"."type" IN ("Rectangle")
950
+ ```
951
+
952
+ Let’s introduce now a subclass of `Rectangle`:
953
+
954
+ ```ruby
955
+ # app/models/square.rb
956
+ class Square < Rectangle
957
+ end
958
+ ```
959
+
960
+ `Rectangle.all` should now return rectangles **and** squares:
961
+
962
+ ```sql
963
+ SELECT "polygons".* FROM "polygons"
964
+ WHERE "polygons"."type" IN ("Rectangle", "Square")
965
+ ```
966
+
967
+ But there’s a caveat here: How does Active Record know that the class `Square`
968
+ exists at all?
969
+
970
+ Even if the file `app/models/square.rb` exists and defines the `Square` class,
971
+ if no code yet used that class, `Rectangle.all` issues the query
972
+
973
+ ```sql
974
+ SELECT "polygons".* FROM "polygons"
975
+ WHERE "polygons"."type" IN ("Rectangle")
976
+ ```
977
+
978
+ That is not a bug, the query includes all *known* descendants of `Rectangle`.
979
+
980
+ A way to ensure this works correctly regardless of the order of execution is to
981
+ load the leaves of the tree by hand at the bottom of the file that defines the
982
+ root class:
983
+
984
+ ```ruby
985
+ # app/models/polygon.rb
986
+ class Polygon < ActiveRecord::Base
987
+ end
988
+ require_dependency ‘square’
989
+ ```
990
+
991
+ Only the leaves that are **at least grandchildren** need to be loaded this
992
+ way. Direct subclasses do not need to be preloaded. If the hierarchy is
993
+ deeper, intermediate classes will be autoloaded recursively from the bottom
994
+ because their constant will appear in the class definitions as superclass.
995
+
996
+ ### Autoloading and `require`
997
+
998
+ Files defining constants to be autoloaded should never be `require`d:
999
+
1000
+ ```ruby
1001
+ require 'user' # DO NOT DO THIS
1002
+
1003
+ class UsersController < ApplicationController
1004
+ ...
1005
+ end
1006
+ ```
1007
+
1008
+ There are two possible gotchas here in development mode:
1009
+
1010
+ 1. If `User` is autoloaded before reaching the `require`, `app/models/user.rb`
1011
+ runs again because `load` does not update `$LOADED_FEATURES`.
1012
+
1013
+ 2. If the `require` runs first Rails does not mark `User` as an autoloaded
1014
+ constant and changes to `app/models/user.rb` aren't reloaded.
1015
+
1016
+ Just follow the flow and use constant autoloading always, never mix
1017
+ autoloading and `require`. As a last resort, if some file absolutely needs to
1018
+ load a certain file use `require_dependency` to play nice with constant
1019
+ autoloading. This option is rarely needed in practice, though.
1020
+
1021
+ Of course, using `require` in autoloaded files to load ordinary 3rd party
1022
+ libraries is fine, and Rails is able to distinguish their constants, they are
1023
+ not marked as autoloaded.
1024
+
1025
+ ### Autoloading and Initializers
1026
+
1027
+ Consider this assignment in `config/initializers/set_auth_service.rb`:
1028
+
1029
+ ```ruby
1030
+ AUTH_SERVICE = if Rails.env.production?
1031
+ RealAuthService
1032
+ else
1033
+ MockedAuthService
1034
+ end
1035
+ ```
1036
+
1037
+ The purpose of this setup would be that the application uses the class that
1038
+ corresponds to the environment via `AUTH_SERVICE`. In development mode
1039
+ `MockedAuthService` gets autoloaded when the initializer runs. Let’s suppose
1040
+ we do some requests, change its implementation, and hit the application again.
1041
+ To our surprise the changes are not reflected. Why?
1042
+
1043
+ As [we saw earlier](#constant-reloading), Rails removes autoloaded constants,
1044
+ but `AUTH_SERVICE` stores the original class object. Stale, non-reachable
1045
+ using the original constant, but perfectly functional.
1046
+
1047
+ The following code summarizes the situation:
1048
+
1049
+ ```ruby
1050
+ class C
1051
+ def quack
1052
+ 'quack!'
1053
+ end
1054
+ end
1055
+
1056
+ X = C
1057
+ Object.instance_eval { remove_const(:C) }
1058
+ X.new.quack # => quack!
1059
+ X.name # => C
1060
+ C # => uninitialized constant C (NameError)
1061
+ ```
1062
+
1063
+ Because of that, it is not a good idea to autoload constants on application
1064
+ initialization.
1065
+
1066
+ In the case above we could implement a dynamic access point:
1067
+
1068
+ ```ruby
1069
+ # app/models/auth_service.rb
1070
+ class AuthService
1071
+ if Rails.env.production?
1072
+ def self.instance
1073
+ RealAuthService
1074
+ end
1075
+ else
1076
+ def self.instance
1077
+ MockedAuthService
1078
+ end
1079
+ end
1080
+ end
1081
+ ```
1082
+
1083
+ and have the application use `AuthService.instance` instead. `AuthService`
1084
+ would be loaded on demand and be autoload-friendly.
1085
+
1086
+ ### `require_dependency` and Initializers
1087
+
1088
+ As we saw before, `require_dependency` loads files in an autoloading-friendly
1089
+ way. Normally, though, such a call does not make sense in an initializer.
1090
+
1091
+ One could think about doing some [`require_dependency`](#require-dependency)
1092
+ calls in an initializer to make sure certain constants are loaded upfront, for
1093
+ example as an attempt to address the [gotcha with STIs](#autoloading-and-sti).
1094
+
1095
+ Problem is, in development mode [autoloaded constants are wiped](#constant-reloading)
1096
+ if there is any relevant change in the file system. If that happens then
1097
+ we are in the very same situation the initializer wanted to avoid!
1098
+
1099
+ Calls to `require_dependency` have to be strategically written in autoloaded
1100
+ spots.
1101
+
1102
+ ### When Constants aren't Missed
1103
+
1104
+ #### Relative References
1105
+
1106
+ Let's consider a flight simulator. The application has a default flight model
1107
+
1108
+ ```ruby
1109
+ # app/models/flight_model.rb
1110
+ class FlightModel
1111
+ end
1112
+ ```
1113
+
1114
+ that can be overridden by each airplane, for instance
1115
+
1116
+ ```ruby
1117
+ # app/models/bell_x1/flight_model.rb
1118
+ module BellX1
1119
+ class FlightModel < FlightModel
1120
+ end
1121
+ end
1122
+
1123
+ # app/models/bell_x1/aircraft.rb
1124
+ module BellX1
1125
+ class Aircraft
1126
+ def initialize
1127
+ @flight_model = FlightModel.new
1128
+ end
1129
+ end
1130
+ end
1131
+ ```
1132
+
1133
+ The initializer wants to create a `BellX1::FlightModel` and nesting has
1134
+ `BellX1`, that looks good. But if the default flight model is loaded and the
1135
+ one for the Bell-X1 is not, the interpreter is able to resolve the top-level
1136
+ `FlightModel` and autoloading is thus not triggered for `BellX1::FlightModel`.
1137
+
1138
+ That code depends on the execution path.
1139
+
1140
+ These kind of ambiguities can often be resolved using qualified constants:
1141
+
1142
+ ```ruby
1143
+ module BellX1
1144
+ class Plane
1145
+ def flight_model
1146
+ @flight_model ||= BellX1::FlightModel.new
1147
+ end
1148
+ end
1149
+ end
1150
+ ```
1151
+
1152
+ Also, `require_dependency` is a solution:
1153
+
1154
+ ```ruby
1155
+ require_dependency 'bell_x1/flight_model'
1156
+
1157
+ module BellX1
1158
+ class Plane
1159
+ def flight_model
1160
+ @flight_model ||= FlightModel.new
1161
+ end
1162
+ end
1163
+ end
1164
+ ```
1165
+
1166
+ #### Qualified References
1167
+
1168
+ Given
1169
+
1170
+ ```ruby
1171
+ # app/models/hotel.rb
1172
+ class Hotel
1173
+ end
1174
+
1175
+ # app/models/image.rb
1176
+ class Image
1177
+ end
1178
+
1179
+ # app/models/hotel/image.rb
1180
+ class Hotel
1181
+ class Image < Image
1182
+ end
1183
+ end
1184
+ ```
1185
+
1186
+ the expression `Hotel::Image` is ambiguous because it depends on the execution
1187
+ path.
1188
+
1189
+ As [we saw before](#resolution-algorithm-for-qualified-constants), Ruby looks
1190
+ up the constant in `Hotel` and its ancestors. If `app/models/image.rb` has
1191
+ been loaded but `app/models/hotel/image.rb` hasn't, Ruby does not find `Image`
1192
+ in `Hotel`, but it does in `Object`:
1193
+
1194
+ ```
1195
+ $ bin/rails r 'Image; p Hotel::Image' 2>/dev/null
1196
+ Image # NOT Hotel::Image!
1197
+ ```
1198
+
1199
+ The code evaluating `Hotel::Image` needs to make sure
1200
+ `app/models/hotel/image.rb` has been loaded, possibly with
1201
+ `require_dependency`.
1202
+
1203
+ In these cases the interpreter issues a warning though:
1204
+
1205
+ ```
1206
+ warning: toplevel constant Image referenced by Hotel::Image
1207
+ ```
1208
+
1209
+ This surprising constant resolution can be observed with any qualifying class:
1210
+
1211
+ ```
1212
+ 2.1.5 :001 > String::Array
1213
+ (irb):1: warning: toplevel constant Array referenced by String::Array
1214
+ => Array
1215
+ ```
1216
+
1217
+ WARNING. To find this gotcha the qualifying namespace has to be a class,
1218
+ `Object` is not an ancestor of modules.
1219
+
1220
+ ### Autoloading within Singleton Classes
1221
+
1222
+ Let's suppose we have these class definitions:
1223
+
1224
+ ```ruby
1225
+ # app/models/hotel/services.rb
1226
+ module Hotel
1227
+ class Services
1228
+ end
1229
+ end
1230
+
1231
+ # app/models/hotel/geo_location.rb
1232
+ module Hotel
1233
+ class GeoLocation
1234
+ class << self
1235
+ Services
1236
+ end
1237
+ end
1238
+ end
1239
+ ```
1240
+
1241
+ If `Hotel::Services` is known by the time `app/models/hotel/geo_location.rb`
1242
+ is being loaded, `Services` is resolved by Ruby because `Hotel` belongs to the
1243
+ nesting when the singleton class of `Hotel::GeoLocation` is opened.
1244
+
1245
+ But if `Hotel::Services` is not known, Rails is not able to autoload it, the
1246
+ application raises `NameError`.
1247
+
1248
+ The reason is that autoloading is triggered for the singleton class, which is
1249
+ anonymous, and as [we saw before](#generic-procedure), Rails only checks the
1250
+ top-level namespace in that edge case.
1251
+
1252
+ An easy solution to this caveat is to qualify the constant:
1253
+
1254
+ ```ruby
1255
+ module Hotel
1256
+ class GeoLocation
1257
+ class << self
1258
+ Hotel::Services
1259
+ end
1260
+ end
1261
+ end
1262
+ ```
1263
+
1264
+ ### Autoloading in `BasicObject`
1265
+
1266
+ Direct descendants of `BasicObject` do not have `Object` among their ancestors
1267
+ and cannot resolve top-level constants:
1268
+
1269
+ ```ruby
1270
+ class C < BasicObject
1271
+ String # NameError: uninitialized constant C::String
1272
+ end
1273
+ ```
1274
+
1275
+ When autoloading is involved that plot has a twist. Let's consider:
1276
+
1277
+ ```ruby
1278
+ class C < BasicObject
1279
+ def user
1280
+ User # WRONG
1281
+ end
1282
+ end
1283
+ ```
1284
+
1285
+ Since Rails checks the top-level namespace `User` gets autoloaded just fine the
1286
+ first time the `user` method is invoked. You only get the exception if the
1287
+ `User` constant is known at that point, in particular in a *second* call to
1288
+ `user`:
1289
+
1290
+ ```ruby
1291
+ c = C.new
1292
+ c.user # surprisingly fine, User
1293
+ c.user # NameError: uninitialized constant C::User
1294
+ ```
1295
+
1296
+ because it detects that a parent namespace already has the constant (see [Qualified
1297
+ References](#autoloading-algorithms-qualified-references)).
1298
+
1299
+ As with pure Ruby, within the body of a direct descendant of `BasicObject` use
1300
+ always absolute constant paths:
1301
+
1302
+ ```ruby
1303
+ class C < BasicObject
1304
+ ::String # RIGHT
1305
+
1306
+ def user
1307
+ ::User # RIGHT
1308
+ end
1309
+ end
1310
+ ```