openskies 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 (494) hide show
  1. data/CHANGELOG.md +87 -0
  2. data/README.rdoc +35 -0
  3. data/bin/openskies +9 -0
  4. data/guides/assets/images/belongs_to.png +0 -0
  5. data/guides/assets/images/book_icon.gif +0 -0
  6. data/guides/assets/images/bullet.gif +0 -0
  7. data/guides/assets/images/challenge.png +0 -0
  8. data/guides/assets/images/chapters_icon.gif +0 -0
  9. data/guides/assets/images/check_bullet.gif +0 -0
  10. data/guides/assets/images/credits_pic_blank.gif +0 -0
  11. data/guides/assets/images/csrf.png +0 -0
  12. data/guides/assets/images/customized_error_messages.png +0 -0
  13. data/guides/assets/images/edge_badge.png +0 -0
  14. data/guides/assets/images/error_messages.png +0 -0
  15. data/guides/assets/images/feature_tile.gif +0 -0
  16. data/guides/assets/images/footer_tile.gif +0 -0
  17. data/guides/assets/images/fxn.png +0 -0
  18. data/guides/assets/images/grey_bullet.gif +0 -0
  19. data/guides/assets/images/habtm.png +0 -0
  20. data/guides/assets/images/has_many.png +0 -0
  21. data/guides/assets/images/has_many_through.png +0 -0
  22. data/guides/assets/images/has_one.png +0 -0
  23. data/guides/assets/images/has_one_through.png +0 -0
  24. data/guides/assets/images/header_backdrop.png +0 -0
  25. data/guides/assets/images/header_tile.gif +0 -0
  26. data/guides/assets/images/i18n/demo_html_safe.png +0 -0
  27. data/guides/assets/images/i18n/demo_localized_pirate.png +0 -0
  28. data/guides/assets/images/i18n/demo_translated_en.png +0 -0
  29. data/guides/assets/images/i18n/demo_translated_pirate.png +0 -0
  30. data/guides/assets/images/i18n/demo_translation_missing.png +0 -0
  31. data/guides/assets/images/i18n/demo_untranslated.png +0 -0
  32. data/guides/assets/images/icons/README +5 -0
  33. data/guides/assets/images/icons/callouts/1.png +0 -0
  34. data/guides/assets/images/icons/callouts/10.png +0 -0
  35. data/guides/assets/images/icons/callouts/11.png +0 -0
  36. data/guides/assets/images/icons/callouts/12.png +0 -0
  37. data/guides/assets/images/icons/callouts/13.png +0 -0
  38. data/guides/assets/images/icons/callouts/14.png +0 -0
  39. data/guides/assets/images/icons/callouts/15.png +0 -0
  40. data/guides/assets/images/icons/callouts/2.png +0 -0
  41. data/guides/assets/images/icons/callouts/3.png +0 -0
  42. data/guides/assets/images/icons/callouts/4.png +0 -0
  43. data/guides/assets/images/icons/callouts/5.png +0 -0
  44. data/guides/assets/images/icons/callouts/6.png +0 -0
  45. data/guides/assets/images/icons/callouts/7.png +0 -0
  46. data/guides/assets/images/icons/callouts/8.png +0 -0
  47. data/guides/assets/images/icons/callouts/9.png +0 -0
  48. data/guides/assets/images/icons/caution.png +0 -0
  49. data/guides/assets/images/icons/example.png +0 -0
  50. data/guides/assets/images/icons/home.png +0 -0
  51. data/guides/assets/images/icons/important.png +0 -0
  52. data/guides/assets/images/icons/next.png +0 -0
  53. data/guides/assets/images/icons/note.png +0 -0
  54. data/guides/assets/images/icons/prev.png +0 -0
  55. data/guides/assets/images/icons/tip.png +0 -0
  56. data/guides/assets/images/icons/up.png +0 -0
  57. data/guides/assets/images/icons/warning.png +0 -0
  58. data/guides/assets/images/jaimeiniesta.jpg +0 -0
  59. data/guides/assets/images/nav_arrow.gif +0 -0
  60. data/guides/assets/images/polymorphic.png +0 -0
  61. data/guides/assets/images/posts_index.png +0 -0
  62. data/guides/assets/images/radar.png +0 -0
  63. data/guides/assets/images/rails_guides_kindle_cover.jpg +0 -0
  64. data/guides/assets/images/rails_guides_logo.gif +0 -0
  65. data/guides/assets/images/rails_logo_remix.gif +0 -0
  66. data/guides/assets/images/rails_welcome.png +0 -0
  67. data/guides/assets/images/session_fixation.png +0 -0
  68. data/guides/assets/images/tab_grey.gif +0 -0
  69. data/guides/assets/images/tab_info.gif +0 -0
  70. data/guides/assets/images/tab_note.gif +0 -0
  71. data/guides/assets/images/tab_red.gif +0 -0
  72. data/guides/assets/images/tab_yellow.gif +0 -0
  73. data/guides/assets/images/tab_yellow.png +0 -0
  74. data/guides/assets/images/validation_error_messages.png +0 -0
  75. data/guides/assets/images/vijaydev.jpg +0 -0
  76. data/guides/assets/javascripts/guides.js +7 -0
  77. data/guides/assets/javascripts/syntaxhighlighter/shBrushAS3.js +59 -0
  78. data/guides/assets/javascripts/syntaxhighlighter/shBrushAppleScript.js +75 -0
  79. data/guides/assets/javascripts/syntaxhighlighter/shBrushBash.js +59 -0
  80. data/guides/assets/javascripts/syntaxhighlighter/shBrushCSharp.js +65 -0
  81. data/guides/assets/javascripts/syntaxhighlighter/shBrushColdFusion.js +100 -0
  82. data/guides/assets/javascripts/syntaxhighlighter/shBrushCpp.js +97 -0
  83. data/guides/assets/javascripts/syntaxhighlighter/shBrushCss.js +91 -0
  84. data/guides/assets/javascripts/syntaxhighlighter/shBrushDelphi.js +55 -0
  85. data/guides/assets/javascripts/syntaxhighlighter/shBrushDiff.js +41 -0
  86. data/guides/assets/javascripts/syntaxhighlighter/shBrushErlang.js +52 -0
  87. data/guides/assets/javascripts/syntaxhighlighter/shBrushGroovy.js +67 -0
  88. data/guides/assets/javascripts/syntaxhighlighter/shBrushJScript.js +52 -0
  89. data/guides/assets/javascripts/syntaxhighlighter/shBrushJava.js +57 -0
  90. data/guides/assets/javascripts/syntaxhighlighter/shBrushJavaFX.js +58 -0
  91. data/guides/assets/javascripts/syntaxhighlighter/shBrushPerl.js +72 -0
  92. data/guides/assets/javascripts/syntaxhighlighter/shBrushPhp.js +88 -0
  93. data/guides/assets/javascripts/syntaxhighlighter/shBrushPlain.js +33 -0
  94. data/guides/assets/javascripts/syntaxhighlighter/shBrushPowerShell.js +74 -0
  95. data/guides/assets/javascripts/syntaxhighlighter/shBrushPython.js +64 -0
  96. data/guides/assets/javascripts/syntaxhighlighter/shBrushRuby.js +55 -0
  97. data/guides/assets/javascripts/syntaxhighlighter/shBrushSass.js +94 -0
  98. data/guides/assets/javascripts/syntaxhighlighter/shBrushScala.js +51 -0
  99. data/guides/assets/javascripts/syntaxhighlighter/shBrushSql.js +66 -0
  100. data/guides/assets/javascripts/syntaxhighlighter/shBrushVb.js +56 -0
  101. data/guides/assets/javascripts/syntaxhighlighter/shBrushXml.js +69 -0
  102. data/guides/assets/javascripts/syntaxhighlighter/shCore.js +17 -0
  103. data/guides/assets/stylesheets/fixes.css +16 -0
  104. data/guides/assets/stylesheets/kindle.css +11 -0
  105. data/guides/assets/stylesheets/main.css +453 -0
  106. data/guides/assets/stylesheets/print.css +52 -0
  107. data/guides/assets/stylesheets/reset.css +43 -0
  108. data/guides/assets/stylesheets/style.css +13 -0
  109. data/guides/assets/stylesheets/syntaxhighlighter/shCore.css +226 -0
  110. data/guides/assets/stylesheets/syntaxhighlighter/shCoreDefault.css +328 -0
  111. data/guides/assets/stylesheets/syntaxhighlighter/shCoreDjango.css +331 -0
  112. data/guides/assets/stylesheets/syntaxhighlighter/shCoreEclipse.css +339 -0
  113. data/guides/assets/stylesheets/syntaxhighlighter/shCoreEmacs.css +324 -0
  114. data/guides/assets/stylesheets/syntaxhighlighter/shCoreFadeToGrey.css +328 -0
  115. data/guides/assets/stylesheets/syntaxhighlighter/shCoreMDUltra.css +324 -0
  116. data/guides/assets/stylesheets/syntaxhighlighter/shCoreMidnight.css +324 -0
  117. data/guides/assets/stylesheets/syntaxhighlighter/shCoreRDark.css +324 -0
  118. data/guides/assets/stylesheets/syntaxhighlighter/shThemeDefault.css +117 -0
  119. data/guides/assets/stylesheets/syntaxhighlighter/shThemeDjango.css +120 -0
  120. data/guides/assets/stylesheets/syntaxhighlighter/shThemeEclipse.css +128 -0
  121. data/guides/assets/stylesheets/syntaxhighlighter/shThemeEmacs.css +113 -0
  122. data/guides/assets/stylesheets/syntaxhighlighter/shThemeFadeToGrey.css +117 -0
  123. data/guides/assets/stylesheets/syntaxhighlighter/shThemeMDUltra.css +113 -0
  124. data/guides/assets/stylesheets/syntaxhighlighter/shThemeMidnight.css +113 -0
  125. data/guides/assets/stylesheets/syntaxhighlighter/shThemeRDark.css +113 -0
  126. data/guides/assets/stylesheets/syntaxhighlighter/shThemeRailsGuides.css +116 -0
  127. data/guides/code/getting_started/Gemfile +38 -0
  128. data/guides/code/getting_started/README.rdoc +261 -0
  129. data/guides/code/getting_started/Rakefile +7 -0
  130. data/guides/code/getting_started/app/assets/images/rails.png +0 -0
  131. data/guides/code/getting_started/app/assets/javascripts/application.js +15 -0
  132. data/guides/code/getting_started/app/assets/javascripts/comments.js.coffee +3 -0
  133. data/guides/code/getting_started/app/assets/javascripts/home.js.coffee +3 -0
  134. data/guides/code/getting_started/app/assets/javascripts/posts.js.coffee +3 -0
  135. data/guides/code/getting_started/app/assets/stylesheets/application.css +13 -0
  136. data/guides/code/getting_started/app/assets/stylesheets/comments.css.scss +3 -0
  137. data/guides/code/getting_started/app/assets/stylesheets/home.css.scss +3 -0
  138. data/guides/code/getting_started/app/assets/stylesheets/posts.css.scss +3 -0
  139. data/guides/code/getting_started/app/assets/stylesheets/scaffolds.css.scss +56 -0
  140. data/guides/code/getting_started/app/controllers/application_controller.rb +3 -0
  141. data/guides/code/getting_started/app/controllers/comments_controller.rb +16 -0
  142. data/guides/code/getting_started/app/controllers/home_controller.rb +5 -0
  143. data/guides/code/getting_started/app/controllers/posts_controller.rb +84 -0
  144. data/guides/code/getting_started/app/helpers/application_helper.rb +2 -0
  145. data/guides/code/getting_started/app/helpers/comments_helper.rb +2 -0
  146. data/guides/code/getting_started/app/helpers/home_helper.rb +2 -0
  147. data/guides/code/getting_started/app/helpers/posts_helper.rb +5 -0
  148. data/guides/code/getting_started/app/models/comment.rb +3 -0
  149. data/guides/code/getting_started/app/models/post.rb +11 -0
  150. data/guides/code/getting_started/app/models/tag.rb +3 -0
  151. data/guides/code/getting_started/app/views/comments/_comment.html.erb +15 -0
  152. data/guides/code/getting_started/app/views/comments/_form.html.erb +13 -0
  153. data/guides/code/getting_started/app/views/home/index.html.erb +2 -0
  154. data/guides/code/getting_started/app/views/layouts/application.html.erb +14 -0
  155. data/guides/code/getting_started/app/views/posts/_form.html.erb +32 -0
  156. data/guides/code/getting_started/app/views/posts/edit.html.erb +6 -0
  157. data/guides/code/getting_started/app/views/posts/index.html.erb +27 -0
  158. data/guides/code/getting_started/app/views/posts/new.html.erb +5 -0
  159. data/guides/code/getting_started/app/views/posts/show.html.erb +31 -0
  160. data/guides/code/getting_started/app/views/tags/_form.html.erb +12 -0
  161. data/guides/code/getting_started/config/application.rb +59 -0
  162. data/guides/code/getting_started/config/boot.rb +6 -0
  163. data/guides/code/getting_started/config/database.yml +25 -0
  164. data/guides/code/getting_started/config/environment.rb +5 -0
  165. data/guides/code/getting_started/config/environments/development.rb +37 -0
  166. data/guides/code/getting_started/config/environments/production.rb +67 -0
  167. data/guides/code/getting_started/config/environments/test.rb +37 -0
  168. data/guides/code/getting_started/config/initializers/backtrace_silencers.rb +7 -0
  169. data/guides/code/getting_started/config/initializers/inflections.rb +15 -0
  170. data/guides/code/getting_started/config/initializers/mime_types.rb +5 -0
  171. data/guides/code/getting_started/config/initializers/secret_token.rb +7 -0
  172. data/guides/code/getting_started/config/initializers/session_store.rb +8 -0
  173. data/guides/code/getting_started/config/initializers/wrap_parameters.rb +14 -0
  174. data/guides/code/getting_started/config/locales/en.yml +5 -0
  175. data/guides/code/getting_started/config/routes.rb +64 -0
  176. data/guides/code/getting_started/config.ru +4 -0
  177. data/guides/code/getting_started/db/migrate/20110901012504_create_posts.rb +11 -0
  178. data/guides/code/getting_started/db/migrate/20110901012815_create_comments.rb +12 -0
  179. data/guides/code/getting_started/db/migrate/20110901013701_create_tags.rb +11 -0
  180. data/guides/code/getting_started/db/schema.rb +43 -0
  181. data/guides/code/getting_started/db/seeds.rb +7 -0
  182. data/guides/code/getting_started/doc/README_FOR_APP +2 -0
  183. data/guides/code/getting_started/public/404.html +26 -0
  184. data/guides/code/getting_started/public/422.html +26 -0
  185. data/guides/code/getting_started/public/500.html +25 -0
  186. data/guides/code/getting_started/public/favicon.ico +0 -0
  187. data/guides/code/getting_started/public/robots.txt +5 -0
  188. data/guides/code/getting_started/script/rails +6 -0
  189. data/guides/code/getting_started/test/fixtures/comments.yml +11 -0
  190. data/guides/code/getting_started/test/fixtures/posts.yml +11 -0
  191. data/guides/code/getting_started/test/fixtures/tags.yml +9 -0
  192. data/guides/code/getting_started/test/functional/comments_controller_test.rb +7 -0
  193. data/guides/code/getting_started/test/functional/home_controller_test.rb +9 -0
  194. data/guides/code/getting_started/test/functional/posts_controller_test.rb +49 -0
  195. data/guides/code/getting_started/test/performance/browsing_test.rb +12 -0
  196. data/guides/code/getting_started/test/test_helper.rb +13 -0
  197. data/guides/code/getting_started/test/unit/comment_test.rb +7 -0
  198. data/guides/code/getting_started/test/unit/helpers/comments_helper_test.rb +4 -0
  199. data/guides/code/getting_started/test/unit/helpers/home_helper_test.rb +4 -0
  200. data/guides/code/getting_started/test/unit/helpers/posts_helper_test.rb +4 -0
  201. data/guides/code/getting_started/test/unit/post_test.rb +7 -0
  202. data/guides/code/getting_started/test/unit/tag_test.rb +7 -0
  203. data/guides/rails_guides/generator.rb +310 -0
  204. data/guides/rails_guides/helpers.rb +45 -0
  205. data/guides/rails_guides/indexer.rb +69 -0
  206. data/guides/rails_guides/levenshtein.rb +31 -0
  207. data/guides/rails_guides/textile_extensions.rb +63 -0
  208. data/guides/rails_guides.rb +50 -0
  209. data/guides/source/2_2_release_notes.textile +422 -0
  210. data/guides/source/2_3_release_notes.textile +610 -0
  211. data/guides/source/3_0_release_notes.textile +595 -0
  212. data/guides/source/3_1_release_notes.textile +553 -0
  213. data/guides/source/3_2_release_notes.textile +540 -0
  214. data/guides/source/_license.html.erb +2 -0
  215. data/guides/source/_welcome.html.erb +19 -0
  216. data/guides/source/action_controller_overview.textile +820 -0
  217. data/guides/source/action_mailer_basics.textile +516 -0
  218. data/guides/source/action_view_overview.textile +1497 -0
  219. data/guides/source/active_model_basics.textile +205 -0
  220. data/guides/source/active_record_basics.textile +218 -0
  221. data/guides/source/active_record_querying.textile +1433 -0
  222. data/guides/source/active_record_validations_callbacks.textile +1283 -0
  223. data/guides/source/active_resource_basics.textile +120 -0
  224. data/guides/source/active_support_core_extensions.textile +3713 -0
  225. data/guides/source/ajax_on_rails.textile +267 -0
  226. data/guides/source/api_documentation_guidelines.textile +185 -0
  227. data/guides/source/asset_pipeline.textile +707 -0
  228. data/guides/source/association_basics.textile +1959 -0
  229. data/guides/source/caching_with_rails.textile +437 -0
  230. data/guides/source/command_line.textile +574 -0
  231. data/guides/source/configuring.textile +641 -0
  232. data/guides/source/contributing_to_ruby_on_rails.textile +448 -0
  233. data/guides/source/credits.html.erb +72 -0
  234. data/guides/source/debugging_rails_applications.textile +714 -0
  235. data/guides/source/documents.yaml +157 -0
  236. data/guides/source/engines.textile +618 -0
  237. data/guides/source/form_helpers.textile +798 -0
  238. data/guides/source/generators.textile +621 -0
  239. data/guides/source/getting_started.textile +1929 -0
  240. data/guides/source/i18n.textile +931 -0
  241. data/guides/source/index.html.erb +30 -0
  242. data/guides/source/initialization.textile +1116 -0
  243. data/guides/source/kindle/KINDLE.md +26 -0
  244. data/guides/source/kindle/copyright.html.erb +1 -0
  245. data/guides/source/kindle/layout.html.erb +27 -0
  246. data/guides/source/kindle/rails_guides.opf.erb +52 -0
  247. data/guides/source/kindle/toc.html.erb +24 -0
  248. data/guides/source/kindle/toc.ncx.erb +64 -0
  249. data/guides/source/kindle/welcome.html.erb +5 -0
  250. data/guides/source/layout.html.erb +124 -0
  251. data/guides/source/layouts_and_rendering.textile +1237 -0
  252. data/guides/source/migrations.textile +900 -0
  253. data/guides/source/nested_model_forms.textile +222 -0
  254. data/guides/source/performance_testing.textile +597 -0
  255. data/guides/source/plugins.textile +464 -0
  256. data/guides/source/rails_application_templates.textile +240 -0
  257. data/guides/source/rails_on_rack.textile +236 -0
  258. data/guides/source/routing.textile +885 -0
  259. data/guides/source/ruby_on_rails_guides_guidelines.textile +79 -0
  260. data/guides/source/security.textile +1004 -0
  261. data/guides/source/testing.textile +947 -0
  262. data/guides/w3c_validator.rb +91 -0
  263. data/lib/rails/all.rb +15 -0
  264. data/lib/rails/application/bootstrap.rb +73 -0
  265. data/lib/rails/application/configuration.rb +151 -0
  266. data/lib/rails/application/finisher.rb +98 -0
  267. data/lib/rails/application/railties.rb +13 -0
  268. data/lib/rails/application/route_inspector.rb +84 -0
  269. data/lib/rails/application/routes_reloader.rb +56 -0
  270. data/lib/rails/application.rb +320 -0
  271. data/lib/rails/backtrace_cleaner.rb +42 -0
  272. data/lib/rails/cli.rb +16 -0
  273. data/lib/rails/code_statistics.rb +118 -0
  274. data/lib/rails/commands/application.rb +38 -0
  275. data/lib/rails/commands/benchmarker.rb +34 -0
  276. data/lib/rails/commands/console.rb +55 -0
  277. data/lib/rails/commands/dbconsole.rb +123 -0
  278. data/lib/rails/commands/destroy.rb +10 -0
  279. data/lib/rails/commands/generate.rb +12 -0
  280. data/lib/rails/commands/plugin.rb +544 -0
  281. data/lib/rails/commands/plugin_new.rb +11 -0
  282. data/lib/rails/commands/profiler.rb +32 -0
  283. data/lib/rails/commands/runner.rb +54 -0
  284. data/lib/rails/commands/server.rb +100 -0
  285. data/lib/rails/commands/update.rb +9 -0
  286. data/lib/rails/commands.rb +104 -0
  287. data/lib/rails/configuration.rb +89 -0
  288. data/lib/rails/console/app.rb +36 -0
  289. data/lib/rails/console/helpers.rb +11 -0
  290. data/lib/rails/engine/commands.rb +43 -0
  291. data/lib/rails/engine/configuration.rb +84 -0
  292. data/lib/rails/engine/railties.rb +33 -0
  293. data/lib/rails/engine.rb +657 -0
  294. data/lib/rails/generators/actions.rb +325 -0
  295. data/lib/rails/generators/active_model.rb +78 -0
  296. data/lib/rails/generators/app_base.rb +281 -0
  297. data/lib/rails/generators/base.rb +390 -0
  298. data/lib/rails/generators/css/assets/assets_generator.rb +13 -0
  299. data/lib/rails/generators/css/assets/templates/stylesheet.css +4 -0
  300. data/lib/rails/generators/css/scaffold/scaffold_generator.rb +16 -0
  301. data/lib/rails/generators/erb/controller/controller_generator.rb +20 -0
  302. data/lib/rails/generators/erb/controller/templates/view.html.erb +2 -0
  303. data/lib/rails/generators/erb/mailer/mailer_generator.rb +13 -0
  304. data/lib/rails/generators/erb/mailer/templates/view.text.erb +3 -0
  305. data/lib/rails/generators/erb/scaffold/scaffold_generator.rb +29 -0
  306. data/lib/rails/generators/erb/scaffold/templates/_form.html.erb +23 -0
  307. data/lib/rails/generators/erb/scaffold/templates/edit.html.erb +6 -0
  308. data/lib/rails/generators/erb/scaffold/templates/index.html.erb +27 -0
  309. data/lib/rails/generators/erb/scaffold/templates/new.html.erb +5 -0
  310. data/lib/rails/generators/erb/scaffold/templates/show.html.erb +12 -0
  311. data/lib/rails/generators/erb.rb +21 -0
  312. data/lib/rails/generators/generated_attribute.rb +107 -0
  313. data/lib/rails/generators/js/assets/assets_generator.rb +13 -0
  314. data/lib/rails/generators/js/assets/templates/javascript.js +2 -0
  315. data/lib/rails/generators/migration.rb +68 -0
  316. data/lib/rails/generators/named_base.rb +202 -0
  317. data/lib/rails/generators/rails/app/USAGE +15 -0
  318. data/lib/rails/generators/rails/app/app_generator.rb +303 -0
  319. data/lib/rails/generators/rails/app/templates/Gemfile +26 -0
  320. data/lib/rails/generators/rails/app/templates/README +261 -0
  321. data/lib/rails/generators/rails/app/templates/Rakefile +7 -0
  322. data/lib/rails/generators/rails/app/templates/app/assets/images/rails.png +0 -0
  323. data/lib/rails/generators/rails/app/templates/app/assets/javascripts/application.js.tt +17 -0
  324. data/lib/rails/generators/rails/app/templates/app/assets/stylesheets/application.css +13 -0
  325. data/lib/rails/generators/rails/app/templates/app/controllers/application_controller.rb +3 -0
  326. data/lib/rails/generators/rails/app/templates/app/helpers/application_helper.rb +2 -0
  327. data/lib/rails/generators/rails/app/templates/app/mailers/.empty_directory +0 -0
  328. data/lib/rails/generators/rails/app/templates/app/models/.empty_directory +0 -0
  329. data/lib/rails/generators/rails/app/templates/app/views/layouts/application.html.erb.tt +14 -0
  330. data/lib/rails/generators/rails/app/templates/config/application.rb +74 -0
  331. data/lib/rails/generators/rails/app/templates/config/boot.rb +6 -0
  332. data/lib/rails/generators/rails/app/templates/config/databases/frontbase.yml +31 -0
  333. data/lib/rails/generators/rails/app/templates/config/databases/ibm_db.yml +86 -0
  334. data/lib/rails/generators/rails/app/templates/config/databases/jdbc.yml +62 -0
  335. data/lib/rails/generators/rails/app/templates/config/databases/jdbcmysql.yml +33 -0
  336. data/lib/rails/generators/rails/app/templates/config/databases/jdbcpostgresql.yml +43 -0
  337. data/lib/rails/generators/rails/app/templates/config/databases/jdbcsqlite3.yml +20 -0
  338. data/lib/rails/generators/rails/app/templates/config/databases/mysql.yml +54 -0
  339. data/lib/rails/generators/rails/app/templates/config/databases/oracle.yml +39 -0
  340. data/lib/rails/generators/rails/app/templates/config/databases/postgresql.yml +55 -0
  341. data/lib/rails/generators/rails/app/templates/config/databases/sqlite3.yml +25 -0
  342. data/lib/rails/generators/rails/app/templates/config/environment.rb +5 -0
  343. data/lib/rails/generators/rails/app/templates/config/environments/development.rb.tt +41 -0
  344. data/lib/rails/generators/rails/app/templates/config/environments/production.rb.tt +73 -0
  345. data/lib/rails/generators/rails/app/templates/config/environments/test.rb.tt +39 -0
  346. data/lib/rails/generators/rails/app/templates/config/initializers/backtrace_silencers.rb +7 -0
  347. data/lib/rails/generators/rails/app/templates/config/initializers/inflections.rb +15 -0
  348. data/lib/rails/generators/rails/app/templates/config/initializers/mime_types.rb +5 -0
  349. data/lib/rails/generators/rails/app/templates/config/initializers/secret_token.rb.tt +7 -0
  350. data/lib/rails/generators/rails/app/templates/config/initializers/session_store.rb.tt +8 -0
  351. data/lib/rails/generators/rails/app/templates/config/initializers/wrap_parameters.rb.tt +16 -0
  352. data/lib/rails/generators/rails/app/templates/config/locales/en.yml +5 -0
  353. data/lib/rails/generators/rails/app/templates/config/routes.rb +58 -0
  354. data/lib/rails/generators/rails/app/templates/config.ru +4 -0
  355. data/lib/rails/generators/rails/app/templates/db/seeds.rb.tt +7 -0
  356. data/lib/rails/generators/rails/app/templates/doc/README_FOR_APP +2 -0
  357. data/lib/rails/generators/rails/app/templates/gitignore +15 -0
  358. data/lib/rails/generators/rails/app/templates/public/404.html +26 -0
  359. data/lib/rails/generators/rails/app/templates/public/422.html +26 -0
  360. data/lib/rails/generators/rails/app/templates/public/500.html +25 -0
  361. data/lib/rails/generators/rails/app/templates/public/favicon.ico +0 -0
  362. data/lib/rails/generators/rails/app/templates/public/index.html +241 -0
  363. data/lib/rails/generators/rails/app/templates/public/robots.txt +5 -0
  364. data/lib/rails/generators/rails/app/templates/public/stylesheets/.empty_directory +0 -0
  365. data/lib/rails/generators/rails/app/templates/script/rails +5 -0
  366. data/lib/rails/generators/rails/app/templates/test/fixtures/.empty_directory +0 -0
  367. data/lib/rails/generators/rails/app/templates/test/functional/.empty_directory +0 -0
  368. data/lib/rails/generators/rails/app/templates/test/integration/.empty_directory +0 -0
  369. data/lib/rails/generators/rails/app/templates/test/performance/browsing_test.rb +12 -0
  370. data/lib/rails/generators/rails/app/templates/test/test_helper.rb +15 -0
  371. data/lib/rails/generators/rails/app/templates/test/unit/.empty_directory +0 -0
  372. data/lib/rails/generators/rails/assets/USAGE +20 -0
  373. data/lib/rails/generators/rails/assets/assets_generator.rb +25 -0
  374. data/lib/rails/generators/rails/assets/templates/javascript.js +2 -0
  375. data/lib/rails/generators/rails/assets/templates/stylesheet.css +4 -0
  376. data/lib/rails/generators/rails/controller/USAGE +18 -0
  377. data/lib/rails/generators/rails/controller/controller_generator.rb +20 -0
  378. data/lib/rails/generators/rails/controller/templates/controller.rb +13 -0
  379. data/lib/rails/generators/rails/generator/USAGE +12 -0
  380. data/lib/rails/generators/rails/generator/generator_generator.rb +25 -0
  381. data/lib/rails/generators/rails/generator/templates/%file_name%_generator.rb.tt +3 -0
  382. data/lib/rails/generators/rails/generator/templates/USAGE.tt +8 -0
  383. data/lib/rails/generators/rails/generator/templates/templates/.empty_directory +0 -0
  384. data/lib/rails/generators/rails/helper/USAGE +17 -0
  385. data/lib/rails/generators/rails/helper/helper_generator.rb +13 -0
  386. data/lib/rails/generators/rails/helper/templates/helper.rb +4 -0
  387. data/lib/rails/generators/rails/integration_test/USAGE +10 -0
  388. data/lib/rails/generators/rails/integration_test/integration_test_generator.rb +7 -0
  389. data/lib/rails/generators/rails/migration/USAGE +29 -0
  390. data/lib/rails/generators/rails/migration/migration_generator.rb +8 -0
  391. data/lib/rails/generators/rails/model/USAGE +45 -0
  392. data/lib/rails/generators/rails/model/model_generator.rb +8 -0
  393. data/lib/rails/generators/rails/observer/USAGE +12 -0
  394. data/lib/rails/generators/rails/observer/observer_generator.rb +7 -0
  395. data/lib/rails/generators/rails/performance_test/USAGE +10 -0
  396. data/lib/rails/generators/rails/performance_test/performance_test_generator.rb +7 -0
  397. data/lib/rails/generators/rails/plugin_new/USAGE +10 -0
  398. data/lib/rails/generators/rails/plugin_new/plugin_new_generator.rb +318 -0
  399. data/lib/rails/generators/rails/plugin_new/templates/%name%.gemspec +29 -0
  400. data/lib/rails/generators/rails/plugin_new/templates/Gemfile +23 -0
  401. data/lib/rails/generators/rails/plugin_new/templates/MIT-LICENSE +20 -0
  402. data/lib/rails/generators/rails/plugin_new/templates/README.rdoc +3 -0
  403. data/lib/rails/generators/rails/plugin_new/templates/Rakefile +31 -0
  404. data/lib/rails/generators/rails/plugin_new/templates/app/controllers/%name%/application_controller.rb.tt +4 -0
  405. data/lib/rails/generators/rails/plugin_new/templates/app/helpers/%name%/application_helper.rb.tt +4 -0
  406. data/lib/rails/generators/rails/plugin_new/templates/app/mailers/.empty_directory +0 -0
  407. data/lib/rails/generators/rails/plugin_new/templates/app/models/.empty_directory +0 -0
  408. data/lib/rails/generators/rails/plugin_new/templates/app/views/layouts/%name%/application.html.erb.tt +14 -0
  409. data/lib/rails/generators/rails/plugin_new/templates/config/routes.rb +6 -0
  410. data/lib/rails/generators/rails/plugin_new/templates/gitignore +7 -0
  411. data/lib/rails/generators/rails/plugin_new/templates/lib/%name%/engine.rb +7 -0
  412. data/lib/rails/generators/rails/plugin_new/templates/lib/%name%/version.rb +3 -0
  413. data/lib/rails/generators/rails/plugin_new/templates/lib/%name%.rb +6 -0
  414. data/lib/rails/generators/rails/plugin_new/templates/lib/tasks/%name%_tasks.rake +4 -0
  415. data/lib/rails/generators/rails/plugin_new/templates/rails/application.rb +18 -0
  416. data/lib/rails/generators/rails/plugin_new/templates/rails/boot.rb +10 -0
  417. data/lib/rails/generators/rails/plugin_new/templates/rails/routes.rb +4 -0
  418. data/lib/rails/generators/rails/plugin_new/templates/script/rails.tt +7 -0
  419. data/lib/rails/generators/rails/plugin_new/templates/test/%name%_test.rb +7 -0
  420. data/lib/rails/generators/rails/plugin_new/templates/test/integration/navigation_test.rb +12 -0
  421. data/lib/rails/generators/rails/plugin_new/templates/test/test_helper.rb +15 -0
  422. data/lib/rails/generators/rails/resource/USAGE +23 -0
  423. data/lib/rails/generators/rails/resource/resource_generator.rb +20 -0
  424. data/lib/rails/generators/rails/resource_route/resource_route_generator.rb +50 -0
  425. data/lib/rails/generators/rails/scaffold/USAGE +35 -0
  426. data/lib/rails/generators/rails/scaffold/scaffold_generator.rb +23 -0
  427. data/lib/rails/generators/rails/scaffold/templates/scaffold.css +56 -0
  428. data/lib/rails/generators/rails/scaffold_controller/USAGE +19 -0
  429. data/lib/rails/generators/rails/scaffold_controller/scaffold_controller_generator.rb +25 -0
  430. data/lib/rails/generators/rails/scaffold_controller/templates/controller.rb +89 -0
  431. data/lib/rails/generators/rails/session_migration/USAGE +8 -0
  432. data/lib/rails/generators/rails/session_migration/session_migration_generator.rb +8 -0
  433. data/lib/rails/generators/rails/task/USAGE +9 -0
  434. data/lib/rails/generators/rails/task/task_generator.rb +12 -0
  435. data/lib/rails/generators/rails/task/templates/task.rb +8 -0
  436. data/lib/rails/generators/resource_helpers.rb +80 -0
  437. data/lib/rails/generators/test_case.rb +247 -0
  438. data/lib/rails/generators/test_unit/controller/controller_generator.rb +15 -0
  439. data/lib/rails/generators/test_unit/controller/templates/functional_test.rb +19 -0
  440. data/lib/rails/generators/test_unit/helper/helper_generator.rb +13 -0
  441. data/lib/rails/generators/test_unit/helper/templates/helper_test.rb +6 -0
  442. data/lib/rails/generators/test_unit/integration/integration_generator.rb +13 -0
  443. data/lib/rails/generators/test_unit/integration/templates/integration_test.rb +7 -0
  444. data/lib/rails/generators/test_unit/mailer/mailer_generator.rb +14 -0
  445. data/lib/rails/generators/test_unit/mailer/templates/functional_test.rb +21 -0
  446. data/lib/rails/generators/test_unit/model/model_generator.rb +24 -0
  447. data/lib/rails/generators/test_unit/model/templates/fixtures.yml +23 -0
  448. data/lib/rails/generators/test_unit/model/templates/unit_test.rb +9 -0
  449. data/lib/rails/generators/test_unit/observer/observer_generator.rb +13 -0
  450. data/lib/rails/generators/test_unit/observer/templates/unit_test.rb +9 -0
  451. data/lib/rails/generators/test_unit/performance/performance_generator.rb +13 -0
  452. data/lib/rails/generators/test_unit/performance/templates/performance_test.rb +12 -0
  453. data/lib/rails/generators/test_unit/plugin/plugin_generator.rb +13 -0
  454. data/lib/rails/generators/test_unit/plugin/templates/%file_name%_test.rb.tt +7 -0
  455. data/lib/rails/generators/test_unit/plugin/templates/test_helper.rb +3 -0
  456. data/lib/rails/generators/test_unit/scaffold/scaffold_generator.rb +38 -0
  457. data/lib/rails/generators/test_unit/scaffold/templates/functional_test.rb +51 -0
  458. data/lib/rails/generators/test_unit.rb +8 -0
  459. data/lib/rails/generators.rb +339 -0
  460. data/lib/rails/info.rb +116 -0
  461. data/lib/rails/info_controller.rb +15 -0
  462. data/lib/rails/initializable.rb +89 -0
  463. data/lib/rails/paths.rb +211 -0
  464. data/lib/rails/performance_test_help.rb +3 -0
  465. data/lib/rails/plugin.rb +92 -0
  466. data/lib/rails/rack/debugger.rb +24 -0
  467. data/lib/rails/rack/log_tailer.rb +34 -0
  468. data/lib/rails/rack/logger.rb +60 -0
  469. data/lib/rails/rack.rb +7 -0
  470. data/lib/rails/railtie/configurable.rb +35 -0
  471. data/lib/rails/railtie/configuration.rb +90 -0
  472. data/lib/rails/railtie.rb +202 -0
  473. data/lib/rails/ruby_version_check.rb +23 -0
  474. data/lib/rails/rubyprof_ext.rb +35 -0
  475. data/lib/rails/script_rails_loader.rb +29 -0
  476. data/lib/rails/source_annotation_extractor.rb +104 -0
  477. data/lib/rails/tasks/annotations.rake +20 -0
  478. data/lib/rails/tasks/documentation.rake +155 -0
  479. data/lib/rails/tasks/engine.rake +72 -0
  480. data/lib/rails/tasks/framework.rake +76 -0
  481. data/lib/rails/tasks/log.rake +9 -0
  482. data/lib/rails/tasks/middleware.rake +7 -0
  483. data/lib/rails/tasks/misc.rake +67 -0
  484. data/lib/rails/tasks/routes.rake +9 -0
  485. data/lib/rails/tasks/statistics.rake +16 -0
  486. data/lib/rails/tasks/tmp.rake +37 -0
  487. data/lib/rails/tasks.rb +16 -0
  488. data/lib/rails/test_help.rb +56 -0
  489. data/lib/rails/test_unit/railtie.rb +15 -0
  490. data/lib/rails/test_unit/sub_test_task.rb +8 -0
  491. data/lib/rails/test_unit/testing.rake +146 -0
  492. data/lib/rails/version.rb +10 -0
  493. data/lib/rails.rb +126 -0
  494. metadata +609 -0
@@ -0,0 +1,320 @@
1
+ require 'active_support/core_ext/hash/reverse_merge'
2
+ require 'fileutils'
3
+ require 'rails/plugin'
4
+ require 'rails/engine'
5
+
6
+ module Rails
7
+ # In Rails 3.0, a Rails::Application object was introduced which is nothing more than
8
+ # an Engine but with the responsibility of coordinating the whole boot process.
9
+ #
10
+ # == Initialization
11
+ #
12
+ # Rails::Application is responsible for executing all railties, engines and plugin
13
+ # initializers. It also executes some bootstrap initializers (check
14
+ # Rails::Application::Bootstrap) and finishing initializers, after all the others
15
+ # are executed (check Rails::Application::Finisher).
16
+ #
17
+ # == Configuration
18
+ #
19
+ # Besides providing the same configuration as Rails::Engine and Rails::Railtie,
20
+ # the application object has several specific configurations, for example
21
+ # "allow_concurrency", "cache_classes", "consider_all_requests_local", "filter_parameters",
22
+ # "logger", "reload_plugins" and so forth.
23
+ #
24
+ # Check Rails::Application::Configuration to see them all.
25
+ #
26
+ # == Routes
27
+ #
28
+ # The application object is also responsible for holding the routes and reloading routes
29
+ # whenever the files change in development.
30
+ #
31
+ # == Middlewares
32
+ #
33
+ # The Application is also responsible for building the middleware stack.
34
+ #
35
+ # == Booting process
36
+ #
37
+ # The application is also responsible for setting up and executing the booting
38
+ # process. From the moment you require "config/application.rb" in your app,
39
+ # the booting process goes like this:
40
+ #
41
+ # 1) require "config/boot.rb" to setup load paths
42
+ # 2) require railties and engines
43
+ # 3) Define Rails.application as "class MyApp::Application < Rails::Application"
44
+ # 4) Run config.before_configuration callbacks
45
+ # 5) Load config/environments/ENV.rb
46
+ # 6) Run config.before_initialize callbacks
47
+ # 7) Run Railtie#initializer defined by railties, engines and application.
48
+ # One by one, each engine sets up its load paths, routes and runs its config/initializers/* files.
49
+ # 9) Custom Railtie#initializers added by railties, engines and applications are executed
50
+ # 10) Build the middleware stack and run to_prepare callbacks
51
+ # 11) Run config.before_eager_load and eager_load if cache classes is true
52
+ # 12) Run config.after_initialize callbacks
53
+ #
54
+ class Application < Engine
55
+ autoload :Bootstrap, 'rails/application/bootstrap'
56
+ autoload :Configuration, 'rails/application/configuration'
57
+ autoload :Finisher, 'rails/application/finisher'
58
+ autoload :Railties, 'rails/application/railties'
59
+ autoload :RoutesReloader, 'rails/application/routes_reloader'
60
+
61
+ class << self
62
+ def inherited(base)
63
+ raise "You cannot have more than one Rails::Application" if Rails.application
64
+ super
65
+ Rails.application = base.instance
66
+ Rails.application.add_lib_to_load_path!
67
+ ActiveSupport.run_load_hooks(:before_configuration, base.instance)
68
+ end
69
+ end
70
+
71
+ attr_accessor :assets, :sandbox
72
+ alias_method :sandbox?, :sandbox
73
+ attr_reader :reloaders
74
+
75
+ delegate :default_url_options, :default_url_options=, :to => :routes
76
+
77
+ def initialize
78
+ super
79
+ @initialized = false
80
+ @reloaders = []
81
+ end
82
+
83
+ # This method is called just after an application inherits from Rails::Application,
84
+ # allowing the developer to load classes in lib and use them during application
85
+ # configuration.
86
+ #
87
+ # class MyApplication < Rails::Application
88
+ # require "my_backend" # in lib/my_backend
89
+ # config.i18n.backend = MyBackend
90
+ # end
91
+ #
92
+ # Notice this method takes into consideration the default root path. So if you
93
+ # are changing config.root inside your application definition or having a custom
94
+ # Rails application, you will need to add lib to $LOAD_PATH on your own in case
95
+ # you need to load files in lib/ during the application configuration as well.
96
+ def add_lib_to_load_path! #:nodoc:
97
+ path = config.root.join('lib').to_s
98
+ $LOAD_PATH.unshift(path) if File.exists?(path)
99
+ end
100
+
101
+ def require_environment! #:nodoc:
102
+ environment = paths["config/environment"].existent.first
103
+ require environment if environment
104
+ end
105
+
106
+ # Reload application routes regardless if they changed or not.
107
+ def reload_routes!
108
+ routes_reloader.reload!
109
+ end
110
+
111
+ def routes_reloader #:nodoc:
112
+ @routes_reloader ||= RoutesReloader.new
113
+ end
114
+
115
+ # Returns an array of file paths appended with a hash of directories-extensions
116
+ # suitable for ActiveSupport::FileUpdateChecker API.
117
+ def watchable_args
118
+ files = []
119
+ files.concat config.watchable_files
120
+
121
+ dirs = {}
122
+ dirs.merge! config.watchable_dirs
123
+ ActiveSupport::Dependencies.autoload_paths.each do |path|
124
+ dirs[path.to_s] = [:rb]
125
+ end
126
+
127
+ [files, dirs]
128
+ end
129
+
130
+ # Initialize the application passing the given group. By default, the
131
+ # group is :default but sprockets precompilation passes group equals
132
+ # to assets if initialize_on_precompile is false to avoid booting the
133
+ # whole app.
134
+ def initialize!(group=:default) #:nodoc:
135
+ raise "Application has been already initialized." if @initialized
136
+ run_initializers(group, self)
137
+ @initialized = true
138
+ self
139
+ end
140
+
141
+ # Load the application and its railties tasks and invoke the registered hooks.
142
+ # Check <tt>Rails::Railtie.rake_tasks</tt> for more info.
143
+ def load_tasks(app=self)
144
+ initialize_tasks
145
+ super
146
+ self
147
+ end
148
+
149
+ # Load the application console and invoke the registered hooks.
150
+ # Check <tt>Rails::Railtie.console</tt> for more info.
151
+ def load_console(app=self)
152
+ initialize_console
153
+ super
154
+ self
155
+ end
156
+
157
+ # Rails.application.env_config stores some of the Rails initial environment parameters.
158
+ # Currently stores:
159
+ #
160
+ # * "action_dispatch.parameter_filter" => config.filter_parameters,
161
+ # * "action_dispatch.secret_token" => config.secret_token,
162
+ # * "action_dispatch.show_exceptions" => config.action_dispatch.show_exceptions,
163
+ # * "action_dispatch.show_detailed_exceptions" => config.consider_all_requests_local,
164
+ # * "action_dispatch.logger" => Rails.logger,
165
+ # * "action_dispatch.backtrace_cleaner" => Rails.backtrace_cleaner
166
+ #
167
+ # These parameters will be used by middlewares and engines to configure themselves.
168
+ #
169
+ def env_config
170
+ @env_config ||= super.merge({
171
+ "action_dispatch.parameter_filter" => config.filter_parameters,
172
+ "action_dispatch.secret_token" => config.secret_token,
173
+ "action_dispatch.show_exceptions" => config.action_dispatch.show_exceptions,
174
+ "action_dispatch.show_detailed_exceptions" => config.consider_all_requests_local,
175
+ "action_dispatch.logger" => Rails.logger,
176
+ "action_dispatch.backtrace_cleaner" => Rails.backtrace_cleaner
177
+ })
178
+ end
179
+
180
+ # Returns the ordered railties for this application considering railties_order.
181
+ def ordered_railties #:nodoc:
182
+ @ordered_railties ||= begin
183
+ order = config.railties_order.map do |railtie|
184
+ if railtie == :main_app
185
+ self
186
+ elsif railtie.respond_to?(:instance)
187
+ railtie.instance
188
+ else
189
+ railtie
190
+ end
191
+ end
192
+
193
+ all = (railties.all - order)
194
+ all.push(self) unless (all + order).include?(self)
195
+ order.push(:all) unless order.include?(:all)
196
+
197
+ index = order.index(:all)
198
+ order[index] = all
199
+ order.reverse.flatten
200
+ end
201
+ end
202
+
203
+ def initializers #:nodoc:
204
+ Bootstrap.initializers_for(self) +
205
+ super +
206
+ Finisher.initializers_for(self)
207
+ end
208
+
209
+ def config #:nodoc:
210
+ @config ||= Application::Configuration.new(find_root_with_flag("config.ru", Dir.pwd))
211
+ end
212
+
213
+ def to_app
214
+ self
215
+ end
216
+
217
+ def helpers_paths #:nodoc:
218
+ config.helpers_paths
219
+ end
220
+
221
+ def call(env)
222
+ env["ORIGINAL_FULLPATH"] = build_original_fullpath(env)
223
+ super(env)
224
+ end
225
+
226
+ protected
227
+
228
+ alias :build_middleware_stack :app
229
+
230
+ def reload_dependencies?
231
+ config.reload_classes_only_on_change != true || reloaders.map(&:updated?).any?
232
+ end
233
+
234
+ def default_middleware_stack
235
+ require 'action_controller/railtie'
236
+
237
+ ActionDispatch::MiddlewareStack.new.tap do |middleware|
238
+ if rack_cache = config.action_controller.perform_caching && config.action_dispatch.rack_cache
239
+ require "action_dispatch/http/rack_cache"
240
+ middleware.use ::Rack::Cache, rack_cache
241
+ end
242
+
243
+ if config.force_ssl
244
+ require "rack/ssl"
245
+ middleware.use ::Rack::SSL, config.ssl_options
246
+ end
247
+
248
+ if config.serve_static_assets
249
+ middleware.use ::ActionDispatch::Static, paths["public"].first, config.static_cache_control
250
+ end
251
+
252
+ middleware.use ::Rack::Lock unless config.allow_concurrency
253
+ middleware.use ::Rack::Runtime
254
+ middleware.use ::Rack::MethodOverride
255
+ middleware.use ::ActionDispatch::RequestId
256
+ middleware.use ::Rails::Rack::Logger, config.log_tags # must come after Rack::MethodOverride to properly log overridden methods
257
+ middleware.use ::ActionDispatch::ShowExceptions, config.exceptions_app || ActionDispatch::PublicExceptions.new(Rails.public_path)
258
+ middleware.use ::ActionDispatch::DebugExceptions
259
+ middleware.use ::ActionDispatch::RemoteIp, config.action_dispatch.ip_spoofing_check, config.action_dispatch.trusted_proxies
260
+
261
+ if config.action_dispatch.x_sendfile_header.present?
262
+ middleware.use ::Rack::Sendfile, config.action_dispatch.x_sendfile_header
263
+ end
264
+
265
+ unless config.cache_classes
266
+ app = self
267
+ middleware.use ::ActionDispatch::Reloader, lambda { app.reload_dependencies? }
268
+ end
269
+
270
+ middleware.use ::ActionDispatch::Callbacks
271
+ middleware.use ::ActionDispatch::Cookies
272
+
273
+ if config.session_store
274
+ if config.force_ssl && !config.session_options.key?(:secure)
275
+ config.session_options[:secure] = true
276
+ end
277
+ middleware.use config.session_store, config.session_options
278
+ middleware.use ::ActionDispatch::Flash
279
+ end
280
+
281
+ middleware.use ::ActionDispatch::ParamsParser
282
+ middleware.use ::ActionDispatch::Head
283
+ middleware.use ::Rack::ConditionalGet
284
+ middleware.use ::Rack::ETag, "no-cache"
285
+
286
+ if config.action_dispatch.best_standards_support
287
+ middleware.use ::ActionDispatch::BestStandardsSupport, config.action_dispatch.best_standards_support
288
+ end
289
+ end
290
+ end
291
+
292
+ def initialize_tasks #:nodoc:
293
+ self.class.rake_tasks do
294
+ require "rails/tasks"
295
+ task :environment do
296
+ $rails_rake_task = true
297
+ require_environment!
298
+ end
299
+ end
300
+ end
301
+
302
+ def initialize_console #:nodoc:
303
+ require "pp"
304
+ require "rails/console/app"
305
+ require "rails/console/helpers"
306
+ end
307
+
308
+ def build_original_fullpath(env)
309
+ path_info = env["PATH_INFO"]
310
+ query_string = env["QUERY_STRING"]
311
+ script_name = env["SCRIPT_NAME"]
312
+
313
+ if query_string.present?
314
+ "#{script_name}#{path_info}?#{query_string}"
315
+ else
316
+ "#{script_name}#{path_info}"
317
+ end
318
+ end
319
+ end
320
+ end
@@ -0,0 +1,42 @@
1
+ require 'active_support/backtrace_cleaner'
2
+
3
+ module Rails
4
+ class BacktraceCleaner < ActiveSupport::BacktraceCleaner
5
+ APP_DIRS_PATTERN = /^\/?(app|config|lib|test)/
6
+ RENDER_TEMPLATE_PATTERN = /:in `_render_template_\w*'/
7
+
8
+ def initialize
9
+ super
10
+ add_filter { |line| line.sub("#{Rails.root}/", '') }
11
+ add_filter { |line| line.sub(RENDER_TEMPLATE_PATTERN, '') }
12
+ add_filter { |line| line.sub('./', '/') } # for tests
13
+
14
+ add_gem_filters
15
+ add_silencer { |line| line !~ APP_DIRS_PATTERN }
16
+ end
17
+
18
+ private
19
+ def add_gem_filters
20
+ return unless defined?(Gem)
21
+
22
+ gems_paths = (Gem.path + [Gem.default_dir]).uniq.map!{ |p| Regexp.escape(p) }
23
+ return if gems_paths.empty?
24
+
25
+ gems_regexp = %r{(#{gems_paths.join('|')})/gems/([^/]+)-([\w.]+)/(.*)}
26
+ add_filter { |line| line.sub(gems_regexp, '\2 (\3) \4') }
27
+ end
28
+ end
29
+
30
+ # For installing the BacktraceCleaner in the test/unit
31
+ module BacktraceFilterForTestUnit #:nodoc:
32
+ def self.included(klass)
33
+ klass.send :alias_method_chain, :filter_backtrace, :cleaning
34
+ end
35
+
36
+ def filter_backtrace_with_cleaning(backtrace, prefix=nil)
37
+ backtrace = filter_backtrace_without_cleaning(backtrace, prefix)
38
+ backtrace = backtrace.first.split("\n") if backtrace.size == 1
39
+ Rails.backtrace_cleaner.clean(backtrace)
40
+ end
41
+ end
42
+ end
data/lib/rails/cli.rb ADDED
@@ -0,0 +1,16 @@
1
+ require 'rbconfig'
2
+ require 'rails/script_rails_loader'
3
+
4
+ # If we are inside a Rails application this method performs an exec and thus
5
+ # the rest of this script is not run.
6
+ Rails::ScriptRailsLoader.exec_script_rails!
7
+
8
+ require 'rails/ruby_version_check'
9
+ Signal.trap("INT") { puts; exit(1) }
10
+
11
+ if ARGV.first == 'plugin'
12
+ ARGV.shift
13
+ require 'rails/commands/plugin_new'
14
+ else
15
+ require 'rails/commands/application'
16
+ end
@@ -0,0 +1,118 @@
1
+ class CodeStatistics #:nodoc:
2
+
3
+ TEST_TYPES = %w(Units Functionals Unit\ tests Functional\ tests Integration\ tests)
4
+
5
+ def initialize(*pairs)
6
+ @pairs = pairs
7
+ @statistics = calculate_statistics
8
+ @total = calculate_total if pairs.length > 1
9
+ end
10
+
11
+ def to_s
12
+ print_header
13
+ @pairs.each { |pair| print_line(pair.first, @statistics[pair.first]) }
14
+ print_splitter
15
+
16
+ if @total
17
+ print_line("Total", @total)
18
+ print_splitter
19
+ end
20
+
21
+ print_code_test_stats
22
+ end
23
+
24
+ private
25
+ def calculate_statistics
26
+ Hash[@pairs.map{|pair| [pair.first, calculate_directory_statistics(pair.last)]}]
27
+ end
28
+
29
+ def calculate_directory_statistics(directory, pattern = /.*\.rb$/)
30
+ stats = { "lines" => 0, "codelines" => 0, "classes" => 0, "methods" => 0 }
31
+
32
+ Dir.foreach(directory) do |file_name|
33
+ if File.directory?(directory + "/" + file_name) and (/^\./ !~ file_name)
34
+ newstats = calculate_directory_statistics(directory + "/" + file_name, pattern)
35
+ stats.each { |k, v| stats[k] += newstats[k] }
36
+ end
37
+
38
+ next unless file_name =~ pattern
39
+
40
+ f = File.open(directory + "/" + file_name)
41
+ comment_started = false
42
+ while line = f.gets
43
+ stats["lines"] += 1
44
+ if(comment_started)
45
+ if line =~ /^=end/
46
+ comment_started = false
47
+ end
48
+ next
49
+ else
50
+ if line =~ /^=begin/
51
+ comment_started = true
52
+ next
53
+ end
54
+ end
55
+ stats["classes"] += 1 if line =~ /^\s*class\s+[_A-Z]/
56
+ stats["methods"] += 1 if line =~ /^\s*def\s+[_a-z]/
57
+ stats["codelines"] += 1 unless line =~ /^\s*$/ || line =~ /^\s*#/
58
+ end
59
+ end
60
+
61
+ stats
62
+ end
63
+
64
+ def calculate_total
65
+ total = { "lines" => 0, "codelines" => 0, "classes" => 0, "methods" => 0 }
66
+ @statistics.each_value { |pair| pair.each { |k, v| total[k] += v } }
67
+ total
68
+ end
69
+
70
+ def calculate_code
71
+ code_loc = 0
72
+ @statistics.each { |k, v| code_loc += v['codelines'] unless TEST_TYPES.include? k }
73
+ code_loc
74
+ end
75
+
76
+ def calculate_tests
77
+ test_loc = 0
78
+ @statistics.each { |k, v| test_loc += v['codelines'] if TEST_TYPES.include? k }
79
+ test_loc
80
+ end
81
+
82
+ def print_header
83
+ print_splitter
84
+ puts "| Name | Lines | LOC | Classes | Methods | M/C | LOC/M |"
85
+ print_splitter
86
+ end
87
+
88
+ def print_splitter
89
+ puts "+----------------------+-------+-------+---------+---------+-----+-------+"
90
+ end
91
+
92
+ def print_line(name, statistics)
93
+ m_over_c = (statistics["methods"] / statistics["classes"]) rescue m_over_c = 0
94
+ loc_over_m = (statistics["codelines"] / statistics["methods"]) - 2 rescue loc_over_m = 0
95
+
96
+ start = if TEST_TYPES.include? name
97
+ "| #{name.ljust(20)} "
98
+ else
99
+ "| #{name.ljust(20)} "
100
+ end
101
+
102
+ puts start +
103
+ "| #{statistics["lines"].to_s.rjust(5)} " +
104
+ "| #{statistics["codelines"].to_s.rjust(5)} " +
105
+ "| #{statistics["classes"].to_s.rjust(7)} " +
106
+ "| #{statistics["methods"].to_s.rjust(7)} " +
107
+ "| #{m_over_c.to_s.rjust(3)} " +
108
+ "| #{loc_over_m.to_s.rjust(5)} |"
109
+ end
110
+
111
+ def print_code_test_stats
112
+ code = calculate_code
113
+ tests = calculate_tests
114
+
115
+ puts " Code LOC: #{code} Test LOC: #{tests} Code to Test Ratio: 1:#{sprintf("%.1f", tests.to_f/code)}"
116
+ puts ""
117
+ end
118
+ end
@@ -0,0 +1,38 @@
1
+ require 'rails/version'
2
+
3
+ if ['--version', '-v'].include?(ARGV.first)
4
+ puts "Rails #{Rails::VERSION::STRING}"
5
+ exit(0)
6
+ end
7
+
8
+ if ARGV.first != "new"
9
+ ARGV[0] = "--help"
10
+ else
11
+ ARGV.shift
12
+ railsrc = File.join(File.expand_path("~"), ".railsrc")
13
+ if File.exist?(railsrc)
14
+ extra_args_string = File.open(railsrc).read
15
+ extra_args = extra_args_string.split(/\n+/).map {|l| l.split}.flatten
16
+ puts "Using #{extra_args.join(" ")} from #{railsrc}"
17
+ ARGV << extra_args
18
+ ARGV.flatten!
19
+ end
20
+ end
21
+
22
+ require 'rubygems' if ARGV.include?("--dev")
23
+ require 'rails/generators'
24
+ require 'rails/generators/rails/app/app_generator'
25
+
26
+ module Rails
27
+ module Generators
28
+ class AppGenerator
29
+ # We want to exit on failure to be kind to other libraries
30
+ # This is only when accessing via CLI
31
+ def self.exit_on_failure?
32
+ true
33
+ end
34
+ end
35
+ end
36
+ end
37
+
38
+ Rails::Generators::AppGenerator.start
@@ -0,0 +1,34 @@
1
+ require 'optparse'
2
+ require 'rails/test_help'
3
+ require 'rails/performance_test_help'
4
+
5
+ ARGV.push('--benchmark') # HAX
6
+ require 'active_support/testing/performance'
7
+ ARGV.pop
8
+
9
+ def options
10
+ options = {}
11
+ defaults = ActiveSupport::Testing::Performance::DEFAULTS
12
+
13
+ OptionParser.new do |opt|
14
+ opt.banner = "Usage: rails benchmarker 'Ruby.code' 'Ruby.more_code' ... [OPTS]"
15
+ opt.on('-r', '--runs N', Numeric, 'Number of runs.', "Default: #{defaults[:runs]}") { |r| options[:runs] = r }
16
+ opt.on('-o', '--output PATH', String, 'Directory to use when writing the results.', "Default: #{defaults[:output]}") { |o| options[:output] = o }
17
+ opt.on('-m', '--metrics a,b,c', Array, 'Metrics to use.', "Default: #{defaults[:metrics].join(",")}") { |m| options[:metrics] = m.map(&:to_sym) }
18
+ opt.parse!(ARGV)
19
+ end
20
+
21
+ options
22
+ end
23
+
24
+ class BenchmarkerTest < ActionDispatch::PerformanceTest #:nodoc:
25
+ self.profile_options = options
26
+
27
+ ARGV.each do |expression|
28
+ eval <<-RUBY
29
+ def test_#{expression.parameterize('_')}
30
+ #{expression}
31
+ end
32
+ RUBY
33
+ end
34
+ end
@@ -0,0 +1,55 @@
1
+ require 'optparse'
2
+ require 'irb'
3
+ require 'irb/completion'
4
+
5
+ module Rails
6
+ class Console
7
+ def self.start(app)
8
+ new(app).start
9
+ end
10
+
11
+ def initialize(app)
12
+ @app = app
13
+ end
14
+
15
+ def start
16
+ options = {}
17
+
18
+ OptionParser.new do |opt|
19
+ opt.banner = "Usage: console [environment] [options]"
20
+ opt.on('-s', '--sandbox', 'Rollback database modifications on exit.') { |v| options[:sandbox] = v }
21
+ opt.on("--debugger", 'Enable ruby-debugging for the console.') { |v| options[:debugger] = v }
22
+ opt.on('--irb', "DEPRECATED: Invoke `/your/choice/of/ruby script/rails console` instead") { |v| abort '--irb option is no longer supported. Invoke `/your/choice/of/ruby script/rails console` instead' }
23
+ opt.parse!(ARGV)
24
+ end
25
+
26
+ @app.sandbox = options[:sandbox]
27
+ @app.load_console
28
+
29
+ if options[:debugger]
30
+ begin
31
+ require 'ruby-debug'
32
+ puts "=> Debugger enabled"
33
+ rescue Exception
34
+ puts "You need to install ruby-debug to run the console in debugging mode. With gems, use 'gem install ruby-debug'"
35
+ exit
36
+ end
37
+ end
38
+
39
+ if options[:sandbox]
40
+ puts "Loading #{Rails.env} environment in sandbox (Rails #{Rails.version})"
41
+ puts "Any modifications you make will be rolled back on exit"
42
+ else
43
+ puts "Loading #{Rails.env} environment (Rails #{Rails.version})"
44
+ end
45
+
46
+ IRB::ExtendCommandBundle.send :include, Rails::ConsoleMethods
47
+ IRB.start
48
+ end
49
+ end
50
+ end
51
+
52
+ # Has to set the RAILS_ENV before config/application is required
53
+ if ARGV.first && !ARGV.first.index("-") && env = ARGV.shift # has to shift the env ARGV so IRB doesn't freak
54
+ ENV['RAILS_ENV'] = %w(production development test).detect {|e| e =~ /^#{env}/} || env
55
+ end