middleman 2.0.4 → 2.0.5

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 (172) hide show
  1. data/CHANGELOG +8 -0
  2. data/lib/middleman.rb +7 -1
  3. data/lib/middleman/vendor/padrino-core-0.10.0/.document +5 -0
  4. data/lib/middleman/vendor/padrino-core-0.10.0/.gitignore +22 -0
  5. data/lib/middleman/vendor/padrino-core-0.10.0/LICENSE +20 -0
  6. data/lib/middleman/vendor/padrino-core-0.10.0/README.rdoc +294 -0
  7. data/lib/middleman/vendor/padrino-core-0.10.0/Rakefile +5 -0
  8. data/lib/middleman/vendor/padrino-core-0.10.0/bin/padrino +9 -0
  9. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core.rb +119 -0
  10. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/application.rb +259 -0
  11. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/application/rendering.rb +228 -0
  12. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/application/routing.rb +821 -0
  13. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/application/showexceptions.rb +18 -0
  14. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/caller.rb +45 -0
  15. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/cli/adapter.rb +24 -0
  16. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/cli/base.rb +152 -0
  17. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/cli/console.rb +20 -0
  18. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/cli/rake.rb +24 -0
  19. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/cli/rake_tasks.rb +59 -0
  20. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/command.rb +27 -0
  21. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/images/404.png +0 -0
  22. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/images/500.png +0 -0
  23. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/loader.rb +182 -0
  24. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/locale/cz.yml +30 -0
  25. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/locale/da.yml +30 -0
  26. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/locale/de.yml +30 -0
  27. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/locale/en.yml +30 -0
  28. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/locale/es.yml +30 -0
  29. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/locale/fr.yml +30 -0
  30. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/locale/hu.yml +30 -0
  31. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/locale/it.yml +37 -0
  32. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/locale/ja.yml +30 -0
  33. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/locale/nl.yml +30 -0
  34. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/locale/no.yml +31 -0
  35. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/locale/pl.yml +30 -0
  36. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/locale/pt_br.yml +37 -0
  37. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/locale/ru.yml +30 -0
  38. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/locale/tr.yml +30 -0
  39. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/locale/uk.yml +30 -0
  40. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/locale/zh_cn.yml +30 -0
  41. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/locale/zh_tw.yml +30 -0
  42. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/logger.rb +344 -0
  43. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/mounter.rb +192 -0
  44. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/reloader.rb +247 -0
  45. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/router.rb +79 -0
  46. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/server.rb +70 -0
  47. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/support_lite.rb +135 -0
  48. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/tasks.rb +23 -0
  49. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/version.rb +15 -0
  50. data/lib/middleman/vendor/padrino-core-0.10.0/padrino-core.gemspec +38 -0
  51. data/lib/middleman/vendor/padrino-core-0.10.0/test/fixtures/apps/.components +6 -0
  52. data/lib/middleman/vendor/padrino-core-0.10.0/test/fixtures/apps/.gitignore +7 -0
  53. data/lib/middleman/vendor/padrino-core-0.10.0/test/fixtures/apps/complex.rb +27 -0
  54. data/lib/middleman/vendor/padrino-core-0.10.0/test/fixtures/apps/simple.rb +33 -0
  55. data/lib/middleman/vendor/padrino-core-0.10.0/test/fixtures/dependencies/a.rb +9 -0
  56. data/lib/middleman/vendor/padrino-core-0.10.0/test/fixtures/dependencies/b.rb +4 -0
  57. data/lib/middleman/vendor/padrino-core-0.10.0/test/fixtures/dependencies/c.rb +1 -0
  58. data/lib/middleman/vendor/padrino-core-0.10.0/test/fixtures/dependencies/circular/e.rb +13 -0
  59. data/lib/middleman/vendor/padrino-core-0.10.0/test/fixtures/dependencies/circular/f.rb +2 -0
  60. data/lib/middleman/vendor/padrino-core-0.10.0/test/fixtures/dependencies/circular/g.rb +2 -0
  61. data/lib/middleman/vendor/padrino-core-0.10.0/test/fixtures/dependencies/d.rb +4 -0
  62. data/lib/middleman/vendor/padrino-core-0.10.0/test/helper.rb +101 -0
  63. data/lib/middleman/vendor/padrino-core-0.10.0/test/test_application.rb +83 -0
  64. data/lib/middleman/vendor/padrino-core-0.10.0/test/test_core.rb +79 -0
  65. data/lib/middleman/vendor/padrino-core-0.10.0/test/test_dependencies.rb +44 -0
  66. data/lib/middleman/vendor/padrino-core-0.10.0/test/test_filters.rb +266 -0
  67. data/lib/middleman/vendor/padrino-core-0.10.0/test/test_logger.rb +91 -0
  68. data/lib/middleman/vendor/padrino-core-0.10.0/test/test_mounter.rb +176 -0
  69. data/lib/middleman/vendor/padrino-core-0.10.0/test/test_reloader_complex.rb +66 -0
  70. data/lib/middleman/vendor/padrino-core-0.10.0/test/test_reloader_simple.rb +97 -0
  71. data/lib/middleman/vendor/padrino-core-0.10.0/test/test_rendering.rb +437 -0
  72. data/lib/middleman/vendor/padrino-core-0.10.0/test/test_router.rb +146 -0
  73. data/lib/middleman/vendor/padrino-core-0.10.0/test/test_routing.rb +1491 -0
  74. data/lib/middleman/vendor/padrino-helpers-0.10.0/.document +5 -0
  75. data/lib/middleman/vendor/padrino-helpers-0.10.0/.gitignore +21 -0
  76. data/lib/middleman/vendor/padrino-helpers-0.10.0/LICENSE +20 -0
  77. data/lib/middleman/vendor/padrino-helpers-0.10.0/README.rdoc +239 -0
  78. data/lib/middleman/vendor/padrino-helpers-0.10.0/Rakefile +5 -0
  79. data/lib/middleman/vendor/padrino-helpers-0.10.0/lib/padrino-helpers.rb +51 -0
  80. data/lib/middleman/vendor/padrino-helpers-0.10.0/lib/padrino-helpers/asset_tag_helpers.rb +288 -0
  81. data/lib/middleman/vendor/padrino-helpers-0.10.0/lib/padrino-helpers/form_builder/abstract_form_builder.rb +220 -0
  82. data/lib/middleman/vendor/padrino-helpers-0.10.0/lib/padrino-helpers/form_builder/standard_form_builder.rb +43 -0
  83. data/lib/middleman/vendor/padrino-helpers-0.10.0/lib/padrino-helpers/form_helpers.rb +446 -0
  84. data/lib/middleman/vendor/padrino-helpers-0.10.0/lib/padrino-helpers/format_helpers.rb +260 -0
  85. data/lib/middleman/vendor/padrino-helpers-0.10.0/lib/padrino-helpers/locale/cz.yml +103 -0
  86. data/lib/middleman/vendor/padrino-helpers-0.10.0/lib/padrino-helpers/locale/da.yml +91 -0
  87. data/lib/middleman/vendor/padrino-helpers-0.10.0/lib/padrino-helpers/locale/de.yml +78 -0
  88. data/lib/middleman/vendor/padrino-helpers-0.10.0/lib/padrino-helpers/locale/en.yml +103 -0
  89. data/lib/middleman/vendor/padrino-helpers-0.10.0/lib/padrino-helpers/locale/es.yml +103 -0
  90. data/lib/middleman/vendor/padrino-helpers-0.10.0/lib/padrino-helpers/locale/fr.yml +79 -0
  91. data/lib/middleman/vendor/padrino-helpers-0.10.0/lib/padrino-helpers/locale/hu.yml +103 -0
  92. data/lib/middleman/vendor/padrino-helpers-0.10.0/lib/padrino-helpers/locale/it.yml +85 -0
  93. data/lib/middleman/vendor/padrino-helpers-0.10.0/lib/padrino-helpers/locale/ja.yml +103 -0
  94. data/lib/middleman/vendor/padrino-helpers-0.10.0/lib/padrino-helpers/locale/nl.yml +78 -0
  95. data/lib/middleman/vendor/padrino-helpers-0.10.0/lib/padrino-helpers/locale/no.yml +91 -0
  96. data/lib/middleman/vendor/padrino-helpers-0.10.0/lib/padrino-helpers/locale/pl.yml +95 -0
  97. data/lib/middleman/vendor/padrino-helpers-0.10.0/lib/padrino-helpers/locale/pt_br.yml +103 -0
  98. data/lib/middleman/vendor/padrino-helpers-0.10.0/lib/padrino-helpers/locale/ru.yml +103 -0
  99. data/lib/middleman/vendor/padrino-helpers-0.10.0/lib/padrino-helpers/locale/tr.yml +103 -0
  100. data/lib/middleman/vendor/padrino-helpers-0.10.0/lib/padrino-helpers/locale/uk.yml +103 -0
  101. data/lib/middleman/vendor/padrino-helpers-0.10.0/lib/padrino-helpers/locale/zh_cn.yml +103 -0
  102. data/lib/middleman/vendor/padrino-helpers-0.10.0/lib/padrino-helpers/locale/zh_tw.yml +103 -0
  103. data/lib/middleman/vendor/padrino-helpers-0.10.0/lib/padrino-helpers/number_helpers.rb +273 -0
  104. data/lib/middleman/vendor/padrino-helpers-0.10.0/lib/padrino-helpers/output_helpers.rb +128 -0
  105. data/lib/middleman/vendor/padrino-helpers-0.10.0/lib/padrino-helpers/output_helpers/abstract_handler.rb +103 -0
  106. data/lib/middleman/vendor/padrino-helpers-0.10.0/lib/padrino-helpers/output_helpers/erb_handler.rb +79 -0
  107. data/lib/middleman/vendor/padrino-helpers-0.10.0/lib/padrino-helpers/output_helpers/haml_handler.rb +64 -0
  108. data/lib/middleman/vendor/padrino-helpers-0.10.0/lib/padrino-helpers/output_helpers/slim_handler.rb +82 -0
  109. data/lib/middleman/vendor/padrino-helpers-0.10.0/lib/padrino-helpers/render_helpers.rb +40 -0
  110. data/lib/middleman/vendor/padrino-helpers-0.10.0/lib/padrino-helpers/tag_helpers.rb +59 -0
  111. data/lib/middleman/vendor/padrino-helpers-0.10.0/lib/padrino-helpers/translation_helpers.rb +21 -0
  112. data/lib/middleman/vendor/padrino-helpers-0.10.0/padrino-helpers.gemspec +27 -0
  113. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/app.rb +73 -0
  114. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/capture_concat.erb +14 -0
  115. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/capture_concat.haml +12 -0
  116. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/capture_concat.slim +13 -0
  117. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/content_for.erb +11 -0
  118. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/content_for.haml +9 -0
  119. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/content_for.slim +9 -0
  120. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/content_tag.erb +11 -0
  121. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/content_tag.haml +9 -0
  122. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/content_tag.slim +9 -0
  123. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/current_engine.erb +5 -0
  124. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/current_engine.haml +5 -0
  125. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/current_engine.slim +5 -0
  126. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/fields_for.erb +20 -0
  127. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/fields_for.haml +15 -0
  128. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/fields_for.slim +15 -0
  129. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/form_for.erb +56 -0
  130. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/form_for.haml +47 -0
  131. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/form_for.slim +47 -0
  132. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/form_tag.erb +56 -0
  133. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/form_tag.haml +45 -0
  134. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/form_tag.slim +45 -0
  135. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/link_to.erb +5 -0
  136. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/link_to.haml +4 -0
  137. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/link_to.slim +4 -0
  138. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/mail_to.erb +3 -0
  139. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/mail_to.haml +3 -0
  140. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/mail_to.slim +3 -0
  141. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/meta_tag.erb +3 -0
  142. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/meta_tag.haml +3 -0
  143. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/meta_tag.slim +3 -0
  144. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/partials/_erb.erb +1 -0
  145. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/partials/_haml.haml +1 -0
  146. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/partials/_slim.slim +1 -0
  147. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/simple_partial.erb +1 -0
  148. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/simple_partial.haml +1 -0
  149. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/simple_partial.slim +1 -0
  150. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/render_app/app.rb +45 -0
  151. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/render_app/views/current_engine.haml +5 -0
  152. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/render_app/views/current_engines/_erb.erb +1 -0
  153. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/render_app/views/current_engines/_haml.haml +1 -0
  154. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/render_app/views/current_engines/_slim.slim +1 -0
  155. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/render_app/views/erb/test.erb +1 -0
  156. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/render_app/views/explicit_engine.haml +5 -0
  157. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/render_app/views/haml/test.haml +1 -0
  158. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/render_app/views/template/_user.haml +7 -0
  159. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/render_app/views/template/haml_template.haml +1 -0
  160. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/render_app/views/template/some_template.haml +2 -0
  161. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/helper.rb +78 -0
  162. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/test_asset_tag_helpers.rb +320 -0
  163. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/test_form_builder.rb +998 -0
  164. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/test_form_helpers.rb +645 -0
  165. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/test_format_helpers.rb +227 -0
  166. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/test_number_helpers.rb +136 -0
  167. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/test_output_helpers.rb +133 -0
  168. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/test_render_helpers.rb +69 -0
  169. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/test_tag_helpers.rb +100 -0
  170. data/lib/middleman/version.rb +1 -1
  171. data/middleman.gemspec +6 -2
  172. metadata +218 -67
@@ -0,0 +1,18 @@
1
+ module Padrino
2
+ ##
3
+ # This module extend Sinatra::ShowExceptions adding Padrino as "Framework"
4
+ #
5
+ class ShowExceptions < Sinatra::ShowExceptions
6
+ def frame_class(frame)
7
+ if frame.filename =~ /lib\/sinatra.*\.rb|lib\/padrino.*\.rb/
8
+ "framework"
9
+ elsif (defined?(Gem) && frame.filename.include?(Gem.dir)) ||
10
+ frame.filename =~ /\/bin\/(\w+)$/ ||
11
+ frame.filename =~ /Ruby\/Gems/
12
+ "system"
13
+ else
14
+ "app"
15
+ end
16
+ end
17
+ end # ShowExceptions
18
+ end # Padrino
@@ -0,0 +1,45 @@
1
+ module Padrino
2
+ PADRINO_IGNORE_CALLERS = [
3
+ %r{lib/padrino-.*$}, # all padrino code
4
+ %r{/padrino-.*/(lib|bin)}, # all padrino code
5
+ %r{/bin/padrino$}, # all padrino code
6
+ %r{/sinatra(/(base|main|showexceptions))?\.rb$}, # all sinatra code
7
+ %r{lib/tilt.*\.rb$}, # all tilt code
8
+ %r{lib/rack.*\.rb$}, # all rack code
9
+ %r{lib/mongrel.*\.rb$}, # all mongrel code
10
+ %r{lib/shotgun.*\.rb$}, # all shotgun lib
11
+ %r{bin/shotgun$}, # shotgun binary
12
+ %r{\(.*\)}, # generated code
13
+ %r{shoulda/context\.rb$}, # shoulda hacks
14
+ %r{mocha/integration}, # mocha hacks
15
+ %r{test/unit}, # test unit hacks
16
+ %r{rake_test_loader\.rb}, # rake hacks
17
+ %r{custom_require\.rb$}, # rubygems require hacks
18
+ %r{active_support}, # active_support require hacks
19
+ %r{/thor} # thor require hacks
20
+ ] unless defined?(PADRINO_IGNORE_CALLERS)
21
+
22
+ ##
23
+ # Add rubinius (and hopefully other VM impls) ignore patterns ...
24
+ #
25
+ PADRINO_IGNORE_CALLERS.concat(RUBY_IGNORE_CALLERS) if defined?(RUBY_IGNORE_CALLERS)
26
+
27
+ private
28
+ ##
29
+ # Returns the filename for the file that is the direct caller (first caller)
30
+ #
31
+ def self.first_caller
32
+ caller_files.first
33
+ end
34
+
35
+ ##
36
+ # Like Kernel#caller but excluding certain magic entries and without
37
+ # line / method information; the resulting array contains filenames only.
38
+ #
39
+ def self.caller_files
40
+ caller(1).
41
+ map { |line| line.split(/:(?=\d|in )/)[0,2] }.
42
+ reject { |file,line| PADRINO_IGNORE_CALLERS.any? { |pattern| file =~ pattern } }.
43
+ map { |file,line| file }
44
+ end
45
+ end # Padrino
@@ -0,0 +1,24 @@
1
+ module Padrino
2
+ module Cli
3
+ module Adapter
4
+ class << self
5
+ # Start for the given options a rackup handler
6
+ def start(options)
7
+ Padrino.run!(options.symbolize_keys)
8
+ end
9
+
10
+ # Method that stop (if exist) a running Padrino.application
11
+ def stop(options)
12
+ options.symbolize_keys!
13
+ if File.exist?(options[:pid])
14
+ pid = File.read(options[:pid]).to_i
15
+ print "=> Sending INT to process with pid #{pid} wait "
16
+ Process.kill(2, pid) rescue nil
17
+ else
18
+ puts "=> #{options[:pid]} not found!"
19
+ end
20
+ end
21
+ end # self
22
+ end # Adapter
23
+ end # Cli
24
+ end # Padrino
@@ -0,0 +1,152 @@
1
+ require 'thor'
2
+
3
+ module Padrino
4
+ module Cli
5
+
6
+ class Base < Thor
7
+ include Thor::Actions
8
+
9
+ class_option :chdir, :type => :string, :aliases => "-c", :desc => "Change to dir before starting"
10
+ class_option :environment, :type => :string, :aliases => "-e", :required => true, :default => :development, :desc => "Padrino Environment"
11
+ class_option :help, :type => :boolean, :desc => "Show help usage"
12
+
13
+ desc "start", "Starts the Padrino application"
14
+ method_option :server, :type => :string, :aliases => "-a", :desc => "Rack Handler (default: autodetect)"
15
+ method_option :host, :type => :string, :aliases => "-h", :required => true, :default => "0.0.0.0", :desc => "Bind to HOST address"
16
+ method_option :port, :type => :numeric, :aliases => "-p", :required => true, :default => 3000, :desc => "Use PORT"
17
+ method_option :daemonize, :type => :boolean, :aliases => "-d", :desc => "Run daemonized in the background"
18
+ method_option :pid, :type => :string, :aliases => "-i", :desc => "File to store pid"
19
+ method_option :debug, :type => :boolean, :desc => "Set debugging flags"
20
+ def start
21
+ prepare :start
22
+ require File.expand_path("../adapter", __FILE__)
23
+ require File.expand_path('config/boot.rb')
24
+ Padrino::Cli::Adapter.start(options)
25
+ end
26
+
27
+ desc "s", "Starts the Padrino application"
28
+ def s
29
+ invoke :start
30
+ end
31
+
32
+ desc "stop", "Stops the Padrino application"
33
+ method_option :pid, :type => :string, :aliases => "-p", :desc => "File to store pid", :default => 'tmp/pids/server.pid'
34
+ def stop
35
+ prepare :stop
36
+ require File.expand_path("../adapter", __FILE__)
37
+ Padrino::Cli::Adapter.stop(options)
38
+ end
39
+
40
+ desc "rake", "Execute rake tasks"
41
+ method_option :environment, :type => :string, :aliases => "-e", :required => true, :default => :development
42
+ method_option :list, :type => :string, :aliases => "-T", :desc => "Display the tasks (matching optional PATTERN) with descriptions, then exit."
43
+ method_option :trace, :type => :boolean, :aliases => "-t", :desc => "Turn on invoke/execute tracing, enable full backtrace."
44
+ method_option :verbose, :type => :boolean, :aliases => "-v", :desc => "Log message to standard output."
45
+ def rake(*args)
46
+ prepare :rake
47
+ args << "-T" if options[:list]
48
+ args << options[:list] unless options[:list].nil? || options[:list].to_s == "list"
49
+ args << "--trace" if options[:trace]
50
+ args << "--verbose" if options[:verbose]
51
+ ARGV.clear
52
+ ARGV.concat(args)
53
+ puts "=> Executing Rake #{ARGV.join(' ')} ..."
54
+ ENV['PADRINO_LOG_LEVEL'] ||= "test"
55
+ load File.expand_path('../rake.rb', __FILE__)
56
+ silence(:stdout) { require File.expand_path('config/boot.rb') }
57
+ PadrinoTasks.init(true)
58
+ end
59
+
60
+ desc "console", "Boots up the Padrino application irb console"
61
+ def console
62
+ prepare :console
63
+ require File.expand_path("../../version", __FILE__)
64
+ ARGV.clear
65
+ puts "=> Loading #{options.environment} console (Padrino v.#{Padrino.version})"
66
+ require 'irb'
67
+ require "irb/completion"
68
+ require File.expand_path('config/boot.rb')
69
+ require File.expand_path('../console', __FILE__)
70
+ IRB.start
71
+ end
72
+
73
+ desc "generate", "Executes the Padrino generator with given options."
74
+ def generate(*args)
75
+ # Build Padrino g as an alias of padrino-gen
76
+ begin
77
+ # We try to load the vendored padrino-gen if exist
78
+ padrino_gen_path = File.expand_path('../../../../../padrino-gen/lib', __FILE__)
79
+ $:.unshift(padrino_gen_path) if File.directory?(padrino_gen_path) && !$:.include?(padrino_gen_path)
80
+ require 'padrino-core/command'
81
+ require 'padrino-gen/command'
82
+ ARGV.shift
83
+ Padrino.bin_gen(ARGV)
84
+ rescue
85
+ puts "<= You need padrino-gen! Run: gem install padrino-gen"
86
+ end
87
+ end
88
+
89
+ desc "g", "Executes the Padrino generator with given options."
90
+ def g(*args)
91
+ invoke(:generate, args)
92
+ end
93
+
94
+ desc "gen", "Executes the Padrino generator with given options."
95
+ def gen(*args)
96
+ invoke(:generate, args)
97
+ end
98
+
99
+ desc "version", "Show current Padrino Version"
100
+ map "-v" => :version, "--version" => :version
101
+ def version
102
+ require 'padrino-core/version'
103
+ puts "Padrino v. #{Padrino.version}"
104
+ end
105
+
106
+ private
107
+ def prepare(task)
108
+ if options.help?
109
+ help(task.to_s)
110
+ raise SystemExit
111
+ end
112
+ ENV["PADRINO_ENV"] ||= options.environment.to_s
113
+ ENV["RACK_ENV"] = ENV["PADRINO_ENV"] # Also set this for middleware
114
+ chdir(options.chdir)
115
+ unless File.exist?('config/boot.rb')
116
+ puts "=> Could not find boot file in: #{options.chdir}/config/boot.rb !!!"
117
+ raise SystemExit
118
+ end
119
+ end
120
+
121
+ protected
122
+ def self.banner(task=nil, *args)
123
+ "padrino #{task.name}"
124
+ end
125
+
126
+ def chdir(dir)
127
+ return unless dir
128
+ begin
129
+ Dir.chdir(dir.to_s)
130
+ rescue Errno::ENOENT
131
+ puts "=> Specified Padrino root '#{dir}' does not appear to exist!"
132
+ rescue Errno::EACCES
133
+ puts "=> Specified Padrino root '#{dir}' cannot be accessed by the current user!"
134
+ end
135
+ end
136
+
137
+ def capture(stream)
138
+ begin
139
+ stream = stream.to_s
140
+ eval "$#{stream} = StringIO.new"
141
+ yield
142
+ result = eval("$#{stream}").string
143
+ ensure
144
+ eval("$#{stream} = #{stream.upcase}")
145
+ end
146
+
147
+ result
148
+ end
149
+ alias :silence :capture
150
+ end # Base
151
+ end # Cli
152
+ end # Padrino
@@ -0,0 +1,20 @@
1
+ # Reloads classes
2
+ def reload!
3
+ Padrino.reload!
4
+ end
5
+
6
+ # Show applications
7
+ def applications
8
+ puts "==== List of Mounted Applications ====\n\n"
9
+ Padrino.mounted_apps.each do |app|
10
+ puts " * %-10s mapped to %s" % [app.name, app.uri_root]
11
+ end
12
+ puts
13
+ Padrino.mounted_apps.map { |app| "#{app.name} => #{app.uri_root}" }
14
+ end
15
+
16
+ # Load apps
17
+ Padrino.mounted_apps.each do |app|
18
+ puts "=> Loading Application #{app.app_class}"
19
+ app.app_obj.setup_application!
20
+ end
@@ -0,0 +1,24 @@
1
+ require File.expand_path('../../tasks', __FILE__)
2
+ require 'rake'
3
+ require 'thor'
4
+ require 'securerandom' unless defined?(SecureRandom)
5
+
6
+ module PadrinoTasks
7
+ def self.init(init=false)
8
+ Padrino::Tasks.files.flatten.uniq.each { |rakefile| Rake.application.add_import(rakefile) rescue puts "<= Failed load #{ext}" }
9
+ if init
10
+ Rake.application.init
11
+ Rake.application.instance_variable_set(:@rakefile, __FILE__)
12
+ load(File.expand_path('../rake_tasks.rb', __FILE__))
13
+ Rake.application.load_imports
14
+ Rake.application.top_level
15
+ else
16
+ load(File.expand_path('../rake_tasks.rb', __FILE__))
17
+ Rake.application.load_imports
18
+ end
19
+ end
20
+ end
21
+
22
+ def shell
23
+ @_shell ||= Thor::Base.shell.new
24
+ end
@@ -0,0 +1,59 @@
1
+ # Load rake tasks from common rake task definition locations
2
+ Dir["lib/tasks/**/*.rake"].
3
+ concat(Dir["tasks/**/*.rake"]).
4
+ concat(Dir["{test,spec}/*.rake"]).each { |rake| load(rake) }
5
+
6
+ # Loads the Padrino applications mounted within the project
7
+ # setting up the required environment for Padrino
8
+ task :environment do
9
+ Padrino.mounted_apps.each do |app|
10
+ app.app_obj.setup_application!
11
+ end
12
+ end
13
+
14
+ desc "Generate a secret key"
15
+ task :secret do
16
+ shell.say SecureRandom.hex(32)
17
+ end
18
+
19
+ # lists all routes of a given app
20
+ def list_app_routes(app, args)
21
+ app_routes = app.named_routes
22
+ app_routes.reject! { |r| r.identifier.to_s !~ /#{args.query}/ } if args.query.present?
23
+ app_routes.map! { |r| [r.verb, r.name, r.path] }
24
+ return if app_routes.empty?
25
+ shell.say "\nApplication: #{app.app_class}", :yellow
26
+ app_routes.unshift(["REQUEST", "URL", "PATH"])
27
+ max_col_1 = app_routes.max { |a, b| a[0].size <=> b[0].size }[0].size
28
+ max_col_2 = app_routes.max { |a, b| a[1].size <=> b[1].size }[1].size
29
+ app_routes.each_with_index do |row, i|
30
+ message = [row[1].ljust(max_col_2+2), row[0].center(max_col_1+2), row[2]]
31
+ shell.say(" " + message.join(" "), i==0 ? :bold : nil)
32
+ end
33
+ end
34
+
35
+ desc "Displays a listing of the named routes within a project, optionally only those matched by [query]"
36
+ task :routes, [:query] => :environment do |t, args|
37
+ Padrino.mounted_apps.each do |app|
38
+ list_app_routes(app, args)
39
+ end
40
+ end
41
+
42
+ desc "Displays a listing of the named routes a given app [app]"
43
+ namespace :routes do
44
+ task :app, [:app] => :environment do |t, args|
45
+ app = Padrino.mounted_apps.find { |app| app.app_class == args.app }
46
+ list_app_routes(app, args) if app
47
+ end
48
+ end
49
+
50
+ desc "Generate the Rakefile"
51
+ task :gen do
52
+ File.open(Padrino.root("Rakefile"), "w") do |file|
53
+ file.puts <<-RUBY.gsub(/^ {6}/, '')
54
+ require File.expand_path('../config/boot.rb', __FILE__)
55
+ require 'padrino-core/cli/rake'
56
+ PadrinoTasks.init
57
+ RUBY
58
+ end
59
+ end
@@ -0,0 +1,27 @@
1
+ require 'rbconfig'
2
+
3
+ module Padrino
4
+ ##
5
+ # This method return the correct location of padrino bin or
6
+ # exec it using Kernel#system with the given args
7
+ #
8
+ def self.bin(*args)
9
+ @_padrino_bin ||= [self.ruby_command, File.expand_path("../../../bin/padrino", __FILE__)]
10
+ args.empty? ? @_padrino_bin : system(args.unshift(@_padrino_bin).join(" "))
11
+ end
12
+
13
+ ##
14
+ # Return the path to the ruby interpreter taking into account multiple
15
+ # installations and windows extensions.
16
+ #
17
+ def self.ruby_command
18
+ @ruby_command ||= begin
19
+ ruby = File.join(Config::CONFIG['bindir'], Config::CONFIG['ruby_install_name'])
20
+ ruby << Config::CONFIG['EXEEXT']
21
+
22
+ # escape string in case path to ruby executable contain spaces.
23
+ ruby.sub!(/.*\s.*/m, '"\&"')
24
+ ruby
25
+ end
26
+ end
27
+ end # Padrino
@@ -0,0 +1,182 @@
1
+ module Padrino
2
+ class << self
3
+
4
+ ##
5
+ # Hooks to be called before a load/reload
6
+ #
7
+ # ==== Examples
8
+ #
9
+ # before_load do
10
+ # pre_initialize_something
11
+ # end
12
+ #
13
+ #
14
+ def before_load(&block)
15
+ @_before_load ||= []
16
+ @_before_load << block if block_given?
17
+ @_before_load
18
+ end
19
+
20
+ ##
21
+ # Hooks to be called after a load/reload
22
+ #
23
+ # ==== Examples
24
+ #
25
+ # after_load do
26
+ # DataMapper.finalize
27
+ # end
28
+ #
29
+ #
30
+ def after_load(&block)
31
+ @_after_load ||= []
32
+ @_after_load << block if block_given?
33
+ @_after_load
34
+ end
35
+
36
+ ##
37
+ # Returns the used $LOAD_PATHS from padrino
38
+ #
39
+ def load_paths
40
+ @_load_paths_was = %w(lib models shared).map { |path| Padrino.root(path) }
41
+ @_load_paths ||= @_load_paths_was
42
+ end
43
+
44
+ ##
45
+ # Requires necessary dependencies as well as application files from root lib and models
46
+ #
47
+ def load!
48
+ return false if loaded?
49
+ @_called_from = first_caller
50
+ Padrino.set_encoding
51
+ Padrino.set_load_paths(*load_paths) # We set the padrino load paths
52
+ Padrino::Logger.setup! # Initialize our logger
53
+ Padrino.require_dependencies("#{root}/config/database.rb", :nodeps => true) # Be sure to don't remove constants from dbs.
54
+ Padrino::Reloader.lock! # Now we can remove constant from here to down
55
+ Padrino.before_load.each(&:call) # Run before hooks
56
+ Padrino.dependency_paths.each { |path| Padrino.require_dependencies(path) }
57
+ Padrino.after_load.each(&:call) # Run after hooks
58
+ Padrino::Reloader.run!
59
+ Thread.current[:padrino_loaded] = true
60
+ end
61
+
62
+ ##
63
+ # Clear the padrino env
64
+ #
65
+ def clear!
66
+ Padrino.clear_middleware!
67
+ Padrino.mounted_apps.clear
68
+ @_load_paths = nil
69
+ @_dependency_paths = nil
70
+ @_global_configuration = nil
71
+ Padrino.before_load.clear
72
+ Padrino.after_load.clear
73
+ Padrino::Reloader.clear!
74
+ Thread.current[:padrino_loaded] = nil
75
+ end
76
+
77
+ ##
78
+ # Method for reloading required applications and their files
79
+ #
80
+ def reload!
81
+ Padrino.before_load.each(&:call) # Run before hooks
82
+ Padrino::Reloader.reload! # detects the modified files
83
+ Padrino.after_load.each(&:call) # Run after hooks
84
+ end
85
+
86
+ ##
87
+ # This adds the ablity to instantiate Padrino.load! after Padrino::Application definition.
88
+ #
89
+ def called_from
90
+ @_called_from || first_caller
91
+ end
92
+
93
+ ##
94
+ # Return true if Padrino was loaded with Padrino.load!
95
+ #
96
+ def loaded?
97
+ Thread.current[:padrino_loaded]
98
+ end
99
+
100
+ ##
101
+ # Attempts to require all dependency libs that we need.
102
+ # If you use this method we can perform correctly a Padrino.reload!
103
+ # Another good thing that this method are dependency check, for example:
104
+ #
105
+ # models
106
+ # \-- a.rb => require something of b.rb
107
+ # \-- b.rb
108
+ #
109
+ # In the example above if we do:
110
+ #
111
+ # Dir["/models/*.rb"].each { |r| require r }
112
+ #
113
+ # we get an error, because we try to require first a.rb that need +something+ of b.rb.
114
+ #
115
+ # With +require_dependencies+ we don't have this problem.
116
+ #
117
+ # ==== Examples
118
+ #
119
+ # # For require all our app libs we need to do:
120
+ # require_dependencies("#{Padrino.root}/lib/**/*.rb")
121
+ #
122
+ def require_dependencies(*paths)
123
+ options = paths.extract_options!
124
+
125
+ # Extract all files to load
126
+ files = paths.flatten.map { |path| Dir[path] }.flatten.uniq.sort
127
+
128
+ while files.present?
129
+ # List of errors and failed files
130
+ errors, failed = [], []
131
+
132
+ # We need a size to make sure things are loading
133
+ size_at_start = files.size
134
+
135
+ # Now we try to require our dependencies, we dup files
136
+ # so we don't perform delete on the original array during
137
+ # iteration, this prevent problems with rubinus
138
+ files.dup.each do |file|
139
+ begin
140
+ Padrino::Reloader.safe_load(file, options.dup)
141
+ files.delete(file)
142
+ rescue LoadError => e
143
+ errors << e
144
+ failed << file
145
+ rescue NameError => e
146
+ errors << e
147
+ failed << file
148
+ rescue Exception => e
149
+ raise e
150
+ end
151
+ end
152
+
153
+ # Stop processing if nothing loads or if everything has loaded
154
+ raise errors.last if files.size == size_at_start && files.present?
155
+ break if files.empty?
156
+ end
157
+ end
158
+
159
+ ##
160
+ # Returns default list of path globs to load as dependencies
161
+ # Appends custom dependency patterns to the be loaded for Padrino
162
+ #
163
+ # ==== Examples
164
+ # Padrino.dependency_paths << "#{Padrino.root}/uploaders/*.rb"
165
+ #
166
+ def dependency_paths
167
+ @_dependency_paths_was = [
168
+ "#{root}/config/database.rb", "#{root}/lib/**/*.rb", "#{root}/shared/lib/**/*.rb",
169
+ "#{root}/models/**/*.rb", "#{root}/shared/models/**/*.rb", "#{root}/config/apps.rb"
170
+ ]
171
+ @_dependency_paths ||= @_dependency_paths_was
172
+ end
173
+
174
+ ##
175
+ # Concat to $LOAD_PATH the given paths
176
+ #
177
+ def set_load_paths(*paths)
178
+ $:.concat(paths); load_paths.concat(paths)
179
+ $:.uniq!; load_paths.uniq!
180
+ end
181
+ end # self
182
+ end # Padrino