middleman 2.0.7 → 2.0.8

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 (190) hide show
  1. data/.gitignore +1 -0
  2. data/.travis.yml +0 -1
  3. data/CHANGELOG +8 -0
  4. data/Gemfile +1 -1
  5. data/features/data.feature +6 -1
  6. data/features/markdown.feature +7 -0
  7. data/features/sprockets.feature +11 -1
  8. data/features/sprockets_gems.feature +3 -3
  9. data/fixtures/sprockets-app/source/jquery_include.js +1 -0
  10. data/fixtures/test-app/config.rb +2 -0
  11. data/fixtures/test-app/source/data2.html.liquid +1 -0
  12. data/fixtures/test-app/source/javascripts/multiple_engines.js.coffee.erb +1 -0
  13. data/fixtures/test-app/source/markdown.html.markdown +1 -0
  14. data/lib/middleman.rb +0 -6
  15. data/lib/middleman/base.rb +6 -1
  16. data/lib/middleman/builder.rb +6 -4
  17. data/lib/middleman/core_extensions/data.rb +35 -5
  18. data/lib/middleman/core_extensions/front_matter.rb +9 -2
  19. data/lib/middleman/core_extensions/sprockets.rb +25 -1
  20. data/lib/middleman/renderers/markdown.rb +25 -2
  21. data/lib/middleman/version.rb +1 -1
  22. data/middleman.gemspec +7 -6
  23. metadata +112 -251
  24. data/lib/middleman/vendor/padrino-core-0.10.0/.document +0 -5
  25. data/lib/middleman/vendor/padrino-core-0.10.0/.gitignore +0 -22
  26. data/lib/middleman/vendor/padrino-core-0.10.0/LICENSE +0 -20
  27. data/lib/middleman/vendor/padrino-core-0.10.0/README.rdoc +0 -294
  28. data/lib/middleman/vendor/padrino-core-0.10.0/Rakefile +0 -5
  29. data/lib/middleman/vendor/padrino-core-0.10.0/bin/padrino +0 -9
  30. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core.rb +0 -119
  31. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/application.rb +0 -259
  32. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/application/rendering.rb +0 -228
  33. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/application/routing.rb +0 -821
  34. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/application/showexceptions.rb +0 -18
  35. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/caller.rb +0 -45
  36. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/cli/adapter.rb +0 -24
  37. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/cli/base.rb +0 -152
  38. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/cli/console.rb +0 -20
  39. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/cli/rake.rb +0 -24
  40. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/cli/rake_tasks.rb +0 -59
  41. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/command.rb +0 -27
  42. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/images/404.png +0 -0
  43. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/images/500.png +0 -0
  44. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/loader.rb +0 -182
  45. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/locale/cz.yml +0 -30
  46. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/locale/da.yml +0 -30
  47. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/locale/de.yml +0 -30
  48. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/locale/en.yml +0 -30
  49. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/locale/es.yml +0 -30
  50. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/locale/fr.yml +0 -30
  51. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/locale/hu.yml +0 -30
  52. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/locale/it.yml +0 -37
  53. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/locale/ja.yml +0 -30
  54. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/locale/nl.yml +0 -30
  55. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/locale/no.yml +0 -31
  56. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/locale/pl.yml +0 -30
  57. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/locale/pt_br.yml +0 -37
  58. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/locale/ru.yml +0 -30
  59. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/locale/tr.yml +0 -30
  60. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/locale/uk.yml +0 -30
  61. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/locale/zh_cn.yml +0 -30
  62. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/locale/zh_tw.yml +0 -30
  63. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/logger.rb +0 -344
  64. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/mounter.rb +0 -192
  65. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/reloader.rb +0 -247
  66. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/router.rb +0 -79
  67. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/server.rb +0 -70
  68. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/support_lite.rb +0 -135
  69. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/tasks.rb +0 -23
  70. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/version.rb +0 -15
  71. data/lib/middleman/vendor/padrino-core-0.10.0/padrino-core.gemspec +0 -38
  72. data/lib/middleman/vendor/padrino-core-0.10.0/test/fixtures/apps/.components +0 -6
  73. data/lib/middleman/vendor/padrino-core-0.10.0/test/fixtures/apps/.gitignore +0 -7
  74. data/lib/middleman/vendor/padrino-core-0.10.0/test/fixtures/apps/complex.rb +0 -27
  75. data/lib/middleman/vendor/padrino-core-0.10.0/test/fixtures/apps/simple.rb +0 -33
  76. data/lib/middleman/vendor/padrino-core-0.10.0/test/fixtures/dependencies/a.rb +0 -9
  77. data/lib/middleman/vendor/padrino-core-0.10.0/test/fixtures/dependencies/b.rb +0 -4
  78. data/lib/middleman/vendor/padrino-core-0.10.0/test/fixtures/dependencies/c.rb +0 -1
  79. data/lib/middleman/vendor/padrino-core-0.10.0/test/fixtures/dependencies/circular/e.rb +0 -13
  80. data/lib/middleman/vendor/padrino-core-0.10.0/test/fixtures/dependencies/circular/f.rb +0 -2
  81. data/lib/middleman/vendor/padrino-core-0.10.0/test/fixtures/dependencies/circular/g.rb +0 -2
  82. data/lib/middleman/vendor/padrino-core-0.10.0/test/fixtures/dependencies/d.rb +0 -4
  83. data/lib/middleman/vendor/padrino-core-0.10.0/test/helper.rb +0 -101
  84. data/lib/middleman/vendor/padrino-core-0.10.0/test/test_application.rb +0 -83
  85. data/lib/middleman/vendor/padrino-core-0.10.0/test/test_core.rb +0 -79
  86. data/lib/middleman/vendor/padrino-core-0.10.0/test/test_dependencies.rb +0 -44
  87. data/lib/middleman/vendor/padrino-core-0.10.0/test/test_filters.rb +0 -266
  88. data/lib/middleman/vendor/padrino-core-0.10.0/test/test_logger.rb +0 -91
  89. data/lib/middleman/vendor/padrino-core-0.10.0/test/test_mounter.rb +0 -176
  90. data/lib/middleman/vendor/padrino-core-0.10.0/test/test_reloader_complex.rb +0 -66
  91. data/lib/middleman/vendor/padrino-core-0.10.0/test/test_reloader_simple.rb +0 -97
  92. data/lib/middleman/vendor/padrino-core-0.10.0/test/test_rendering.rb +0 -437
  93. data/lib/middleman/vendor/padrino-core-0.10.0/test/test_router.rb +0 -146
  94. data/lib/middleman/vendor/padrino-core-0.10.0/test/test_routing.rb +0 -1491
  95. data/lib/middleman/vendor/padrino-helpers-0.10.0/.document +0 -5
  96. data/lib/middleman/vendor/padrino-helpers-0.10.0/.gitignore +0 -21
  97. data/lib/middleman/vendor/padrino-helpers-0.10.0/LICENSE +0 -20
  98. data/lib/middleman/vendor/padrino-helpers-0.10.0/README.rdoc +0 -239
  99. data/lib/middleman/vendor/padrino-helpers-0.10.0/Rakefile +0 -5
  100. data/lib/middleman/vendor/padrino-helpers-0.10.0/lib/padrino-helpers.rb +0 -51
  101. data/lib/middleman/vendor/padrino-helpers-0.10.0/lib/padrino-helpers/asset_tag_helpers.rb +0 -288
  102. data/lib/middleman/vendor/padrino-helpers-0.10.0/lib/padrino-helpers/form_builder/abstract_form_builder.rb +0 -220
  103. data/lib/middleman/vendor/padrino-helpers-0.10.0/lib/padrino-helpers/form_builder/standard_form_builder.rb +0 -43
  104. data/lib/middleman/vendor/padrino-helpers-0.10.0/lib/padrino-helpers/form_helpers.rb +0 -446
  105. data/lib/middleman/vendor/padrino-helpers-0.10.0/lib/padrino-helpers/format_helpers.rb +0 -260
  106. data/lib/middleman/vendor/padrino-helpers-0.10.0/lib/padrino-helpers/locale/cz.yml +0 -103
  107. data/lib/middleman/vendor/padrino-helpers-0.10.0/lib/padrino-helpers/locale/da.yml +0 -91
  108. data/lib/middleman/vendor/padrino-helpers-0.10.0/lib/padrino-helpers/locale/de.yml +0 -78
  109. data/lib/middleman/vendor/padrino-helpers-0.10.0/lib/padrino-helpers/locale/en.yml +0 -103
  110. data/lib/middleman/vendor/padrino-helpers-0.10.0/lib/padrino-helpers/locale/es.yml +0 -103
  111. data/lib/middleman/vendor/padrino-helpers-0.10.0/lib/padrino-helpers/locale/fr.yml +0 -79
  112. data/lib/middleman/vendor/padrino-helpers-0.10.0/lib/padrino-helpers/locale/hu.yml +0 -103
  113. data/lib/middleman/vendor/padrino-helpers-0.10.0/lib/padrino-helpers/locale/it.yml +0 -85
  114. data/lib/middleman/vendor/padrino-helpers-0.10.0/lib/padrino-helpers/locale/ja.yml +0 -103
  115. data/lib/middleman/vendor/padrino-helpers-0.10.0/lib/padrino-helpers/locale/nl.yml +0 -78
  116. data/lib/middleman/vendor/padrino-helpers-0.10.0/lib/padrino-helpers/locale/no.yml +0 -91
  117. data/lib/middleman/vendor/padrino-helpers-0.10.0/lib/padrino-helpers/locale/pl.yml +0 -95
  118. data/lib/middleman/vendor/padrino-helpers-0.10.0/lib/padrino-helpers/locale/pt_br.yml +0 -103
  119. data/lib/middleman/vendor/padrino-helpers-0.10.0/lib/padrino-helpers/locale/ru.yml +0 -103
  120. data/lib/middleman/vendor/padrino-helpers-0.10.0/lib/padrino-helpers/locale/tr.yml +0 -103
  121. data/lib/middleman/vendor/padrino-helpers-0.10.0/lib/padrino-helpers/locale/uk.yml +0 -103
  122. data/lib/middleman/vendor/padrino-helpers-0.10.0/lib/padrino-helpers/locale/zh_cn.yml +0 -103
  123. data/lib/middleman/vendor/padrino-helpers-0.10.0/lib/padrino-helpers/locale/zh_tw.yml +0 -103
  124. data/lib/middleman/vendor/padrino-helpers-0.10.0/lib/padrino-helpers/number_helpers.rb +0 -273
  125. data/lib/middleman/vendor/padrino-helpers-0.10.0/lib/padrino-helpers/output_helpers.rb +0 -128
  126. data/lib/middleman/vendor/padrino-helpers-0.10.0/lib/padrino-helpers/output_helpers/abstract_handler.rb +0 -103
  127. data/lib/middleman/vendor/padrino-helpers-0.10.0/lib/padrino-helpers/output_helpers/erb_handler.rb +0 -79
  128. data/lib/middleman/vendor/padrino-helpers-0.10.0/lib/padrino-helpers/output_helpers/haml_handler.rb +0 -64
  129. data/lib/middleman/vendor/padrino-helpers-0.10.0/lib/padrino-helpers/output_helpers/slim_handler.rb +0 -82
  130. data/lib/middleman/vendor/padrino-helpers-0.10.0/lib/padrino-helpers/render_helpers.rb +0 -40
  131. data/lib/middleman/vendor/padrino-helpers-0.10.0/lib/padrino-helpers/tag_helpers.rb +0 -59
  132. data/lib/middleman/vendor/padrino-helpers-0.10.0/lib/padrino-helpers/translation_helpers.rb +0 -21
  133. data/lib/middleman/vendor/padrino-helpers-0.10.0/padrino-helpers.gemspec +0 -27
  134. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/app.rb +0 -73
  135. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/capture_concat.erb +0 -14
  136. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/capture_concat.haml +0 -12
  137. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/capture_concat.slim +0 -13
  138. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/content_for.erb +0 -11
  139. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/content_for.haml +0 -9
  140. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/content_for.slim +0 -9
  141. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/content_tag.erb +0 -11
  142. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/content_tag.haml +0 -9
  143. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/content_tag.slim +0 -9
  144. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/current_engine.erb +0 -5
  145. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/current_engine.haml +0 -5
  146. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/current_engine.slim +0 -5
  147. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/fields_for.erb +0 -20
  148. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/fields_for.haml +0 -15
  149. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/fields_for.slim +0 -15
  150. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/form_for.erb +0 -56
  151. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/form_for.haml +0 -47
  152. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/form_for.slim +0 -47
  153. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/form_tag.erb +0 -56
  154. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/form_tag.haml +0 -45
  155. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/form_tag.slim +0 -45
  156. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/link_to.erb +0 -5
  157. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/link_to.haml +0 -4
  158. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/link_to.slim +0 -4
  159. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/mail_to.erb +0 -3
  160. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/mail_to.haml +0 -3
  161. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/mail_to.slim +0 -3
  162. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/meta_tag.erb +0 -3
  163. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/meta_tag.haml +0 -3
  164. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/meta_tag.slim +0 -3
  165. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/partials/_erb.erb +0 -1
  166. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/partials/_haml.haml +0 -1
  167. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/partials/_slim.slim +0 -1
  168. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/simple_partial.erb +0 -1
  169. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/simple_partial.haml +0 -1
  170. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/simple_partial.slim +0 -1
  171. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/render_app/app.rb +0 -45
  172. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/render_app/views/current_engine.haml +0 -5
  173. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/render_app/views/current_engines/_erb.erb +0 -1
  174. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/render_app/views/current_engines/_haml.haml +0 -1
  175. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/render_app/views/current_engines/_slim.slim +0 -1
  176. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/render_app/views/erb/test.erb +0 -1
  177. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/render_app/views/explicit_engine.haml +0 -5
  178. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/render_app/views/haml/test.haml +0 -1
  179. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/render_app/views/template/_user.haml +0 -7
  180. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/render_app/views/template/haml_template.haml +0 -1
  181. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/render_app/views/template/some_template.haml +0 -2
  182. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/helper.rb +0 -78
  183. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/test_asset_tag_helpers.rb +0 -320
  184. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/test_form_builder.rb +0 -998
  185. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/test_form_helpers.rb +0 -645
  186. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/test_format_helpers.rb +0 -227
  187. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/test_number_helpers.rb +0 -136
  188. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/test_output_helpers.rb +0 -133
  189. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/test_render_helpers.rb +0 -69
  190. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/test_tag_helpers.rb +0 -100
@@ -1,259 +0,0 @@
1
- module Padrino
2
- class ApplicationSetupError < RuntimeError #:nodoc:
3
- end
4
-
5
- ##
6
- # Subclasses of this become independent Padrino applications (stemming from Sinatra::Application)
7
- # These subclassed applications can be easily mounted into other Padrino applications as well.
8
- #
9
- class Application < Sinatra::Base
10
- register Padrino::Routing # Support for advanced routing, controllers, url_for
11
-
12
- class << self
13
-
14
- def inherited(base) #:nodoc:
15
- logger.devel "Setup #{base}"
16
- CALLERS_TO_IGNORE.concat(PADRINO_IGNORE_CALLERS)
17
- base.default_configuration!
18
- base.prerequisites.concat([
19
- File.join(base.root, "/models.rb"),
20
- File.join(base.root, "/models/**/*.rb"),
21
- File.join(base.root, "/lib.rb"),
22
- File.join(base.root, "/lib/**/*.rb")
23
- ]).uniq!
24
- Padrino.require_dependencies(base.prerequisites)
25
- super(base) # Loading the subclass inherited method
26
- end
27
-
28
- ##
29
- # Hooks into when a new instance of the application is created
30
- # This is used because putting the configuration into inherited doesn't
31
- # take into account overwritten app settings inside subclassed definitions
32
- # Only performs the setup first time application is initialized.
33
- #
34
- def new(*args, &bk)
35
- setup_application!
36
- logging, logging_was = false, logging
37
- show_exceptions, show_exceptions_was = false, show_exceptions
38
- super(*args, &bk)
39
- ensure
40
- logging, show_exceptions = logging_was, show_exceptions_was
41
- end
42
-
43
- ##
44
- # Reloads the application files from all defined load paths
45
- #
46
- # This method is used from our Padrino Reloader during development mode
47
- # in order to reload the source files.
48
- #
49
- # ==== Examples
50
- #
51
- # MyApp.reload!
52
- #
53
- def reload!
54
- logger.devel "Reloading #{self}"
55
- @_dependencies = nil # Reset dependencies
56
- reset! # Reset sinatra app
57
- reset_routes! # Remove all existing user-defined application routes
58
- Padrino.require_dependencies(self.app_file, :force => true) # Reload the app file
59
- require_dependencies # Reload dependencies
60
- register_initializers # Reload our middlewares
61
- default_filters! # Reload filters
62
- default_errors! # Reload our errors
63
- I18n.reload! if defined?(I18n) # Reload also our translations
64
- end
65
-
66
- ##
67
- # Resets application routes to only routes not defined by the user
68
- #
69
- # ==== Examples
70
- #
71
- # MyApp.reset_routes!
72
- #
73
- def reset_routes!
74
- reset_router!
75
- default_routes!
76
- end
77
-
78
- ##
79
- # Returns the routes of our app.
80
- #
81
- # ==== Examples
82
- #
83
- # MyApp.routes
84
- #
85
- def routes
86
- router.routes
87
- end
88
-
89
- ##
90
- # Setup the application by registering initializers, load paths and logger
91
- # Invoked automatically when an application is first instantiated
92
- #
93
- def setup_application!
94
- return if @_configured
95
- self.register_initializers
96
- self.require_dependencies
97
- self.disable :logging # We need do that as default because Sinatra use commonlogger.
98
- self.default_filters!
99
- self.default_routes!
100
- self.default_errors!
101
- if defined?(I18n)
102
- I18n.load_path << self.locale_path
103
- I18n.reload!
104
- end
105
- @_configured = true
106
- end
107
-
108
- ##
109
- # Run the Padrino app as a self-hosted server using
110
- # Thin, Mongrel or WEBrick (in that order)
111
- #
112
- def run!(options={})
113
- return unless Padrino.load!
114
- Padrino.mount(self.to_s).to("/")
115
- Padrino.run!(options)
116
- end
117
-
118
- ##
119
- # Returns the used $LOAD_PATHS from this application
120
- #
121
- def load_paths
122
- @_load_paths ||= %w(models lib mailers controllers helpers).map { |path| File.join(self.root, path) }
123
- end
124
-
125
- ##
126
- # Returns default list of path globs to load as dependencies
127
- # Appends custom dependency patterns to the be loaded for your Application
128
- #
129
- # ==== Examples
130
- # MyApp.dependencies << "#{Padrino.root}/uploaders/**/*.rb"
131
- # MyApp.dependencies << Padrino.root('other_app', 'controllers.rb')
132
- #
133
- def dependencies
134
- @_dependencies ||= [
135
- "urls.rb", "config/urls.rb", "mailers/*.rb", "mailers.rb",
136
- "controllers/**/*.rb", "controllers.rb", "helpers/**/*.rb", "helpers.rb"
137
- ].map { |file| Dir[File.join(self.root, file)] }.flatten
138
- end
139
-
140
- ##
141
- # An array of file to load before your app.rb, basically are files wich our app depends on.
142
- #
143
- # By default we look for files:
144
- #
145
- # yourapp/models.rb
146
- # yourapp/models/**/*.rb
147
- # yourapp/lib.rb
148
- # yourapp/lib/**/*.rb
149
- #
150
- # ==== Examples
151
- # MyApp.prerequisites << Padrino.root('my_app', 'custom_model.rb')
152
- #
153
- def prerequisites
154
- @_prerequisites ||= []
155
- end
156
-
157
- protected
158
- ##
159
- # Defines default settings for Padrino application
160
- #
161
- def default_configuration!
162
- # Overwriting Sinatra defaults
163
- set :app_file, File.expand_path(caller_files.first || $0) # Assume app file is first caller
164
- set :environment, Padrino.env
165
- set :reload, Proc.new { development? }
166
- set :logging, Proc.new { development? }
167
- set :method_override, true
168
- set :sessions, false
169
- set :public, Proc.new { Padrino.root('public', uri_root) }
170
- set :views, Proc.new { File.join(root, "views") }
171
- set :images_path, Proc.new { File.join(public, "images") }
172
- # Padrino specific
173
- set :uri_root, "/"
174
- set :app_name, self.to_s.underscore.to_sym
175
- set :default_builder, 'StandardFormBuilder'
176
- set :flash, defined?(Rack::Flash)
177
- set :authentication, false
178
- # Padrino locale
179
- set :locale_path, Proc.new { Dir[File.join(self.root, "/locale/**/*.{rb,yml}")] }
180
- # Load the Global Configurations
181
- class_eval(&Padrino.apps_configuration) if Padrino.apps_configuration
182
- end
183
-
184
- ##
185
- # We need to add almost __sinatra__ images.
186
- #
187
- def default_routes!
188
- configure :development do
189
- get '/__sinatra__/:image.png' do
190
- content_type :png
191
- filename = File.dirname(__FILE__) + "/images/#{params[:image]}.png"
192
- send_file filename
193
- end
194
- end
195
- end
196
-
197
- ##
198
- # This filter it's used for know the format of the request, and automatically set the content type.
199
- #
200
- def default_filters!
201
- before do
202
- unless @_content_type
203
- @_content_type = :html
204
- response['Content-Type'] = 'text/html;charset=utf-8'
205
- end
206
- end
207
- end
208
-
209
- ##
210
- # This log errors for production environments
211
- #
212
- def default_errors!
213
- configure :production do
214
- error ::Exception do
215
- boom = env['sinatra.error']
216
- logger.error ["#{boom.class} - #{boom.message}:", *boom.backtrace].join("\n ")
217
- response.status = 500
218
- content_type 'text/html'
219
- '<h1>Internal Server Error</h1>'
220
- end
221
- end
222
- end
223
-
224
- ##
225
- # Requires the Padrino middleware
226
- #
227
- def register_initializers
228
- use Padrino::ShowExceptions if show_exceptions?
229
- use Padrino::Logger::Rack, uri_root if Padrino.logger && logging?
230
- use Padrino::Reloader::Rack if reload?
231
- use Rack::Flash, :sweep => true if flash?
232
- end
233
-
234
- ##
235
- # Requires all files within the application load paths
236
- #
237
- def require_dependencies
238
- Padrino.set_load_paths(*load_paths)
239
- Padrino.require_dependencies(dependencies, :force => true)
240
- end
241
- end # self
242
-
243
- # TODO Remove deprecated render inclusion in a few versions
244
- # Detects if a user is incorrectly using 'render' and warns them about the fix
245
- # In 0.10.0, Padrino::Rendering now has to be explicitly included in the application
246
- def render(*args)
247
- if !defined?(DEFAULT_RENDERING_OPTIONS) && !@_render_included &&
248
- (args.size == 1 || (args.size == 2 && args[0].is_a?(String) && args[1].is_a?(Hash)))
249
- logger.warn "[Deprecation] Please 'register Padrino::Rendering' for each application as shown here:
250
- https://gist.github.com/1d36a35794dbbd664ea4 for 'render' to function as expected"
251
- self.class.instance_eval { register Padrino::Rendering }
252
- @_render_included = true
253
- render(*args)
254
- else # pass through, rendering is valid
255
- super(*args)
256
- end
257
- end # render method
258
- end # Application
259
- end # Padrino
@@ -1,228 +0,0 @@
1
- require 'padrino-core/support_lite' unless defined?(SupportLite)
2
-
3
- module Padrino
4
- ##
5
- # Padrino enhances the Sinatra ‘render’ method to have support for automatic template engine detection,
6
- # enhanced layout functionality, locale enabled rendering, among other features.
7
- #
8
- module Rendering
9
- class TemplateNotFound < RuntimeError #:nodoc:
10
- end
11
-
12
- ##
13
- # This is an array of file patterns to ignore.
14
- # If your editor add a suffix during editing to your files please add it like:
15
- #
16
- # Padrino::Rendering::IGNORE_FILE_PATTERN << /~$/
17
- #
18
- IGNORE_FILE_PATTERN = [
19
- /~$/ # This is for Gedit
20
- ] unless defined?(IGNORE_FILE_PATTERN)
21
-
22
- ##
23
- # Default rendering options used in the #render-method
24
- #
25
- DEFAULT_RENDERING_OPTIONS = { :strict_format => false, :raise_exceptions => true } unless defined?(DEFAULT_RENDERING_OPTIONS)
26
-
27
- ##
28
- # Main class that register this extension
29
- #
30
- class << self
31
- def registered(app)
32
- app.send(:include, InstanceMethods)
33
- app.extend(ClassMethods)
34
- end
35
- alias :included :registered
36
- end
37
-
38
- module ClassMethods
39
- ##
40
- # Use layout like rails does or if a block given then like sinatra.
41
- # If used without a block, sets the current layout for the route.
42
- #
43
- # By default, searches in your:
44
- #
45
- # +app+/+views+/+layouts+/+application+.(+haml+|+erb+|+xxx+)
46
- # +app+/+views+/+layout_name+.(+haml+|+erb+|+xxx+)
47
- #
48
- # If you define +layout+ :+custom+ then searches for your layouts in
49
- # +app+/+views+/+layouts+/+custom+.(+haml+|+erb+|+xxx+)
50
- # +app+/+views+/+custom+.(+haml+|+erb+|+xxx+)
51
- #
52
- def layout(name=:layout, &block)
53
- return super(name, &block) if block_given?
54
- @layout = name
55
- end
56
-
57
- ##
58
- # Returns the cached template file to render for a given url, content_type and locale.
59
- #
60
- # render_options = [template_path, content_type, locale]
61
- #
62
- def fetch_template_file(render_options)
63
- (@_cached_templates ||= {})[render_options]
64
- end
65
-
66
- ###
67
- # Caches the template file for the given rendering options
68
- #
69
- # render_options = [template_path, content_type, locale]
70
- #
71
- def cache_template_file!(template_file, render_options)
72
- (@_cached_templates ||= {})[render_options] = template_file || []
73
- end
74
-
75
- ##
76
- # Returns the cached layout path.
77
- #
78
- def fetch_layout_path(given_layout=nil)
79
- layout_name = given_layout || @layout || :application
80
- @_cached_layout ||= {}
81
- cached_layout_path = @_cached_layout[layout_name]
82
- return cached_layout_path if cached_layout_path
83
- has_layout_at_root = Dir["#{views}/#{layout_name}.*"].any?
84
- layout_path = has_layout_at_root ? layout_name.to_sym : File.join('layouts', layout_name.to_s).to_sym
85
- @_cached_layout[layout_name] = layout_path unless reload_templates?
86
- layout_path
87
- end
88
- end
89
-
90
- module InstanceMethods
91
- attr_reader :current_engine
92
-
93
- def content_type(type=nil, params={}) #:nodoc:
94
- type.nil? ? @_content_type : super(type, params)
95
- end
96
-
97
- private
98
- ##
99
- # Enhancing Sinatra render functionality for:
100
- #
101
- # * Using layout similar to rails
102
- # * Use render 'path/to/my/template' (without symbols)
103
- # * Use render 'path/to/my/template' (with engine lookup)
104
- # * Use render 'path/to/template.haml' (with explicit engine lookup)
105
- # * Use render 'path/to/template', :layout => false
106
- # * Use render 'path/to/template', :layout => false, :engine => 'haml'
107
- # * Use render { :a => 1, :b => 2, :c => 3 } # => return a json string
108
- #
109
- def render(engine, data=nil, options={}, locals={}, &block)
110
- # If engine is a hash then render data converted to json
111
- return engine.to_json if engine.is_a?(Hash)
112
-
113
- # If engine is nil, ignore engine parameter and shift up all arguments
114
- # render nil, "index", { :layout => true }, { :localvar => "foo" }
115
- engine, data, options = data, options, locals if engine.nil? && data
116
-
117
- # Data is a hash of options when no engine isn't explicit
118
- # render "index", { :layout => true }, { :localvar => "foo" }
119
- # Data is options, and options is locals in this case
120
- data, options, locals = nil, data, options if data.is_a?(Hash)
121
-
122
- # If data is unassigned then this is a likely a template to be resolved
123
- # This means that no engine was explicitly defined
124
- data, engine = *resolve_template(engine, options) if data.nil?
125
-
126
- # Setup root
127
- root = settings.respond_to?(:root) ? settings.root : ""
128
-
129
- # Use @layout if it exists
130
- options[:layout] = @layout if options[:layout].nil?
131
-
132
- # Resolve layouts similar to in Rails
133
- if (options[:layout].nil? || options[:layout] == true) && !settings.templates.has_key?(:layout)
134
- layout_path, layout_engine = *resolved_layout
135
- options[:layout] = layout_path || false # We need to force layout false so sinatra don't try to render it
136
- options[:layout] = false unless layout_engine == engine # TODO allow different layout engine
137
- options[:layout_engine] = layout_engine || engine if options[:layout]
138
- logger.debug "Resolving layout #{root}/views#{options[:layout]}" if defined?(logger) && options[:layout].present?
139
- elsif options[:layout].present?
140
- options[:layout] = settings.fetch_layout_path(options[:layout] || @layout)
141
- logger.debug "Resolving layout #{root}/views#{options[:layout]}" if defined?(logger)
142
- end
143
-
144
- # Cleanup the template
145
- @current_engine, engine_was = engine, @current_engine
146
- @_out_buf, _buf_was = "", @_out_buf
147
-
148
- # Pass arguments to Sinatra render method
149
- super(engine, data, options.dup, locals, &block)
150
- ensure
151
- @current_engine = engine_was
152
- @_out_buf = _buf_was
153
- end
154
-
155
- ##
156
- # Returns the located layout tuple to be used for the rendered template (if available)
157
- #
158
- # ==== Example
159
- #
160
- # resolve_layout
161
- # => ["/layouts/custom", :erb]
162
- # => [nil, nil]
163
- #
164
- def resolved_layout
165
- located_layout = resolve_template(settings.fetch_layout_path, :raise_exceptions => false, :strict_format => true)
166
- located_layout ? located_layout : [nil, nil]
167
- end
168
-
169
- ##
170
- # Returns the template path and engine that match content_type (if present), I18n.locale.
171
- #
172
- # === Options
173
- #
174
- # :strict_format:: The resolved template must match the content_type of the request (defaults to false)
175
- # :raise_exceptions:: Raises a +TemplateNotFound+ exception if the template cannot be located.
176
- #
177
- # ==== Example
178
- #
179
- # get "/foo", :provides => [:html, :js] do; render 'path/to/foo'; end
180
- # # If you request "/foo.js" with I18n.locale == :ru => [:"/path/to/foo.ru.js", :erb]
181
- # # If you request "/foo" with I18n.locale == :de => [:"/path/to/foo.de.haml", :haml]
182
- #
183
- def resolve_template(template_path, options={})
184
- # Fetch cached template for rendering options
185
- template_path = "/#{template_path}" unless template_path.to_s[0] == ?/
186
- rendering_options = [template_path, content_type, locale]
187
- cached_template = settings.fetch_template_file(rendering_options)
188
- return cached_template if cached_template
189
-
190
- # Resolve view path and options
191
- options.reverse_merge!(DEFAULT_RENDERING_OPTIONS)
192
- view_path = options.delete(:views) || settings.views || "./views"
193
- target_extension = File.extname(template_path)[1..-1] || "none" # explicit template extension
194
- template_path = template_path.chomp(".#{target_extension}")
195
-
196
- # Generate potential template candidates
197
- templates = Dir[File.join(view_path, template_path) + ".*"].map do |file|
198
- template_engine = File.extname(file)[1..-1].to_sym # retrieves engine extension
199
- template_file = file.sub(view_path, '').chomp(".#{template_engine}").to_sym # retrieves template filename
200
- [template_file, template_engine] unless IGNORE_FILE_PATTERN.any? { |pattern| template_engine.to_s =~ pattern }
201
- end
202
-
203
- # Check if we have a simple content type
204
- simple_content_type = [:html, :plain].include?(content_type)
205
-
206
- # Resolve final template to render
207
- located_template =
208
- templates.find { |file, e| file.to_s == "#{template_path}.#{locale}.#{content_type}" } ||
209
- templates.find { |file, e| file.to_s == "#{template_path}.#{locale}" && simple_content_type } ||
210
- templates.find { |file, e| File.extname(file.to_s) == ".#{target_extension}" or e.to_s == target_extension.to_s } ||
211
- templates.find { |file, e| file.to_s == "#{template_path}.#{content_type}" } ||
212
- templates.find { |file, e| file.to_s == "#{template_path}" && simple_content_type } ||
213
- (!options[:strict_format] && templates.first) # If not strict, fall back to the first located template
214
-
215
- raise TemplateNotFound, "Template '#{template_path}' not found in '#{view_path}'!" if !located_template && options[:raise_exceptions]
216
- settings.cache_template_file!(located_template, rendering_options) unless settings.reload_templates?
217
- located_template
218
- end
219
-
220
- ##
221
- # Return the I18n.locale if I18n is defined
222
- #
223
- def locale
224
- I18n.locale if defined?(I18n)
225
- end
226
- end # InstanceMethods
227
- end # Rendering
228
- end # Padrino