middleman 2.0.7 → 2.0.8

Sign up to get free protection for your applications and to get access to all the features.
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