middleman-core 3.1.0.rc.2 → 3.1.0.rc.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (232) hide show
  1. checksums.yaml +4 -4
  2. data/.simplecov +2 -1
  3. data/features/capture_html.feature +18 -0
  4. data/features/content_for.feature +3 -3
  5. data/features/v4_extension_callbacks.feature +8 -0
  6. data/fixtures/capture-html-app/config.rb +7 -0
  7. data/fixtures/capture-html-app/source/capture_html_erb.html.erb +5 -0
  8. data/fixtures/capture-html-app/source/capture_html_haml.html.haml +4 -0
  9. data/fixtures/capture-html-app/source/capture_html_slim.html.slim +4 -0
  10. data/fixtures/capture-html-app/source/layouts/capture_html.erb +4 -0
  11. data/fixtures/content-for-app/source/content_for_erb.html.erb +1 -1
  12. data/fixtures/content-for-app/source/content_for_haml.html.haml +1 -1
  13. data/fixtures/content-for-app/source/content_for_slim.html.slim +2 -1
  14. data/fixtures/v4-extension-callbacks/config.rb +26 -0
  15. data/fixtures/v4-extension-callbacks/source/index.html.erb +2 -0
  16. data/lib/middleman-core/core_extensions/extensions.rb +6 -1
  17. data/lib/middleman-core/core_extensions/file_watcher.rb +1 -0
  18. data/lib/middleman-core/core_extensions/rendering.rb +1 -2
  19. data/lib/middleman-core/core_extensions/request.rb +2 -2
  20. data/lib/middleman-core/extensions.rb +21 -0
  21. data/lib/middleman-core/meta_pages/sitemap_resource.rb +4 -1
  22. data/lib/middleman-core/version.rb +1 -1
  23. data/lib/middleman-more/core_extensions/default_helpers.rb +17 -3
  24. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/.document +0 -0
  25. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/.gitignore +0 -0
  26. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/.yardopts +0 -0
  27. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/LICENSE.txt +0 -0
  28. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/README.rdoc +0 -0
  29. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/Rakefile +0 -0
  30. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/bin/padrino +0 -0
  31. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/lib/padrino-core.rb +58 -4
  32. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/lib/padrino-core/application.rb +40 -16
  33. data/lib/vendored-middleman-deps/padrino-core-0.11.2/lib/padrino-core/application/flash.rb +229 -0
  34. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/lib/padrino-core/application/rendering.rb +39 -11
  35. data/lib/vendored-middleman-deps/padrino-core-0.11.2/lib/padrino-core/application/rendering/extensions/erubis.rb +55 -0
  36. data/lib/vendored-middleman-deps/padrino-core-0.11.2/lib/padrino-core/application/rendering/extensions/haml.rb +26 -0
  37. data/lib/vendored-middleman-deps/padrino-core-0.11.2/lib/padrino-core/application/rendering/extensions/slim.rb +14 -0
  38. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/lib/padrino-core/application/routing.rb +133 -37
  39. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/lib/padrino-core/application/showexceptions.rb +0 -0
  40. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/lib/padrino-core/caller.rb +0 -0
  41. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/lib/padrino-core/cli/adapter.rb +0 -0
  42. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/lib/padrino-core/cli/base.rb +41 -38
  43. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/lib/padrino-core/cli/console.rb +0 -0
  44. data/lib/vendored-middleman-deps/padrino-core-0.11.2/lib/padrino-core/cli/rake.rb +47 -0
  45. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/lib/padrino-core/cli/rake_tasks.rb +9 -14
  46. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/lib/padrino-core/command.rb +0 -0
  47. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/lib/padrino-core/images/404.png +0 -0
  48. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/lib/padrino-core/images/500.png +0 -0
  49. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/lib/padrino-core/loader.rb +23 -9
  50. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/lib/padrino-core/locale/cs.yml +0 -0
  51. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/lib/padrino-core/locale/da.yml +0 -0
  52. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/lib/padrino-core/locale/de.yml +6 -6
  53. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/lib/padrino-core/locale/en.yml +0 -0
  54. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/lib/padrino-core/locale/es.yml +0 -0
  55. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/lib/padrino-core/locale/fr.yml +1 -1
  56. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/lib/padrino-core/locale/hu.yml +0 -0
  57. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/lib/padrino-core/locale/it.yml +0 -0
  58. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/lib/padrino-core/locale/ja.yml +0 -0
  59. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/lib/padrino-core/locale/lv.yml +0 -0
  60. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/lib/padrino-core/locale/nl.yml +0 -0
  61. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/lib/padrino-core/locale/no.yml +0 -0
  62. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/lib/padrino-core/locale/pl.yml +0 -0
  63. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/lib/padrino-core/locale/pt_br.yml +0 -0
  64. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/lib/padrino-core/locale/ro.yml +0 -0
  65. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/lib/padrino-core/locale/ru.yml +1 -1
  66. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/lib/padrino-core/locale/sv.yml +0 -0
  67. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/lib/padrino-core/locale/tr.yml +0 -0
  68. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/lib/padrino-core/locale/uk.yml +0 -0
  69. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/lib/padrino-core/locale/zh_cn.yml +11 -11
  70. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/lib/padrino-core/locale/zh_tw.yml +0 -0
  71. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/lib/padrino-core/logger.rb +48 -32
  72. data/lib/vendored-middleman-deps/padrino-core-0.11.2/lib/padrino-core/module.rb +58 -0
  73. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/lib/padrino-core/mounter.rb +15 -5
  74. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/lib/padrino-core/reloader.rb +139 -52
  75. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/lib/padrino-core/router.rb +0 -0
  76. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/lib/padrino-core/server.rb +5 -5
  77. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/lib/padrino-core/support_lite.rb +59 -6
  78. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/lib/padrino-core/tasks.rb +0 -0
  79. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/lib/padrino-core/version.rb +1 -1
  80. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/padrino-core.gemspec +10 -5
  81. data/lib/vendored-middleman-deps/padrino-core-0.11.2/test/fixtures/app_gem/Gemfile +4 -0
  82. data/lib/vendored-middleman-deps/padrino-core-0.11.2/test/fixtures/app_gem/app/app.rb +3 -0
  83. data/lib/vendored-middleman-deps/padrino-core-0.11.2/test/fixtures/app_gem/app_gem.gemspec +17 -0
  84. data/lib/vendored-middleman-deps/padrino-core-0.11.2/test/fixtures/app_gem/lib/app_gem.rb +7 -0
  85. data/lib/vendored-middleman-deps/padrino-core-0.11.2/test/fixtures/app_gem/lib/app_gem/version.rb +3 -0
  86. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/test/fixtures/apps/.components +0 -0
  87. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/test/fixtures/apps/.gitignore +0 -0
  88. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/test/fixtures/apps/complex.rb +0 -0
  89. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/test/fixtures/apps/simple.rb +0 -0
  90. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/test/fixtures/dependencies/a.rb +0 -0
  91. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/test/fixtures/dependencies/b.rb +0 -0
  92. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/test/fixtures/dependencies/c.rb +0 -0
  93. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/test/fixtures/dependencies/circular/e.rb +0 -0
  94. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/test/fixtures/dependencies/circular/f.rb +0 -0
  95. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/test/fixtures/dependencies/circular/g.rb +0 -0
  96. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/test/fixtures/dependencies/d.rb +0 -0
  97. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/test/helper.rb +0 -0
  98. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/test/mini_shoulda.rb +2 -2
  99. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/test/test_application.rb +38 -21
  100. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/test/test_core.rb +0 -0
  101. data/lib/vendored-middleman-deps/padrino-core-0.11.2/test/test_csrf_protection.rb +80 -0
  102. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/test/test_dependencies.rb +0 -0
  103. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/test/test_filters.rb +70 -0
  104. data/lib/vendored-middleman-deps/padrino-core-0.11.2/test/test_flash.rb +168 -0
  105. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/test/test_locale.rb +0 -0
  106. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/test/test_logger.rb +27 -0
  107. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/test/test_mounter.rb +24 -2
  108. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/test/test_reloader_complex.rb +0 -0
  109. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/test/test_reloader_simple.rb +4 -4
  110. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/test/test_rendering.rb +75 -4
  111. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/test/test_restful_routing.rb +0 -0
  112. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/test/test_router.rb +0 -0
  113. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/test/test_routing.rb +209 -35
  114. data/lib/vendored-middleman-deps/padrino-core-0.11.2/test/test_support_lite.rb +56 -0
  115. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/.document +0 -0
  116. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/.gitignore +0 -0
  117. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/.yardopts +0 -0
  118. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/LICENSE.txt +0 -0
  119. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/README.rdoc +0 -0
  120. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/Rakefile +0 -0
  121. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/lib/padrino-helpers.rb +2 -1
  122. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/lib/padrino-helpers/asset_tag_helpers.rb +58 -66
  123. data/lib/vendored-middleman-deps/padrino-helpers-0.11.2/lib/padrino-helpers/breadcrumb_helpers.rb +171 -0
  124. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/lib/padrino-helpers/form_builder/abstract_form_builder.rb +84 -26
  125. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/lib/padrino-helpers/form_builder/standard_form_builder.rb +0 -0
  126. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/lib/padrino-helpers/form_helpers.rb +94 -19
  127. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/lib/padrino-helpers/format_helpers.rb +9 -5
  128. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/lib/padrino-helpers/locale/cs.yml +0 -0
  129. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/lib/padrino-helpers/locale/da.yml +0 -0
  130. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/lib/padrino-helpers/locale/de.yml +0 -0
  131. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/lib/padrino-helpers/locale/en.yml +0 -0
  132. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/lib/padrino-helpers/locale/es.yml +0 -0
  133. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/lib/padrino-helpers/locale/fr.yml +12 -12
  134. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/lib/padrino-helpers/locale/hu.yml +0 -0
  135. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/lib/padrino-helpers/locale/it.yml +0 -0
  136. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/lib/padrino-helpers/locale/ja.yml +0 -0
  137. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/lib/padrino-helpers/locale/lv.yml +0 -0
  138. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/lib/padrino-helpers/locale/nl.yml +0 -0
  139. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/lib/padrino-helpers/locale/no.yml +0 -0
  140. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/lib/padrino-helpers/locale/pl.yml +0 -0
  141. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/lib/padrino-helpers/locale/pt_br.yml +2 -2
  142. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/lib/padrino-helpers/locale/ro.yml +0 -0
  143. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/lib/padrino-helpers/locale/ru.yml +0 -0
  144. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/lib/padrino-helpers/locale/sv.yml +0 -0
  145. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/lib/padrino-helpers/locale/tr.yml +0 -0
  146. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/lib/padrino-helpers/locale/uk.yml +0 -0
  147. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/lib/padrino-helpers/locale/zh_cn.yml +13 -14
  148. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/lib/padrino-helpers/locale/zh_tw.yml +0 -0
  149. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/lib/padrino-helpers/number_helpers.rb +0 -0
  150. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/lib/padrino-helpers/output_helpers.rb +45 -5
  151. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/lib/padrino-helpers/output_helpers/abstract_handler.rb +0 -0
  152. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/lib/padrino-helpers/output_helpers/erb_handler.rb +3 -3
  153. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/lib/padrino-helpers/output_helpers/haml_handler.rb +0 -0
  154. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/lib/padrino-helpers/output_helpers/slim_handler.rb +6 -7
  155. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/lib/padrino-helpers/render_helpers.rb +2 -2
  156. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/lib/padrino-helpers/tag_helpers.rb +34 -6
  157. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/lib/padrino-helpers/translation_helpers.rb +0 -0
  158. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/padrino-helpers.gemspec +0 -0
  159. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/fixtures/markup_app/app.rb +13 -6
  160. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/fixtures/markup_app/views/capture_concat.erb +2 -2
  161. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/fixtures/markup_app/views/capture_concat.haml +2 -2
  162. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/fixtures/markup_app/views/capture_concat.slim +4 -5
  163. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/fixtures/markup_app/views/content_for.erb +0 -0
  164. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/fixtures/markup_app/views/content_for.haml +0 -0
  165. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/fixtures/markup_app/views/content_for.slim +4 -4
  166. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/fixtures/markup_app/views/content_tag.erb +0 -0
  167. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/fixtures/markup_app/views/content_tag.haml +0 -0
  168. data/lib/vendored-middleman-deps/padrino-helpers-0.11.2/test/fixtures/markup_app/views/content_tag.slim +9 -0
  169. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/fixtures/markup_app/views/current_engine.erb +0 -0
  170. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/fixtures/markup_app/views/current_engine.haml +1 -1
  171. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/fixtures/markup_app/views/current_engine.slim +0 -0
  172. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/fixtures/markup_app/views/fields_for.erb +0 -0
  173. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/fixtures/markup_app/views/fields_for.haml +0 -0
  174. data/lib/vendored-middleman-deps/padrino-helpers-0.11.2/test/fixtures/markup_app/views/fields_for.slim +15 -0
  175. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/fixtures/markup_app/views/form_for.erb +0 -0
  176. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/fixtures/markup_app/views/form_for.haml +0 -0
  177. data/lib/vendored-middleman-deps/padrino-helpers-0.11.2/test/fixtures/markup_app/views/form_for.slim +59 -0
  178. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/fixtures/markup_app/views/form_tag.erb +0 -0
  179. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/fixtures/markup_app/views/form_tag.haml +0 -0
  180. data/lib/vendored-middleman-deps/padrino-helpers-0.11.2/test/fixtures/markup_app/views/form_tag.slim +70 -0
  181. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/fixtures/markup_app/views/link_to.erb +0 -0
  182. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/fixtures/markup_app/views/link_to.haml +0 -0
  183. data/lib/vendored-middleman-deps/padrino-helpers-0.11.2/test/fixtures/markup_app/views/link_to.slim +4 -0
  184. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/fixtures/markup_app/views/mail_to.erb +0 -0
  185. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/fixtures/markup_app/views/mail_to.haml +0 -0
  186. data/lib/vendored-middleman-deps/padrino-helpers-0.11.2/test/fixtures/markup_app/views/mail_to.slim +3 -0
  187. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/fixtures/markup_app/views/meta_tag.erb +0 -0
  188. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/fixtures/markup_app/views/meta_tag.haml +0 -0
  189. data/lib/vendored-middleman-deps/padrino-helpers-0.11.2/test/fixtures/markup_app/views/meta_tag.slim +3 -0
  190. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/fixtures/markup_app/views/partials/_erb.erb +0 -0
  191. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/fixtures/markup_app/views/partials/_haml.haml +0 -0
  192. data/lib/vendored-middleman-deps/padrino-helpers-0.11.2/test/fixtures/markup_app/views/partials/_slim.slim +1 -0
  193. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/fixtures/markup_app/views/simple_partial.erb +0 -0
  194. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/fixtures/markup_app/views/simple_partial.haml +0 -0
  195. data/lib/vendored-middleman-deps/padrino-helpers-0.11.2/test/fixtures/markup_app/views/simple_partial.slim +1 -0
  196. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/fixtures/render_app/app.rb +7 -0
  197. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/fixtures/render_app/views/current_engine.haml +0 -0
  198. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/fixtures/render_app/views/current_engines/_erb.erb +0 -0
  199. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/fixtures/render_app/views/current_engines/_haml.haml +0 -0
  200. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/fixtures/render_app/views/current_engines/_slim.slim +0 -0
  201. data/lib/vendored-middleman-deps/padrino-helpers-0.11.2/test/fixtures/render_app/views/double_capture_erb.erb +3 -0
  202. data/lib/vendored-middleman-deps/padrino-helpers-0.11.2/test/fixtures/render_app/views/double_capture_haml.haml +2 -0
  203. data/lib/vendored-middleman-deps/padrino-helpers-0.11.2/test/fixtures/render_app/views/double_capture_slim.slim +2 -0
  204. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/fixtures/render_app/views/erb/test.erb +0 -0
  205. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/fixtures/render_app/views/explicit_engine.haml +0 -0
  206. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/fixtures/render_app/views/haml/test.haml +0 -0
  207. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/fixtures/render_app/views/template/_user.haml +0 -0
  208. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/fixtures/render_app/views/template/haml_template.haml +0 -0
  209. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/fixtures/render_app/views/template/some_template.haml +0 -0
  210. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/helper.rb +1 -0
  211. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/test_asset_tag_helpers.rb +24 -5
  212. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/test_form_builder.rb +41 -1
  213. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/test_form_helpers.rb +36 -0
  214. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/test_format_helpers.rb +14 -0
  215. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/test_locale.rb +0 -0
  216. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/test_number_helpers.rb +0 -0
  217. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/test_output_helpers.rb +5 -3
  218. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/test_render_helpers.rb +18 -0
  219. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/test_tag_helpers.rb +11 -0
  220. data/middleman-core.gemspec +1 -1
  221. metadata +218 -184
  222. data/lib/vendored-middleman-deps/padrino-core-0.10.7/lib/padrino-core/cli/rake.rb +0 -25
  223. data/lib/vendored-middleman-deps/padrino-helpers-0.10.7/test/fixtures/markup_app/views/content_tag.slim +0 -9
  224. data/lib/vendored-middleman-deps/padrino-helpers-0.10.7/test/fixtures/markup_app/views/fields_for.slim +0 -15
  225. data/lib/vendored-middleman-deps/padrino-helpers-0.10.7/test/fixtures/markup_app/views/form_for.slim +0 -59
  226. data/lib/vendored-middleman-deps/padrino-helpers-0.10.7/test/fixtures/markup_app/views/form_tag.slim +0 -70
  227. data/lib/vendored-middleman-deps/padrino-helpers-0.10.7/test/fixtures/markup_app/views/link_to.slim +0 -4
  228. data/lib/vendored-middleman-deps/padrino-helpers-0.10.7/test/fixtures/markup_app/views/mail_to.slim +0 -3
  229. data/lib/vendored-middleman-deps/padrino-helpers-0.10.7/test/fixtures/markup_app/views/meta_tag.slim +0 -3
  230. data/lib/vendored-middleman-deps/padrino-helpers-0.10.7/test/fixtures/markup_app/views/partials/_slim.slim +0 -1
  231. data/lib/vendored-middleman-deps/padrino-helpers-0.10.7/test/fixtures/markup_app/views/simple_partial.slim +0 -1
  232. data/spec/middleman-core/sitemap_spec.rb +0 -0
@@ -0,0 +1,58 @@
1
+ module Padrino
2
+ module Module
3
+ attr_accessor :root
4
+
5
+ ##
6
+ # Register this module as being loaded from a gem. This automatically
7
+ # sets the root and therefore the dependency paths correctly.
8
+ #
9
+ # @param [String] name
10
+ # The name of the gem. Has to be the name as stated in the gemspec.
11
+ #
12
+ # @returns the gems root.
13
+ def gem!(name)
14
+ self.root = Padrino.gem(name, self)
15
+ end
16
+
17
+ ##
18
+ # Helper method for file references within a Padrino module.
19
+ #
20
+ # @param [Array<String>] args
21
+ # The directories to join to {Module.root}.
22
+ #
23
+ # @return [String]
24
+ # The absolute path.
25
+ #
26
+ # @example
27
+ # module MyModule
28
+ # extend Padrino::Module
29
+ # gem! 'my_gem'
30
+ # end
31
+ # Module.root!
32
+ def root(*args)
33
+ File.expand_path(File.join(@root, *args))
34
+ end
35
+
36
+ ##
37
+ # Returns the list of path globs to load as dependencies
38
+ # Appends custom dependency patterns to the be loaded for Padrino.
39
+ #
40
+ # @return [Array<String>]
41
+ # The dependency paths.
42
+ #
43
+ # @example
44
+ # module MyModule
45
+ # extend Padrino::Module
46
+ # gem! 'my_gem'
47
+ # end
48
+ #
49
+ # Module.dependency_paths << "#{MyModule.root}/uploaders/*.rb"
50
+ #
51
+ def dependency_paths
52
+ [
53
+ "#{root}/lib/**/*.rb", "#{root}/shared/lib/**/*.rb",
54
+ "#{root}/models/**/*.rb", "#{root}/shared/models/**/*.rb"
55
+ ]
56
+ end
57
+ end
58
+ end
@@ -22,10 +22,12 @@ module Padrino
22
22
  # @option options [Symbol] :app_file (Automatically detected)
23
23
  # @option options [Symbol] :app_obj (Detected)
24
24
  # @option options [Symbol] :app_root (Directory of :app_file)
25
+ # @option options [Symbol] :gem The gem to load the app from (Detected from name)
25
26
  #
26
27
  def initialize(name, options={})
27
28
  @name = name.to_s
28
29
  @app_class = options[:app_class] || @name.camelize
30
+ @gem = options[:gem] || @app_class.split("::").first.underscore
29
31
  @app_file = options[:app_file] || locate_app_file
30
32
  @app_obj = options[:app_obj] || app_constant || locate_app_object
31
33
  ensure_app_file! || ensure_app_object!
@@ -104,11 +106,12 @@ module Padrino
104
106
  #
105
107
  def named_routes
106
108
  app_obj.routes.map { |route|
107
- name_array = "(#{route.named.to_s.split("_").map { |piece| %Q[:#{piece}] }.join(", ")})"
108
- request_method = route.conditions[:request_method][0]
109
- full_path = File.join(uri_root, route.original_path)
110
- next if route.named.blank? || request_method == 'HEAD'
111
- OpenStruct.new(:verb => request_method, :identifier => route.named, :name => name_array, :path => full_path)
109
+ name_array = "(#{route.name.to_s.split("_").map { |piece| %Q[:#{piece}] }.join(", ")})"
110
+ request_method = route.request_methods.first
111
+ next if route.name.blank? || request_method == 'HEAD'
112
+ original_path = route.original_path.is_a?(Regexp) ? route.original_path.inspect : route.original_path
113
+ full_path = File.join(uri_root, original_path)
114
+ OpenStruct.new(:verb => request_method, :identifier => route.name, :name => name_array, :path => full_path)
112
115
  }.compact
113
116
  end
114
117
 
@@ -158,6 +161,13 @@ module Padrino
158
161
  candidates << app_constant.app_file if app_constant.respond_to?(:app_file) && File.exist?(app_constant.app_file.to_s)
159
162
  candidates << Padrino.first_caller if File.identical?(Padrino.first_caller.to_s, Padrino.called_from.to_s)
160
163
  candidates << Padrino.mounted_root(name.downcase, "app.rb")
164
+ simple_name = name.split("::").last.downcase
165
+ mod_name = name.split("::")[0..-2].join("::")
166
+ Padrino.modules.each do |mod|
167
+ if mod.name == mod_name
168
+ candidates << mod.root(simple_name, "app.rb")
169
+ end
170
+ end
161
171
  candidates << Padrino.root("app", "app.rb")
162
172
  candidates.find { |candidate| File.exist?(candidate) }
163
173
  end
@@ -33,7 +33,7 @@ module Padrino
33
33
  # Specified constants can be excluded from the code unloading process.
34
34
  #
35
35
  def exclude_constants
36
- @_exclude_constants ||= []
36
+ @_exclude_constants ||= Set.new
37
37
  end
38
38
 
39
39
  ##
@@ -41,7 +41,7 @@ module Padrino
41
41
  # Default included constants are: [none]
42
42
  #
43
43
  def include_constants
44
- @_include_constants ||= []
44
+ @_include_constants ||= Set.new
45
45
  end
46
46
 
47
47
  ##
@@ -51,7 +51,7 @@ module Padrino
51
51
  # Detect changed files
52
52
  rotation do |file, mtime|
53
53
  # Retrive the last modified time
54
- new_file = MTIMES[file].nil?
54
+ new_file = MTIMES[file].nil?
55
55
  previous_mtime = MTIMES[file] ||= mtime
56
56
  logger.devel "Detected a new file #{file}" if new_file
57
57
  # We skip to next file if it is not new and not modified
@@ -74,15 +74,9 @@ module Padrino
74
74
  # Remove files and classes loaded with stat
75
75
  #
76
76
  def clear!
77
- MTIMES.clear
78
- LOADED_CLASSES.each do |file, klasses|
79
- klasses.each { |klass| remove_constant(klass) }
80
- LOADED_CLASSES.delete(file)
81
- end
82
- LOADED_FILES.each do |file, dependencies|
83
- dependencies.each { |dependency| $LOADED_FEATURES.delete(dependency) }
84
- $LOADED_FEATURES.delete(file)
85
- end
77
+ clear_modification_times
78
+ clear_loaded_classes
79
+ clear_loaded_files_and_features
86
80
  end
87
81
 
88
82
  ##
@@ -103,67 +97,59 @@ module Padrino
103
97
  # We lock dependencies sets to prevent reloading of protected constants
104
98
  #
105
99
  def lock!
106
- klasses = ObjectSpace.classes.map { |klass| klass._orig_klass_name.split('::')[0] }.uniq
100
+ klasses = ObjectSpace.classes do |klass|
101
+ klass._orig_klass_name.split('::')[0]
102
+ end
103
+
107
104
  klasses = klasses | Padrino.mounted_apps.map { |app| app.app_class }
108
- Padrino::Reloader.exclude_constants.concat(klasses)
105
+ Padrino::Reloader.exclude_constants.merge(klasses)
109
106
  end
110
107
 
111
108
  ##
112
109
  # A safe Kernel::require which issues the necessary hooks depending on results
113
110
  #
114
111
  def safe_load(file, options={})
115
- began_at = Time.now
116
- force, file = options[:force], figure_path(file)
112
+ began_at = Time.now
113
+ force = options[:force]
114
+ file = figure_path(file)
115
+ reload = should_reload?(file)
116
+ m_time = modification_time(file)
117
117
 
118
- # Check if file was changed or if force a reload
119
- reload = MTIMES[file] && File.mtime(file) > MTIMES[file]
120
- return if !force && !reload && MTIMES[file]
118
+ return if !force && m_time && !reload
121
119
 
122
- # Removes all classes declared in the specified file
123
- if klasses = LOADED_CLASSES.delete(file)
124
- klasses.each { |klass| remove_constant(klass) }
125
- end
126
-
127
- # Remove all loaded fatures with our file
128
- if features = LOADED_FILES[file]
129
- features.each { |feature| $LOADED_FEATURES.delete(feature) }
130
- end
120
+ remove_loaded_file_classes(file)
121
+ remove_loaded_file_features(file)
131
122
 
132
123
  # Duplicate objects and loaded features before load file
133
- klasses = ObjectSpace.classes.dup
134
- files = $LOADED_FEATURES.dup
124
+ klasses = ObjectSpace.classes
125
+ files = Set.new($LOADED_FEATURES.dup)
135
126
 
136
- # Now we can reload dependencies of our file
137
- if features = LOADED_FILES.delete(file)
138
- features.each { |feature| safe_load(feature, :force => true) }
139
- end
127
+ reload_deps_of_file(file)
140
128
 
141
129
  # And finally load the specified file
142
130
  begin
143
131
  logger.devel :loading, began_at, file if !reload
144
132
  logger.debug :reload, began_at, file if reload
145
- $LOADED_FEATURES.delete(file)
146
- verbosity_was, $-v = $-v, nil
133
+
134
+ $LOADED_FEATURES.delete(file) if files.include?(file)
135
+ Padrino::Utils.silence_output
147
136
  loaded = false
148
137
  require(file)
149
138
  loaded = true
150
- MTIMES[file] = File.mtime(file)
139
+ update_modification_time(file)
151
140
  rescue SyntaxError => e
152
141
  logger.error "Cannot require #{file} due to a syntax error: #{e.message}"
153
142
  ensure
154
- $-v = verbosity_was
155
- new_constants = (ObjectSpace.classes - klasses).uniq
143
+ Padrino::Utils.unsilence_output
144
+ new_constants = ObjectSpace.new_classes(klasses)
156
145
  if loaded
157
- # Store the file details
158
- LOADED_CLASSES[file] = new_constants
159
- LOADED_FILES[file] = ($LOADED_FEATURES - files - [file]).uniq
160
- # Track only features in our Padrino.root
161
- LOADED_FILES[file].delete_if { |feature| !in_root?(feature) }
146
+ process_loaded_file(:file => file,
147
+ :constants => new_constants,
148
+ :files => files)
162
149
  else
163
150
  logger.devel "Failed to load #{file}; removing partially defined constants"
164
- new_constants.each { |klass| remove_constant(klass) }
151
+ unload_constants(new_constants)
165
152
  end
166
-
167
153
  end
168
154
  end
169
155
 
@@ -183,8 +169,8 @@ module Padrino
183
169
  # Removes the specified class and constant.
184
170
  #
185
171
  def remove_constant(const)
186
- return if exclude_constants.compact.uniq.any? { |c| const._orig_klass_name.index(c) == 0 } &&
187
- !include_constants.compact.uniq.any? { |c| const._orig_klass_name.index(c) == 0 }
172
+ return if exclude_constants.any? { |c| const._orig_klass_name.index(c) == 0 } &&
173
+ !include_constants.any? { |c| const._orig_klass_name.index(c) == 0 }
188
174
  begin
189
175
  parts = const.to_s.sub(/^::(Object)?/, 'Object::').split('::')
190
176
  object = parts.pop
@@ -195,6 +181,101 @@ module Padrino
195
181
  end
196
182
 
197
183
  private
184
+
185
+ ###
186
+ # Clear instance variables that keep track of
187
+ # loaded features/files/mtimes
188
+ #
189
+ def clear_modification_times
190
+ MTIMES.clear
191
+ end
192
+
193
+ def clear_loaded_classes
194
+ LOADED_CLASSES.each do |file, klasses|
195
+ klasses.each { |klass| remove_constant(klass) }
196
+ LOADED_CLASSES.delete(file)
197
+ end
198
+ end
199
+
200
+ def clear_loaded_files_and_features
201
+ LOADED_FILES.each do |file, dependencies|
202
+ dependencies.each { |dependency| $LOADED_FEATURES.delete(dependency) }
203
+ $LOADED_FEATURES.delete(file)
204
+ end
205
+ end
206
+
207
+ ###
208
+ # Macro for mtime query
209
+ #
210
+ def modification_time(file)
211
+ MTIMES[file]
212
+ end
213
+
214
+ ###
215
+ # Macro for mtime update
216
+ #
217
+ def update_modification_time(file)
218
+ MTIMES[file] = File.mtime(file)
219
+ end
220
+
221
+ ###
222
+ # Tracks loaded file features/classes/constants
223
+ #
224
+ def process_loaded_file(*args)
225
+ options = args.extract_options!
226
+ new_constants = options[:constants]
227
+ files = options[:files]
228
+ file = options[:file]
229
+
230
+ # Store the file details
231
+ LOADED_CLASSES[file] = new_constants
232
+ LOADED_FILES[file] = Set.new($LOADED_FEATURES) - files - [file]
233
+
234
+ # Track only features in our Padrino.root
235
+ LOADED_FILES[file].delete_if { |feature| !in_root?(feature) }
236
+ end
237
+
238
+ ###
239
+ # Unloads all constants in new_constants
240
+ #
241
+ def unload_constants(new_constants)
242
+ new_constants.each { |klass| remove_constant(klass) }
243
+ end
244
+
245
+ ###
246
+ # Safe load dependencies of a file
247
+ #
248
+ def reload_deps_of_file(file)
249
+ if features = LOADED_FILES.delete(file)
250
+ features.each { |feature| safe_load(feature, :force => true) }
251
+ end
252
+ end
253
+
254
+ ##
255
+ # Check if file was changed or if force a reload
256
+ #
257
+ def should_reload?(file)
258
+ MTIMES[file] && File.mtime(file) > MTIMES[file]
259
+ end
260
+
261
+ ##
262
+ # Removes all classes declared in the specified file
263
+ #
264
+ def remove_loaded_file_classes(file)
265
+ if klasses = LOADED_CLASSES.delete(file)
266
+ klasses.each { |klass| remove_constant(klass) }
267
+ end
268
+ end
269
+
270
+ ##
271
+ # Remove all loaded fatures with our file
272
+ #
273
+ def remove_loaded_file_features(file)
274
+ if features = LOADED_FILES[file]
275
+ features.each { |feature| $LOADED_FEATURES.delete(feature) }
276
+ end
277
+ end
278
+
198
279
  ##
199
280
  # Return the mounted_apps providing the app location
200
281
  # Can be an array because in one app.rb we can define multiple Padrino::Appplications
@@ -218,15 +299,21 @@ module Padrino
218
299
  # and monitors them for any changes.
219
300
  #
220
301
  def rotation
221
- files = Padrino.load_paths.map { |path| Dir["#{path}/**/*.rb"] }.flatten
222
- files = files | Padrino.mounted_apps.map { |app| app.app_file }
223
- files = files | Padrino.mounted_apps.map { |app| app.app_obj.dependencies }.flatten
224
- files.uniq.map do |file|
302
+ files_for_rotation.uniq.map do |file|
225
303
  file = File.expand_path(file)
226
304
  next if Padrino::Reloader.exclude.any? { |base| file.index(base) == 0 } || !File.exist?(file)
227
305
  yield file, File.mtime(file)
228
306
  end.compact
229
307
  end
308
+
309
+ ##
310
+ # Creates an array of paths for use in #rotation
311
+ #
312
+ def files_for_rotation
313
+ files = Padrino.load_paths.map { |path| Dir["#{path}/**/*.rb"] }.flatten
314
+ files = files | Padrino.mounted_apps.map { |app| app.app_file }
315
+ files = files | Padrino.mounted_apps.map { |app| app.app_obj.dependencies }.flatten
316
+ end
230
317
  end # self
231
318
 
232
319
  ##
@@ -4,8 +4,8 @@ module Padrino
4
4
  # thin, mongrel, or webrick in that order.
5
5
  #
6
6
  # @example
7
- # Padrino.run! # with these defaults => host: "localhost", port: "3000", adapter: the first found
8
- # Padrino.run!("localhost", "4000", "mongrel") # use => host: "0.0.0.0", port: "3000", adapter: "mongrel"
7
+ # Padrino.run! # with these defaults => host: "127.0.0.1", port: "3000", adapter: the first found
8
+ # Padrino.run!("0.0.0.0", "4000", "mongrel") # use => host: "0.0.0.0", port: "4000", adapter: "mongrel"
9
9
  #
10
10
  def self.run!(options={})
11
11
  Padrino.load!
@@ -17,17 +17,17 @@ module Padrino
17
17
  #
18
18
  class Server < Rack::Server
19
19
  # Server Handlers
20
- Handlers = [:thin, :mongrel, :trinidad, :webrick]
20
+ Handlers = [:thin, :puma, :mongrel, :trinidad, :webrick]
21
21
 
22
22
  # Starts the application on the available server with specified options.
23
23
  def self.start(app, opts={})
24
24
  options = {}.merge(opts) # We use a standard hash instead of Thor::CoreExt::HashWithIndifferentAccess
25
25
  options.symbolize_keys!
26
- options[:Host] = options.delete(:host) || '0.0.0.0'
26
+ options[:Host] = options.delete(:host) || '127.0.0.1'
27
27
  options[:Port] = options.delete(:port) || 3000
28
28
  options[:AccessLog] = []
29
29
  if options[:daemonize]
30
- options[:pid] = options[:pid].blank? ? File.expand_path('tmp/pids/server.pid') : opts[:pid]
30
+ options[:pid] = File.expand_path(options[:pid].blank? ? 'tmp/pids/server.pid' : opts[:pid])
31
31
  FileUtils.mkdir_p(File.dirname(options[:pid]))
32
32
  end
33
33
  options[:server] = detect_rack_handler if options[:server].blank?
@@ -9,6 +9,7 @@ require 'active_support/core_ext/object/blank' # present?
9
9
  require 'active_support/core_ext/array/extract_options' # extract_options
10
10
  require 'active_support/inflector/methods' # constantize
11
11
  require 'active_support/inflector/inflections' # pluralize
12
+ require 'active_support/core_ext/string/output_safety' # SafeBuffer and html_safe
12
13
  require 'active_support/inflections' # load default inflections
13
14
  require 'yaml' unless defined?(YAML) # load yaml for i18n
14
15
  require 'win32console' if RUBY_PLATFORM =~ /(win|m)32/ # ruby color support for win
@@ -110,13 +111,49 @@ end
110
111
 
111
112
  module ObjectSpace
112
113
  class << self
114
+ ##
113
115
  # Returns all the classes in the object space.
114
- def classes
115
- ObjectSpace.each_object(Module).select do |klass|
116
- # Why? Ruby, when you remove a costant dosen't remove it from
117
- # rb_tables, this mean that here we can find classes that was
118
- # removed.
119
- klass.name rescue false
116
+ # Optionally, a block can be passed, for example the following code
117
+ # would return the classes that start with the character "A":
118
+ #
119
+ # ObjectSpace.classes do |klass|
120
+ # if klass.to_s[0] == "A"
121
+ # klass
122
+ # end
123
+ # end
124
+ #
125
+ def classes(&block)
126
+ rs = Set.new
127
+
128
+ ObjectSpace.each_object(Class).each do |klass|
129
+ if block
130
+ if r = block.call(klass)
131
+ # add the returned value if the block returns something
132
+ rs << r
133
+ end
134
+ else
135
+ rs << klass
136
+ end
137
+ end
138
+
139
+ rs
140
+ end
141
+
142
+ ##
143
+ # Returns a list of existing classes that are not included in "snapshot"
144
+ # This method is useful to get the list of new classes that were loaded
145
+ # after an event like requiring a file.
146
+ # Usage:
147
+ #
148
+ # snapshot = ObjectSpace.classes
149
+ # # require a file
150
+ # ObjectSpace.new_classes(snapshot)
151
+ #
152
+ def new_classes(snapshot)
153
+ self.classes do |klass|
154
+ if !snapshot.include?(klass)
155
+ klass
156
+ end
120
157
  end
121
158
  end
122
159
  end
@@ -205,3 +242,19 @@ I18n.load_path += Dir["#{File.dirname(__FILE__)}/locale/*.yml"] if defined?(I18n
205
242
  # Used to determine if this file has already been required
206
243
  #
207
244
  module SupportLite; end
245
+
246
+ module Padrino
247
+ class Utils
248
+ ###
249
+ # Silences output verbosity level so load
250
+ # errors are not visible when safe_load(file)
251
+ #
252
+ def self.silence_output
253
+ @verbosity_level, $-v = $-v, nil
254
+ end
255
+
256
+ def self.unsilence_output
257
+ $-v = @verbosity_level
258
+ end
259
+ end
260
+ end