middleman 2.0.4 → 2.0.5

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