railties 3.2.22.5 → 4.0.0.beta1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (450) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +186 -78
  3. data/README.rdoc +4 -2
  4. data/lib/rails.rb +11 -44
  5. data/lib/rails/all.rb +0 -1
  6. data/lib/rails/app_rails_loader.rb +37 -0
  7. data/lib/rails/application.rb +176 -124
  8. data/lib/rails/application/bootstrap.rb +29 -23
  9. data/lib/rails/application/configuration.rb +54 -48
  10. data/lib/rails/application/finisher.rb +8 -12
  11. data/lib/rails/application/routes_reloader.rb +2 -2
  12. data/lib/rails/backtrace_cleaner.rb +1 -16
  13. data/lib/rails/cli.rb +2 -2
  14. data/lib/rails/code_statistics.rb +30 -45
  15. data/lib/rails/code_statistics_calculator.rb +79 -0
  16. data/lib/rails/commands.rb +44 -37
  17. data/lib/rails/commands/application.rb +14 -9
  18. data/lib/rails/commands/console.rb +77 -33
  19. data/lib/rails/commands/dbconsole.rb +115 -64
  20. data/lib/rails/commands/destroy.rb +2 -3
  21. data/lib/rails/commands/generate.rb +2 -3
  22. data/lib/rails/commands/plugin_new.rb +0 -2
  23. data/lib/rails/commands/runner.rb +4 -5
  24. data/lib/rails/commands/server.rb +28 -9
  25. data/lib/rails/commands/update.rb +1 -1
  26. data/lib/rails/configuration.rb +35 -8
  27. data/lib/rails/console/app.rb +0 -4
  28. data/lib/rails/deprecation.rb +19 -0
  29. data/lib/rails/engine.rb +111 -92
  30. data/lib/rails/engine/commands.rb +1 -3
  31. data/lib/rails/engine/configuration.rb +26 -19
  32. data/lib/rails/engine/railties.rb +14 -18
  33. data/lib/rails/generators.rb +30 -50
  34. data/lib/rails/generators/actions.rb +38 -103
  35. data/lib/rails/generators/active_model.rb +14 -6
  36. data/lib/rails/generators/app_base.rb +70 -83
  37. data/lib/rails/generators/base.rb +23 -35
  38. data/lib/rails/generators/css/assets/assets_generator.rb +3 -3
  39. data/lib/rails/generators/css/scaffold/scaffold_generator.rb +3 -3
  40. data/lib/rails/generators/erb.rb +2 -2
  41. data/lib/rails/generators/erb/controller/controller_generator.rb +4 -4
  42. data/lib/rails/generators/erb/mailer/mailer_generator.rb +3 -3
  43. data/lib/rails/generators/erb/scaffold/scaffold_generator.rb +4 -4
  44. data/lib/rails/generators/erb/scaffold/templates/index.html.erb +18 -14
  45. data/lib/rails/generators/erb/scaffold/templates/show.html.erb +1 -1
  46. data/lib/rails/generators/generated_attribute.rb +51 -16
  47. data/lib/rails/generators/js/assets/assets_generator.rb +3 -3
  48. data/lib/rails/generators/migration.rb +1 -5
  49. data/lib/rails/generators/named_base.rb +20 -25
  50. data/lib/rails/generators/rails/app/app_generator.rb +40 -48
  51. data/lib/rails/generators/rails/app/templates/Gemfile +8 -7
  52. data/lib/rails/generators/rails/app/templates/README.rdoc +28 -0
  53. data/lib/rails/generators/rails/app/templates/Rakefile +0 -1
  54. data/lib/rails/generators/rails/app/templates/app/assets/javascripts/application.js.tt +2 -1
  55. data/lib/rails/generators/rails/app/templates/app/controllers/application_controller.rb.tt +5 -0
  56. data/lib/rails/generators/rails/app/templates/app/views/layouts/application.html.erb.tt +2 -2
  57. data/lib/rails/generators/rails/app/templates/bin/bundle +2 -0
  58. data/lib/rails/generators/rails/app/templates/bin/rails +3 -0
  59. data/lib/rails/generators/rails/app/templates/bin/rake +3 -0
  60. data/lib/rails/generators/rails/app/templates/config/application.rb +5 -43
  61. data/lib/rails/generators/rails/app/templates/config/boot.rb +0 -2
  62. data/lib/rails/generators/rails/app/templates/config/databases/jdbcpostgresql.yml +2 -2
  63. data/lib/rails/generators/rails/app/templates/config/databases/mysql.yml +1 -4
  64. data/lib/rails/generators/rails/app/templates/config/databases/postgresql.yml +8 -3
  65. data/lib/rails/generators/rails/app/templates/config/databases/sqlserver.yml +57 -0
  66. data/lib/rails/generators/rails/app/templates/config/environment.rb +2 -2
  67. data/lib/rails/generators/rails/app/templates/config/environments/development.rb.tt +9 -19
  68. data/lib/rails/generators/rails/app/templates/config/environments/production.rb.tt +40 -29
  69. data/lib/rails/generators/rails/app/templates/config/environments/test.rb.tt +12 -15
  70. data/lib/rails/generators/rails/app/templates/config/initializers/filter_parameter_logging.rb +4 -0
  71. data/lib/rails/generators/rails/app/templates/config/initializers/inflections.rb +6 -5
  72. data/lib/rails/generators/rails/app/templates/config/initializers/secret_token.rb.tt +6 -1
  73. data/lib/rails/generators/rails/app/templates/config/initializers/session_store.rb.tt +1 -6
  74. data/lib/rails/generators/rails/app/templates/config/initializers/wrap_parameters.rb.tt +6 -6
  75. data/lib/rails/generators/rails/app/templates/config/locales/en.yml +20 -2
  76. data/lib/rails/generators/rails/app/templates/config/routes.rb +15 -24
  77. data/lib/rails/generators/rails/app/templates/db/seeds.rb.tt +2 -2
  78. data/lib/rails/generators/rails/app/templates/gitignore +3 -2
  79. data/lib/rails/generators/rails/app/templates/public/404.html +2 -1
  80. data/lib/rails/generators/rails/app/templates/public/422.html +1 -1
  81. data/lib/rails/generators/rails/app/templates/public/500.html +2 -1
  82. data/lib/rails/generators/rails/app/templates/public/robots.txt +1 -1
  83. data/lib/rails/generators/rails/app/templates/test/test_helper.rb +3 -1
  84. data/lib/rails/generators/rails/assets/assets_generator.rb +5 -5
  85. data/lib/rails/generators/rails/controller/USAGE +7 -7
  86. data/lib/rails/generators/rails/controller/controller_generator.rb +3 -3
  87. data/lib/rails/generators/rails/controller/templates/controller.rb +1 -1
  88. data/lib/rails/generators/rails/generator/generator_generator.rb +4 -4
  89. data/lib/rails/generators/rails/helper/USAGE +1 -1
  90. data/lib/rails/generators/rails/helper/helper_generator.rb +2 -2
  91. data/lib/rails/generators/rails/integration_test/integration_test_generator.rb +2 -2
  92. data/lib/rails/generators/rails/migration/USAGE +12 -6
  93. data/lib/rails/generators/rails/migration/migration_generator.rb +3 -3
  94. data/lib/rails/generators/rails/model/USAGE +53 -4
  95. data/lib/rails/generators/rails/model/model_generator.rb +3 -3
  96. data/lib/rails/generators/rails/plugin_new/plugin_new_generator.rb +81 -39
  97. data/lib/rails/generators/rails/plugin_new/templates/%name%.gemspec +2 -2
  98. data/lib/rails/generators/rails/plugin_new/templates/Gemfile +16 -1
  99. data/lib/rails/generators/rails/plugin_new/templates/Rakefile +3 -9
  100. data/lib/rails/generators/rails/plugin_new/templates/app/controllers/%name%/application_controller.rb.tt +0 -1
  101. data/lib/rails/generators/rails/plugin_new/templates/app/views/layouts/%name%/application.html.erb.tt +1 -1
  102. data/lib/rails/generators/rails/plugin_new/templates/{script → bin}/rails.tt +0 -0
  103. data/lib/rails/generators/rails/plugin_new/templates/gitignore +3 -0
  104. data/lib/rails/generators/rails/plugin_new/templates/lib/%name%.rb +1 -1
  105. data/lib/rails/generators/rails/plugin_new/templates/rails/application.rb +0 -1
  106. data/lib/rails/generators/rails/plugin_new/templates/rails/boot.rb +0 -1
  107. data/lib/rails/generators/rails/resource/resource_generator.rb +5 -5
  108. data/lib/rails/generators/rails/resource_route/resource_route_generator.rb +2 -2
  109. data/lib/rails/generators/rails/scaffold/scaffold_generator.rb +11 -7
  110. data/lib/rails/generators/rails/scaffold_controller/USAGE +4 -4
  111. data/lib/rails/generators/rails/scaffold_controller/scaffold_controller_generator.rb +9 -7
  112. data/lib/rails/generators/rails/scaffold_controller/templates/controller.rb +27 -48
  113. data/lib/rails/generators/rails/task/task_generator.rb +2 -2
  114. data/lib/rails/generators/rails/task/templates/task.rb +1 -1
  115. data/lib/rails/generators/resource_helpers.rb +3 -5
  116. data/lib/rails/generators/test_case.rb +22 -28
  117. data/lib/rails/generators/test_unit.rb +3 -3
  118. data/lib/rails/generators/test_unit/controller/controller_generator.rb +6 -6
  119. data/lib/rails/generators/test_unit/helper/helper_generator.rb +5 -5
  120. data/lib/rails/generators/test_unit/integration/integration_generator.rb +4 -4
  121. data/lib/rails/generators/test_unit/mailer/mailer_generator.rb +6 -6
  122. data/lib/rails/generators/test_unit/model/model_generator.rb +7 -7
  123. data/lib/rails/generators/test_unit/model/templates/fixtures.yml +8 -2
  124. data/lib/rails/generators/test_unit/plugin/plugin_generator.rb +4 -4
  125. data/lib/rails/generators/test_unit/plugin/templates/test_helper.rb +1 -2
  126. data/lib/rails/generators/test_unit/scaffold/scaffold_generator.rb +10 -19
  127. data/lib/rails/generators/test_unit/scaffold/templates/functional_test.rb +5 -5
  128. data/lib/rails/info.rb +3 -3
  129. data/lib/rails/info_controller.rb +26 -8
  130. data/lib/rails/initializable.rb +2 -2
  131. data/lib/rails/paths.rb +59 -54
  132. data/lib/rails/rack/debugger.rb +2 -2
  133. data/lib/rails/rack/logger.rb +33 -8
  134. data/lib/rails/railtie.rb +24 -24
  135. data/lib/rails/railtie/configurable.rb +1 -1
  136. data/lib/rails/railtie/configuration.rb +15 -5
  137. data/lib/rails/ruby_version_check.rb +3 -13
  138. data/lib/rails/rubyprof_ext.rb +1 -1
  139. data/lib/rails/source_annotation_extractor.rb +40 -17
  140. data/lib/rails/tasks/annotations.rake +1 -1
  141. data/lib/rails/tasks/documentation.rake +10 -57
  142. data/lib/rails/tasks/engine.rake +1 -1
  143. data/lib/rails/tasks/framework.rake +9 -9
  144. data/lib/rails/tasks/log.rake +18 -4
  145. data/lib/rails/tasks/middleware.rake +1 -1
  146. data/lib/rails/tasks/misc.rake +2 -9
  147. data/lib/rails/tasks/routes.rake +4 -6
  148. data/lib/rails/tasks/statistics.rake +8 -2
  149. data/lib/rails/tasks/tmp.rake +12 -4
  150. data/lib/rails/templates/layouts/application.html.erb +36 -0
  151. data/lib/rails/templates/rails/info/properties.html.erb +1 -0
  152. data/lib/rails/templates/rails/info/routes.html.erb +9 -0
  153. data/lib/rails/{generators/rails/app/templates/public/index.html → templates/rails/welcome/index.html.erb} +18 -14
  154. data/lib/rails/test_help.rb +6 -29
  155. data/lib/rails/test_unit/railtie.rb +2 -3
  156. data/lib/rails/test_unit/testing.rake +45 -33
  157. data/lib/rails/version.rb +4 -4
  158. data/lib/rails/welcome_controller.rb +7 -0
  159. metadata +86 -378
  160. data/guides/assets/images/belongs_to.png +0 -0
  161. data/guides/assets/images/book_icon.gif +0 -0
  162. data/guides/assets/images/bullet.gif +0 -0
  163. data/guides/assets/images/challenge.png +0 -0
  164. data/guides/assets/images/chapters_icon.gif +0 -0
  165. data/guides/assets/images/check_bullet.gif +0 -0
  166. data/guides/assets/images/credits_pic_blank.gif +0 -0
  167. data/guides/assets/images/csrf.png +0 -0
  168. data/guides/assets/images/customized_error_messages.png +0 -0
  169. data/guides/assets/images/edge_badge.png +0 -0
  170. data/guides/assets/images/error_messages.png +0 -0
  171. data/guides/assets/images/feature_tile.gif +0 -0
  172. data/guides/assets/images/footer_tile.gif +0 -0
  173. data/guides/assets/images/fxn.png +0 -0
  174. data/guides/assets/images/grey_bullet.gif +0 -0
  175. data/guides/assets/images/habtm.png +0 -0
  176. data/guides/assets/images/has_many.png +0 -0
  177. data/guides/assets/images/has_many_through.png +0 -0
  178. data/guides/assets/images/has_one.png +0 -0
  179. data/guides/assets/images/has_one_through.png +0 -0
  180. data/guides/assets/images/header_backdrop.png +0 -0
  181. data/guides/assets/images/header_tile.gif +0 -0
  182. data/guides/assets/images/i18n/demo_html_safe.png +0 -0
  183. data/guides/assets/images/i18n/demo_localized_pirate.png +0 -0
  184. data/guides/assets/images/i18n/demo_translated_en.png +0 -0
  185. data/guides/assets/images/i18n/demo_translated_pirate.png +0 -0
  186. data/guides/assets/images/i18n/demo_translation_missing.png +0 -0
  187. data/guides/assets/images/i18n/demo_untranslated.png +0 -0
  188. data/guides/assets/images/icons/README +0 -5
  189. data/guides/assets/images/icons/callouts/1.png +0 -0
  190. data/guides/assets/images/icons/callouts/10.png +0 -0
  191. data/guides/assets/images/icons/callouts/11.png +0 -0
  192. data/guides/assets/images/icons/callouts/12.png +0 -0
  193. data/guides/assets/images/icons/callouts/13.png +0 -0
  194. data/guides/assets/images/icons/callouts/14.png +0 -0
  195. data/guides/assets/images/icons/callouts/15.png +0 -0
  196. data/guides/assets/images/icons/callouts/2.png +0 -0
  197. data/guides/assets/images/icons/callouts/3.png +0 -0
  198. data/guides/assets/images/icons/callouts/4.png +0 -0
  199. data/guides/assets/images/icons/callouts/5.png +0 -0
  200. data/guides/assets/images/icons/callouts/6.png +0 -0
  201. data/guides/assets/images/icons/callouts/7.png +0 -0
  202. data/guides/assets/images/icons/callouts/8.png +0 -0
  203. data/guides/assets/images/icons/callouts/9.png +0 -0
  204. data/guides/assets/images/icons/caution.png +0 -0
  205. data/guides/assets/images/icons/example.png +0 -0
  206. data/guides/assets/images/icons/home.png +0 -0
  207. data/guides/assets/images/icons/important.png +0 -0
  208. data/guides/assets/images/icons/next.png +0 -0
  209. data/guides/assets/images/icons/note.png +0 -0
  210. data/guides/assets/images/icons/prev.png +0 -0
  211. data/guides/assets/images/icons/tip.png +0 -0
  212. data/guides/assets/images/icons/up.png +0 -0
  213. data/guides/assets/images/icons/warning.png +0 -0
  214. data/guides/assets/images/jaimeiniesta.jpg +0 -0
  215. data/guides/assets/images/nav_arrow.gif +0 -0
  216. data/guides/assets/images/polymorphic.png +0 -0
  217. data/guides/assets/images/posts_index.png +0 -0
  218. data/guides/assets/images/radar.png +0 -0
  219. data/guides/assets/images/rails_guides_kindle_cover.jpg +0 -0
  220. data/guides/assets/images/rails_guides_logo.gif +0 -0
  221. data/guides/assets/images/rails_logo_remix.gif +0 -0
  222. data/guides/assets/images/rails_welcome.png +0 -0
  223. data/guides/assets/images/session_fixation.png +0 -0
  224. data/guides/assets/images/tab_grey.gif +0 -0
  225. data/guides/assets/images/tab_info.gif +0 -0
  226. data/guides/assets/images/tab_note.gif +0 -0
  227. data/guides/assets/images/tab_red.gif +0 -0
  228. data/guides/assets/images/tab_yellow.gif +0 -0
  229. data/guides/assets/images/tab_yellow.png +0 -0
  230. data/guides/assets/images/validation_error_messages.png +0 -0
  231. data/guides/assets/images/vijaydev.jpg +0 -0
  232. data/guides/assets/javascripts/guides.js +0 -7
  233. data/guides/assets/javascripts/syntaxhighlighter/shBrushAS3.js +0 -59
  234. data/guides/assets/javascripts/syntaxhighlighter/shBrushAppleScript.js +0 -75
  235. data/guides/assets/javascripts/syntaxhighlighter/shBrushBash.js +0 -59
  236. data/guides/assets/javascripts/syntaxhighlighter/shBrushCSharp.js +0 -65
  237. data/guides/assets/javascripts/syntaxhighlighter/shBrushColdFusion.js +0 -100
  238. data/guides/assets/javascripts/syntaxhighlighter/shBrushCpp.js +0 -97
  239. data/guides/assets/javascripts/syntaxhighlighter/shBrushCss.js +0 -91
  240. data/guides/assets/javascripts/syntaxhighlighter/shBrushDelphi.js +0 -55
  241. data/guides/assets/javascripts/syntaxhighlighter/shBrushDiff.js +0 -41
  242. data/guides/assets/javascripts/syntaxhighlighter/shBrushErlang.js +0 -52
  243. data/guides/assets/javascripts/syntaxhighlighter/shBrushGroovy.js +0 -67
  244. data/guides/assets/javascripts/syntaxhighlighter/shBrushJScript.js +0 -52
  245. data/guides/assets/javascripts/syntaxhighlighter/shBrushJava.js +0 -57
  246. data/guides/assets/javascripts/syntaxhighlighter/shBrushJavaFX.js +0 -58
  247. data/guides/assets/javascripts/syntaxhighlighter/shBrushPerl.js +0 -72
  248. data/guides/assets/javascripts/syntaxhighlighter/shBrushPhp.js +0 -88
  249. data/guides/assets/javascripts/syntaxhighlighter/shBrushPlain.js +0 -33
  250. data/guides/assets/javascripts/syntaxhighlighter/shBrushPowerShell.js +0 -74
  251. data/guides/assets/javascripts/syntaxhighlighter/shBrushPython.js +0 -64
  252. data/guides/assets/javascripts/syntaxhighlighter/shBrushRuby.js +0 -55
  253. data/guides/assets/javascripts/syntaxhighlighter/shBrushSass.js +0 -94
  254. data/guides/assets/javascripts/syntaxhighlighter/shBrushScala.js +0 -51
  255. data/guides/assets/javascripts/syntaxhighlighter/shBrushSql.js +0 -66
  256. data/guides/assets/javascripts/syntaxhighlighter/shBrushVb.js +0 -56
  257. data/guides/assets/javascripts/syntaxhighlighter/shBrushXml.js +0 -69
  258. data/guides/assets/javascripts/syntaxhighlighter/shCore.js +0 -17
  259. data/guides/assets/stylesheets/fixes.css +0 -16
  260. data/guides/assets/stylesheets/kindle.css +0 -11
  261. data/guides/assets/stylesheets/main.css +0 -453
  262. data/guides/assets/stylesheets/print.css +0 -52
  263. data/guides/assets/stylesheets/reset.css +0 -43
  264. data/guides/assets/stylesheets/style.css +0 -13
  265. data/guides/assets/stylesheets/syntaxhighlighter/shCore.css +0 -226
  266. data/guides/assets/stylesheets/syntaxhighlighter/shCoreDefault.css +0 -328
  267. data/guides/assets/stylesheets/syntaxhighlighter/shCoreDjango.css +0 -331
  268. data/guides/assets/stylesheets/syntaxhighlighter/shCoreEclipse.css +0 -339
  269. data/guides/assets/stylesheets/syntaxhighlighter/shCoreEmacs.css +0 -324
  270. data/guides/assets/stylesheets/syntaxhighlighter/shCoreFadeToGrey.css +0 -328
  271. data/guides/assets/stylesheets/syntaxhighlighter/shCoreMDUltra.css +0 -324
  272. data/guides/assets/stylesheets/syntaxhighlighter/shCoreMidnight.css +0 -324
  273. data/guides/assets/stylesheets/syntaxhighlighter/shCoreRDark.css +0 -324
  274. data/guides/assets/stylesheets/syntaxhighlighter/shThemeDefault.css +0 -117
  275. data/guides/assets/stylesheets/syntaxhighlighter/shThemeDjango.css +0 -120
  276. data/guides/assets/stylesheets/syntaxhighlighter/shThemeEclipse.css +0 -128
  277. data/guides/assets/stylesheets/syntaxhighlighter/shThemeEmacs.css +0 -113
  278. data/guides/assets/stylesheets/syntaxhighlighter/shThemeFadeToGrey.css +0 -117
  279. data/guides/assets/stylesheets/syntaxhighlighter/shThemeMDUltra.css +0 -113
  280. data/guides/assets/stylesheets/syntaxhighlighter/shThemeMidnight.css +0 -113
  281. data/guides/assets/stylesheets/syntaxhighlighter/shThemeRDark.css +0 -113
  282. data/guides/assets/stylesheets/syntaxhighlighter/shThemeRailsGuides.css +0 -116
  283. data/guides/code/getting_started/Gemfile +0 -38
  284. data/guides/code/getting_started/README.rdoc +0 -261
  285. data/guides/code/getting_started/Rakefile +0 -7
  286. data/guides/code/getting_started/app/assets/images/rails.png +0 -0
  287. data/guides/code/getting_started/app/assets/javascripts/application.js +0 -15
  288. data/guides/code/getting_started/app/assets/javascripts/comments.js.coffee +0 -3
  289. data/guides/code/getting_started/app/assets/javascripts/home.js.coffee +0 -3
  290. data/guides/code/getting_started/app/assets/javascripts/posts.js.coffee +0 -3
  291. data/guides/code/getting_started/app/assets/stylesheets/application.css +0 -13
  292. data/guides/code/getting_started/app/assets/stylesheets/comments.css.scss +0 -3
  293. data/guides/code/getting_started/app/assets/stylesheets/home.css.scss +0 -3
  294. data/guides/code/getting_started/app/assets/stylesheets/posts.css.scss +0 -3
  295. data/guides/code/getting_started/app/assets/stylesheets/scaffolds.css.scss +0 -56
  296. data/guides/code/getting_started/app/controllers/application_controller.rb +0 -3
  297. data/guides/code/getting_started/app/controllers/comments_controller.rb +0 -16
  298. data/guides/code/getting_started/app/controllers/home_controller.rb +0 -5
  299. data/guides/code/getting_started/app/controllers/posts_controller.rb +0 -84
  300. data/guides/code/getting_started/app/helpers/application_helper.rb +0 -2
  301. data/guides/code/getting_started/app/helpers/comments_helper.rb +0 -2
  302. data/guides/code/getting_started/app/helpers/home_helper.rb +0 -2
  303. data/guides/code/getting_started/app/helpers/posts_helper.rb +0 -5
  304. data/guides/code/getting_started/app/models/comment.rb +0 -3
  305. data/guides/code/getting_started/app/models/post.rb +0 -11
  306. data/guides/code/getting_started/app/models/tag.rb +0 -3
  307. data/guides/code/getting_started/app/views/comments/_comment.html.erb +0 -15
  308. data/guides/code/getting_started/app/views/comments/_form.html.erb +0 -13
  309. data/guides/code/getting_started/app/views/home/index.html.erb +0 -2
  310. data/guides/code/getting_started/app/views/layouts/application.html.erb +0 -14
  311. data/guides/code/getting_started/app/views/posts/_form.html.erb +0 -32
  312. data/guides/code/getting_started/app/views/posts/edit.html.erb +0 -6
  313. data/guides/code/getting_started/app/views/posts/index.html.erb +0 -27
  314. data/guides/code/getting_started/app/views/posts/new.html.erb +0 -5
  315. data/guides/code/getting_started/app/views/posts/show.html.erb +0 -31
  316. data/guides/code/getting_started/app/views/tags/_form.html.erb +0 -12
  317. data/guides/code/getting_started/config.ru +0 -4
  318. data/guides/code/getting_started/config/application.rb +0 -59
  319. data/guides/code/getting_started/config/boot.rb +0 -6
  320. data/guides/code/getting_started/config/database.yml +0 -25
  321. data/guides/code/getting_started/config/environment.rb +0 -5
  322. data/guides/code/getting_started/config/environments/development.rb +0 -37
  323. data/guides/code/getting_started/config/environments/production.rb +0 -67
  324. data/guides/code/getting_started/config/environments/test.rb +0 -37
  325. data/guides/code/getting_started/config/initializers/backtrace_silencers.rb +0 -7
  326. data/guides/code/getting_started/config/initializers/inflections.rb +0 -15
  327. data/guides/code/getting_started/config/initializers/mime_types.rb +0 -5
  328. data/guides/code/getting_started/config/initializers/secret_token.rb +0 -7
  329. data/guides/code/getting_started/config/initializers/session_store.rb +0 -8
  330. data/guides/code/getting_started/config/initializers/wrap_parameters.rb +0 -14
  331. data/guides/code/getting_started/config/locales/en.yml +0 -5
  332. data/guides/code/getting_started/config/routes.rb +0 -64
  333. data/guides/code/getting_started/db/migrate/20110901012504_create_posts.rb +0 -11
  334. data/guides/code/getting_started/db/migrate/20110901012815_create_comments.rb +0 -12
  335. data/guides/code/getting_started/db/migrate/20110901013701_create_tags.rb +0 -11
  336. data/guides/code/getting_started/db/schema.rb +0 -43
  337. data/guides/code/getting_started/db/seeds.rb +0 -7
  338. data/guides/code/getting_started/doc/README_FOR_APP +0 -2
  339. data/guides/code/getting_started/public/404.html +0 -26
  340. data/guides/code/getting_started/public/422.html +0 -26
  341. data/guides/code/getting_started/public/500.html +0 -25
  342. data/guides/code/getting_started/public/favicon.ico +0 -0
  343. data/guides/code/getting_started/public/robots.txt +0 -5
  344. data/guides/code/getting_started/script/rails +0 -6
  345. data/guides/code/getting_started/test/fixtures/comments.yml +0 -11
  346. data/guides/code/getting_started/test/fixtures/posts.yml +0 -11
  347. data/guides/code/getting_started/test/fixtures/tags.yml +0 -9
  348. data/guides/code/getting_started/test/functional/comments_controller_test.rb +0 -7
  349. data/guides/code/getting_started/test/functional/home_controller_test.rb +0 -9
  350. data/guides/code/getting_started/test/functional/posts_controller_test.rb +0 -49
  351. data/guides/code/getting_started/test/performance/browsing_test.rb +0 -12
  352. data/guides/code/getting_started/test/test_helper.rb +0 -13
  353. data/guides/code/getting_started/test/unit/comment_test.rb +0 -7
  354. data/guides/code/getting_started/test/unit/helpers/comments_helper_test.rb +0 -4
  355. data/guides/code/getting_started/test/unit/helpers/home_helper_test.rb +0 -4
  356. data/guides/code/getting_started/test/unit/helpers/posts_helper_test.rb +0 -4
  357. data/guides/code/getting_started/test/unit/post_test.rb +0 -7
  358. data/guides/code/getting_started/test/unit/tag_test.rb +0 -7
  359. data/guides/rails_guides.rb +0 -50
  360. data/guides/rails_guides/generator.rb +0 -310
  361. data/guides/rails_guides/helpers.rb +0 -45
  362. data/guides/rails_guides/indexer.rb +0 -69
  363. data/guides/rails_guides/levenshtein.rb +0 -31
  364. data/guides/rails_guides/textile_extensions.rb +0 -63
  365. data/guides/source/2_2_release_notes.textile +0 -422
  366. data/guides/source/2_3_release_notes.textile +0 -610
  367. data/guides/source/3_0_release_notes.textile +0 -595
  368. data/guides/source/3_1_release_notes.textile +0 -553
  369. data/guides/source/3_2_release_notes.textile +0 -540
  370. data/guides/source/_license.html.erb +0 -2
  371. data/guides/source/_welcome.html.erb +0 -19
  372. data/guides/source/action_controller_overview.textile +0 -820
  373. data/guides/source/action_mailer_basics.textile +0 -516
  374. data/guides/source/action_view_overview.textile +0 -1497
  375. data/guides/source/active_model_basics.textile +0 -205
  376. data/guides/source/active_record_basics.textile +0 -218
  377. data/guides/source/active_record_querying.textile +0 -1433
  378. data/guides/source/active_record_validations_callbacks.textile +0 -1287
  379. data/guides/source/active_resource_basics.textile +0 -120
  380. data/guides/source/active_support_core_extensions.textile +0 -3715
  381. data/guides/source/api_documentation_guidelines.textile +0 -185
  382. data/guides/source/asset_pipeline.textile +0 -707
  383. data/guides/source/association_basics.textile +0 -1959
  384. data/guides/source/caching_with_rails.textile +0 -437
  385. data/guides/source/command_line.textile +0 -574
  386. data/guides/source/configuring.textile +0 -643
  387. data/guides/source/contributing_to_ruby_on_rails.textile +0 -448
  388. data/guides/source/credits.html.erb +0 -72
  389. data/guides/source/debugging_rails_applications.textile +0 -714
  390. data/guides/source/documents.yaml +0 -157
  391. data/guides/source/engines.textile +0 -618
  392. data/guides/source/form_helpers.textile +0 -798
  393. data/guides/source/generators.textile +0 -621
  394. data/guides/source/getting_started.textile +0 -1931
  395. data/guides/source/i18n.textile +0 -931
  396. data/guides/source/index.html.erb +0 -30
  397. data/guides/source/initialization.textile +0 -1116
  398. data/guides/source/kindle/KINDLE.md +0 -26
  399. data/guides/source/kindle/copyright.html.erb +0 -1
  400. data/guides/source/kindle/layout.html.erb +0 -27
  401. data/guides/source/kindle/rails_guides.opf.erb +0 -52
  402. data/guides/source/kindle/toc.html.erb +0 -24
  403. data/guides/source/kindle/toc.ncx.erb +0 -64
  404. data/guides/source/kindle/welcome.html.erb +0 -5
  405. data/guides/source/layout.html.erb +0 -124
  406. data/guides/source/layouts_and_rendering.textile +0 -1237
  407. data/guides/source/migrations.textile +0 -900
  408. data/guides/source/nested_model_forms.textile +0 -222
  409. data/guides/source/performance_testing.textile +0 -597
  410. data/guides/source/plugins.textile +0 -464
  411. data/guides/source/rails_application_templates.textile +0 -240
  412. data/guides/source/rails_on_rack.textile +0 -236
  413. data/guides/source/routing.textile +0 -885
  414. data/guides/source/ruby_on_rails_guides_guidelines.textile +0 -79
  415. data/guides/source/security.textile +0 -1004
  416. data/guides/source/testing.textile +0 -947
  417. data/guides/w3c_validator.rb +0 -91
  418. data/lib/rails/application/railties.rb +0 -13
  419. data/lib/rails/application/route_inspector.rb +0 -84
  420. data/lib/rails/commands/benchmarker.rb +0 -34
  421. data/lib/rails/commands/plugin.rb +0 -544
  422. data/lib/rails/commands/profiler.rb +0 -33
  423. data/lib/rails/generators/rails/app/templates/README +0 -261
  424. data/lib/rails/generators/rails/app/templates/app/controllers/application_controller.rb +0 -3
  425. data/lib/rails/generators/rails/app/templates/app/mailers/.empty_directory +0 -0
  426. data/lib/rails/generators/rails/app/templates/app/models/.empty_directory +0 -0
  427. data/lib/rails/generators/rails/app/templates/doc/README_FOR_APP +0 -2
  428. data/lib/rails/generators/rails/app/templates/public/stylesheets/.empty_directory +0 -0
  429. data/lib/rails/generators/rails/app/templates/script/rails +0 -5
  430. data/lib/rails/generators/rails/app/templates/test/fixtures/.empty_directory +0 -0
  431. data/lib/rails/generators/rails/app/templates/test/functional/.empty_directory +0 -0
  432. data/lib/rails/generators/rails/app/templates/test/integration/.empty_directory +0 -0
  433. data/lib/rails/generators/rails/app/templates/test/performance/browsing_test.rb +0 -12
  434. data/lib/rails/generators/rails/app/templates/test/unit/.empty_directory +0 -0
  435. data/lib/rails/generators/rails/generator/templates/templates/.empty_directory +0 -0
  436. data/lib/rails/generators/rails/observer/USAGE +0 -12
  437. data/lib/rails/generators/rails/observer/observer_generator.rb +0 -7
  438. data/lib/rails/generators/rails/performance_test/USAGE +0 -10
  439. data/lib/rails/generators/rails/performance_test/performance_test_generator.rb +0 -7
  440. data/lib/rails/generators/rails/plugin_new/templates/app/mailers/.empty_directory +0 -0
  441. data/lib/rails/generators/rails/plugin_new/templates/app/models/.empty_directory +0 -0
  442. data/lib/rails/generators/rails/session_migration/USAGE +0 -8
  443. data/lib/rails/generators/rails/session_migration/session_migration_generator.rb +0 -8
  444. data/lib/rails/generators/test_unit/observer/observer_generator.rb +0 -13
  445. data/lib/rails/generators/test_unit/observer/templates/unit_test.rb +0 -9
  446. data/lib/rails/generators/test_unit/performance/performance_generator.rb +0 -13
  447. data/lib/rails/generators/test_unit/performance/templates/performance_test.rb +0 -12
  448. data/lib/rails/performance_test_help.rb +0 -3
  449. data/lib/rails/plugin.rb +0 -92
  450. data/lib/rails/script_rails_loader.rb +0 -29
@@ -1,10 +1,9 @@
1
1
  require 'rails/generators'
2
- require 'active_support/core_ext/object/inclusion'
3
2
 
4
- if ARGV.first.in?([nil, "-h", "--help"])
3
+ if [nil, "-h", "--help"].include?(ARGV.first)
5
4
  Rails::Generators.help 'destroy'
6
5
  exit
7
6
  end
8
7
 
9
8
  name = ARGV.shift
10
- Rails::Generators.invoke name, ARGV, :behavior => :revoke, :destination_root => Rails.root
9
+ Rails::Generators.invoke name, ARGV, behavior: :revoke, destination_root: Rails.root
@@ -1,7 +1,6 @@
1
1
  require 'rails/generators'
2
- require 'active_support/core_ext/object/inclusion'
3
2
 
4
- if ARGV.first.in?([nil, "-h", "--help"])
3
+ if [nil, "-h", "--help"].include?(ARGV.first)
5
4
  Rails::Generators.help 'generate'
6
5
  exit
7
6
  end
@@ -9,4 +8,4 @@ end
9
8
  name = ARGV.shift
10
9
 
11
10
  root = defined?(ENGINE_ROOT) ? ENGINE_ROOT : Rails.root
12
- Rails::Generators.invoke name, ARGV, :behavior => :invoke, :destination_root => root
11
+ Rails::Generators.invoke name, ARGV, behavior: :invoke, destination_root: root
@@ -1,5 +1,3 @@
1
- require 'rubygems' if ARGV.include?("--dev")
2
-
3
1
  if ARGV.first != "new"
4
2
  ARGV[0] = "--help"
5
3
  else
@@ -1,7 +1,7 @@
1
1
  require 'optparse'
2
2
  require 'rbconfig'
3
3
 
4
- options = { :environment => (ENV['RAILS_ENV'] || "development").dup }
4
+ options = { environment: (ENV['RAILS_ENV'] || ENV['RACK_ENV'] || "development").dup }
5
5
  code_or_file = nil
6
6
 
7
7
  if ARGV.first.nil?
@@ -9,8 +9,7 @@ if ARGV.first.nil?
9
9
  end
10
10
 
11
11
  ARGV.clone.options do |opts|
12
- script_name = File.basename($0)
13
- opts.banner = "Usage: runner [options] ('Some.ruby(code)' or a filename)"
12
+ opts.banner = "Usage: rails runner [options] ('Some.ruby(code)' or a filename)"
14
13
 
15
14
  opts.separator ""
16
15
 
@@ -25,7 +24,7 @@ ARGV.clone.options do |opts|
25
24
 
26
25
  if RbConfig::CONFIG['host_os'] !~ /mswin|mingw/
27
26
  opts.separator ""
28
- opts.separator "You can also use runner as a shebang line for your scripts like this:"
27
+ opts.separator "You can also use runner as a shebang line for your executables:"
29
28
  opts.separator "-------------------------------------------------------------"
30
29
  opts.separator "#!/usr/bin/env #{File.expand_path($0)} runner"
31
30
  opts.separator ""
@@ -42,7 +41,7 @@ ENV["RAILS_ENV"] = options[:environment]
42
41
 
43
42
  require APP_PATH
44
43
  Rails.application.require_environment!
45
- Rails.application.load_runner
44
+ Rails.application.load_runner
46
45
 
47
46
  if code_or_file.nil?
48
47
  $stderr.puts "Run '#{$0} -h' for help."
@@ -17,7 +17,7 @@ module Rails
17
17
  opts.on("-c", "--config=file", String,
18
18
  "Use custom rackup configuration file") { |v| options[:config] = v }
19
19
  opts.on("-d", "--daemon", "Make server run as a Daemon.") { options[:daemonize] = true }
20
- opts.on("-u", "--debugger", "Enable ruby-debugging for the server.") { options[:debugger] = true }
20
+ opts.on("-u", "--debugger", "Enable the debugger") { options[:debugger] = true }
21
21
  opts.on("-e", "--environment=name", String,
22
22
  "Specifies the environment to run this server under (test/development/production).",
23
23
  "Default: development") { |v| options[:environment] = v }
@@ -64,7 +64,17 @@ module Rails
64
64
 
65
65
  #Create required tmp directories if not found
66
66
  %w(cache pids sessions sockets).each do |dir_to_make|
67
- FileUtils.mkdir_p(Rails.root.join('tmp', dir_to_make))
67
+ FileUtils.mkdir_p(File.join(Rails.root, 'tmp', dir_to_make))
68
+ end
69
+
70
+ unless options[:daemonize]
71
+ wrapped_app # touch the app so the logger is set up
72
+
73
+ console = ActiveSupport::Logger.new($stdout)
74
+ console.formatter = Rails.logger.formatter
75
+ console.level = Rails.logger.level
76
+
77
+ Rails.logger.extend(ActiveSupport::Logger.broadcast(console))
68
78
  end
69
79
 
70
80
  super
@@ -76,9 +86,17 @@ module Rails
76
86
 
77
87
  def middleware
78
88
  middlewares = []
79
- middlewares << [Rails::Rack::LogTailer, log_path] unless options[:daemonize]
80
89
  middlewares << [Rails::Rack::Debugger] if options[:debugger]
81
90
  middlewares << [::Rack::ContentLength]
91
+
92
+ # FIXME: add Rack::Lock in the case people are using webrick.
93
+ # This is to remain backwards compatible for those who are
94
+ # running webrick in production. We should consider removing this
95
+ # in development.
96
+ if server.name == 'Rack::Handler::WEBrick'
97
+ middlewares << [::Rack::Lock]
98
+ end
99
+
82
100
  Hash.new(middlewares)
83
101
  end
84
102
 
@@ -88,12 +106,13 @@ module Rails
88
106
 
89
107
  def default_options
90
108
  super.merge({
91
- :Port => 3000,
92
- :environment => (ENV['RAILS_ENV'] || "development").dup,
93
- :daemonize => false,
94
- :debugger => false,
95
- :pid => File.expand_path("tmp/pids/server.pid"),
96
- :config => File.expand_path("config.ru")
109
+ Port: 3000,
110
+ DoNotReverseLookup: true,
111
+ environment: (ENV['RAILS_ENV'] || ENV['RACK_ENV'] || "development").dup,
112
+ daemonize: false,
113
+ debugger: false,
114
+ pid: File.expand_path("tmp/pids/server.pid"),
115
+ config: File.expand_path("config.ru")
97
116
  })
98
117
  end
99
118
  end
@@ -6,4 +6,4 @@ if ARGV.size == 0
6
6
  end
7
7
 
8
8
  name = ARGV.shift
9
- Rails::Generators.invoke name, ARGV, :behavior => :skip
9
+ Rails::Generators.invoke name, ARGV, behavior: :skip
@@ -1,39 +1,66 @@
1
1
  require 'active_support/deprecation'
2
2
  require 'active_support/ordered_options'
3
- require 'active_support/core_ext/hash/deep_dup'
3
+ require 'active_support/core_ext/object'
4
4
  require 'rails/paths'
5
5
  require 'rails/rack'
6
6
 
7
7
  module Rails
8
8
  module Configuration
9
- class MiddlewareStackProxy #:nodoc:
9
+ # MiddlewareStackProxy is a proxy for the Rails middleware stack that allows
10
+ # you to configure middlewares in your application. It works basically as a
11
+ # command recorder, saving each command to be applied after initialization
12
+ # over the default middleware stack, so you can add, swap, or remove any
13
+ # middleware in Rails.
14
+ #
15
+ # You can add your own middlewares by using the +config.middleware.use+ method:
16
+ #
17
+ # config.middleware.use Magical::Unicorns
18
+ #
19
+ # This will put the <tt>Magical::Unicorns</tt> middleware on the end of the stack.
20
+ # You can use +insert_before+ if you wish to add a middleware before another:
21
+ #
22
+ # config.middleware.insert_before ActionDispatch::Head, Magical::Unicorns
23
+ #
24
+ # There's also +insert_after+ which will insert a middleware after another:
25
+ #
26
+ # config.middleware.insert_after ActionDispatch::Head, Magical::Unicorns
27
+ #
28
+ # Middlewares can also be completely swapped out and replaced with others:
29
+ #
30
+ # config.middleware.swap ActionDispatch::Flash, Magical::Unicorns
31
+ #
32
+ # And finally they can also be removed from the stack completely:
33
+ #
34
+ # config.middleware.delete ActionDispatch::Flash
35
+ #
36
+ class MiddlewareStackProxy
10
37
  def initialize
11
38
  @operations = []
12
39
  end
13
40
 
14
41
  def insert_before(*args, &block)
15
- @operations << [:insert_before, args, block]
42
+ @operations << [__method__, args, block]
16
43
  end
17
44
 
18
45
  alias :insert :insert_before
19
46
 
20
47
  def insert_after(*args, &block)
21
- @operations << [:insert_after, args, block]
48
+ @operations << [__method__, args, block]
22
49
  end
23
50
 
24
51
  def swap(*args, &block)
25
- @operations << [:swap, args, block]
52
+ @operations << [__method__, args, block]
26
53
  end
27
54
 
28
55
  def use(*args, &block)
29
- @operations << [:use, args, block]
56
+ @operations << [__method__, args, block]
30
57
  end
31
58
 
32
59
  def delete(*args, &block)
33
- @operations << [:delete, args, block]
60
+ @operations << [__method__, args, block]
34
61
  end
35
62
 
36
- def merge_into(other)
63
+ def merge_into(other) #:nodoc:
37
64
  @operations.each do |operation, args, block|
38
65
  other.send(operation, *args, &block)
39
66
  end
@@ -1,10 +1,6 @@
1
1
  require 'active_support/all'
2
- require 'active_support/test_case'
3
2
  require 'action_controller'
4
3
 
5
- # work around the at_exit hook in test/unit, which kills IRB
6
- Test::Unit.run = true if Test::Unit.respond_to?(:run=)
7
-
8
4
  module Rails
9
5
  module ConsoleMethods
10
6
  # reference the global "app" instance, created on demand. To recreate the
@@ -0,0 +1,19 @@
1
+ require 'active_support/deprecation/proxy_wrappers'
2
+
3
+ module Rails
4
+ class DeprecatedConstant < ActiveSupport::Deprecation::DeprecatedConstantProxy
5
+ def self.deprecate(old, current)
6
+ # double assignment is used to avoid "assigned but unused variable" warning
7
+ constant = constant = new(old, current)
8
+ eval "::#{old} = constant"
9
+ end
10
+
11
+ private
12
+
13
+ def target
14
+ ::Kernel.eval @new_const.to_s
15
+ end
16
+ end
17
+
18
+ DeprecatedConstant.deprecate('RAILS_CACHE', '::Rails.cache')
19
+ end
@@ -2,12 +2,11 @@ require 'rails/railtie'
2
2
  require 'active_support/core_ext/module/delegation'
3
3
  require 'pathname'
4
4
  require 'rbconfig'
5
- require 'rails/engine/railties'
6
5
 
7
6
  module Rails
8
7
  # <tt>Rails::Engine</tt> allows you to wrap a specific Rails application or subset of
9
- # functionality and share it with other applications. Since Rails 3.0, every
10
- # <tt>Rails::Application</tt> is just an engine, which allows for simple
8
+ # functionality and share it with other applications or within a larger packaged application.
9
+ # Since Rails 3.0, every <tt>Rails::Application</tt> is just an engine, which allows for simple
11
10
  # feature and application sharing.
12
11
  #
13
12
  # Any <tt>Rails::Engine</tt> is also a <tt>Rails::Railtie</tt>, so the same
@@ -39,8 +38,6 @@ module Rails
39
38
  # and <tt>autoload_once_paths</tt>, which, differently from a <tt>Railtie</tt>, are scoped to
40
39
  # the current engine.
41
40
  #
42
- # Example:
43
- #
44
41
  # class MyEngine < Rails::Engine
45
42
  # # Add a load path for this specific Engine
46
43
  # config.autoload_paths << File.expand_path("../lib/some/path", __FILE__)
@@ -109,7 +106,7 @@ module Rails
109
106
  #
110
107
  # The <tt>Application</tt> class adds a couple more paths to this set. And as in your
111
108
  # <tt>Application</tt>, all folders under +app+ are automatically added to the load path.
112
- # If you have an <tt>app/observers</tt> folder for example, it will be added by default.
109
+ # If you have an <tt>app/services/tt> folder for example, it will be added by default.
113
110
  #
114
111
  # == Endpoint
115
112
  #
@@ -148,7 +145,7 @@ module Rails
148
145
  #
149
146
  # # ENGINE/config/routes.rb
150
147
  # MyEngine::Engine.routes.draw do
151
- # match "/" => "posts#index"
148
+ # get "/" => "posts#index"
152
149
  # end
153
150
  #
154
151
  # == Mount priority
@@ -158,7 +155,7 @@ module Rails
158
155
  #
159
156
  # MyRailsApp::Application.routes.draw do
160
157
  # mount MyEngine::Engine => "/blog"
161
- # match "/blog/omg" => "main#omg"
158
+ # get "/blog/omg" => "main#omg"
162
159
  # end
163
160
  #
164
161
  # +MyEngine+ is mounted at <tt>/blog</tt>, and <tt>/blog/omg</tt> points to application's
@@ -167,7 +164,7 @@ module Rails
167
164
  # It's much better to swap that:
168
165
  #
169
166
  # MyRailsApp::Application.routes.draw do
170
- # match "/blog/omg" => "main#omg"
167
+ # get "/blog/omg" => "main#omg"
171
168
  # mount MyEngine::Engine => "/blog"
172
169
  # end
173
170
  #
@@ -178,9 +175,8 @@ module Rails
178
175
  # There are some places where an Engine's name is used:
179
176
  #
180
177
  # * routes: when you mount an Engine with <tt>mount(MyEngine::Engine => '/my_engine')</tt>,
181
- # it's used as default :as option
182
- # * some of the rake tasks are based on engine name, e.g. <tt>my_engine:install:migrations</tt>,
183
- # <tt>my_engine:install:assets</tt>
178
+ # it's used as default <tt>:as</tt> option
179
+ # * rake task for installing migrations <tt>my_engine:install:migrations</tt>
184
180
  #
185
181
  # Engine name is set by default based on class name. For <tt>MyEngine::Engine</tt> it will be
186
182
  # <tt>my_engine_engine</tt>. You can change it manually using the <tt>engine_name</tt> method:
@@ -228,7 +224,7 @@ module Rails
228
224
  # resources :articles
229
225
  # end
230
226
  #
231
- # The routes above will automatically point to <tt>MyEngine::ApplicationController</tt>. Furthermore, you don't
227
+ # The routes above will automatically point to <tt>MyEngine::ArticlesController</tt>. Furthermore, you don't
232
228
  # need to use longer url helpers like <tt>my_engine_articles_path</tt>. Instead, you should simply use
233
229
  # <tt>articles_path</tt> as you would do with your application.
234
230
  #
@@ -255,8 +251,8 @@ module Rails
255
251
  #
256
252
  # # config/routes.rb
257
253
  # MyApplication::Application.routes.draw do
258
- # mount MyEngine::Engine => "/my_engine", :as => "my_engine"
259
- # match "/foo" => "foo#index"
254
+ # mount MyEngine::Engine => "/my_engine", as: "my_engine"
255
+ # get "/foo" => "foo#index"
260
256
  # end
261
257
  #
262
258
  # Now, you can use the <tt>my_engine</tt> helper inside your application:
@@ -300,7 +296,7 @@ module Rails
300
296
  # helper MyEngine::SharedEngineHelper
301
297
  # end
302
298
  #
303
- # If you want to include all of the engine's helpers, you can use #helpers method on an engine's
299
+ # If you want to include all of the engine's helpers, you can use #helper method on an engine's
304
300
  # instance:
305
301
  #
306
302
  # class ApplicationController < ActionController::Base
@@ -326,40 +322,33 @@ module Rails
326
322
  # migration in the application and rerun copying migrations.
327
323
  #
328
324
  # If your engine has migrations, you may also want to prepare data for the database in
329
- # the <tt>seeds.rb</tt> file. You can load that data using the <tt>load_seed</tt> method, e.g.
325
+ # the <tt>db/seeds.rb</tt> file. You can load that data using the <tt>load_seed</tt> method, e.g.
330
326
  #
331
327
  # MyEngine::Engine.load_seed
332
328
  #
333
329
  # == Loading priority
334
330
  #
335
- # In order to change engine's priority you can use config.railties_order in main application.
331
+ # In order to change engine's priority you can use +config.railties_order+ in main application.
336
332
  # It will affect the priority of loading views, helpers, assets and all the other files
337
333
  # related to engine or application.
338
334
  #
339
- # Example:
340
- #
341
335
  # # load Blog::Engine with highest priority, followed by application and other railties
342
336
  # config.railties_order = [Blog::Engine, :main_app, :all]
343
- #
344
337
  class Engine < Railtie
345
338
  autoload :Configuration, "rails/engine/configuration"
346
- autoload :Railties, "rails/engine/railties"
347
-
348
- def load_generators(app=self)
349
- initialize_generators
350
- railties.all { |r| r.load_generators(app) }
351
- Rails::Generators.configure!(app.config.generators)
352
- super
353
- self
354
- end
355
339
 
356
340
  class << self
357
341
  attr_accessor :called_from, :isolated
342
+
358
343
  alias :isolated? :isolated
359
344
  alias :engine_name :railtie_name
360
345
 
346
+ delegate :eager_load!, to: :instance
347
+
361
348
  def inherited(base)
362
349
  unless base.abstract_railtie?
350
+ Rails::Railtie::Configuration.eager_load_namespaces << base
351
+
363
352
  base.called_from = begin
364
353
  # Remove the line number from backtraces making sure we don't leave anything behind
365
354
  call_stack = caller.map { |p| p.sub(/:\d+.*/, '') }
@@ -379,7 +368,7 @@ module Rails
379
368
  def isolate_namespace(mod)
380
369
  engine_name(generate_railtie_name(mod))
381
370
 
382
- self.routes.default_scope = { :module => ActiveSupport::Inflector.underscore(mod.name) }
371
+ self.routes.default_scope = { module: ActiveSupport::Inflector.underscore(mod.name) }
383
372
  self.isolated = true
384
373
 
385
374
  unless mod.respond_to?(:railtie_namespace)
@@ -401,7 +390,7 @@ module Rails
401
390
  end
402
391
 
403
392
  unless mod.respond_to?(:railtie_routes_url_helpers)
404
- define_method(:railtie_routes_url_helpers) { railtie.routes_url_helpers }
393
+ define_method(:railtie_routes_url_helpers) { railtie.routes.url_helpers }
405
394
  end
406
395
  end
407
396
  end
@@ -409,35 +398,66 @@ module Rails
409
398
 
410
399
  # Finds engine with given path
411
400
  def find(path)
412
- expanded_path = File.expand_path path.to_s
413
- Rails::Engine::Railties.engines.find { |engine|
414
- File.expand_path(engine.root.to_s) == expanded_path
415
- }
401
+ expanded_path = File.expand_path path
402
+ Rails::Engine.subclasses.each do |klass|
403
+ engine = klass.instance
404
+ return engine if File.expand_path(engine.root) == expanded_path
405
+ end
406
+ nil
416
407
  end
417
408
  end
418
409
 
419
- delegate :middleware, :root, :paths, :to => :config
420
- delegate :engine_name, :isolated?, :to => "self.class"
410
+ delegate :middleware, :root, :paths, to: :config
411
+ delegate :engine_name, :isolated?, to: :class
421
412
 
422
- def load_tasks(app=self)
423
- railties.all { |r| r.load_tasks(app) }
413
+ def initialize
414
+ @_all_autoload_paths = nil
415
+ @_all_load_paths = nil
416
+ @app = nil
417
+ @config = nil
418
+ @env_config = nil
419
+ @helpers = nil
420
+ @routes = nil
424
421
  super
425
- paths["lib/tasks"].existent.sort.each { |ext| load(ext) }
426
422
  end
427
423
 
424
+ # Load console and invoke the registered hooks.
425
+ # Check <tt>Rails::Railtie.console</tt> for more info.
428
426
  def load_console(app=self)
429
- railties.all { |r| r.load_console(app) }
430
- super
427
+ require "pp"
428
+ require "rails/console/app"
429
+ require "rails/console/helpers"
430
+ run_console_blocks(app)
431
+ self
431
432
  end
432
433
 
434
+ # Load Rails runner and invoke the registered hooks.
435
+ # Check <tt>Rails::Railtie.runner</tt> for more info.
433
436
  def load_runner(app=self)
434
- railties.all { |r| r.load_runner(app) }
435
- super
437
+ run_runner_blocks(app)
438
+ self
436
439
  end
437
440
 
438
- def eager_load!
439
- railties.all(&:eager_load!)
441
+ # Load Rake, railties tasks and invoke the registered hooks.
442
+ # Check <tt>Rails::Railtie.rake_tasks</tt> for more info.
443
+ def load_tasks(app=self)
444
+ require "rake"
445
+ run_tasks_blocks(app)
446
+ self
447
+ end
440
448
 
449
+ # Load rails generators and invoke the registered hooks.
450
+ # Check <tt>Rails::Railtie.generators</tt> for more info.
451
+ def load_generators(app=self)
452
+ require "rails/generators"
453
+ run_generators_blocks(app)
454
+ Rails::Generators.configure!(app.config.generators)
455
+ self
456
+ end
457
+
458
+ # Eager load the application by loading all ruby
459
+ # files inside eager_load paths.
460
+ def eager_load!
441
461
  config.eager_load_paths.each do |load_path|
442
462
  matcher = /\A#{Regexp.escape(load_path)}\/(.*)\.rb\Z/
443
463
  Dir.glob("#{load_path}/**/*.rb").sort.each do |file|
@@ -447,9 +467,10 @@ module Rails
447
467
  end
448
468
 
449
469
  def railties
450
- @railties ||= self.class::Railties.new(config)
470
+ @railties ||= self.class::Railties.new
451
471
  end
452
472
 
473
+ # Returns a module with all the helpers defined for the engine.
453
474
  def helpers
454
475
  @helpers ||= begin
455
476
  helpers = Module.new
@@ -461,14 +482,12 @@ module Rails
461
482
  end
462
483
  end
463
484
 
485
+ # Returns all registered helpers paths.
464
486
  def helpers_paths
465
487
  paths["app/helpers"].existent
466
488
  end
467
489
 
468
- def routes_url_helpers
469
- routes.url_helpers
470
- end
471
-
490
+ # Returns the underlying rack application for this engine.
472
491
  def app
473
492
  @app ||= begin
474
493
  config.middleware = config.middleware.merge_into(default_middleware_stack)
@@ -476,42 +495,37 @@ module Rails
476
495
  end
477
496
  end
478
497
 
498
+ # Returns the endpoint for this engine. If none is registered,
499
+ # defaults to an ActionDispatch::Routing::RouteSet.
479
500
  def endpoint
480
501
  self.class.endpoint || routes
481
502
  end
482
503
 
504
+ # Define the Rack API for this engine.
483
505
  def call(env)
484
- app.call(env.merge!(env_config))
506
+ env.merge!(env_config)
507
+ if env['SCRIPT_NAME']
508
+ env.merge! "ROUTES_#{routes.object_id}_SCRIPT_NAME" => env['SCRIPT_NAME'].dup
509
+ end
510
+ app.call(env)
485
511
  end
486
512
 
513
+ # Defines additional Rack env configuration that is added on each call.
487
514
  def env_config
488
515
  @env_config ||= {
489
516
  'action_dispatch.routes' => routes
490
517
  }
491
518
  end
492
519
 
520
+ # Defines the routes for this engine. If a block is given to
521
+ # routes, it is appended to the engine.
493
522
  def routes
494
523
  @routes ||= ActionDispatch::Routing::RouteSet.new
495
524
  @routes.append(&Proc.new) if block_given?
496
525
  @routes
497
526
  end
498
527
 
499
- def ordered_railties
500
- railties.all + [self]
501
- end
502
-
503
- def initializers
504
- initializers = []
505
- ordered_railties.each do |r|
506
- if r == self
507
- initializers += super
508
- else
509
- initializers += r.initializers
510
- end
511
- end
512
- initializers
513
- end
514
-
528
+ # Define the configuration object for the engine.
515
529
  def config
516
530
  @config ||= Engine::Configuration.new(find_root_with_flag("lib"))
517
531
  end
@@ -521,12 +535,12 @@ module Rails
521
535
  #
522
536
  # Blog::Engine.load_seed
523
537
  def load_seed
524
- seed_file = paths["db/seeds"].existent.first
538
+ seed_file = paths["db/seeds.rb"].existent.first
525
539
  load(seed_file) if seed_file
526
540
  end
527
541
 
528
542
  # Add configured load paths to ruby load paths and remove duplicates.
529
- initializer :set_load_path, :before => :bootstrap_hook do
543
+ initializer :set_load_path, before: :bootstrap_hook do
530
544
  _all_load_paths.reverse_each do |path|
531
545
  $LOAD_PATH.unshift(path) if File.directory?(path)
532
546
  end
@@ -538,7 +552,7 @@ module Rails
538
552
  #
539
553
  # This needs to be an initializer, since it needs to run once
540
554
  # per engine and get the engine as a block parameter
541
- initializer :set_autoload_paths, :before => :bootstrap_hook do |app|
555
+ initializer :set_autoload_paths, before: :bootstrap_hook do |app|
542
556
  ActiveSupport::Dependencies.autoload_paths.unshift(*_all_autoload_paths)
543
557
  ActiveSupport::Dependencies.autoload_once_paths.unshift(*_all_autoload_once_paths)
544
558
 
@@ -549,7 +563,7 @@ module Rails
549
563
  end
550
564
 
551
565
  initializer :add_routing_paths do |app|
552
- paths = self.paths["config/routes"].existent
566
+ paths = self.paths["config/routes.rb"].existent
553
567
 
554
568
  if routes? || paths.any?
555
569
  app.routes_reloader.paths.unshift(*paths)
@@ -566,17 +580,18 @@ module Rails
566
580
  initializer :add_view_paths do
567
581
  views = paths["app/views"].existent
568
582
  unless views.empty?
569
- ActiveSupport.on_load(:action_controller){ prepend_view_path(views) }
583
+ ActiveSupport.on_load(:action_controller){ prepend_view_path(views) if respond_to?(:prepend_view_path) }
570
584
  ActiveSupport.on_load(:action_mailer){ prepend_view_path(views) }
571
585
  end
572
586
  end
573
587
 
574
- initializer :load_environment_config, :before => :load_environment_hook, :group => :all do
575
- environment = paths["config/environments"].existent.first
576
- require environment if environment
588
+ initializer :load_environment_config, before: :load_environment_hook, group: :all do
589
+ paths["config/environments"].existent.each do |environment|
590
+ require environment
591
+ end
577
592
  end
578
593
 
579
- initializer :append_assets_path, :group => :all do |app|
594
+ initializer :append_assets_path, group: :all do |app|
580
595
  app.config.assets.paths.unshift(*paths["vendor/assets"].existent_directories)
581
596
  app.config.assets.paths.unshift(*paths["lib/assets"].existent_directories)
582
597
  app.config.assets.paths.unshift(*paths["app/assets"].existent_directories)
@@ -608,27 +623,32 @@ module Rails
608
623
  desc "Copy migrations from #{railtie_name} to application"
609
624
  task :migrations do
610
625
  ENV["FROM"] = railtie_name
611
- Rake::Task["railties:install:migrations"].invoke
626
+ if Rake::Task.task_defined?("railties:install:migrations")
627
+ Rake::Task["railties:install:migrations"].invoke
628
+ else
629
+ Rake::Task["app:railties:install:migrations"].invoke
630
+ end
612
631
  end
613
632
  end
614
633
  end
615
634
  end
616
635
 
617
- protected
636
+ protected
618
637
 
619
- def initialize_generators
620
- require "rails/generators"
638
+ def run_tasks_blocks(*) #:nodoc:
639
+ super
640
+ paths["lib/tasks"].existent.sort.each { |ext| load(ext) }
621
641
  end
622
642
 
623
- def routes?
624
- defined?(@routes)
643
+ def routes? #:nodoc:
644
+ @routes
625
645
  end
626
646
 
627
- def has_migrations?
647
+ def has_migrations? #:nodoc:
628
648
  paths["db/migrate"].existent.any?
629
649
  end
630
650
 
631
- def find_root_with_flag(flag, default=nil)
651
+ def find_root_with_flag(flag, default=nil) #:nodoc:
632
652
  root_path = self.class.called_from
633
653
 
634
654
  while root_path && File.directory?(root_path) && !File.exist?("#{root_path}/#{flag}")
@@ -639,23 +659,22 @@ module Rails
639
659
  root = File.exist?("#{root_path}/#{flag}") ? root_path : default
640
660
  raise "Could not find root path for #{self}" unless root
641
661
 
642
- RbConfig::CONFIG['host_os'] =~ /mswin|mingw/ ?
643
- Pathname.new(root).expand_path : Pathname.new(root).realpath
662
+ Pathname.new File.realpath root
644
663
  end
645
664
 
646
- def default_middleware_stack
665
+ def default_middleware_stack #:nodoc:
647
666
  ActionDispatch::MiddlewareStack.new
648
667
  end
649
668
 
650
- def _all_autoload_once_paths
669
+ def _all_autoload_once_paths #:nodoc:
651
670
  config.autoload_once_paths
652
671
  end
653
672
 
654
- def _all_autoload_paths
673
+ def _all_autoload_paths #:nodoc:
655
674
  @_all_autoload_paths ||= (config.autoload_paths + config.eager_load_paths + config.autoload_once_paths).uniq
656
675
  end
657
676
 
658
- def _all_load_paths
677
+ def _all_load_paths #:nodoc:
659
678
  @_all_load_paths ||= (config.paths.load_paths + _all_autoload_paths).uniq
660
679
  end
661
680
  end