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,8 @@
1
+ require 'rails/generators/named_base'
2
+
3
+ module TestUnit
4
+ module Generators
5
+ class Base < Rails::Generators::NamedBase #:nodoc:
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,339 @@
1
+ activesupport_path = File.expand_path('../../../../activesupport/lib', __FILE__)
2
+ $:.unshift(activesupport_path) if File.directory?(activesupport_path) && !$:.include?(activesupport_path)
3
+
4
+ require 'active_support'
5
+ require 'active_support/core_ext/object/blank'
6
+ require 'active_support/core_ext/kernel/singleton_class'
7
+ require 'active_support/core_ext/array/extract_options'
8
+ require 'active_support/core_ext/hash/deep_merge'
9
+ require 'active_support/core_ext/module/attribute_accessors'
10
+ require 'active_support/core_ext/string/inflections'
11
+
12
+ require 'rails/generators/base'
13
+
14
+ module Rails
15
+ module Generators
16
+ autoload :Actions, 'rails/generators/actions'
17
+ autoload :ActiveModel, 'rails/generators/active_model'
18
+ autoload :Migration, 'rails/generators/migration'
19
+ autoload :NamedBase, 'rails/generators/named_base'
20
+ autoload :ResourceHelpers, 'rails/generators/resource_helpers'
21
+ autoload :TestCase, 'rails/generators/test_case'
22
+
23
+ mattr_accessor :namespace
24
+
25
+ DEFAULT_ALIASES = {
26
+ :rails => {
27
+ :actions => '-a',
28
+ :orm => '-o',
29
+ :javascripts => '-j',
30
+ :javascript_engine => '-je',
31
+ :resource_controller => '-c',
32
+ :scaffold_controller => '-c',
33
+ :stylesheets => '-y',
34
+ :stylesheet_engine => '-se',
35
+ :template_engine => '-e',
36
+ :test_framework => '-t'
37
+ },
38
+
39
+ :test_unit => {
40
+ :fixture_replacement => '-r',
41
+ },
42
+
43
+ :plugin => {
44
+ :generator => '-g',
45
+ :tasks => '-r'
46
+ }
47
+ }
48
+
49
+ DEFAULT_OPTIONS = {
50
+ :rails => {
51
+ :assets => true,
52
+ :force_plural => false,
53
+ :helper => true,
54
+ :integration_tool => nil,
55
+ :javascripts => true,
56
+ :javascript_engine => :js,
57
+ :orm => false,
58
+ :performance_tool => nil,
59
+ :resource_controller => :controller,
60
+ :resource_route => true,
61
+ :scaffold_controller => :scaffold_controller,
62
+ :stylesheets => true,
63
+ :stylesheet_engine => :css,
64
+ :test_framework => false,
65
+ :template_engine => :erb
66
+ },
67
+
68
+ :plugin => {
69
+ :generator => false,
70
+ :tasks => false
71
+ }
72
+ }
73
+
74
+ def self.configure!(config) #:nodoc:
75
+ no_color! unless config.colorize_logging
76
+ aliases.deep_merge! config.aliases
77
+ options.deep_merge! config.options
78
+ fallbacks.merge! config.fallbacks
79
+ templates_path.concat config.templates
80
+ templates_path.uniq!
81
+ hide_namespaces(*config.hidden_namespaces)
82
+ end
83
+
84
+ def self.templates_path
85
+ @templates_path ||= []
86
+ end
87
+
88
+ def self.aliases #:nodoc:
89
+ @aliases ||= DEFAULT_ALIASES.dup
90
+ end
91
+
92
+ def self.options #:nodoc:
93
+ @options ||= DEFAULT_OPTIONS.dup
94
+ end
95
+
96
+ # Hold configured generators fallbacks. If a plugin developer wants a
97
+ # generator group to fallback to another group in case of missing generators,
98
+ # they can add a fallback.
99
+ #
100
+ # For example, shoulda is considered a test_framework and is an extension
101
+ # of test_unit. However, most part of shoulda generators are similar to
102
+ # test_unit ones.
103
+ #
104
+ # Shoulda then can tell generators to search for test_unit generators when
105
+ # some of them are not available by adding a fallback:
106
+ #
107
+ # Rails::Generators.fallbacks[:shoulda] = :test_unit
108
+ #
109
+ def self.fallbacks
110
+ @fallbacks ||= {}
111
+ end
112
+
113
+ # Remove the color from output.
114
+ def self.no_color!
115
+ Thor::Base.shell = Thor::Shell::Basic
116
+ end
117
+
118
+ # Track all generators subclasses.
119
+ def self.subclasses
120
+ @subclasses ||= []
121
+ end
122
+
123
+ # Rails finds namespaces similar to thor, it only adds one rule:
124
+ #
125
+ # Generators names must end with "_generator.rb". This is required because Rails
126
+ # looks in load paths and loads the generator just before it's going to be used.
127
+ #
128
+ # ==== Examples
129
+ #
130
+ # find_by_namespace :webrat, :rails, :integration
131
+ #
132
+ # Will search for the following generators:
133
+ #
134
+ # "rails:webrat", "webrat:integration", "webrat"
135
+ #
136
+ # Notice that "rails:generators:webrat" could be loaded as well, what
137
+ # Rails looks for is the first and last parts of the namespace.
138
+ #
139
+ def self.find_by_namespace(name, base=nil, context=nil) #:nodoc:
140
+ lookups = []
141
+ lookups << "#{base}:#{name}" if base
142
+ lookups << "#{name}:#{context}" if context
143
+
144
+ unless base || context
145
+ unless name.to_s.include?(?:)
146
+ lookups << "#{name}:#{name}"
147
+ lookups << "rails:#{name}"
148
+ end
149
+ lookups << "#{name}"
150
+ end
151
+
152
+ lookup(lookups)
153
+
154
+ namespaces = Hash[subclasses.map { |klass| [klass.namespace, klass] }]
155
+
156
+ lookups.each do |namespace|
157
+ klass = namespaces[namespace]
158
+ return klass if klass
159
+ end
160
+
161
+ invoke_fallbacks_for(name, base) || invoke_fallbacks_for(context, name)
162
+ end
163
+
164
+ # Receives a namespace, arguments and the behavior to invoke the generator.
165
+ # It's used as the default entry point for generate, destroy and update
166
+ # commands.
167
+ def self.invoke(namespace, args=ARGV, config={})
168
+ names = namespace.to_s.split(':')
169
+ if klass = find_by_namespace(names.pop, names.any? && names.join(':'))
170
+ args << "--help" if args.empty? && klass.arguments.any? { |a| a.required? }
171
+ klass.start(args, config)
172
+ else
173
+ puts "Could not find generator #{namespace}."
174
+ end
175
+ end
176
+
177
+ def self.hidden_namespaces
178
+ @hidden_namespaces ||= begin
179
+ orm = options[:rails][:orm]
180
+ test = options[:rails][:test_framework]
181
+ template = options[:rails][:template_engine]
182
+ css = options[:rails][:stylesheet_engine]
183
+
184
+ [
185
+ "rails",
186
+ "resource_route",
187
+ "#{orm}:migration",
188
+ "#{orm}:model",
189
+ "#{orm}:observer",
190
+ "#{orm}:session_migration",
191
+ "#{test}:controller",
192
+ "#{test}:helper",
193
+ "#{test}:integration",
194
+ "#{test}:mailer",
195
+ "#{test}:model",
196
+ "#{test}:observer",
197
+ "#{test}:scaffold",
198
+ "#{test}:view",
199
+ "#{test}:performance",
200
+ "#{test}:plugin",
201
+ "#{template}:controller",
202
+ "#{template}:scaffold",
203
+ "#{template}:mailer",
204
+ "#{css}:scaffold",
205
+ "#{css}:assets",
206
+ "css:assets",
207
+ "css:scaffold"
208
+ ]
209
+ end
210
+ end
211
+
212
+ class << self
213
+ def hide_namespaces(*namespaces)
214
+ hidden_namespaces.concat(namespaces)
215
+ end
216
+ alias hide_namespace hide_namespaces
217
+ end
218
+
219
+ # Show help message with available generators.
220
+ def self.help(command = 'generate')
221
+ lookup!
222
+
223
+ namespaces = subclasses.map{ |k| k.namespace }
224
+ namespaces.sort!
225
+
226
+ groups = Hash.new { |h,k| h[k] = [] }
227
+ namespaces.each do |namespace|
228
+ base = namespace.split(':').first
229
+ groups[base] << namespace
230
+ end
231
+
232
+ puts "Usage: rails #{command} GENERATOR [args] [options]"
233
+ puts
234
+ puts "General options:"
235
+ puts " -h, [--help] # Print generator's options and usage"
236
+ puts " -p, [--pretend] # Run but do not make any changes"
237
+ puts " -f, [--force] # Overwrite files that already exist"
238
+ puts " -s, [--skip] # Skip files that already exist"
239
+ puts " -q, [--quiet] # Suppress status output"
240
+ puts
241
+ puts "Please choose a generator below."
242
+ puts
243
+
244
+ # Print Rails defaults first.
245
+ rails = groups.delete("rails")
246
+ rails.map! { |n| n.sub(/^rails:/, '') }
247
+ rails.delete("app")
248
+ rails.delete("plugin_new")
249
+ print_list("rails", rails)
250
+
251
+ hidden_namespaces.each {|n| groups.delete(n.to_s) }
252
+
253
+ groups.sort.each { |b, n| print_list(b, n) }
254
+ end
255
+
256
+ protected
257
+
258
+ # Prints a list of generators.
259
+ def self.print_list(base, namespaces) #:nodoc:
260
+ namespaces = namespaces.reject do |n|
261
+ hidden_namespaces.include?(n)
262
+ end
263
+
264
+ return if namespaces.empty?
265
+ puts "#{base.camelize}:"
266
+
267
+ namespaces.each do |namespace|
268
+ puts(" #{namespace}")
269
+ end
270
+
271
+ puts
272
+ end
273
+
274
+ # Try fallbacks for the given base.
275
+ def self.invoke_fallbacks_for(name, base) #:nodoc:
276
+ return nil unless base && fallbacks[base.to_sym]
277
+ invoked_fallbacks = []
278
+
279
+ Array(fallbacks[base.to_sym]).each do |fallback|
280
+ next if invoked_fallbacks.include?(fallback)
281
+ invoked_fallbacks << fallback
282
+
283
+ klass = find_by_namespace(name, fallback)
284
+ return klass if klass
285
+ end
286
+
287
+ nil
288
+ end
289
+
290
+ # Receives namespaces in an array and tries to find matching generators
291
+ # in the load path.
292
+ def self.lookup(namespaces) #:nodoc:
293
+ paths = namespaces_to_paths(namespaces)
294
+
295
+ paths.each do |raw_path|
296
+ ["rails/generators", "generators"].each do |base|
297
+ path = "#{base}/#{raw_path}_generator"
298
+
299
+ begin
300
+ require path
301
+ return
302
+ rescue LoadError => e
303
+ raise unless e.message =~ /#{Regexp.escape(path)}$/
304
+ rescue Exception => e
305
+ warn "[WARNING] Could not load generator #{path.inspect}. Error: #{e.message}.\n#{e.backtrace.join("\n")}"
306
+ end
307
+ end
308
+ end
309
+ end
310
+
311
+ # This will try to load any generator in the load path to show in help.
312
+ def self.lookup! #:nodoc:
313
+ $LOAD_PATH.each do |base|
314
+ Dir[File.join(base, "{rails/generators,generators}", "**", "*_generator.rb")].each do |path|
315
+ begin
316
+ path = path.sub("#{base}/", "")
317
+ require path
318
+ rescue Exception
319
+ # No problem
320
+ end
321
+ end
322
+ end
323
+ end
324
+
325
+ # Convert namespaces to paths by replacing ":" for "/" and adding
326
+ # an extra lookup. For example, "rails:model" should be searched
327
+ # in both: "rails/model/model_generator" and "rails/model_generator".
328
+ def self.namespaces_to_paths(namespaces) #:nodoc:
329
+ paths = []
330
+ namespaces.each do |namespace|
331
+ pieces = namespace.split(":")
332
+ paths << pieces.dup.push(pieces.last).join("/")
333
+ paths << pieces.join("/")
334
+ end
335
+ paths.uniq!
336
+ paths
337
+ end
338
+ end
339
+ end
data/lib/rails/info.rb ADDED
@@ -0,0 +1,116 @@
1
+ require "cgi"
2
+
3
+ module Rails
4
+ module Info
5
+ mattr_accessor :properties
6
+ class << (@@properties = [])
7
+ def names
8
+ map {|val| val.first }
9
+ end
10
+
11
+ def value_for(property_name)
12
+ if property = assoc(property_name)
13
+ property.last
14
+ end
15
+ end
16
+ end
17
+
18
+ class << self #:nodoc:
19
+ def property(name, value = nil)
20
+ value ||= yield
21
+ properties << [name, value] if value
22
+ rescue Exception
23
+ end
24
+
25
+ def frameworks
26
+ %w( active_record action_pack active_resource action_mailer active_support )
27
+ end
28
+
29
+ def framework_version(framework)
30
+ if Object.const_defined?(framework.classify)
31
+ require "#{framework}/version"
32
+ "#{framework.classify}::VERSION::STRING".constantize
33
+ end
34
+ end
35
+
36
+ def to_s
37
+ column_width = properties.names.map {|name| name.length}.max
38
+ info = properties.map do |name, value|
39
+ value = value.join(", ") if value.is_a?(Array)
40
+ "%-#{column_width}s %s" % [name, value]
41
+ end
42
+ info.unshift "About your application's environment"
43
+ info * "\n"
44
+ end
45
+
46
+ alias inspect to_s
47
+
48
+ def to_html
49
+ (table = '<table>').tap do
50
+ properties.each do |(name, value)|
51
+ table << %(<tr><td class="name">#{CGI.escapeHTML(name.to_s)}</td>)
52
+ formatted_value = if value.kind_of?(Array)
53
+ "<ul>" + value.map { |v| "<li>#{CGI.escapeHTML(v.to_s)}</li>" }.join + "</ul>"
54
+ else
55
+ CGI.escapeHTML(value.to_s)
56
+ end
57
+ table << %(<td class="value">#{formatted_value}</td></tr>)
58
+ end
59
+ table << '</table>'
60
+ end
61
+ end
62
+ end
63
+
64
+ # The Ruby version and platform, e.g. "1.8.2 (powerpc-darwin8.2.0)".
65
+ property 'Ruby version', "#{RUBY_VERSION} (#{RUBY_PLATFORM})"
66
+
67
+ # The RubyGems version, if it's installed.
68
+ property 'RubyGems version' do
69
+ Gem::RubyGemsVersion
70
+ end
71
+
72
+ property 'Rack version' do
73
+ ::Rack.release
74
+ end
75
+
76
+ # The Rails version.
77
+ property 'Rails version' do
78
+ Rails::VERSION::STRING
79
+ end
80
+
81
+ property 'JavaScript Runtime' do
82
+ ExecJS.runtime.name
83
+ end
84
+
85
+ # Versions of each Rails framework (Active Record, Action Pack,
86
+ # Active Resource, Action Mailer, and Active Support).
87
+ frameworks.each do |framework|
88
+ property "#{framework.titlecase} version" do
89
+ framework_version(framework)
90
+ end
91
+ end
92
+
93
+ property 'Middleware' do
94
+ Rails.configuration.middleware.map(&:inspect)
95
+ end
96
+
97
+ # The application's location on the filesystem.
98
+ property 'Application root' do
99
+ File.expand_path(Rails.root)
100
+ end
101
+
102
+ # The current Rails environment (development, test, or production).
103
+ property 'Environment' do
104
+ Rails.env
105
+ end
106
+
107
+ # The name of the database adapter for the current environment.
108
+ property 'Database adapter' do
109
+ ActiveRecord::Base.configurations[Rails.env]['adapter']
110
+ end
111
+
112
+ property 'Database schema version' do
113
+ ActiveRecord::Migrator.current_version rescue nil
114
+ end
115
+ end
116
+ end
@@ -0,0 +1,15 @@
1
+ class Rails::InfoController < ActionController::Base
2
+ def properties
3
+ if consider_all_requests_local? || request.local?
4
+ render :inline => Rails::Info.to_html
5
+ else
6
+ render :text => '<p>For security purposes, this information is only available to local requests.</p>', :status => :forbidden
7
+ end
8
+ end
9
+
10
+ protected
11
+
12
+ def consider_all_requests_local?
13
+ Rails.application.config.consider_all_requests_local
14
+ end
15
+ end
@@ -0,0 +1,89 @@
1
+ require 'tsort'
2
+
3
+ module Rails
4
+ module Initializable
5
+ def self.included(base)
6
+ base.extend ClassMethods
7
+ end
8
+
9
+ class Initializer
10
+ attr_reader :name, :block
11
+
12
+ def initialize(name, context, options, &block)
13
+ options[:group] ||= :default
14
+ @name, @context, @options, @block = name, context, options, block
15
+ end
16
+
17
+ def before
18
+ @options[:before]
19
+ end
20
+
21
+ def after
22
+ @options[:after]
23
+ end
24
+
25
+ def belongs_to?(group)
26
+ @options[:group] == group || @options[:group] == :all
27
+ end
28
+
29
+ def run(*args)
30
+ @context.instance_exec(*args, &block)
31
+ end
32
+
33
+ def bind(context)
34
+ return self if @context
35
+ Initializer.new(@name, context, @options, &block)
36
+ end
37
+ end
38
+
39
+ class Collection < Array
40
+ include TSort
41
+
42
+ alias :tsort_each_node :each
43
+ def tsort_each_child(initializer, &block)
44
+ select { |i| i.before == initializer.name || i.name == initializer.after }.each(&block)
45
+ end
46
+
47
+ def +(other)
48
+ Collection.new(to_a + other.to_a)
49
+ end
50
+ end
51
+
52
+ def run_initializers(group=:default, *args)
53
+ return if instance_variable_defined?(:@ran)
54
+ initializers.tsort.each do |initializer|
55
+ initializer.run(*args) if initializer.belongs_to?(group)
56
+ end
57
+ @ran = true
58
+ end
59
+
60
+ def initializers
61
+ @initializers ||= self.class.initializers_for(self)
62
+ end
63
+
64
+ module ClassMethods
65
+ def initializers
66
+ @initializers ||= Collection.new
67
+ end
68
+
69
+ def initializers_chain
70
+ initializers = Collection.new
71
+ ancestors.reverse_each do |klass|
72
+ next unless klass.respond_to?(:initializers)
73
+ initializers = initializers + klass.initializers
74
+ end
75
+ initializers
76
+ end
77
+
78
+ def initializers_for(binding)
79
+ Collection.new(initializers_chain.map { |i| i.bind(binding) })
80
+ end
81
+
82
+ def initializer(name, opts = {}, &blk)
83
+ raise ArgumentError, "A block must be passed when defining an initializer" unless blk
84
+ opts[:after] ||= initializers.last.name unless initializers.empty? || initializers.find { |i| i.name == opts[:before] }
85
+ initializers << Initializer.new(name, nil, opts, &blk)
86
+ end
87
+ end
88
+ end
89
+ end