torquebox-console 0.2.3 → 0.2.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (1088) hide show
  1. data/bin/tbconsole +1 -2
  2. data/lib/torquebox/console/client.rb +11 -10
  3. data/lib/torquebox/console/version.rb +1 -1
  4. data/stomplets/torque_box_console.rb +7 -0
  5. data/vendor/bundle/ruby/1.8/bin/catstomp +23 -0
  6. data/vendor/bundle/ruby/1.8/bin/haml +23 -0
  7. data/vendor/bundle/ruby/1.8/bin/html2haml +23 -0
  8. data/vendor/bundle/ruby/1.8/bin/rackup +23 -0
  9. data/vendor/bundle/ruby/1.8/bin/rake +23 -0
  10. data/vendor/bundle/ruby/1.8/bin/rake2thor +23 -0
  11. data/vendor/bundle/ruby/1.8/bin/stompcat +23 -0
  12. data/vendor/bundle/ruby/1.8/bin/thor +23 -0
  13. data/vendor/bundle/ruby/1.8/bin/tilt +23 -0
  14. data/vendor/bundle/ruby/1.8/cache/haml-3.1.8.gem +0 -0
  15. data/vendor/bundle/ruby/1.8/cache/rack-1.5.2.gem +0 -0
  16. data/vendor/bundle/ruby/1.8/cache/rack-protection-1.4.0.gem +0 -0
  17. data/vendor/bundle/ruby/1.8/cache/rake-10.0.3.gem +0 -0
  18. data/vendor/bundle/ruby/1.8/cache/sinatra-1.3.5.gem +0 -0
  19. data/vendor/bundle/ruby/1.8/cache/stomp-1.2.8.gem +0 -0
  20. data/vendor/bundle/ruby/1.8/cache/thor-0.17.0.gem +0 -0
  21. data/vendor/bundle/ruby/1.8/cache/tilt-1.3.4.gem +0 -0
  22. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/CONTRIBUTING +3 -0
  23. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/MIT-LICENSE +20 -0
  24. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/README.md +133 -0
  25. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/REVISION +1 -0
  26. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/Rakefile +419 -0
  27. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/VERSION +1 -0
  28. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/VERSION_NAME +1 -0
  29. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/bin/haml +9 -0
  30. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/bin/html2haml +7 -0
  31. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/extra/update_watch.rb +13 -0
  32. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/init.rb +18 -0
  33. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/lib/haml.rb +47 -0
  34. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/lib/haml/buffer.rb +301 -0
  35. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/lib/haml/compiler.rb +453 -0
  36. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/lib/haml/engine.rb +312 -0
  37. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/lib/haml/error.rb +22 -0
  38. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/lib/haml/exec.rb +362 -0
  39. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/lib/haml/filters.rb +385 -0
  40. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/lib/haml/helpers.rb +608 -0
  41. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/lib/haml/helpers/action_view_extensions.rb +57 -0
  42. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/lib/haml/helpers/action_view_mods.rb +260 -0
  43. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/lib/haml/helpers/rails_323_textarea_fix.rb +41 -0
  44. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/lib/haml/helpers/xss_mods.rb +165 -0
  45. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/lib/haml/html.rb +412 -0
  46. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/lib/haml/html/erb.rb +141 -0
  47. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/lib/haml/parser.rb +711 -0
  48. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/lib/haml/railtie.rb +19 -0
  49. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/lib/haml/root.rb +7 -0
  50. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/lib/haml/shared.rb +78 -0
  51. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/lib/haml/template.rb +99 -0
  52. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/lib/haml/template/options.rb +16 -0
  53. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/lib/haml/template/patch.rb +58 -0
  54. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/lib/haml/template/plugin.rb +123 -0
  55. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/lib/haml/util.rb +842 -0
  56. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/lib/haml/version.rb +109 -0
  57. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/lib/sass.rb +8 -0
  58. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/lib/sass/plugin.rb +10 -0
  59. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/lib/sass/rails2_shim.rb +9 -0
  60. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/lib/sass/rails3_shim.rb +16 -0
  61. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/rails/init.rb +1 -0
  62. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/test/benchmark.rb +91 -0
  63. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/test/gemfiles/Gemfile.rails-2.0.x +8 -0
  64. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/test/gemfiles/Gemfile.rails-2.0.x.lock +38 -0
  65. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/test/gemfiles/Gemfile.rails-2.1.x +8 -0
  66. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/test/gemfiles/Gemfile.rails-2.1.x.lock +38 -0
  67. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/test/gemfiles/Gemfile.rails-2.2.x +8 -0
  68. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/test/gemfiles/Gemfile.rails-2.2.x.lock +38 -0
  69. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/test/gemfiles/Gemfile.rails-2.3.x +8 -0
  70. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/test/gemfiles/Gemfile.rails-2.3.x.lock +40 -0
  71. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/test/gemfiles/Gemfile.rails-3.0.x +8 -0
  72. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/test/gemfiles/Gemfile.rails-3.0.x.lock +85 -0
  73. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/test/gemfiles/Gemfile.rails-3.1.x +8 -0
  74. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/test/gemfiles/Gemfile.rails-3.1.x.lock +97 -0
  75. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/test/gemfiles/Gemfile.rails-3.2.x +8 -0
  76. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/test/gemfiles/Gemfile.rails-3.2.x.lock +95 -0
  77. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/test/gemfiles/Gemfile.rails-xss-2.3.x +9 -0
  78. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/test/gemfiles/Gemfile.rails-xss-2.3.x.lock +42 -0
  79. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/test/haml/engine_test.rb +1950 -0
  80. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/test/haml/erb/_av_partial_1.erb +12 -0
  81. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/test/haml/erb/_av_partial_2.erb +8 -0
  82. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/test/haml/erb/action_view.erb +62 -0
  83. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/test/haml/erb/standard.erb +55 -0
  84. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/test/haml/helper_test.rb +467 -0
  85. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/test/haml/html2haml/erb_tests.rb +440 -0
  86. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/test/haml/html2haml_test.rb +336 -0
  87. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/test/haml/markaby/standard.mab +52 -0
  88. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/test/haml/mocks/article.rb +6 -0
  89. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/test/haml/results/content_for_layout.xhtml +12 -0
  90. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/test/haml/results/eval_suppressed.xhtml +9 -0
  91. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/test/haml/results/filters.xhtml +62 -0
  92. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/test/haml/results/helpers.xhtml +70 -0
  93. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/test/haml/results/helpful.xhtml +10 -0
  94. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/test/haml/results/just_stuff.xhtml +70 -0
  95. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/test/haml/results/list.xhtml +12 -0
  96. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/test/haml/results/nuke_inner_whitespace.xhtml +40 -0
  97. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/test/haml/results/nuke_outer_whitespace.xhtml +148 -0
  98. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/test/haml/results/original_engine.xhtml +20 -0
  99. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/test/haml/results/partial_layout.xhtml +5 -0
  100. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/test/haml/results/partials.xhtml +21 -0
  101. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/test/haml/results/render_layout.xhtml +3 -0
  102. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/test/haml/results/silent_script.xhtml +74 -0
  103. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/test/haml/results/standard.xhtml +162 -0
  104. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/test/haml/results/tag_parsing.xhtml +23 -0
  105. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/test/haml/results/very_basic.xhtml +5 -0
  106. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/test/haml/results/whitespace_handling.xhtml +85 -0
  107. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/test/haml/spec/README.md +97 -0
  108. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/test/haml/spec/lua_haml_spec.lua +30 -0
  109. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/test/haml/spec/ruby_haml_test.rb +19 -0
  110. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/test/haml/spec/tests.json +534 -0
  111. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/test/haml/spec_test.rb +44 -0
  112. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/test/haml/template_test.rb +443 -0
  113. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/test/haml/templates/_av_partial_1.haml +9 -0
  114. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/test/haml/templates/_av_partial_1_ugly.haml +9 -0
  115. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/test/haml/templates/_av_partial_2.haml +5 -0
  116. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/test/haml/templates/_av_partial_2_ugly.haml +5 -0
  117. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/test/haml/templates/_layout.erb +3 -0
  118. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/test/haml/templates/_layout_for_partial.haml +3 -0
  119. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/test/haml/templates/_partial.haml +8 -0
  120. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/test/haml/templates/_text_area.haml +3 -0
  121. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/test/haml/templates/action_view.haml +47 -0
  122. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/test/haml/templates/action_view_ugly.haml +47 -0
  123. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/test/haml/templates/breakage.haml +8 -0
  124. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/test/haml/templates/content_for_layout.haml +8 -0
  125. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/test/haml/templates/eval_suppressed.haml +11 -0
  126. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/test/haml/templates/filters.haml +66 -0
  127. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/test/haml/templates/helpers.haml +55 -0
  128. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/test/haml/templates/helpful.haml +11 -0
  129. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/test/haml/templates/just_stuff.haml +85 -0
  130. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/test/haml/templates/list.haml +12 -0
  131. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/test/haml/templates/nuke_inner_whitespace.haml +32 -0
  132. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/test/haml/templates/nuke_outer_whitespace.haml +144 -0
  133. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/test/haml/templates/original_engine.haml +17 -0
  134. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/test/haml/templates/partial_layout.haml +10 -0
  135. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/test/haml/templates/partialize.haml +1 -0
  136. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/test/haml/templates/partials.haml +12 -0
  137. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/test/haml/templates/render_layout.haml +2 -0
  138. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/test/haml/templates/silent_script.haml +40 -0
  139. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/test/haml/templates/standard.haml +43 -0
  140. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/test/haml/templates/standard_ugly.haml +43 -0
  141. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/test/haml/templates/tag_parsing.haml +21 -0
  142. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/test/haml/templates/very_basic.haml +4 -0
  143. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/test/haml/templates/whitespace_handling.haml +87 -0
  144. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/test/haml/util_test.rb +300 -0
  145. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/test/linked_rails.rb +42 -0
  146. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/test/test_helper.rb +75 -0
  147. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/CONTRIBUTING +3 -0
  148. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/MIT-LICENSE +20 -0
  149. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/README.md +201 -0
  150. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/Rakefile +339 -0
  151. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/TODO +39 -0
  152. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/VERSION +1 -0
  153. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/VERSION_NAME +1 -0
  154. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/bin/sass +8 -0
  155. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/bin/sass-convert +7 -0
  156. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/bin/scss +8 -0
  157. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/doc-src/FAQ.md +35 -0
  158. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/doc-src/INDENTED_SYNTAX.md +210 -0
  159. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/doc-src/SASS_CHANGELOG.md +2327 -0
  160. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/doc-src/SASS_REFERENCE.md +1965 -0
  161. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/doc-src/SCSS_FOR_SASS_USERS.md +155 -0
  162. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/ext/extconf.rb +10 -0
  163. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/extra/update_watch.rb +13 -0
  164. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/init.rb +18 -0
  165. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/lib/sass.rb +73 -0
  166. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/lib/sass/cache_stores.rb +15 -0
  167. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/lib/sass/cache_stores/base.rb +86 -0
  168. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/lib/sass/cache_stores/chain.rb +33 -0
  169. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/lib/sass/cache_stores/filesystem.rb +60 -0
  170. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/lib/sass/cache_stores/memory.rb +47 -0
  171. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/lib/sass/cache_stores/null.rb +25 -0
  172. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/lib/sass/callbacks.rb +66 -0
  173. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/lib/sass/css.rb +295 -0
  174. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/lib/sass/engine.rb +878 -0
  175. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/lib/sass/environment.rb +166 -0
  176. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/lib/sass/error.rb +201 -0
  177. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/lib/sass/exec.rb +672 -0
  178. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/lib/sass/importers.rb +22 -0
  179. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/lib/sass/importers/base.rb +139 -0
  180. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/lib/sass/importers/filesystem.rb +149 -0
  181. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/lib/sass/less.rb +382 -0
  182. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/lib/sass/logger.rb +15 -0
  183. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/lib/sass/logger/base.rb +32 -0
  184. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/lib/sass/logger/log_level.rb +49 -0
  185. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/lib/sass/plugin.rb +132 -0
  186. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/lib/sass/plugin/compiler.rb +383 -0
  187. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/lib/sass/plugin/configuration.rb +123 -0
  188. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/lib/sass/plugin/generic.rb +15 -0
  189. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/lib/sass/plugin/merb.rb +48 -0
  190. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/lib/sass/plugin/rack.rb +60 -0
  191. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/lib/sass/plugin/rails.rb +47 -0
  192. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/lib/sass/plugin/staleness_checker.rb +173 -0
  193. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/lib/sass/railtie.rb +9 -0
  194. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/lib/sass/repl.rb +58 -0
  195. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/lib/sass/root.rb +7 -0
  196. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/lib/sass/script.rb +40 -0
  197. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/lib/sass/script/bool.rb +18 -0
  198. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/lib/sass/script/color.rb +480 -0
  199. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/lib/sass/script/css_lexer.rb +29 -0
  200. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/lib/sass/script/css_parser.rb +31 -0
  201. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/lib/sass/script/funcall.rb +175 -0
  202. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/lib/sass/script/functions.rb +1386 -0
  203. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/lib/sass/script/interpolation.rb +79 -0
  204. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/lib/sass/script/lexer.rb +339 -0
  205. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/lib/sass/script/list.rb +83 -0
  206. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/lib/sass/script/literal.rb +250 -0
  207. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/lib/sass/script/node.rb +99 -0
  208. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/lib/sass/script/number.rb +452 -0
  209. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/lib/sass/script/operation.rb +99 -0
  210. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/lib/sass/script/parser.rb +474 -0
  211. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/lib/sass/script/string.rb +51 -0
  212. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/lib/sass/script/string_interpolation.rb +103 -0
  213. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/lib/sass/script/unary_operation.rb +64 -0
  214. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/lib/sass/script/variable.rb +59 -0
  215. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/lib/sass/scss.rb +17 -0
  216. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/lib/sass/scss/css_parser.rb +46 -0
  217. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/lib/sass/scss/parser.rb +960 -0
  218. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/lib/sass/scss/rx.rb +128 -0
  219. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/lib/sass/scss/sass_parser.rb +11 -0
  220. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/lib/sass/scss/script_lexer.rb +15 -0
  221. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/lib/sass/scss/script_parser.rb +25 -0
  222. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/lib/sass/scss/static_parser.rb +40 -0
  223. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/lib/sass/selector.rb +361 -0
  224. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/lib/sass/selector/abstract_sequence.rb +62 -0
  225. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/lib/sass/selector/comma_sequence.rb +81 -0
  226. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/lib/sass/selector/sequence.rb +233 -0
  227. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/lib/sass/selector/simple.rb +113 -0
  228. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/lib/sass/selector/simple_sequence.rb +134 -0
  229. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/lib/sass/shared.rb +78 -0
  230. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/lib/sass/tree/charset_node.rb +22 -0
  231. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/lib/sass/tree/comment_node.rb +90 -0
  232. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/lib/sass/tree/debug_node.rb +18 -0
  233. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/lib/sass/tree/directive_node.rb +23 -0
  234. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/lib/sass/tree/each_node.rb +24 -0
  235. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/lib/sass/tree/extend_node.rb +29 -0
  236. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/lib/sass/tree/for_node.rb +36 -0
  237. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/lib/sass/tree/function_node.rb +27 -0
  238. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/lib/sass/tree/if_node.rb +52 -0
  239. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/lib/sass/tree/import_node.rb +68 -0
  240. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/lib/sass/tree/media_node.rb +32 -0
  241. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/lib/sass/tree/mixin_def_node.rb +27 -0
  242. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/lib/sass/tree/mixin_node.rb +32 -0
  243. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/lib/sass/tree/node.rb +201 -0
  244. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/lib/sass/tree/prop_node.rb +148 -0
  245. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/lib/sass/tree/return_node.rb +18 -0
  246. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/lib/sass/tree/root_node.rb +28 -0
  247. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/lib/sass/tree/rule_node.rb +136 -0
  248. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/lib/sass/tree/variable_node.rb +30 -0
  249. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/lib/sass/tree/visitors/base.rb +75 -0
  250. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/lib/sass/tree/visitors/check_nesting.rb +133 -0
  251. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/lib/sass/tree/visitors/convert.rb +260 -0
  252. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/lib/sass/tree/visitors/cssize.rb +175 -0
  253. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/lib/sass/tree/visitors/deep_copy.rb +87 -0
  254. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/lib/sass/tree/visitors/perform.rb +332 -0
  255. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/lib/sass/tree/visitors/set_options.rb +97 -0
  256. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/lib/sass/tree/visitors/to_css.rb +210 -0
  257. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/lib/sass/tree/warn_node.rb +18 -0
  258. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/lib/sass/tree/while_node.rb +18 -0
  259. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/lib/sass/util.rb +721 -0
  260. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/lib/sass/util/subset_map.rb +101 -0
  261. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/lib/sass/version.rb +112 -0
  262. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/rails/init.rb +1 -0
  263. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/sass.gemspec +33 -0
  264. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/test/Gemfile +4 -0
  265. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/test/Gemfile.lock +19 -0
  266. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/test/sass/cache_test.rb +89 -0
  267. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/test/sass/callbacks_test.rb +61 -0
  268. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/test/sass/conversion_test.rb +1199 -0
  269. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/test/sass/css2sass_test.rb +373 -0
  270. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/test/sass/data/hsl-rgb.txt +319 -0
  271. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/test/sass/engine_test.rb +2567 -0
  272. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/test/sass/extend_test.rb +1348 -0
  273. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/test/sass/fixtures/test_staleness_check_across_importers.css +1 -0
  274. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/test/sass/fixtures/test_staleness_check_across_importers.scss +1 -0
  275. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/test/sass/functions_test.rb +1038 -0
  276. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/test/sass/importer_test.rb +192 -0
  277. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/test/sass/less_conversion_test.rb +653 -0
  278. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/test/sass/logger_test.rb +58 -0
  279. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/test/sass/mock_importer.rb +49 -0
  280. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/test/sass/more_results/more1.css +9 -0
  281. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/test/sass/more_results/more1_with_line_comments.css +26 -0
  282. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/test/sass/more_results/more_import.css +29 -0
  283. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/test/sass/more_templates/_more_partial.sass +2 -0
  284. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/test/sass/more_templates/more1.sass +23 -0
  285. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/test/sass/more_templates/more_import.sass +11 -0
  286. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/test/sass/plugin_test.rb +472 -0
  287. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/test/sass/results/alt.css +4 -0
  288. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/test/sass/results/basic.css +9 -0
  289. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/test/sass/results/compact.css +5 -0
  290. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/test/sass/results/complex.css +86 -0
  291. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/test/sass/results/compressed.css +1 -0
  292. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/test/sass/results/expanded.css +19 -0
  293. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/test/sass/results/if.css +3 -0
  294. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/test/sass/results/import.css +31 -0
  295. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/test/sass/results/import_charset.css +4 -0
  296. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/test/sass/results/import_charset_1_8.css +4 -0
  297. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/test/sass/results/import_charset_ibm866.css +4 -0
  298. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/test/sass/results/line_numbers.css +49 -0
  299. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/test/sass/results/mixins.css +95 -0
  300. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/test/sass/results/multiline.css +24 -0
  301. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/test/sass/results/nested.css +22 -0
  302. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/test/sass/results/options.css +1 -0
  303. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/test/sass/results/parent_ref.css +13 -0
  304. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/test/sass/results/script.css +16 -0
  305. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/test/sass/results/scss_import.css +31 -0
  306. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/test/sass/results/scss_importee.css +2 -0
  307. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/test/sass/results/subdir/nested_subdir/nested_subdir.css +1 -0
  308. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/test/sass/results/subdir/subdir.css +3 -0
  309. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/test/sass/results/units.css +11 -0
  310. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/test/sass/results/warn.css +0 -0
  311. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/test/sass/results/warn_imported.css +0 -0
  312. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/test/sass/script_conversion_test.rb +285 -0
  313. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/test/sass/script_test.rb +514 -0
  314. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/test/sass/scss/css_test.rb +922 -0
  315. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/test/sass/scss/rx_test.rb +156 -0
  316. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/test/sass/scss/scss_test.rb +1273 -0
  317. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/test/sass/scss/test_helper.rb +37 -0
  318. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/test/sass/templates/_imported_charset_ibm866.sass +4 -0
  319. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/test/sass/templates/_imported_charset_utf8.sass +4 -0
  320. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/test/sass/templates/_partial.sass +2 -0
  321. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/test/sass/templates/alt.sass +16 -0
  322. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/test/sass/templates/basic.sass +23 -0
  323. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/test/sass/templates/bork1.sass +2 -0
  324. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/test/sass/templates/bork2.sass +2 -0
  325. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/test/sass/templates/bork3.sass +2 -0
  326. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/test/sass/templates/bork4.sass +2 -0
  327. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/test/sass/templates/bork5.sass +3 -0
  328. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/test/sass/templates/compact.sass +17 -0
  329. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/test/sass/templates/complex.sass +305 -0
  330. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/test/sass/templates/compressed.sass +15 -0
  331. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/test/sass/templates/expanded.sass +17 -0
  332. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/test/sass/templates/if.sass +11 -0
  333. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/test/sass/templates/import.sass +12 -0
  334. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/test/sass/templates/import_charset.sass +7 -0
  335. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/test/sass/templates/import_charset_1_8.sass +4 -0
  336. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/test/sass/templates/import_charset_ibm866.sass +9 -0
  337. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/test/sass/templates/importee.less +2 -0
  338. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/test/sass/templates/importee.sass +19 -0
  339. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/test/sass/templates/line_numbers.sass +13 -0
  340. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/test/sass/templates/mixin_bork.sass +5 -0
  341. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/test/sass/templates/mixins.sass +76 -0
  342. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/test/sass/templates/multiline.sass +20 -0
  343. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/test/sass/templates/nested.sass +25 -0
  344. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/test/sass/templates/nested_bork1.sass +2 -0
  345. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/test/sass/templates/nested_bork2.sass +2 -0
  346. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/test/sass/templates/nested_bork3.sass +2 -0
  347. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/test/sass/templates/nested_bork4.sass +2 -0
  348. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/test/sass/templates/nested_bork5.sass +2 -0
  349. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/test/sass/templates/nested_import.sass +2 -0
  350. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/test/sass/templates/nested_mixin_bork.sass +6 -0
  351. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/test/sass/templates/options.sass +2 -0
  352. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/test/sass/templates/parent_ref.sass +25 -0
  353. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/test/sass/templates/script.sass +101 -0
  354. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/test/sass/templates/scss_import.scss +11 -0
  355. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/test/sass/templates/scss_importee.scss +1 -0
  356. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/test/sass/templates/subdir/nested_subdir/_nested_partial.sass +2 -0
  357. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/test/sass/templates/subdir/nested_subdir/nested_subdir.sass +3 -0
  358. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/test/sass/templates/subdir/subdir.sass +6 -0
  359. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/test/sass/templates/units.sass +11 -0
  360. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/test/sass/templates/warn.sass +3 -0
  361. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/test/sass/templates/warn_imported.sass +4 -0
  362. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/test/sass/test_helper.rb +8 -0
  363. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/test/sass/util/subset_map_test.rb +91 -0
  364. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/test/sass/util_test.rb +266 -0
  365. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/test/test_helper.rb +69 -0
  366. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/vendor/fssm/Gemfile +3 -0
  367. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/vendor/fssm/LICENSE +20 -0
  368. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/vendor/fssm/README.markdown +83 -0
  369. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/vendor/fssm/Rakefile +11 -0
  370. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/vendor/fssm/example.rb +12 -0
  371. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/vendor/fssm/fssm.gemspec +24 -0
  372. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/vendor/fssm/lib/fssm.rb +37 -0
  373. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/vendor/fssm/lib/fssm/backends/fsevents.rb +36 -0
  374. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/vendor/fssm/lib/fssm/backends/inotify.rb +26 -0
  375. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/vendor/fssm/lib/fssm/backends/polling.rb +25 -0
  376. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/vendor/fssm/lib/fssm/backends/rbfsevent.rb +42 -0
  377. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/vendor/fssm/lib/fssm/backends/rubycocoa/fsevents.rb +131 -0
  378. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/vendor/fssm/lib/fssm/monitor.rb +36 -0
  379. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/vendor/fssm/lib/fssm/path.rb +94 -0
  380. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/vendor/fssm/lib/fssm/pathname.rb +36 -0
  381. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/vendor/fssm/lib/fssm/state/directory.rb +75 -0
  382. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/vendor/fssm/lib/fssm/state/file.rb +24 -0
  383. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/vendor/fssm/lib/fssm/support.rb +92 -0
  384. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/vendor/fssm/lib/fssm/tree.rb +176 -0
  385. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/vendor/fssm/lib/fssm/version.rb +3 -0
  386. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/vendor/fssm/profile/prof-cache.rb +40 -0
  387. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/vendor/fssm/profile/prof-fssm-pathname.html +1231 -0
  388. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/vendor/fssm/profile/prof-pathname-rubinius.rb +35 -0
  389. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/vendor/fssm/profile/prof-pathname.rb +68 -0
  390. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/vendor/fssm/profile/prof-plain-pathname.html +988 -0
  391. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/vendor/fssm/profile/prof.html +2379 -0
  392. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/vendor/fssm/spec/count_down_latch.rb +151 -0
  393. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/vendor/fssm/spec/monitor_spec.rb +202 -0
  394. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/vendor/fssm/spec/path_spec.rb +96 -0
  395. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/vendor/fssm/spec/root/duck/quack.txt +0 -0
  396. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/vendor/fssm/spec/root/file.css +0 -0
  397. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/vendor/fssm/spec/root/file.rb +0 -0
  398. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/vendor/fssm/spec/root/file.yml +0 -0
  399. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/vendor/fssm/spec/root/moo/cow.txt +0 -0
  400. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/vendor/fssm/spec/spec_helper.rb +14 -0
  401. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/yard/callbacks.rb +29 -0
  402. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/yard/default/fulldoc/html/css/common.sass +26 -0
  403. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/yard/default/layout/html/footer.erb +12 -0
  404. data/vendor/bundle/ruby/1.8/gems/haml-3.1.8/vendor/sass/yard/inherited_hash.rb +41 -0
  405. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/COPYING +18 -0
  406. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/KNOWN-ISSUES +30 -0
  407. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/README.rdoc +624 -0
  408. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/Rakefile +125 -0
  409. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/SPEC +237 -0
  410. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/bin/rackup +4 -0
  411. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/contrib/rack.png +0 -0
  412. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/contrib/rack.svg +150 -0
  413. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/contrib/rack_logo.svg +111 -0
  414. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/contrib/rdoc.css +412 -0
  415. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/example/lobster.ru +4 -0
  416. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/example/protectedlobster.rb +14 -0
  417. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/example/protectedlobster.ru +8 -0
  418. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/lib/rack.rb +87 -0
  419. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/lib/rack/auth/abstract/handler.rb +37 -0
  420. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/lib/rack/auth/abstract/request.rb +43 -0
  421. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/lib/rack/auth/basic.rb +58 -0
  422. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/lib/rack/auth/digest/md5.rb +129 -0
  423. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/lib/rack/auth/digest/nonce.rb +51 -0
  424. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/lib/rack/auth/digest/params.rb +53 -0
  425. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/lib/rack/auth/digest/request.rb +41 -0
  426. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/lib/rack/backports/uri/common_18.rb +56 -0
  427. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/lib/rack/backports/uri/common_192.rb +52 -0
  428. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/lib/rack/backports/uri/common_193.rb +29 -0
  429. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/lib/rack/body_proxy.rb +39 -0
  430. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/lib/rack/builder.rb +149 -0
  431. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/lib/rack/cascade.rb +52 -0
  432. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/lib/rack/chunked.rb +58 -0
  433. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/lib/rack/commonlogger.rb +64 -0
  434. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/lib/rack/conditionalget.rb +67 -0
  435. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/lib/rack/config.rb +20 -0
  436. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/lib/rack/content_length.rb +33 -0
  437. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/lib/rack/content_type.rb +29 -0
  438. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/lib/rack/deflater.rb +116 -0
  439. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/lib/rack/directory.rb +161 -0
  440. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/lib/rack/etag.rb +64 -0
  441. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/lib/rack/file.rb +138 -0
  442. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/lib/rack/handler.rb +107 -0
  443. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/lib/rack/handler/cgi.rb +61 -0
  444. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/lib/rack/handler/evented_mongrel.rb +8 -0
  445. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/lib/rack/handler/fastcgi.rb +98 -0
  446. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/lib/rack/handler/lsws.rb +61 -0
  447. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/lib/rack/handler/mongrel.rb +100 -0
  448. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/lib/rack/handler/scgi.rb +67 -0
  449. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/lib/rack/handler/swiftiplied_mongrel.rb +8 -0
  450. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/lib/rack/handler/thin.rb +27 -0
  451. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/lib/rack/handler/webrick.rb +81 -0
  452. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/lib/rack/head.rb +22 -0
  453. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/lib/rack/lint.rb +699 -0
  454. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/lib/rack/lobster.rb +65 -0
  455. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/lib/rack/lock.rb +26 -0
  456. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/lib/rack/logger.rb +18 -0
  457. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/lib/rack/methodoverride.rb +31 -0
  458. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/lib/rack/mime.rb +677 -0
  459. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/lib/rack/mock.rb +190 -0
  460. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/lib/rack/multipart.rb +34 -0
  461. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/lib/rack/multipart/generator.rb +93 -0
  462. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/lib/rack/multipart/parser.rb +176 -0
  463. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/lib/rack/multipart/uploaded_file.rb +34 -0
  464. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/lib/rack/nulllogger.rb +18 -0
  465. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/lib/rack/recursive.rb +61 -0
  466. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/lib/rack/reloader.rb +109 -0
  467. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/lib/rack/request.rb +380 -0
  468. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/lib/rack/response.rb +155 -0
  469. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/lib/rack/rewindable_input.rb +104 -0
  470. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/lib/rack/runtime.rb +27 -0
  471. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/lib/rack/sendfile.rb +155 -0
  472. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/lib/rack/server.rb +362 -0
  473. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/lib/rack/session/abstract/id.rb +398 -0
  474. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/lib/rack/session/cookie.rb +178 -0
  475. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/lib/rack/session/memcache.rb +93 -0
  476. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/lib/rack/session/pool.rb +79 -0
  477. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/lib/rack/showexceptions.rb +378 -0
  478. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/lib/rack/showstatus.rb +113 -0
  479. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/lib/rack/static.rb +153 -0
  480. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/lib/rack/urlmap.rb +76 -0
  481. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/lib/rack/utils.rb +628 -0
  482. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/lib/rack/utils/okjson.rb +599 -0
  483. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/rack.gemspec +33 -0
  484. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/test/builder/anything.rb +5 -0
  485. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/test/builder/comment.ru +4 -0
  486. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/test/builder/end.ru +5 -0
  487. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/test/builder/line.ru +1 -0
  488. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/test/builder/options.ru +2 -0
  489. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/test/cgi/assets/folder/test.js +1 -0
  490. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/test/cgi/assets/fonts/font.eot +1 -0
  491. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/test/cgi/assets/images/image.png +1 -0
  492. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/test/cgi/assets/index.html +1 -0
  493. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/test/cgi/assets/javascripts/app.js +1 -0
  494. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/test/cgi/assets/stylesheets/app.css +1 -0
  495. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/test/cgi/lighttpd.conf +26 -0
  496. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/test/cgi/rackup_stub.rb +6 -0
  497. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/test/cgi/sample_rackup.ru +5 -0
  498. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/test/cgi/test +9 -0
  499. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/test/cgi/test+directory/test+file +1 -0
  500. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/test/cgi/test.fcgi +8 -0
  501. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/test/cgi/test.ru +5 -0
  502. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/test/gemloader.rb +10 -0
  503. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/test/multipart/bad_robots +259 -0
  504. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/test/multipart/binary +0 -0
  505. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/test/multipart/content_type_and_no_filename +6 -0
  506. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/test/multipart/empty +10 -0
  507. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/test/multipart/fail_16384_nofile +814 -0
  508. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/test/multipart/file1.txt +1 -0
  509. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/test/multipart/filename_and_modification_param +7 -0
  510. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/test/multipart/filename_with_escaped_quotes +6 -0
  511. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/test/multipart/filename_with_escaped_quotes_and_modification_param +7 -0
  512. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/test/multipart/filename_with_percent_escaped_quotes +6 -0
  513. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/test/multipart/filename_with_unescaped_percentages +6 -0
  514. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/test/multipart/filename_with_unescaped_percentages2 +6 -0
  515. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/test/multipart/filename_with_unescaped_percentages3 +6 -0
  516. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/test/multipart/filename_with_unescaped_quotes +6 -0
  517. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/test/multipart/ie +6 -0
  518. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/test/multipart/mixed_files +21 -0
  519. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/test/multipart/nested +10 -0
  520. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/test/multipart/none +9 -0
  521. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/test/multipart/semicolon +6 -0
  522. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/test/multipart/text +15 -0
  523. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/test/multipart/webkit +32 -0
  524. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/test/rackup/config.ru +31 -0
  525. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/test/registering_handler/rack/handler/registering_myself.rb +8 -0
  526. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/test/spec_auth_basic.rb +81 -0
  527. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/test/spec_auth_digest.rb +259 -0
  528. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/test/spec_body_proxy.rb +69 -0
  529. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/test/spec_builder.rb +214 -0
  530. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/test/spec_cascade.rb +61 -0
  531. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/test/spec_cgi.rb +102 -0
  532. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/test/spec_chunked.rb +85 -0
  533. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/test/spec_commonlogger.rb +57 -0
  534. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/test/spec_conditionalget.rb +102 -0
  535. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/test/spec_config.rb +22 -0
  536. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/test/spec_content_length.rb +83 -0
  537. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/test/spec_content_type.rb +45 -0
  538. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/test/spec_deflater.rb +204 -0
  539. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/test/spec_directory.rb +88 -0
  540. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/test/spec_etag.rb +98 -0
  541. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/test/spec_fastcgi.rb +107 -0
  542. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/test/spec_file.rb +213 -0
  543. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/test/spec_handler.rb +59 -0
  544. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/test/spec_head.rb +43 -0
  545. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/test/spec_lint.rb +522 -0
  546. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/test/spec_lobster.rb +58 -0
  547. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/test/spec_lock.rb +164 -0
  548. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/test/spec_logger.rb +23 -0
  549. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/test/spec_methodoverride.rb +75 -0
  550. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/test/spec_mime.rb +51 -0
  551. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/test/spec_mock.rb +269 -0
  552. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/test/spec_mongrel.rb +182 -0
  553. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/test/spec_multipart.rb +445 -0
  554. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/test/spec_nulllogger.rb +20 -0
  555. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/test/spec_recursive.rb +72 -0
  556. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/test/spec_request.rb +1078 -0
  557. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/test/spec_response.rb +313 -0
  558. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/test/spec_rewindable_input.rb +118 -0
  559. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/test/spec_runtime.rb +49 -0
  560. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/test/spec_sendfile.rb +130 -0
  561. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/test/spec_server.rb +143 -0
  562. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/test/spec_session_abstract_id.rb +53 -0
  563. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/test/spec_session_cookie.rb +367 -0
  564. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/test/spec_session_memcache.rb +321 -0
  565. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/test/spec_session_pool.rb +209 -0
  566. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/test/spec_showexceptions.rb +92 -0
  567. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/test/spec_showstatus.rb +84 -0
  568. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/test/spec_static.rb +145 -0
  569. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/test/spec_thin.rb +91 -0
  570. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/test/spec_urlmap.rb +213 -0
  571. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/test/spec_utils.rb +573 -0
  572. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/test/spec_webrick.rb +143 -0
  573. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/test/static/another/index.html +1 -0
  574. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/test/static/index.html +1 -0
  575. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/test/testrequest.rb +78 -0
  576. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/test/unregistered_handler/rack/handler/unregistered.rb +7 -0
  577. data/vendor/bundle/ruby/1.8/gems/rack-1.5.2/test/unregistered_handler/rack/handler/unregistered_long_one.rb +7 -0
  578. data/vendor/bundle/ruby/1.8/gems/rack-protection-1.4.0/License +20 -0
  579. data/vendor/bundle/ruby/1.8/gems/rack-protection-1.4.0/README.md +82 -0
  580. data/vendor/bundle/ruby/1.8/gems/rack-protection-1.4.0/Rakefile +48 -0
  581. data/vendor/bundle/ruby/1.8/gems/rack-protection-1.4.0/lib/rack-protection.rb +1 -0
  582. data/vendor/bundle/ruby/1.8/gems/rack-protection-1.4.0/lib/rack/protection.rb +40 -0
  583. data/vendor/bundle/ruby/1.8/gems/rack-protection-1.4.0/lib/rack/protection/authenticity_token.rb +24 -0
  584. data/vendor/bundle/ruby/1.8/gems/rack-protection-1.4.0/lib/rack/protection/base.rb +107 -0
  585. data/vendor/bundle/ruby/1.8/gems/rack-protection-1.4.0/lib/rack/protection/escaped_params.rb +87 -0
  586. data/vendor/bundle/ruby/1.8/gems/rack-protection-1.4.0/lib/rack/protection/form_token.rb +23 -0
  587. data/vendor/bundle/ruby/1.8/gems/rack-protection-1.4.0/lib/rack/protection/frame_options.rb +37 -0
  588. data/vendor/bundle/ruby/1.8/gems/rack-protection-1.4.0/lib/rack/protection/http_origin.rb +32 -0
  589. data/vendor/bundle/ruby/1.8/gems/rack-protection-1.4.0/lib/rack/protection/ip_spoofing.rb +23 -0
  590. data/vendor/bundle/ruby/1.8/gems/rack-protection-1.4.0/lib/rack/protection/json_csrf.rb +35 -0
  591. data/vendor/bundle/ruby/1.8/gems/rack-protection-1.4.0/lib/rack/protection/path_traversal.rb +36 -0
  592. data/vendor/bundle/ruby/1.8/gems/rack-protection-1.4.0/lib/rack/protection/remote_referrer.rb +20 -0
  593. data/vendor/bundle/ruby/1.8/gems/rack-protection-1.4.0/lib/rack/protection/remote_token.rb +22 -0
  594. data/vendor/bundle/ruby/1.8/gems/rack-protection-1.4.0/lib/rack/protection/session_hijacking.rb +36 -0
  595. data/vendor/bundle/ruby/1.8/gems/rack-protection-1.4.0/lib/rack/protection/version.rb +16 -0
  596. data/vendor/bundle/ruby/1.8/gems/rack-protection-1.4.0/lib/rack/protection/xss_header.rb +25 -0
  597. data/vendor/bundle/ruby/1.8/gems/rack-protection-1.4.0/rack-protection.gemspec +92 -0
  598. data/vendor/bundle/ruby/1.8/gems/rack-protection-1.4.0/spec/authenticity_token_spec.rb +33 -0
  599. data/vendor/bundle/ruby/1.8/gems/rack-protection-1.4.0/spec/escaped_params_spec.rb +44 -0
  600. data/vendor/bundle/ruby/1.8/gems/rack-protection-1.4.0/spec/form_token_spec.rb +33 -0
  601. data/vendor/bundle/ruby/1.8/gems/rack-protection-1.4.0/spec/frame_options_spec.rb +39 -0
  602. data/vendor/bundle/ruby/1.8/gems/rack-protection-1.4.0/spec/http_origin_spec.rb +38 -0
  603. data/vendor/bundle/ruby/1.8/gems/rack-protection-1.4.0/spec/ip_spoofing_spec.rb +35 -0
  604. data/vendor/bundle/ruby/1.8/gems/rack-protection-1.4.0/spec/json_csrf_spec.rb +44 -0
  605. data/vendor/bundle/ruby/1.8/gems/rack-protection-1.4.0/spec/path_traversal_spec.rb +28 -0
  606. data/vendor/bundle/ruby/1.8/gems/rack-protection-1.4.0/spec/protection_spec.rb +37 -0
  607. data/vendor/bundle/ruby/1.8/gems/rack-protection-1.4.0/spec/remote_referrer_spec.rb +31 -0
  608. data/vendor/bundle/ruby/1.8/gems/rack-protection-1.4.0/spec/remote_token_spec.rb +42 -0
  609. data/vendor/bundle/ruby/1.8/gems/rack-protection-1.4.0/spec/session_hijacking_spec.rb +54 -0
  610. data/vendor/bundle/ruby/1.8/gems/rack-protection-1.4.0/spec/spec_helper.rb +163 -0
  611. data/vendor/bundle/ruby/1.8/gems/rack-protection-1.4.0/spec/xss_header_spec.rb +56 -0
  612. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/CHANGES +526 -0
  613. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/MIT-LICENSE +21 -0
  614. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/README.rdoc +187 -0
  615. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/Rakefile +374 -0
  616. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/TODO +21 -0
  617. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/bin/rake +33 -0
  618. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/doc/command_line_usage.rdoc +152 -0
  619. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/doc/example/Rakefile1 +38 -0
  620. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/doc/example/Rakefile2 +35 -0
  621. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/doc/example/a.c +6 -0
  622. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/doc/example/b.c +6 -0
  623. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/doc/example/main.c +11 -0
  624. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/doc/glossary.rdoc +51 -0
  625. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/doc/jamis.rb +591 -0
  626. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/doc/proto_rake.rdoc +127 -0
  627. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/doc/rake.1.gz +0 -0
  628. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/doc/rakefile.rdoc +557 -0
  629. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/doc/rational.rdoc +151 -0
  630. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/doc/release_notes/rake-0.4.14.rdoc +23 -0
  631. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/doc/release_notes/rake-0.4.15.rdoc +35 -0
  632. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/doc/release_notes/rake-0.5.0.rdoc +53 -0
  633. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/doc/release_notes/rake-0.5.3.rdoc +78 -0
  634. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/doc/release_notes/rake-0.5.4.rdoc +46 -0
  635. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/doc/release_notes/rake-0.6.0.rdoc +141 -0
  636. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/doc/release_notes/rake-0.7.0.rdoc +119 -0
  637. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/doc/release_notes/rake-0.7.1.rdoc +59 -0
  638. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/doc/release_notes/rake-0.7.2.rdoc +121 -0
  639. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/doc/release_notes/rake-0.7.3.rdoc +47 -0
  640. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/doc/release_notes/rake-0.8.0.rdoc +114 -0
  641. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/doc/release_notes/rake-0.8.2.rdoc +165 -0
  642. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/doc/release_notes/rake-0.8.3.rdoc +112 -0
  643. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/doc/release_notes/rake-0.8.4.rdoc +147 -0
  644. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/doc/release_notes/rake-0.8.5.rdoc +53 -0
  645. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/doc/release_notes/rake-0.8.6.rdoc +55 -0
  646. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/doc/release_notes/rake-0.8.7.rdoc +55 -0
  647. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/doc/release_notes/rake-0.9.0.rdoc +112 -0
  648. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/doc/release_notes/rake-0.9.1.rdoc +52 -0
  649. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/doc/release_notes/rake-0.9.2.2.rdoc +55 -0
  650. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/doc/release_notes/rake-0.9.2.rdoc +49 -0
  651. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/doc/release_notes/rake-0.9.3.rdoc +102 -0
  652. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/doc/release_notes/rake-0.9.4.rdoc +110 -0
  653. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/doc/release_notes/rake-0.9.5.rdoc +114 -0
  654. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/doc/release_notes/rake-0.9.6.rdoc +127 -0
  655. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/doc/release_notes/rake-10.0.0.rdoc +178 -0
  656. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/doc/release_notes/rake-10.0.1.rdoc +187 -0
  657. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/doc/release_notes/rake-10.0.2.rdoc +191 -0
  658. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/doc/release_notes/rake-10.0.3.rdoc +191 -0
  659. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/install.rb +90 -0
  660. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/lib/rake.rb +71 -0
  661. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/lib/rake/alt_system.rb +109 -0
  662. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/lib/rake/application.rb +669 -0
  663. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/lib/rake/backtrace.rb +18 -0
  664. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/lib/rake/clean.rb +32 -0
  665. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/lib/rake/cloneable.rb +16 -0
  666. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/lib/rake/contrib/compositepublisher.rb +21 -0
  667. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/lib/rake/contrib/ftptools.rb +151 -0
  668. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/lib/rake/contrib/publisher.rb +73 -0
  669. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/lib/rake/contrib/rubyforgepublisher.rb +16 -0
  670. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/lib/rake/contrib/sshpublisher.rb +50 -0
  671. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/lib/rake/contrib/sys.rb +1 -0
  672. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/lib/rake/default_loader.rb +10 -0
  673. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/lib/rake/dsl_definition.rb +156 -0
  674. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/lib/rake/early_time.rb +18 -0
  675. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/lib/rake/ext/core.rb +27 -0
  676. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/lib/rake/ext/module.rb +0 -0
  677. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/lib/rake/ext/string.rb +168 -0
  678. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/lib/rake/ext/time.rb +15 -0
  679. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/lib/rake/file_creation_task.rb +24 -0
  680. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/lib/rake/file_list.rb +410 -0
  681. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/lib/rake/file_task.rb +47 -0
  682. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/lib/rake/file_utils.rb +114 -0
  683. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/lib/rake/file_utils_ext.rb +146 -0
  684. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/lib/rake/gempackagetask.rb +1 -0
  685. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/lib/rake/invocation_chain.rb +51 -0
  686. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/lib/rake/invocation_exception_mixin.rb +16 -0
  687. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/lib/rake/loaders/makefile.rb +40 -0
  688. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/lib/rake/multi_task.rb +13 -0
  689. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/lib/rake/name_space.rb +25 -0
  690. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/lib/rake/packagetask.rb +185 -0
  691. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/lib/rake/pathmap.rb +1 -0
  692. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/lib/rake/phony.rb +15 -0
  693. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/lib/rake/private_reader.rb +20 -0
  694. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/lib/rake/promise.rb +99 -0
  695. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/lib/rake/pseudo_status.rb +24 -0
  696. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/lib/rake/rake_module.rb +37 -0
  697. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/lib/rake/rake_test_loader.rb +22 -0
  698. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/lib/rake/rdoctask.rb +1 -0
  699. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/lib/rake/ruby182_test_unit_fix.rb +25 -0
  700. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/lib/rake/rule_recursion_overflow_error.rb +20 -0
  701. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/lib/rake/runtest.rb +22 -0
  702. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/lib/rake/task.rb +350 -0
  703. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/lib/rake/task_argument_error.rb +7 -0
  704. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/lib/rake/task_arguments.rb +78 -0
  705. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/lib/rake/task_manager.rb +296 -0
  706. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/lib/rake/tasklib.rb +22 -0
  707. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/lib/rake/testtask.rb +198 -0
  708. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/lib/rake/thread_history_display.rb +48 -0
  709. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/lib/rake/thread_pool.rb +155 -0
  710. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/lib/rake/trace_output.rb +19 -0
  711. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/lib/rake/version.rb +13 -0
  712. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/lib/rake/win32.rb +55 -0
  713. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/test/file_creation.rb +34 -0
  714. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/test/helper.rb +562 -0
  715. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/test/test_private_reader.rb +42 -0
  716. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/test/test_rake.rb +40 -0
  717. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/test/test_rake_application.rb +515 -0
  718. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/test/test_rake_application_options.rb +443 -0
  719. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/test/test_rake_backtrace.rb +89 -0
  720. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/test/test_rake_clean.rb +14 -0
  721. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/test/test_rake_definitions.rb +80 -0
  722. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/test/test_rake_directory_task.rb +57 -0
  723. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/test/test_rake_dsl.rb +40 -0
  724. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/test/test_rake_early_time.rb +31 -0
  725. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/test/test_rake_extension.rb +59 -0
  726. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/test/test_rake_file_creation_task.rb +56 -0
  727. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/test/test_rake_file_list.rb +628 -0
  728. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/test/test_rake_file_list_path_map.rb +8 -0
  729. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/test/test_rake_file_task.rb +122 -0
  730. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/test/test_rake_file_utils.rb +305 -0
  731. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/test/test_rake_ftp_file.rb +59 -0
  732. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/test/test_rake_functional.rb +496 -0
  733. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/test/test_rake_invocation_chain.rb +52 -0
  734. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/test/test_rake_makefile_loader.rb +44 -0
  735. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/test/test_rake_multi_task.rb +59 -0
  736. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/test/test_rake_name_space.rb +43 -0
  737. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/test/test_rake_package_task.rb +79 -0
  738. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/test/test_rake_path_map.rb +157 -0
  739. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/test/test_rake_path_map_explode.rb +34 -0
  740. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/test/test_rake_path_map_partial.rb +18 -0
  741. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/test/test_rake_pseudo_status.rb +21 -0
  742. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/test/test_rake_rake_test_loader.rb +21 -0
  743. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/test/test_rake_reduce_compat.rb +30 -0
  744. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/test/test_rake_require.rb +40 -0
  745. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/test/test_rake_rules.rb +327 -0
  746. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/test/test_rake_task.rb +316 -0
  747. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/test/test_rake_task_argument_parsing.rb +103 -0
  748. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/test/test_rake_task_arguments.rb +88 -0
  749. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/test/test_rake_task_lib.rb +9 -0
  750. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/test/test_rake_task_manager.rb +157 -0
  751. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/test/test_rake_task_manager_argument_resolution.rb +19 -0
  752. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/test/test_rake_task_with_arguments.rb +171 -0
  753. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/test/test_rake_test_task.rb +120 -0
  754. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/test/test_rake_thread_pool.rb +123 -0
  755. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/test/test_rake_top_level_functions.rb +71 -0
  756. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/test/test_rake_win32.rb +72 -0
  757. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/test/test_thread_history_display.rb +91 -0
  758. data/vendor/bundle/ruby/1.8/gems/rake-10.0.3/test/test_trace_output.rb +43 -0
  759. data/vendor/bundle/ruby/1.8/gems/sinatra-1.3.5/AUTHORS +61 -0
  760. data/vendor/bundle/ruby/1.8/gems/sinatra-1.3.5/CHANGES +1063 -0
  761. data/vendor/bundle/ruby/1.8/gems/sinatra-1.3.5/Gemfile +82 -0
  762. data/vendor/bundle/ruby/1.8/gems/sinatra-1.3.5/LICENSE +22 -0
  763. data/vendor/bundle/ruby/1.8/gems/sinatra-1.3.5/README.de.rdoc +2097 -0
  764. data/vendor/bundle/ruby/1.8/gems/sinatra-1.3.5/README.es.rdoc +2078 -0
  765. data/vendor/bundle/ruby/1.8/gems/sinatra-1.3.5/README.fr.rdoc +2036 -0
  766. data/vendor/bundle/ruby/1.8/gems/sinatra-1.3.5/README.hu.rdoc +607 -0
  767. data/vendor/bundle/ruby/1.8/gems/sinatra-1.3.5/README.jp.rdoc +1043 -0
  768. data/vendor/bundle/ruby/1.8/gems/sinatra-1.3.5/README.ko.rdoc +1926 -0
  769. data/vendor/bundle/ruby/1.8/gems/sinatra-1.3.5/README.pt-br.rdoc +647 -0
  770. data/vendor/bundle/ruby/1.8/gems/sinatra-1.3.5/README.pt-pt.rdoc +646 -0
  771. data/vendor/bundle/ruby/1.8/gems/sinatra-1.3.5/README.rdoc +2017 -0
  772. data/vendor/bundle/ruby/1.8/gems/sinatra-1.3.5/README.ru.rdoc +1785 -0
  773. data/vendor/bundle/ruby/1.8/gems/sinatra-1.3.5/README.zh.rdoc +1816 -0
  774. data/vendor/bundle/ruby/1.8/gems/sinatra-1.3.5/Rakefile +183 -0
  775. data/vendor/bundle/ruby/1.8/gems/sinatra-1.3.5/examples/chat.rb +61 -0
  776. data/vendor/bundle/ruby/1.8/gems/sinatra-1.3.5/examples/simple.rb +3 -0
  777. data/vendor/bundle/ruby/1.8/gems/sinatra-1.3.5/examples/stream.ru +26 -0
  778. data/vendor/bundle/ruby/1.8/gems/sinatra-1.3.5/lib/sinatra.rb +4 -0
  779. data/vendor/bundle/ruby/1.8/gems/sinatra-1.3.5/lib/sinatra/base.rb +1728 -0
  780. data/vendor/bundle/ruby/1.8/gems/sinatra-1.3.5/lib/sinatra/images/404.png +0 -0
  781. data/vendor/bundle/ruby/1.8/gems/sinatra-1.3.5/lib/sinatra/images/500.png +0 -0
  782. data/vendor/bundle/ruby/1.8/gems/sinatra-1.3.5/lib/sinatra/main.rb +28 -0
  783. data/vendor/bundle/ruby/1.8/gems/sinatra-1.3.5/lib/sinatra/showexceptions.rb +340 -0
  784. data/vendor/bundle/ruby/1.8/gems/sinatra-1.3.5/lib/sinatra/version.rb +3 -0
  785. data/vendor/bundle/ruby/1.8/gems/sinatra-1.3.5/sinatra.gemspec +18 -0
  786. data/vendor/bundle/ruby/1.8/gems/sinatra-1.3.5/test/base_test.rb +160 -0
  787. data/vendor/bundle/ruby/1.8/gems/sinatra-1.3.5/test/builder_test.rb +95 -0
  788. data/vendor/bundle/ruby/1.8/gems/sinatra-1.3.5/test/coffee_test.rb +92 -0
  789. data/vendor/bundle/ruby/1.8/gems/sinatra-1.3.5/test/contest.rb +98 -0
  790. data/vendor/bundle/ruby/1.8/gems/sinatra-1.3.5/test/creole_test.rb +65 -0
  791. data/vendor/bundle/ruby/1.8/gems/sinatra-1.3.5/test/delegator_test.rb +162 -0
  792. data/vendor/bundle/ruby/1.8/gems/sinatra-1.3.5/test/encoding_test.rb +20 -0
  793. data/vendor/bundle/ruby/1.8/gems/sinatra-1.3.5/test/erb_test.rb +104 -0
  794. data/vendor/bundle/ruby/1.8/gems/sinatra-1.3.5/test/extensions_test.rb +100 -0
  795. data/vendor/bundle/ruby/1.8/gems/sinatra-1.3.5/test/filter_test.rb +428 -0
  796. data/vendor/bundle/ruby/1.8/gems/sinatra-1.3.5/test/haml_test.rb +101 -0
  797. data/vendor/bundle/ruby/1.8/gems/sinatra-1.3.5/test/helper.rb +123 -0
  798. data/vendor/bundle/ruby/1.8/gems/sinatra-1.3.5/test/helpers_test.rb +1783 -0
  799. data/vendor/bundle/ruby/1.8/gems/sinatra-1.3.5/test/integration/app.rb +62 -0
  800. data/vendor/bundle/ruby/1.8/gems/sinatra-1.3.5/test/integration_helper.rb +214 -0
  801. data/vendor/bundle/ruby/1.8/gems/sinatra-1.3.5/test/integration_test.rb +85 -0
  802. data/vendor/bundle/ruby/1.8/gems/sinatra-1.3.5/test/less_test.rb +67 -0
  803. data/vendor/bundle/ruby/1.8/gems/sinatra-1.3.5/test/liquid_test.rb +59 -0
  804. data/vendor/bundle/ruby/1.8/gems/sinatra-1.3.5/test/mapped_error_test.rb +259 -0
  805. data/vendor/bundle/ruby/1.8/gems/sinatra-1.3.5/test/markaby_test.rb +80 -0
  806. data/vendor/bundle/ruby/1.8/gems/sinatra-1.3.5/test/markdown_test.rb +82 -0
  807. data/vendor/bundle/ruby/1.8/gems/sinatra-1.3.5/test/middleware_test.rb +68 -0
  808. data/vendor/bundle/ruby/1.8/gems/sinatra-1.3.5/test/nokogiri_test.rb +69 -0
  809. data/vendor/bundle/ruby/1.8/gems/sinatra-1.3.5/test/public/favicon.ico +0 -0
  810. data/vendor/bundle/ruby/1.8/gems/sinatra-1.3.5/test/rack_test.rb +45 -0
  811. data/vendor/bundle/ruby/1.8/gems/sinatra-1.3.5/test/radius_test.rb +59 -0
  812. data/vendor/bundle/ruby/1.8/gems/sinatra-1.3.5/test/rdoc_test.rb +66 -0
  813. data/vendor/bundle/ruby/1.8/gems/sinatra-1.3.5/test/readme_test.rb +136 -0
  814. data/vendor/bundle/ruby/1.8/gems/sinatra-1.3.5/test/request_test.rb +45 -0
  815. data/vendor/bundle/ruby/1.8/gems/sinatra-1.3.5/test/response_test.rb +66 -0
  816. data/vendor/bundle/ruby/1.8/gems/sinatra-1.3.5/test/result_test.rb +98 -0
  817. data/vendor/bundle/ruby/1.8/gems/sinatra-1.3.5/test/route_added_hook_test.rb +59 -0
  818. data/vendor/bundle/ruby/1.8/gems/sinatra-1.3.5/test/routing_test.rb +1126 -0
  819. data/vendor/bundle/ruby/1.8/gems/sinatra-1.3.5/test/sass_test.rb +116 -0
  820. data/vendor/bundle/ruby/1.8/gems/sinatra-1.3.5/test/scss_test.rb +89 -0
  821. data/vendor/bundle/ruby/1.8/gems/sinatra-1.3.5/test/server_test.rb +48 -0
  822. data/vendor/bundle/ruby/1.8/gems/sinatra-1.3.5/test/settings_test.rb +538 -0
  823. data/vendor/bundle/ruby/1.8/gems/sinatra-1.3.5/test/sinatra_test.rb +17 -0
  824. data/vendor/bundle/ruby/1.8/gems/sinatra-1.3.5/test/slim_test.rb +88 -0
  825. data/vendor/bundle/ruby/1.8/gems/sinatra-1.3.5/test/static_test.rb +178 -0
  826. data/vendor/bundle/ruby/1.8/gems/sinatra-1.3.5/test/streaming_test.rb +140 -0
  827. data/vendor/bundle/ruby/1.8/gems/sinatra-1.3.5/test/templates_test.rb +298 -0
  828. data/vendor/bundle/ruby/1.8/gems/sinatra-1.3.5/test/textile_test.rb +65 -0
  829. data/vendor/bundle/ruby/1.8/gems/sinatra-1.3.5/test/views/a/in_a.str +1 -0
  830. data/vendor/bundle/ruby/1.8/gems/sinatra-1.3.5/test/views/ascii.erb +2 -0
  831. data/vendor/bundle/ruby/1.8/gems/sinatra-1.3.5/test/views/b/in_b.str +1 -0
  832. data/vendor/bundle/ruby/1.8/gems/sinatra-1.3.5/test/views/calc.html.erb +1 -0
  833. data/vendor/bundle/ruby/1.8/gems/sinatra-1.3.5/test/views/error.builder +3 -0
  834. data/vendor/bundle/ruby/1.8/gems/sinatra-1.3.5/test/views/error.erb +3 -0
  835. data/vendor/bundle/ruby/1.8/gems/sinatra-1.3.5/test/views/error.haml +3 -0
  836. data/vendor/bundle/ruby/1.8/gems/sinatra-1.3.5/test/views/error.sass +2 -0
  837. data/vendor/bundle/ruby/1.8/gems/sinatra-1.3.5/test/views/explicitly_nested.str +1 -0
  838. data/vendor/bundle/ruby/1.8/gems/sinatra-1.3.5/test/views/foo/hello.test +1 -0
  839. data/vendor/bundle/ruby/1.8/gems/sinatra-1.3.5/test/views/hello.builder +1 -0
  840. data/vendor/bundle/ruby/1.8/gems/sinatra-1.3.5/test/views/hello.coffee +1 -0
  841. data/vendor/bundle/ruby/1.8/gems/sinatra-1.3.5/test/views/hello.creole +1 -0
  842. data/vendor/bundle/ruby/1.8/gems/sinatra-1.3.5/test/views/hello.erb +1 -0
  843. data/vendor/bundle/ruby/1.8/gems/sinatra-1.3.5/test/views/hello.haml +1 -0
  844. data/vendor/bundle/ruby/1.8/gems/sinatra-1.3.5/test/views/hello.less +5 -0
  845. data/vendor/bundle/ruby/1.8/gems/sinatra-1.3.5/test/views/hello.liquid +1 -0
  846. data/vendor/bundle/ruby/1.8/gems/sinatra-1.3.5/test/views/hello.mab +1 -0
  847. data/vendor/bundle/ruby/1.8/gems/sinatra-1.3.5/test/views/hello.md +1 -0
  848. data/vendor/bundle/ruby/1.8/gems/sinatra-1.3.5/test/views/hello.nokogiri +1 -0
  849. data/vendor/bundle/ruby/1.8/gems/sinatra-1.3.5/test/views/hello.radius +1 -0
  850. data/vendor/bundle/ruby/1.8/gems/sinatra-1.3.5/test/views/hello.rdoc +1 -0
  851. data/vendor/bundle/ruby/1.8/gems/sinatra-1.3.5/test/views/hello.sass +2 -0
  852. data/vendor/bundle/ruby/1.8/gems/sinatra-1.3.5/test/views/hello.scss +3 -0
  853. data/vendor/bundle/ruby/1.8/gems/sinatra-1.3.5/test/views/hello.slim +1 -0
  854. data/vendor/bundle/ruby/1.8/gems/sinatra-1.3.5/test/views/hello.str +1 -0
  855. data/vendor/bundle/ruby/1.8/gems/sinatra-1.3.5/test/views/hello.test +1 -0
  856. data/vendor/bundle/ruby/1.8/gems/sinatra-1.3.5/test/views/hello.textile +1 -0
  857. data/vendor/bundle/ruby/1.8/gems/sinatra-1.3.5/test/views/layout2.builder +3 -0
  858. data/vendor/bundle/ruby/1.8/gems/sinatra-1.3.5/test/views/layout2.erb +2 -0
  859. data/vendor/bundle/ruby/1.8/gems/sinatra-1.3.5/test/views/layout2.haml +2 -0
  860. data/vendor/bundle/ruby/1.8/gems/sinatra-1.3.5/test/views/layout2.liquid +2 -0
  861. data/vendor/bundle/ruby/1.8/gems/sinatra-1.3.5/test/views/layout2.mab +2 -0
  862. data/vendor/bundle/ruby/1.8/gems/sinatra-1.3.5/test/views/layout2.nokogiri +3 -0
  863. data/vendor/bundle/ruby/1.8/gems/sinatra-1.3.5/test/views/layout2.radius +2 -0
  864. data/vendor/bundle/ruby/1.8/gems/sinatra-1.3.5/test/views/layout2.slim +3 -0
  865. data/vendor/bundle/ruby/1.8/gems/sinatra-1.3.5/test/views/layout2.str +2 -0
  866. data/vendor/bundle/ruby/1.8/gems/sinatra-1.3.5/test/views/layout2.test +1 -0
  867. data/vendor/bundle/ruby/1.8/gems/sinatra-1.3.5/test/views/nested.str +1 -0
  868. data/vendor/bundle/ruby/1.8/gems/sinatra-1.3.5/test/views/utf8.erb +2 -0
  869. data/vendor/bundle/ruby/1.8/gems/stomp-1.2.8/CHANGELOG.rdoc +196 -0
  870. data/vendor/bundle/ruby/1.8/gems/stomp-1.2.8/LICENSE +202 -0
  871. data/vendor/bundle/ruby/1.8/gems/stomp-1.2.8/README.rdoc +132 -0
  872. data/vendor/bundle/ruby/1.8/gems/stomp-1.2.8/Rakefile +80 -0
  873. data/vendor/bundle/ruby/1.8/gems/stomp-1.2.8/bin/catstomp +74 -0
  874. data/vendor/bundle/ruby/1.8/gems/stomp-1.2.8/bin/stompcat +75 -0
  875. data/vendor/bundle/ruby/1.8/gems/stomp-1.2.8/examples/client11_ex1.rb +89 -0
  876. data/vendor/bundle/ruby/1.8/gems/stomp-1.2.8/examples/client11_putget1.rb +71 -0
  877. data/vendor/bundle/ruby/1.8/gems/stomp-1.2.8/examples/conn11_ex1.rb +112 -0
  878. data/vendor/bundle/ruby/1.8/gems/stomp-1.2.8/examples/conn11_ex2.rb +87 -0
  879. data/vendor/bundle/ruby/1.8/gems/stomp-1.2.8/examples/conn11_hb1.rb +57 -0
  880. data/vendor/bundle/ruby/1.8/gems/stomp-1.2.8/examples/consumer.rb +34 -0
  881. data/vendor/bundle/ruby/1.8/gems/stomp-1.2.8/examples/get11conn_ex1.rb +117 -0
  882. data/vendor/bundle/ruby/1.8/gems/stomp-1.2.8/examples/get11conn_ex2.rb +77 -0
  883. data/vendor/bundle/ruby/1.8/gems/stomp-1.2.8/examples/logexamp.rb +81 -0
  884. data/vendor/bundle/ruby/1.8/gems/stomp-1.2.8/examples/logexamp_ssl.rb +81 -0
  885. data/vendor/bundle/ruby/1.8/gems/stomp-1.2.8/examples/publisher.rb +30 -0
  886. data/vendor/bundle/ruby/1.8/gems/stomp-1.2.8/examples/put11conn_ex1.rb +56 -0
  887. data/vendor/bundle/ruby/1.8/gems/stomp-1.2.8/examples/putget11_rh1.rb +93 -0
  888. data/vendor/bundle/ruby/1.8/gems/stomp-1.2.8/examples/slogger.rb +222 -0
  889. data/vendor/bundle/ruby/1.8/gems/stomp-1.2.8/examples/ssl_uc1.rb +46 -0
  890. data/vendor/bundle/ruby/1.8/gems/stomp-1.2.8/examples/ssl_uc1_ciphers.rb +46 -0
  891. data/vendor/bundle/ruby/1.8/gems/stomp-1.2.8/examples/ssl_uc2.rb +48 -0
  892. data/vendor/bundle/ruby/1.8/gems/stomp-1.2.8/examples/ssl_uc2_ciphers.rb +47 -0
  893. data/vendor/bundle/ruby/1.8/gems/stomp-1.2.8/examples/ssl_uc3.rb +50 -0
  894. data/vendor/bundle/ruby/1.8/gems/stomp-1.2.8/examples/ssl_uc3_ciphers.rb +47 -0
  895. data/vendor/bundle/ruby/1.8/gems/stomp-1.2.8/examples/ssl_uc4.rb +50 -0
  896. data/vendor/bundle/ruby/1.8/gems/stomp-1.2.8/examples/ssl_uc4_ciphers.rb +48 -0
  897. data/vendor/bundle/ruby/1.8/gems/stomp-1.2.8/examples/ssl_ucx_default_ciphers.rb +41 -0
  898. data/vendor/bundle/ruby/1.8/gems/stomp-1.2.8/examples/stomp11_common.rb +48 -0
  899. data/vendor/bundle/ruby/1.8/gems/stomp-1.2.8/examples/topic_consumer.rb +32 -0
  900. data/vendor/bundle/ruby/1.8/gems/stomp-1.2.8/examples/topic_publisher.rb +29 -0
  901. data/vendor/bundle/ruby/1.8/gems/stomp-1.2.8/lib/client/utils.rb +116 -0
  902. data/vendor/bundle/ruby/1.8/gems/stomp-1.2.8/lib/connection/heartbeats.rb +175 -0
  903. data/vendor/bundle/ruby/1.8/gems/stomp-1.2.8/lib/connection/netio.rb +360 -0
  904. data/vendor/bundle/ruby/1.8/gems/stomp-1.2.8/lib/connection/utf8.rb +294 -0
  905. data/vendor/bundle/ruby/1.8/gems/stomp-1.2.8/lib/connection/utils.rb +239 -0
  906. data/vendor/bundle/ruby/1.8/gems/stomp-1.2.8/lib/stomp.rb +39 -0
  907. data/vendor/bundle/ruby/1.8/gems/stomp-1.2.8/lib/stomp/client.rb +350 -0
  908. data/vendor/bundle/ruby/1.8/gems/stomp-1.2.8/lib/stomp/codec.rb +44 -0
  909. data/vendor/bundle/ruby/1.8/gems/stomp-1.2.8/lib/stomp/connection.rb +452 -0
  910. data/vendor/bundle/ruby/1.8/gems/stomp-1.2.8/lib/stomp/constants.rb +114 -0
  911. data/vendor/bundle/ruby/1.8/gems/stomp-1.2.8/lib/stomp/errors.rb +195 -0
  912. data/vendor/bundle/ruby/1.8/gems/stomp-1.2.8/lib/stomp/ext/hash.rb +31 -0
  913. data/vendor/bundle/ruby/1.8/gems/stomp-1.2.8/lib/stomp/message.rb +117 -0
  914. data/vendor/bundle/ruby/1.8/gems/stomp-1.2.8/lib/stomp/sslparams.rb +84 -0
  915. data/vendor/bundle/ruby/1.8/gems/stomp-1.2.8/lib/stomp/version.rb +12 -0
  916. data/vendor/bundle/ruby/1.8/gems/stomp-1.2.8/spec/client_shared_examples.rb +71 -0
  917. data/vendor/bundle/ruby/1.8/gems/stomp-1.2.8/spec/client_spec.rb +329 -0
  918. data/vendor/bundle/ruby/1.8/gems/stomp-1.2.8/spec/connection_spec.rb +431 -0
  919. data/vendor/bundle/ruby/1.8/gems/stomp-1.2.8/spec/message_spec.rb +58 -0
  920. data/vendor/bundle/ruby/1.8/gems/stomp-1.2.8/spec/spec_helper.rb +8 -0
  921. data/vendor/bundle/ruby/1.8/gems/stomp-1.2.8/stomp.gemspec +151 -0
  922. data/vendor/bundle/ruby/1.8/gems/stomp-1.2.8/test/test_client.rb +531 -0
  923. data/vendor/bundle/ruby/1.8/gems/stomp-1.2.8/test/test_codec.rb +119 -0
  924. data/vendor/bundle/ruby/1.8/gems/stomp-1.2.8/test/test_connection.rb +517 -0
  925. data/vendor/bundle/ruby/1.8/gems/stomp-1.2.8/test/test_connection1p.rb +396 -0
  926. data/vendor/bundle/ruby/1.8/gems/stomp-1.2.8/test/test_helper.rb +168 -0
  927. data/vendor/bundle/ruby/1.8/gems/stomp-1.2.8/test/test_message.rb +173 -0
  928. data/vendor/bundle/ruby/1.8/gems/stomp-1.2.8/test/test_ssl.rb +81 -0
  929. data/vendor/bundle/ruby/1.8/gems/stomp-1.2.8/test/tlogger.rb +80 -0
  930. data/vendor/bundle/ruby/1.8/gems/thor-0.17.0/CHANGELOG.rdoc +142 -0
  931. data/vendor/bundle/ruby/1.8/gems/thor-0.17.0/Gemfile +19 -0
  932. data/vendor/bundle/ruby/1.8/gems/thor-0.17.0/LICENSE.md +20 -0
  933. data/vendor/bundle/ruby/1.8/gems/thor-0.17.0/README.md +28 -0
  934. data/vendor/bundle/ruby/1.8/gems/thor-0.17.0/Thorfile +30 -0
  935. data/vendor/bundle/ruby/1.8/gems/thor-0.17.0/bin/rake2thor +86 -0
  936. data/vendor/bundle/ruby/1.8/gems/thor-0.17.0/bin/thor +6 -0
  937. data/vendor/bundle/ruby/1.8/gems/thor-0.17.0/lib/thor.rb +448 -0
  938. data/vendor/bundle/ruby/1.8/gems/thor-0.17.0/lib/thor/actions.rb +318 -0
  939. data/vendor/bundle/ruby/1.8/gems/thor-0.17.0/lib/thor/actions/create_file.rb +105 -0
  940. data/vendor/bundle/ruby/1.8/gems/thor-0.17.0/lib/thor/actions/create_link.rb +57 -0
  941. data/vendor/bundle/ruby/1.8/gems/thor-0.17.0/lib/thor/actions/directory.rb +117 -0
  942. data/vendor/bundle/ruby/1.8/gems/thor-0.17.0/lib/thor/actions/empty_directory.rb +153 -0
  943. data/vendor/bundle/ruby/1.8/gems/thor-0.17.0/lib/thor/actions/file_manipulation.rb +314 -0
  944. data/vendor/bundle/ruby/1.8/gems/thor-0.17.0/lib/thor/actions/inject_into_file.rb +109 -0
  945. data/vendor/bundle/ruby/1.8/gems/thor-0.17.0/lib/thor/base.rb +654 -0
  946. data/vendor/bundle/ruby/1.8/gems/thor-0.17.0/lib/thor/core_ext/file_binary_read.rb +9 -0
  947. data/vendor/bundle/ruby/1.8/gems/thor-0.17.0/lib/thor/core_ext/hash_with_indifferent_access.rb +80 -0
  948. data/vendor/bundle/ruby/1.8/gems/thor-0.17.0/lib/thor/core_ext/ordered_hash.rb +100 -0
  949. data/vendor/bundle/ruby/1.8/gems/thor-0.17.0/lib/thor/error.rb +35 -0
  950. data/vendor/bundle/ruby/1.8/gems/thor-0.17.0/lib/thor/group.rb +285 -0
  951. data/vendor/bundle/ruby/1.8/gems/thor-0.17.0/lib/thor/invocation.rb +170 -0
  952. data/vendor/bundle/ruby/1.8/gems/thor-0.17.0/lib/thor/parser.rb +4 -0
  953. data/vendor/bundle/ruby/1.8/gems/thor-0.17.0/lib/thor/parser/argument.rb +74 -0
  954. data/vendor/bundle/ruby/1.8/gems/thor-0.17.0/lib/thor/parser/arguments.rb +171 -0
  955. data/vendor/bundle/ruby/1.8/gems/thor-0.17.0/lib/thor/parser/option.rb +121 -0
  956. data/vendor/bundle/ruby/1.8/gems/thor-0.17.0/lib/thor/parser/options.rb +216 -0
  957. data/vendor/bundle/ruby/1.8/gems/thor-0.17.0/lib/thor/rake_compat.rb +72 -0
  958. data/vendor/bundle/ruby/1.8/gems/thor-0.17.0/lib/thor/runner.rb +321 -0
  959. data/vendor/bundle/ruby/1.8/gems/thor-0.17.0/lib/thor/shell.rb +88 -0
  960. data/vendor/bundle/ruby/1.8/gems/thor-0.17.0/lib/thor/shell/basic.rb +389 -0
  961. data/vendor/bundle/ruby/1.8/gems/thor-0.17.0/lib/thor/shell/color.rb +144 -0
  962. data/vendor/bundle/ruby/1.8/gems/thor-0.17.0/lib/thor/shell/html.rb +123 -0
  963. data/vendor/bundle/ruby/1.8/gems/thor-0.17.0/lib/thor/task.rb +132 -0
  964. data/vendor/bundle/ruby/1.8/gems/thor-0.17.0/lib/thor/util.rb +266 -0
  965. data/vendor/bundle/ruby/1.8/gems/thor-0.17.0/lib/thor/version.rb +3 -0
  966. data/vendor/bundle/ruby/1.8/gems/thor-0.17.0/spec/actions/create_file_spec.rb +170 -0
  967. data/vendor/bundle/ruby/1.8/gems/thor-0.17.0/spec/actions/create_link_spec.rb +81 -0
  968. data/vendor/bundle/ruby/1.8/gems/thor-0.17.0/spec/actions/directory_spec.rb +156 -0
  969. data/vendor/bundle/ruby/1.8/gems/thor-0.17.0/spec/actions/empty_directory_spec.rb +130 -0
  970. data/vendor/bundle/ruby/1.8/gems/thor-0.17.0/spec/actions/file_manipulation_spec.rb +382 -0
  971. data/vendor/bundle/ruby/1.8/gems/thor-0.17.0/spec/actions/inject_into_file_spec.rb +135 -0
  972. data/vendor/bundle/ruby/1.8/gems/thor-0.17.0/spec/actions_spec.rb +331 -0
  973. data/vendor/bundle/ruby/1.8/gems/thor-0.17.0/spec/base_spec.rb +279 -0
  974. data/vendor/bundle/ruby/1.8/gems/thor-0.17.0/spec/core_ext/hash_with_indifferent_access_spec.rb +48 -0
  975. data/vendor/bundle/ruby/1.8/gems/thor-0.17.0/spec/core_ext/ordered_hash_spec.rb +115 -0
  976. data/vendor/bundle/ruby/1.8/gems/thor-0.17.0/spec/exit_condition_spec.rb +19 -0
  977. data/vendor/bundle/ruby/1.8/gems/thor-0.17.0/spec/fixtures/application.rb +2 -0
  978. data/vendor/bundle/ruby/1.8/gems/thor-0.17.0/spec/fixtures/app{1}/README +3 -0
  979. data/vendor/bundle/ruby/1.8/gems/thor-0.17.0/spec/fixtures/bundle/execute.rb +6 -0
  980. data/vendor/bundle/ruby/1.8/gems/thor-0.17.0/spec/fixtures/bundle/main.thor +1 -0
  981. data/vendor/bundle/ruby/1.8/gems/thor-0.17.0/spec/fixtures/doc/%file_name%.rb.tt +1 -0
  982. data/vendor/bundle/ruby/1.8/gems/thor-0.17.0/spec/fixtures/doc/COMMENTER +11 -0
  983. data/vendor/bundle/ruby/1.8/gems/thor-0.17.0/spec/fixtures/doc/README +3 -0
  984. data/vendor/bundle/ruby/1.8/gems/thor-0.17.0/spec/fixtures/doc/block_helper.rb +3 -0
  985. data/vendor/bundle/ruby/1.8/gems/thor-0.17.0/spec/fixtures/doc/config.rb +1 -0
  986. data/vendor/bundle/ruby/1.8/gems/thor-0.17.0/spec/fixtures/doc/config.yaml.tt +1 -0
  987. data/vendor/bundle/ruby/1.8/gems/thor-0.17.0/spec/fixtures/enum.thor +10 -0
  988. data/vendor/bundle/ruby/1.8/gems/thor-0.17.0/spec/fixtures/group.thor +114 -0
  989. data/vendor/bundle/ruby/1.8/gems/thor-0.17.0/spec/fixtures/invoke.thor +112 -0
  990. data/vendor/bundle/ruby/1.8/gems/thor-0.17.0/spec/fixtures/path with spaces b/data/vendor/bundle/ruby/1.8/gems/thor-0.17.0/spec/fixtures/path with → spaces +0 -0
  991. data/vendor/bundle/ruby/1.8/gems/thor-0.17.0/spec/fixtures/preserve/script.sh +3 -0
  992. data/vendor/bundle/ruby/1.8/gems/thor-0.17.0/spec/fixtures/script.thor +195 -0
  993. data/vendor/bundle/ruby/1.8/gems/thor-0.17.0/spec/fixtures/task.thor +10 -0
  994. data/vendor/bundle/ruby/1.8/gems/thor-0.17.0/spec/group_spec.rb +216 -0
  995. data/vendor/bundle/ruby/1.8/gems/thor-0.17.0/spec/invocation_spec.rb +100 -0
  996. data/vendor/bundle/ruby/1.8/gems/thor-0.17.0/spec/parser/argument_spec.rb +53 -0
  997. data/vendor/bundle/ruby/1.8/gems/thor-0.17.0/spec/parser/arguments_spec.rb +66 -0
  998. data/vendor/bundle/ruby/1.8/gems/thor-0.17.0/spec/parser/option_spec.rb +202 -0
  999. data/vendor/bundle/ruby/1.8/gems/thor-0.17.0/spec/parser/options_spec.rb +395 -0
  1000. data/vendor/bundle/ruby/1.8/gems/thor-0.17.0/spec/rake_compat_spec.rb +72 -0
  1001. data/vendor/bundle/ruby/1.8/gems/thor-0.17.0/spec/register_spec.rb +197 -0
  1002. data/vendor/bundle/ruby/1.8/gems/thor-0.17.0/spec/runner_spec.rb +241 -0
  1003. data/vendor/bundle/ruby/1.8/gems/thor-0.17.0/spec/shell/basic_spec.rb +312 -0
  1004. data/vendor/bundle/ruby/1.8/gems/thor-0.17.0/spec/shell/color_spec.rb +81 -0
  1005. data/vendor/bundle/ruby/1.8/gems/thor-0.17.0/spec/shell/html_spec.rb +32 -0
  1006. data/vendor/bundle/ruby/1.8/gems/thor-0.17.0/spec/shell_spec.rb +47 -0
  1007. data/vendor/bundle/ruby/1.8/gems/thor-0.17.0/spec/spec_helper.rb +63 -0
  1008. data/vendor/bundle/ruby/1.8/gems/thor-0.17.0/spec/task_spec.rb +80 -0
  1009. data/vendor/bundle/ruby/1.8/gems/thor-0.17.0/spec/thor_spec.rb +488 -0
  1010. data/vendor/bundle/ruby/1.8/gems/thor-0.17.0/spec/util_spec.rb +196 -0
  1011. data/vendor/bundle/ruby/1.8/gems/thor-0.17.0/thor.gemspec +20 -0
  1012. data/vendor/bundle/ruby/1.8/gems/tilt-1.3.4/COPYING +18 -0
  1013. data/vendor/bundle/ruby/1.8/gems/tilt-1.3.4/Gemfile +32 -0
  1014. data/vendor/bundle/ruby/1.8/gems/tilt-1.3.4/HACKING +16 -0
  1015. data/vendor/bundle/ruby/1.8/gems/tilt-1.3.4/README.md +211 -0
  1016. data/vendor/bundle/ruby/1.8/gems/tilt-1.3.4/Rakefile +104 -0
  1017. data/vendor/bundle/ruby/1.8/gems/tilt-1.3.4/TEMPLATES.md +516 -0
  1018. data/vendor/bundle/ruby/1.8/gems/tilt-1.3.4/bin/tilt +112 -0
  1019. data/vendor/bundle/ruby/1.8/gems/tilt-1.3.4/lib/tilt.rb +204 -0
  1020. data/vendor/bundle/ruby/1.8/gems/tilt-1.3.4/lib/tilt/asciidoc.rb +34 -0
  1021. data/vendor/bundle/ruby/1.8/gems/tilt-1.3.4/lib/tilt/builder.rb +40 -0
  1022. data/vendor/bundle/ruby/1.8/gems/tilt-1.3.4/lib/tilt/coffee.rb +54 -0
  1023. data/vendor/bundle/ruby/1.8/gems/tilt-1.3.4/lib/tilt/css.rb +80 -0
  1024. data/vendor/bundle/ruby/1.8/gems/tilt-1.3.4/lib/tilt/csv.rb +71 -0
  1025. data/vendor/bundle/ruby/1.8/gems/tilt-1.3.4/lib/tilt/erb.rb +110 -0
  1026. data/vendor/bundle/ruby/1.8/gems/tilt-1.3.4/lib/tilt/etanni.rb +27 -0
  1027. data/vendor/bundle/ruby/1.8/gems/tilt-1.3.4/lib/tilt/haml.rb +64 -0
  1028. data/vendor/bundle/ruby/1.8/gems/tilt-1.3.4/lib/tilt/liquid.rb +45 -0
  1029. data/vendor/bundle/ruby/1.8/gems/tilt-1.3.4/lib/tilt/markaby.rb +52 -0
  1030. data/vendor/bundle/ruby/1.8/gems/tilt-1.3.4/lib/tilt/markdown.rb +214 -0
  1031. data/vendor/bundle/ruby/1.8/gems/tilt-1.3.4/lib/tilt/nokogiri.rb +43 -0
  1032. data/vendor/bundle/ruby/1.8/gems/tilt-1.3.4/lib/tilt/plain.rb +20 -0
  1033. data/vendor/bundle/ruby/1.8/gems/tilt-1.3.4/lib/tilt/radius.rb +55 -0
  1034. data/vendor/bundle/ruby/1.8/gems/tilt-1.3.4/lib/tilt/rdoc.rb +47 -0
  1035. data/vendor/bundle/ruby/1.8/gems/tilt-1.3.4/lib/tilt/string.rb +21 -0
  1036. data/vendor/bundle/ruby/1.8/gems/tilt-1.3.4/lib/tilt/template.rb +246 -0
  1037. data/vendor/bundle/ruby/1.8/gems/tilt-1.3.4/lib/tilt/textile.rb +30 -0
  1038. data/vendor/bundle/ruby/1.8/gems/tilt-1.3.4/lib/tilt/wiki.rb +58 -0
  1039. data/vendor/bundle/ruby/1.8/gems/tilt-1.3.4/lib/tilt/yajl.rb +94 -0
  1040. data/vendor/bundle/ruby/1.8/gems/tilt-1.3.4/test/contest.rb +68 -0
  1041. data/vendor/bundle/ruby/1.8/gems/tilt-1.3.4/test/markaby/locals.mab +1 -0
  1042. data/vendor/bundle/ruby/1.8/gems/tilt-1.3.4/test/markaby/markaby.mab +1 -0
  1043. data/vendor/bundle/ruby/1.8/gems/tilt-1.3.4/test/markaby/markaby_other_static.mab +1 -0
  1044. data/vendor/bundle/ruby/1.8/gems/tilt-1.3.4/test/markaby/render_twice.mab +1 -0
  1045. data/vendor/bundle/ruby/1.8/gems/tilt-1.3.4/test/markaby/scope.mab +1 -0
  1046. data/vendor/bundle/ruby/1.8/gems/tilt-1.3.4/test/markaby/yielding.mab +2 -0
  1047. data/vendor/bundle/ruby/1.8/gems/tilt-1.3.4/test/tilt_asciidoctor_test.rb +44 -0
  1048. data/vendor/bundle/ruby/1.8/gems/tilt-1.3.4/test/tilt_blueclothtemplate_test.rb +45 -0
  1049. data/vendor/bundle/ruby/1.8/gems/tilt-1.3.4/test/tilt_buildertemplate_test.rb +59 -0
  1050. data/vendor/bundle/ruby/1.8/gems/tilt-1.3.4/test/tilt_cache_test.rb +32 -0
  1051. data/vendor/bundle/ruby/1.8/gems/tilt-1.3.4/test/tilt_coffeescripttemplate_test.rb +114 -0
  1052. data/vendor/bundle/ruby/1.8/gems/tilt-1.3.4/test/tilt_compilesite_test.rb +51 -0
  1053. data/vendor/bundle/ruby/1.8/gems/tilt-1.3.4/test/tilt_creoletemplate_test.rb +28 -0
  1054. data/vendor/bundle/ruby/1.8/gems/tilt-1.3.4/test/tilt_csv_test.rb +73 -0
  1055. data/vendor/bundle/ruby/1.8/gems/tilt-1.3.4/test/tilt_erbtemplate_test.rb +239 -0
  1056. data/vendor/bundle/ruby/1.8/gems/tilt-1.3.4/test/tilt_erubistemplate_test.rb +151 -0
  1057. data/vendor/bundle/ruby/1.8/gems/tilt-1.3.4/test/tilt_etannitemplate_test.rb +173 -0
  1058. data/vendor/bundle/ruby/1.8/gems/tilt-1.3.4/test/tilt_fallback_test.rb +122 -0
  1059. data/vendor/bundle/ruby/1.8/gems/tilt-1.3.4/test/tilt_hamltemplate_test.rb +144 -0
  1060. data/vendor/bundle/ruby/1.8/gems/tilt-1.3.4/test/tilt_kramdown_test.rb +42 -0
  1061. data/vendor/bundle/ruby/1.8/gems/tilt-1.3.4/test/tilt_lesstemplate_test.less +1 -0
  1062. data/vendor/bundle/ruby/1.8/gems/tilt-1.3.4/test/tilt_lesstemplate_test.rb +42 -0
  1063. data/vendor/bundle/ruby/1.8/gems/tilt-1.3.4/test/tilt_liquidtemplate_test.rb +78 -0
  1064. data/vendor/bundle/ruby/1.8/gems/tilt-1.3.4/test/tilt_markaby_test.rb +88 -0
  1065. data/vendor/bundle/ruby/1.8/gems/tilt-1.3.4/test/tilt_markdown_test.rb +172 -0
  1066. data/vendor/bundle/ruby/1.8/gems/tilt-1.3.4/test/tilt_marukutemplate_test.rb +48 -0
  1067. data/vendor/bundle/ruby/1.8/gems/tilt-1.3.4/test/tilt_nokogiritemplate_test.rb +87 -0
  1068. data/vendor/bundle/ruby/1.8/gems/tilt-1.3.4/test/tilt_radiustemplate_test.rb +75 -0
  1069. data/vendor/bundle/ruby/1.8/gems/tilt-1.3.4/test/tilt_rdiscounttemplate_test.rb +55 -0
  1070. data/vendor/bundle/ruby/1.8/gems/tilt-1.3.4/test/tilt_rdoctemplate_test.rb +31 -0
  1071. data/vendor/bundle/ruby/1.8/gems/tilt-1.3.4/test/tilt_redcarpettemplate_test.rb +71 -0
  1072. data/vendor/bundle/ruby/1.8/gems/tilt-1.3.4/test/tilt_redclothtemplate_test.rb +36 -0
  1073. data/vendor/bundle/ruby/1.8/gems/tilt-1.3.4/test/tilt_sasstemplate_test.rb +41 -0
  1074. data/vendor/bundle/ruby/1.8/gems/tilt-1.3.4/test/tilt_stringtemplate_test.rb +170 -0
  1075. data/vendor/bundle/ruby/1.8/gems/tilt-1.3.4/test/tilt_template_test.rb +167 -0
  1076. data/vendor/bundle/ruby/1.8/gems/tilt-1.3.4/test/tilt_test.rb +65 -0
  1077. data/vendor/bundle/ruby/1.8/gems/tilt-1.3.4/test/tilt_wikiclothtemplate_test.rb +32 -0
  1078. data/vendor/bundle/ruby/1.8/gems/tilt-1.3.4/test/tilt_yajltemplate_test.rb +101 -0
  1079. data/vendor/bundle/ruby/1.8/gems/tilt-1.3.4/tilt.gemspec +119 -0
  1080. data/vendor/bundle/ruby/1.8/specifications/haml-3.1.8.gemspec +34 -0
  1081. data/vendor/bundle/ruby/1.8/specifications/rack-1.5.2.gemspec +36 -0
  1082. data/vendor/bundle/ruby/1.8/specifications/rack-protection-1.4.0.gemspec +34 -0
  1083. data/vendor/bundle/ruby/1.8/specifications/rake-10.0.3.gemspec +34 -0
  1084. data/vendor/bundle/ruby/1.8/specifications/sinatra-1.3.5.gemspec +37 -0
  1085. data/vendor/bundle/ruby/1.8/specifications/stomp-1.2.8.gemspec +31 -0
  1086. data/vendor/bundle/ruby/1.8/specifications/thor-0.17.0.gemspec +30 -0
  1087. data/vendor/bundle/ruby/1.8/specifications/tilt-1.3.4.gemspec +98 -0
  1088. metadata +1263 -2
@@ -0,0 +1,1816 @@
1
+ = Sinatra
2
+ <i>注:本文档仅仅是英文版的翻译,会出现内容没有及时更新的情况发生。
3
+ 如有不一致的地方,请以英文版为准。</i>
4
+
5
+ Sinatra是一个基于Ruby语言,以最小精力为代价快速创建web应用为目的的DSL(
6
+ 领域专属语言):
7
+
8
+ # myapp.rb
9
+ require 'sinatra'
10
+
11
+ get '/' do
12
+ 'Hello world!'
13
+ end
14
+
15
+ 安装gem然后运行:
16
+
17
+ gem install sinatra
18
+ ruby -rubygems myapp.rb
19
+
20
+ 在该地址查看: http://localhost:4567
21
+
22
+ 推荐同时运行<tt>gem install thin</tt>,Sinatra会优先选择thin作为服务器。
23
+
24
+ == 路由
25
+
26
+ 在Sinatra中,一个路由是一个HTTP方法与URL匹配范式的配对。
27
+ 每个路由都与一个代码块关联:
28
+
29
+ get '/' do
30
+ .. 显示一些事物 ..
31
+ end
32
+
33
+ post '/' do
34
+ .. 创建一些事物 ..
35
+ end
36
+
37
+ put '/' do
38
+ .. 更新一些事物 ..
39
+ end
40
+
41
+ delete '/' do
42
+ .. 消灭一些事物 ..
43
+ end
44
+
45
+ options '/' do
46
+ .. 满足一些事物 ..
47
+ end
48
+
49
+ 路由按照它们被定义的顺序进行匹配。
50
+ 第一个与请求匹配的路由会被调用。
51
+
52
+ 路由范式可以包括具名参数,可通过<tt>params</tt>哈希表获得:
53
+
54
+ get '/hello/:name' do
55
+ # 匹配 "GET /hello/foo" 和 "GET /hello/bar"
56
+ # params[:name] 的值是 'foo' 或者 'bar'
57
+ "Hello #{params[:name]}!"
58
+ end
59
+
60
+ 你同样可以通过代码块参数获得具名参数:
61
+
62
+ get '/hello/:name' do |n|
63
+ "Hello #{n}!"
64
+ end
65
+
66
+ 路由范式也可以包含通配符参数,
67
+ 可以通过<tt>params[:splat]</tt> 数组获得。
68
+
69
+ get '/say/*/to/*' do
70
+ # 匹配 /say/hello/to/world
71
+ params[:splat] # => ["hello", "world"]
72
+ end
73
+
74
+ get '/download/*.*' do
75
+ # 匹配 /download/path/to/file.xml
76
+ params[:splat] # => ["path/to/file", "xml"]
77
+ end
78
+
79
+ 通过正则表达式匹配的路由:
80
+
81
+ get %r{/hello/([\w]+)} do
82
+ "Hello, #{params[:captures].first}!"
83
+ end
84
+
85
+ 或者使用代码块参数:
86
+
87
+ get %r{/hello/([\w]+)} do |c|
88
+ "Hello, #{c}!"
89
+ end
90
+
91
+ === 条件
92
+
93
+ 路由也可以包含多样的匹配条件,比如user agent:
94
+
95
+ get '/foo', :agent => /Songbird (\d\.\d)[\d\/]*?/ do
96
+ "你正在使用Songbird,版本是 #{params[:agent][0]}"
97
+ end
98
+
99
+ get '/foo' do
100
+ # 匹配除Songbird以外的浏览器
101
+ end
102
+
103
+ 其他可选的条件是 +host_name+ 和 +provides+:
104
+
105
+ get '/', :host_name => /^admin\./ do
106
+ "管理员区域,无权进入!"
107
+ end
108
+
109
+ get '/', :provides => 'html' do
110
+ haml :index
111
+ end
112
+
113
+ get '/', :provides => ['rss', 'atom', 'xml'] do
114
+ builder :feed
115
+ end
116
+
117
+ 你也可以很轻松地定义自己的条件:
118
+
119
+ set(:probability) { |value| condition { rand <= value } }
120
+
121
+ get '/win_a_car', :probability => 0.1 do
122
+ "You won!"
123
+ end
124
+
125
+ get '/win_a_car' do
126
+ "Sorry, you lost."
127
+ end
128
+
129
+ === 返回值
130
+
131
+ 路由代码块的返回值至少决定了返回给HTTP客户端的响应体,
132
+ 或者至少决定了在Rack堆栈中的下一个中间件。
133
+ 大多数情况下,将是一个字符串,就像上面的例子中的一样。
134
+ 但是其他值也是可以接受的。
135
+
136
+ 你可以返回任何对象,或者是一个合理的Rack响应,
137
+ Rack body对象或者HTTP状态码:
138
+
139
+ * 一个包含三个元素的数组: <tt>[状态 (Fixnum), 头 (Hash), 响应体 (回应 #each)]</tt>
140
+ * 一个包含两个元素的数组: <tt>[状态 (Fixnum), 响应体 (回应 #each)]</tt>
141
+ * 一个能够回应 <tt>#each</tt> ,只传回字符串的对象
142
+ * 一个代表状态码的数字
143
+
144
+ 那样,我们可以轻松的实现例如流式传输的例子:
145
+
146
+ class Stream
147
+ def each
148
+ 100.times { |i| yield "#{i}\n" }
149
+ end
150
+ end
151
+
152
+ get('/') { Stream.new }
153
+
154
+ === 自定义路由匹配器
155
+
156
+ 如上显示,Sinatra内置了对于使用字符串和正则表达式作为路由匹配的支持。
157
+ 但是,它并没有只限于此。
158
+ 你可以非常容易地定义你自己的匹配器:
159
+
160
+ class AllButPattern
161
+ Match = Struct.new(:captures)
162
+
163
+ def initialize(except)
164
+ @except = except
165
+ @captures = Match.new([])
166
+ end
167
+
168
+ def match(str)
169
+ @captures unless @except === str
170
+ end
171
+ end
172
+
173
+ def all_but(pattern)
174
+ AllButPattern.new(pattern)
175
+ end
176
+
177
+ get all_but("/index") do
178
+ # ...
179
+ end
180
+
181
+ 请注意上面的例子可能超工程了,
182
+ 因为它也可以用更简单的方式表述:
183
+
184
+ get // do
185
+ pass if request.path_info == "/index"
186
+ # ...
187
+ end
188
+
189
+ 或者,使用消极向前查找:
190
+
191
+ get %r{^(?!/index$)} do
192
+ # ...
193
+ end
194
+
195
+ == 静态文件
196
+
197
+ 静态文件是从 <tt>./public_folder</tt> 目录提供服务。你可以通过设置<tt>:public</tt>
198
+ 选项设定一个不同的位置:
199
+
200
+ set :public_folder, File.dirname(__FILE__) + '/static'
201
+
202
+ 请注意public目录名并没有被包含在URL之中。文件
203
+ <tt>./public/css/style.css</tt>是通过
204
+ <tt>http://example.com/css/style.css</tt>地址访问的。
205
+
206
+ == 视图 / 模板
207
+
208
+ 模板被假定直接位于<tt>./views</tt>目录。
209
+ 要使用不同的视图目录:
210
+
211
+ set :views, File.dirname(__FILE__) + '/templates'
212
+
213
+ 请记住一件非常重要的事情,你只可以通过符号引用模板,
214
+ 即使它们在子目录下
215
+ (在这种情况下,使用 <tt>:'subdir/template'</tt>)。
216
+ 你必须使用一个符号,
217
+ 因为渲染方法会直接地渲染任何传入的字符串。
218
+
219
+ === Haml模板
220
+
221
+ 需要引入 <tt>haml</tt> gem/library以渲染 HAML 模板:
222
+
223
+ # 你需要在你的应用中引入 haml
224
+ require 'haml'
225
+
226
+ get '/' do
227
+ haml :index
228
+ end
229
+
230
+ 渲染 <tt>./views/index.haml</tt>。
231
+
232
+ {Haml的选项}[http://haml.info/docs/yardoc/file.HAML_REFERENCE.html#options]
233
+ 可以通过Sinatra的配置全局设定,
234
+ 参见 {选项和配置}[http://www.sinatrarb.com/configuration.html],
235
+ 也可以个别的被覆盖。
236
+
237
+ set :haml, {:format => :html5 } # 默认的Haml输出格式是 :xhtml
238
+
239
+ get '/' do
240
+ haml :index, :haml_options => {:format => :html4 } # 被覆盖,变成:html4
241
+ end
242
+
243
+
244
+ === Erb模板
245
+
246
+ # 你需要在你的应用中引入 erb
247
+ require 'erb'
248
+
249
+ get '/' do
250
+ erb :index
251
+ end
252
+
253
+ 渲染 <tt>./views/index.erb</tt>
254
+
255
+ === Erubis
256
+
257
+ 需要引入 <tt>erubis</tt> gem/library以渲染 erubis 模板:
258
+
259
+ # 你需要在你的应用中引入 erubis
260
+ require 'erubis'
261
+
262
+ get '/' do
263
+ erubis :index
264
+ end
265
+
266
+ 渲染 <tt>./views/index.erubis</tt>
267
+
268
+ 使用Erubis代替Erb也是可能的:
269
+
270
+ require 'erubis'
271
+ Tilt.register :erb, Tilt[:erubis]
272
+
273
+ get '/' do
274
+ erb :index
275
+ end
276
+
277
+ 使用Erubis来渲染 <tt>./views/index.erb</tt>。
278
+
279
+ === Builder 模板
280
+
281
+ 需要引入 <tt>builder</tt> gem/library 以渲染 builder templates:
282
+
283
+ # 需要在你的应用中引入builder
284
+ require 'builder'
285
+
286
+ get '/' do
287
+ builder :index
288
+ end
289
+
290
+ 渲染 <tt>./views/index.builder</tt>。
291
+
292
+ === Nokogiri 模板
293
+
294
+ 需要引入 <tt>nokogiri</tt> gem/library 以渲染 nokogiri 模板:
295
+
296
+ # 需要在你的应用中引入 nokogiri
297
+ require 'nokogiri'
298
+
299
+ get '/' do
300
+ nokogiri :index
301
+ end
302
+
303
+ 渲染 <tt>./views/index.nokogiri</tt>。
304
+
305
+ === Sass 模板
306
+
307
+ 需要引入 <tt>haml</tt> 或者 <tt>sass</tt> gem/library 以渲染 Sass 模板:
308
+
309
+ # 需要在你的应用中引入 haml 或者 sass
310
+ require 'sass'
311
+
312
+ get '/stylesheet.css' do
313
+ sass :stylesheet
314
+ end
315
+
316
+ 渲染 <tt>./views/stylesheet.sass</tt>。
317
+
318
+ {Sass 的选项}[http://sass-lang.com/docs/yardoc/file.SASS_REFERENCE.html#options]
319
+ 可以通过Sinatra选项全局设定,
320
+ 参考 {选项和配置(英文)}[http://www.sinatrarb.com/configuration.html],
321
+ 也可以在个体的基础上覆盖。
322
+
323
+ set :sass, {:style => :compact } # 默认的 Sass 样式是 :nested
324
+
325
+ get '/stylesheet.css' do
326
+ sass :stylesheet, :style => :expanded # 覆盖
327
+ end
328
+
329
+ === Scss 模板
330
+
331
+ 需要引入 <tt>haml</tt> 或者 <tt>sass</tt> gem/library 来渲染 Scss templates:
332
+
333
+ # 需要在你的应用中引入 haml 或者 sass
334
+ require 'sass'
335
+
336
+ get '/stylesheet.css' do
337
+ scss :stylesheet
338
+ end
339
+
340
+ 渲染 <tt>./views/stylesheet.scss</tt>。
341
+
342
+ {Scss的选项}[http://sass-lang.com/docs/yardoc/file.SASS_REFERENCE.html#options]
343
+ 可以通过Sinatra选项全局设定,
344
+ 参考 {选项和配置(英文)}[http://www.sinatrarb.com/configuration.html],
345
+ 也可以在个体的基础上覆盖。
346
+
347
+ set :scss, :style => :compact # default Scss style is :nested
348
+
349
+ get '/stylesheet.css' do
350
+ scss :stylesheet, :style => :expanded # overridden
351
+ end
352
+
353
+ === Less 模板
354
+
355
+ 需要引入 <tt>less</tt> gem/library 以渲染 Less 模板:
356
+
357
+ # 需要在你的应用中引入 less
358
+ require 'less'
359
+
360
+ get '/stylesheet.css' do
361
+ less :stylesheet
362
+ end
363
+
364
+ 渲染 <tt>./views/stylesheet.less</tt>。
365
+
366
+ === Liquid 模板
367
+
368
+ 需要引入 <tt>liquid</tt> gem/library 来渲染 Liquid 模板:
369
+
370
+ # 需要在你的应用中引入 liquid
371
+ require 'liquid'
372
+
373
+ get '/' do
374
+ liquid :index
375
+ end
376
+
377
+ 渲染 <tt>./views/index.liquid</tt>。
378
+
379
+ 因为你不能在Liquid 模板中调用 Ruby 方法 (除了 +yield+) ,
380
+ 你几乎总是需要传递locals给它:
381
+
382
+ liquid :index, :locals => { :key => 'value' }
383
+
384
+ === Markdown 模板
385
+
386
+ 需要引入 <tt>rdiscount</tt> gem/library 以渲染 Markdown 模板:
387
+
388
+ # 需要在你的应用中引入rdiscount
389
+ require "rdiscount"
390
+
391
+ get '/' do
392
+ markdown :index
393
+ end
394
+
395
+ 渲染 <tt>./views/index.markdown</tt>
396
+ (+md+ 和 +mkd+ 也是合理的文件扩展名)。
397
+
398
+ 在markdown中是不可以调用方法的,也不可以传递 locals给它。
399
+ 你因此一般会结合其他的渲染引擎来使用它:
400
+
401
+
402
+ erb :overview, :locals => { :text => markdown(:introduction) }
403
+
404
+ 请注意你也可以从其他模板中调用 markdown 方法:
405
+
406
+ %h1 Hello From Haml!
407
+ %p= markdown(:greetings)
408
+
409
+ 既然你不能在Markdown中调用Ruby,你不能使用Markdown编写的布局。
410
+ 不过,使用其他渲染引擎作为模版的布局是可能的,
411
+ 通过传递<tt>:layout_engine</tt>选项:
412
+
413
+ get '/' do
414
+ markdown :index, :layout_engine => :erb
415
+ end
416
+
417
+ 这将会渲染 <tt>./views/index.md</tt> 并使用
418
+ <tt>./views/layout.erb</tt> 作为布局。
419
+
420
+ 请记住你可以全局设定这个选项:
421
+
422
+ set :markdown, :layout_engine => :haml, :layout => :post
423
+
424
+ get '/' do
425
+ markdown :index
426
+ end
427
+
428
+ 这将会渲染 <tt>./views/index.markdown</tt> (和任何其他的 Markdown
429
+ 模版) 并使用 <tt>./views/post.haml</tt> 作为布局.
430
+
431
+ 也可能使用BlueCloth而不是RDiscount来解析Markdown文件:
432
+
433
+ require 'bluecloth'
434
+
435
+ Tilt.register 'markdown', BlueClothTemplate
436
+ Tilt.register 'mkd', BlueClothTemplate
437
+ Tilt.register 'md', BlueClothTemplate
438
+
439
+ get '/' do
440
+ markdown :index
441
+ end
442
+
443
+ 使用BlueCloth来渲染 <tt>./views/index.md</tt> 。
444
+
445
+ === Textile 模板
446
+
447
+ 需要引入 <tt>RedCloth</tt> gem/library 以渲染 Textile 模板:
448
+
449
+ # 在你的应用中引入redcloth
450
+ require "redcloth"
451
+
452
+ get '/' do
453
+ textile :index
454
+ end
455
+
456
+ 渲染 <tt>./views/index.textile</tt>。
457
+
458
+ 在textile中是不可以调用方法的,也不可以传递 locals给它。
459
+ 你因此一般会结合其他的渲染引擎来使用它:
460
+
461
+ erb :overview, :locals => { :text => textile(:introduction) }
462
+
463
+ 请注意你也可以从其他模板中调用+textile+方法:
464
+
465
+ %h1 Hello From Haml!
466
+ %p= textile(:greetings)
467
+
468
+ 既然你不能在Textile中调用Ruby,你不能使用Textile编写的布局。
469
+ 不过,使用其他渲染引擎作为模版的布局是可能的,
470
+ 通过传递<tt>:layout_engine</tt>选项:
471
+
472
+ get '/' do
473
+ textile :index, :layout_engine => :erb
474
+ end
475
+
476
+ 这将会渲染 <tt>./views/index.textile</tt> 并使用
477
+ <tt>./views/layout.erb</tt> 作为布局。
478
+
479
+ 请记住你可以全局设定这个选项:
480
+
481
+ set :textile, :layout_engine => :haml, :layout => :post
482
+
483
+ get '/' do
484
+ textile :index
485
+ end
486
+
487
+ 这将会渲染 <tt>./views/index.textile</tt> (和任何其他的 Textile
488
+ 模版) 并使用 <tt>./views/post.haml</tt> 作为布局.
489
+
490
+ === RDoc 模板
491
+
492
+ 需要引入 <tt>RDoc</tt> gem/library 以渲染RDoc模板:
493
+
494
+ # 需要在你的应用中引入rdoc/markup/to_html
495
+ require "rdoc"
496
+ require "rdoc/markup/to_html"
497
+
498
+ get '/' do
499
+ rdoc :index
500
+ end
501
+
502
+ 渲染 <tt>./views/index.rdoc</tt>。
503
+
504
+ 在rdoc中是不可以调用方法的,也不可以传递locals给它。
505
+ 你因此一般会结合其他的渲染引擎来使用它:
506
+
507
+ erb :overview, :locals => { :text => rdoc(:introduction) }
508
+
509
+ 请注意你也可以从其他模板中调用+rdoc+方法:
510
+
511
+ %h1 Hello From Haml!
512
+ %p= rdoc(:greetings)
513
+
514
+ 既然你不能在RDoc中调用Ruby,你不能使用RDoc编写的布局。
515
+ 不过,使用其他渲染引擎作为模版的布局是可能的,
516
+ 通过传递<tt>:layout_engine</tt>选项:
517
+
518
+ get '/' do
519
+ rdoc :index, :layout_engine => :erb
520
+ end
521
+
522
+ 这将会渲染 <tt>./views/index.rdoc</tt> 并使用
523
+ <tt>./views/layout.erb</tt> 作为布局。
524
+
525
+ 请记住你可以全局设定这个选项:
526
+
527
+ set :rdoc, :layout_engine => :haml, :layout => :post
528
+
529
+ get '/' do
530
+ rdoc :index
531
+ end
532
+
533
+ 这将会渲染 <tt>./views/index.rdoc</tt> (和任何其他的 RDoc
534
+ 模版) 并使用 <tt>./views/post.haml</tt> 作为布局.
535
+
536
+ === Radius 模板
537
+
538
+ 需要引入 <tt>radius</tt> gem/library 以渲染 Radius 模板:
539
+
540
+ # 需要在你的应用中引入radius
541
+ require 'radius'
542
+
543
+ get '/' do
544
+ radius :index
545
+ end
546
+
547
+ 渲染 <tt>./views/index.radius</tt>。
548
+
549
+ 因为你不能在Radius 模板中调用 Ruby 方法 (除了 +yield+) ,
550
+ 你几乎总是需要传递locals给它:
551
+
552
+ radius :index, :locals => { :key => 'value' }
553
+
554
+ === Markaby 模板
555
+
556
+ 需要引入<tt>markaby</tt> gem/library以渲染Markaby模板:
557
+
558
+ #需要在你的应用中引入 markaby
559
+ require 'markaby'
560
+
561
+ get '/' do
562
+ markaby :index
563
+ end
564
+
565
+ 渲染 <tt>./views/index.mab</tt>。
566
+
567
+ 你也可以使用嵌入的 Markaby:
568
+
569
+ get '/' do
570
+ markaby { h1 "Welcome!" }
571
+ end
572
+
573
+ === Slim 模板
574
+
575
+ 需要引入 <tt>slim</tt> gem/library 来渲染 Slim 模板:
576
+
577
+ # 需要在你的应用中引入 slim
578
+ require 'slim'
579
+
580
+ get '/' do
581
+ slim :index
582
+ end
583
+
584
+ 渲染 <tt>./views/index.slim</tt>。
585
+
586
+ === Creole 模板
587
+
588
+ 需要引入 <tt>creole</tt> gem/library 来渲染 Creole 模板:
589
+
590
+ # 需要在你的应用中引入 creole
591
+ require 'creole'
592
+
593
+ get '/' do
594
+ creole :index
595
+ end
596
+
597
+ 渲染 <tt>./views/index.creole</tt>。
598
+
599
+ === CoffeeScript 模板
600
+
601
+ 需要引入 <tt>coffee-script</tt> gem/library 并至少满足下面条件一项
602
+ 以执行Javascript:
603
+
604
+ * +node+ (来自 Node.js) 在你的路径中
605
+ * 你正在运行 OSX
606
+ * +therubyracer+ gem/library
607
+
608
+ 请察看 http://github.com/josh/ruby-coffee-script 获取更新的选项。
609
+
610
+ 现在你可以渲染 CoffeeScript 模版了:
611
+
612
+ # 需要在你的应用中引入coffee-script
613
+ require 'coffee-script'
614
+
615
+ get '/application.js' do
616
+ coffee :application
617
+ end
618
+
619
+ 渲染 <tt>./views/application.coffee</tt>。
620
+
621
+ === 嵌入模板字符串
622
+
623
+ get '/' do
624
+ haml '%div.title Hello World'
625
+ end
626
+
627
+ 渲染嵌入模板字符串。
628
+
629
+ === 在模板中访问变量
630
+
631
+ 模板和路由执行器在同样的上下文求值。
632
+ 在路由执行器中赋值的实例变量可以直接被模板访问。
633
+
634
+ get '/:id' do
635
+ @foo = Foo.find(params[:id])
636
+ haml '%h1= @foo.name'
637
+ end
638
+
639
+ 或者,显式地指定一个本地变量的哈希:
640
+
641
+ get '/:id' do
642
+ foo = Foo.find(params[:id])
643
+ haml '%h1= foo.name', :locals => { :foo => foo }
644
+ end
645
+
646
+ 典型的使用情况是在别的模板中按照局部模板的方式来渲染。
647
+
648
+
649
+ === 内联模板
650
+
651
+ 模板可以在源文件的末尾定义:
652
+
653
+ require 'sinatra'
654
+
655
+ get '/' do
656
+ haml :index
657
+ end
658
+
659
+ __END__
660
+
661
+ @@ layout
662
+ %html
663
+ = yield
664
+
665
+ @@ index
666
+ %div.title Hello world!!!!!
667
+
668
+ 注意:引入sinatra的源文件中定义的内联模板才能被自动载入。
669
+ 如果你在其他源文件中有内联模板,
670
+ 需要显式执行调用<tt>enable :inline_templates</tt>。
671
+
672
+ === 具名模板
673
+
674
+ 模板可以通过使用顶层 <tt>template</tt> 方法定义:
675
+
676
+ template :layout do
677
+ "%html\n =yield\n"
678
+ end
679
+
680
+ template :index do
681
+ '%div.title Hello World!'
682
+ end
683
+
684
+ get '/' do
685
+ haml :index
686
+ end
687
+
688
+ 如果存在名为"layout"的模板,该模板会在每个模板渲染的时候被使用。
689
+ 你可以单独地通过传送 <tt>:layout => false</tt>来禁用,
690
+ 或者通过<tt>set :haml, :layout => false</tt>来禁用他们。
691
+
692
+ get '/' do
693
+ haml :index, :layout => !request.xhr?
694
+ end
695
+
696
+ === 关联文件扩展名
697
+
698
+ 为了关联一个文件扩展名到一个模版引擎,使用
699
+ <tt>Tilt.register</tt>。比如,如果你喜欢使用
700
+ +tt+ 作为Textile模版的扩展名,你可以这样做:
701
+
702
+ Tilt.register :tt, Tilt[:textile]
703
+
704
+ === 添加你自己的模版引擎
705
+
706
+ 首先,通过Tilt注册你自己的引擎,然后创建一个渲染方法:
707
+
708
+ Tilt.register :myat, MyAwesomeTemplateEngine
709
+
710
+ helpers do
711
+ def myat(*args) render(:myat, *args) end
712
+ end
713
+
714
+ get '/' do
715
+ myat :index
716
+ end
717
+
718
+ 渲染 <tt>./views/index.myat</tt>。察看 https://github.com/rtomayko/tilt
719
+ 来更多了解Tilt.
720
+
721
+ == 过滤器
722
+
723
+ 前置过滤器在每个请求前,在请求的上下文环境中被执行,
724
+ 而且可以修改请求和响应。
725
+ 在过滤器中设定的实例变量可以被路由和模板访问:
726
+
727
+ before do
728
+ @note = 'Hi!'
729
+ request.path_info = '/foo/bar/baz'
730
+ end
731
+
732
+ get '/foo/*' do
733
+ @note #=> 'Hi!'
734
+ params[:splat] #=> 'bar/baz'
735
+ end
736
+
737
+ 后置过滤器在每个请求之后,在请求的上下文环境中执行,
738
+ 而且可以修改请求和响应。
739
+ 在前置过滤器和路由中设定的实例变量可以被后置过滤器访问:
740
+
741
+ after do
742
+ puts response.status
743
+ end
744
+
745
+ 请注意:除非你显式使用 +body+ 方法,而不是在路由中直接返回字符串,
746
+ 消息体在后置过滤器是不可用的,
747
+ 因为它在之后才会生成。
748
+
749
+ 过滤器可以可选地带有范式,
750
+ 只有请求路径满足该范式时才会执行:
751
+
752
+ before '/protected/*' do
753
+ authenticate!
754
+ end
755
+
756
+ after '/create/:slug' do |slug|
757
+ session[:last_slug] = slug
758
+ end
759
+
760
+ 和路由一样,过滤器也可以带有条件:
761
+
762
+ before :agent => /Songbird/ do
763
+ # ...
764
+ end
765
+
766
+ after '/blog/*', :host_name => 'example.com' do
767
+ # ...
768
+ end
769
+
770
+ == 辅助方法
771
+
772
+ 使用顶层的 <tt>helpers</tt> 方法来定义辅助方法,
773
+ 以便在路由处理器和模板中使用:
774
+
775
+ helpers do
776
+ def bar(name)
777
+ "#{name}bar"
778
+ end
779
+ end
780
+
781
+ get '/:name' do
782
+ bar(params[:name])
783
+ end
784
+
785
+ === 使用 Sessions
786
+
787
+ Session被用来在请求之间保持状态。如果被激活,每一个用户会话
788
+ 对应有一个session哈希:
789
+
790
+ enable :sessions
791
+
792
+ get '/' do
793
+ "value = " << session[:value].inspect
794
+ end
795
+
796
+ get '/:value' do
797
+ session[:value] = params[:value]
798
+ end
799
+
800
+ 请注意 <tt>enable :sessions</tt> 实际上保存所有的数据在一个cookie之中。
801
+ 这可能不会总是做你想要的(比如,保存大量的数据会增加你的流量)。
802
+ 你可以使用任何的Rack session中间件,为了这么做,
803
+ *不要*调用 <tt>enable :sessions</tt>,而是
804
+ 按照自己的需要引入你的中间件:
805
+
806
+ use Rack::Session::Pool, :expire_after => 2592000
807
+
808
+ get '/' do
809
+ "value = " << session[:value].inspect
810
+ end
811
+
812
+ get '/:value' do
813
+ session[:value] = params[:value]
814
+ end
815
+
816
+ === 挂起
817
+
818
+ 要想直接地停止请求,在过滤器或者路由中使用:
819
+
820
+ halt
821
+
822
+ 你也可以指定挂起时的状态码:
823
+
824
+ halt 410
825
+
826
+ 或者消息体:
827
+
828
+ halt 'this will be the body'
829
+
830
+ 或者两者;
831
+
832
+ halt 401, 'go away!'
833
+
834
+ 也可以带消息头:
835
+
836
+ halt 402, {'Content-Type' => 'text/plain'}, 'revenge'
837
+
838
+ === 让路
839
+
840
+ 一个路由可以放弃处理,将处理让给下一个匹配的路由,使用 <tt>pass</tt>:
841
+
842
+ get '/guess/:who' do
843
+ pass unless params[:who] == 'Frank'
844
+ 'You got me!'
845
+ end
846
+
847
+ get '/guess/*' do
848
+ 'You missed!'
849
+ end
850
+
851
+ 路由代码块被直接退出,控制流继续前进到下一个匹配的路由。
852
+ 如果没有匹配的路由,将返回404。
853
+
854
+ === 触发另一个路由
855
+
856
+ 有些时候,+pass+ 并不是你想要的,你希望得到的是另一个路由的结果
857
+ 。简单的使用 +call+ 可以做到这一点:
858
+
859
+ get '/foo' do
860
+ status, headers, body = call env.merge("PATH_INFO" => '/bar')
861
+ [status, headers, body.map(&:upcase)]
862
+ end
863
+
864
+ get '/bar' do
865
+ "bar"
866
+ end
867
+
868
+ 请注意在以上例子中,你可以更加简化测试并增加性能,只要简单的移动
869
+ <tt>"bar"</tt>到一个被<tt>/foo</tt>
870
+ 和 <tt>/bar</tt>同时使用的helper。
871
+
872
+ 如果你希望请求被发送到同一个应用,而不是副本,
873
+ 使用 <tt>call!</tt> 而不是 <tt>call</tt>.
874
+
875
+ 察看 Rack specification 如果你想更多了解 <tt>call</tt>.
876
+
877
+ === 设定 消息体,状态码和消息头
878
+
879
+ 通过路由代码块的返回值来设定状态码和消息体不仅是可能的,而且是推荐的。
880
+ 但是,在某些场景中你可能想在作业流程中的特定点上设置消息体。
881
+ 你可以通过 +body+ 辅助方法这么做。
882
+ 如果你这样做了,
883
+ 你可以在那以后使用该方法获得消息体:
884
+
885
+ get '/foo' do
886
+ body "bar"
887
+ end
888
+
889
+ after do
890
+ puts body
891
+ end
892
+
893
+ 也可以传一个代码块给 +body+,它将会被Rack处理器执行(
894
+ 这将可以被用来实现streaming,参见“返回值”)。
895
+
896
+ 和消息体类似,你也可以设定状态码和消息头:
897
+
898
+ get '/foo' do
899
+ status 418
900
+ headers \
901
+ "Allow" => "BREW, POST, GET, PROPFIND, WHEN",
902
+ "Refresh" => "Refresh: 20; http://www.ietf.org/rfc/rfc2324.txt"
903
+ body "I'm a tea pot!"
904
+ end
905
+
906
+ 如同 +body+, 不带参数的 +headers+ 和 +status+ 可以用来访问
907
+ 他们你的当前值.
908
+
909
+ === 媒体类型
910
+
911
+ 当使用 <tt>send_file</tt> 或者静态文件的场合,你的媒体类型可能
912
+ Sinatra并不理解。使用 +mime_type+ 通过文件扩展名来注册它们:
913
+
914
+ mime_type :foo, 'text/foo'
915
+
916
+ 你也可以通过 +content_type+ 辅助方法使用:
917
+
918
+ get '/' do
919
+ content_type :foo
920
+ "foo foo foo"
921
+ end
922
+
923
+ === 生成 URL
924
+
925
+ 为了生成URL,你需要使用 +url+ 辅助方法,
926
+ 例如,在Haml中:
927
+
928
+ %a{:href => url('/foo')} foo
929
+
930
+ 它会根据反向代理和Rack路由,如果有的话,来计算生成的URL。
931
+
932
+ 这个方法还有一个别名 +to+ (见下面的例子).
933
+
934
+ === 浏览器重定向
935
+
936
+ 你可以通过 +redirect+ 辅助方法触发浏览器重定向:
937
+
938
+ get '/foo' do
939
+ redirect to('/bar')
940
+ end
941
+
942
+ 任何额外的参数都会被以 +halt+相同的方式来处理:
943
+
944
+ redirect to('/bar'), 303
945
+ redirect 'http://google.com', 'wrong place, buddy'
946
+
947
+ 你可以方便的通过
948
+ <tt>redirect back</tt>把用户重定向到来自的页面:
949
+
950
+ get '/foo' do
951
+ "<a href='/bar'>do something</a>"
952
+ end
953
+
954
+ get '/bar' do
955
+ do_something
956
+ redirect back
957
+ end
958
+
959
+ 为了传递参数给redirect,或者加入query:
960
+
961
+ redirect to('/bar?sum=42')
962
+
963
+ 或者使用session:
964
+
965
+ enable :sessions
966
+
967
+ get '/foo' do
968
+ session[:secret] = 'foo'
969
+ redirect to('/bar')
970
+ end
971
+
972
+ get '/bar' do
973
+ session[:secret]
974
+ end
975
+
976
+ === 缓存控制
977
+
978
+ 正确地设定消息头是恰当的HTTP缓存的基础。
979
+
980
+ 你可以方便的设定 Cache-Control 消息头,像这样:
981
+
982
+ get '/' do
983
+ cache_control :public
984
+ "cache it!"
985
+ end
986
+
987
+ 核心提示: 在前置过滤器中设定缓存.
988
+
989
+ before do
990
+ cache_control :public, :must_revalidate, :max_age => 60
991
+ end
992
+
993
+ 如果你正在用 +expires+ 辅助方法设定对应的消息头
994
+ <tt>Cache-Control</tt> 会自动设定:
995
+
996
+ before do
997
+ expires 500, :public, :must_revalidate
998
+ end
999
+
1000
+ 为了合适地使用缓存,你应该考虑使用 +etag+ 和 +last_modified+方法。.
1001
+ 推荐在执行繁重任务*之前*使用这些helpers,
1002
+ 他们会立刻发送响应,如果客户端在缓存中已经有了当前版本。
1003
+
1004
+ get '/article/:id' do
1005
+ @article = Article.find params[:id]
1006
+ last_modified @article.updated_at
1007
+ etag @article.sha1
1008
+ erb :article
1009
+ end
1010
+
1011
+ 使用
1012
+ {weak ETag}[http://en.wikipedia.org/wiki/HTTP_ETag#Strong_and_weak_validation]
1013
+ 也是有可能的:
1014
+
1015
+ etag @article.sha1, :weak
1016
+
1017
+ 这些辅助方法并不会为你做任何缓存,而是将必要的信息传送给你的缓存
1018
+ 如果你在寻找缓存的快速解决方案,试试
1019
+ {rack-cache}[http://rtomayko.github.com/rack-cache/]:
1020
+
1021
+ require "rack/cache"
1022
+ require "sinatra"
1023
+
1024
+ use Rack::Cache
1025
+
1026
+ get '/' do
1027
+ cache_control :public, :max_age => 36000
1028
+ sleep 5
1029
+ "hello"
1030
+ end
1031
+
1032
+ === 发送文件
1033
+
1034
+ 为了发送文件,你可以使用 <tt>send_file</tt> 辅助方法:
1035
+
1036
+ get '/' do
1037
+ send_file 'foo.png'
1038
+ end
1039
+
1040
+ 也可以带一些选项:
1041
+
1042
+ send_file 'foo.png', :type => :jpg
1043
+
1044
+ 可用的选项有:
1045
+
1046
+ [filename]
1047
+ 响应中的文件名,默认是真实文件的名字。
1048
+
1049
+ [last_modified]
1050
+ Last-Modified 消息头的值,默认是文件的mtime(修改时间)。
1051
+
1052
+ [type]
1053
+ 使用的内容类型,如果没有会从文件扩展名猜测。
1054
+
1055
+ [disposition]
1056
+ 用于 Content-Disposition,可能的包括: +nil+ (默认),
1057
+ <tt>:attachment</tt> 和 <tt>:inline</tt>
1058
+
1059
+ [length]
1060
+ Content-Length 的值,默认是文件的大小。
1061
+
1062
+ 如果Rack处理器支持,Ruby进程除streaming以外的方式会被使用。
1063
+ 如果你使用这个辅助方法,
1064
+ Sinatra会自动处理range请求。
1065
+
1066
+ === 访问请求对象
1067
+
1068
+ 传入的请求对象可以在请求层(过滤器,路由,错误处理)
1069
+ 通过 <tt>request</tt> 方法被访问:
1070
+
1071
+ # 在 http://example.com/example 上运行的应用
1072
+ get '/foo' do
1073
+ request.body # 被客户端设定的请求体(见下)
1074
+ request.scheme # "http"
1075
+ request.script_name # "/example"
1076
+ request.path_info # "/foo"
1077
+ request.port # 80
1078
+ request.request_method # "GET"
1079
+ request.query_string # ""
1080
+ request.content_length # request.body的长度
1081
+ request.media_type # request.body的媒体类型
1082
+ request.host # "example.com"
1083
+ request.get? # true (其他动词也具有类似方法)
1084
+ request.form_data? # false
1085
+ request["SOME_HEADER"] # SOME_HEADER header的值
1086
+ request.referrer # 客户端的referrer 或者 '/'
1087
+ request.user_agent # user agent (被 :agent 条件使用)
1088
+ request.cookies # 浏览器 cookies 哈希
1089
+ request.xhr? # 这是否是ajax请求?
1090
+ request.url # "http://example.com/example/foo"
1091
+ request.path # "/example/foo"
1092
+ request.ip # 客户端IP地址
1093
+ request.secure? # false(如果是ssl则为true)
1094
+ request.forwarded? # true (如果是运行在反向代理之后)
1095
+ request.env # Rack中使用的未处理的env哈希
1096
+ end
1097
+
1098
+ 一些选项,例如 <tt>script_name</tt> 或者 <tt>path_info</tt>
1099
+ 也是可写的:
1100
+
1101
+ before { request.path_info = "/" }
1102
+
1103
+ get "/" do
1104
+ "all requests end up here"
1105
+ end
1106
+
1107
+ <tt>request.body</tt> 是一个IO或者StringIO对象:
1108
+
1109
+ post "/api" do
1110
+ request.body.rewind # 如果已经有人读了它
1111
+ data = JSON.parse request.body.read
1112
+ "Hello #{data['name']}!"
1113
+ end
1114
+
1115
+ === 附件
1116
+
1117
+ 你可以使用 +attachment+ 辅助方法来告诉浏览器响应
1118
+ 应当被写入磁盘而不是在浏览器中显示。
1119
+
1120
+ get '/' do
1121
+ attachment
1122
+ "store it!"
1123
+ end
1124
+
1125
+ 你也可以传递一个文件名:
1126
+
1127
+ get '/' do
1128
+ attachment "info.txt"
1129
+ "store it!"
1130
+ end
1131
+
1132
+ === 查找模板文件
1133
+
1134
+ <tt>find_template</tt> 辅助方法被用于在渲染时查找模板文件:
1135
+
1136
+ find_template settings.views, 'foo', Tilt[:haml] do |file|
1137
+ puts "could be #{file}"
1138
+ end
1139
+
1140
+ 这并不是很有用。但是在你需要重载这个方法
1141
+ 来实现你自己的查找机制的时候有用。
1142
+ 比如,如果你想支持多于一个视图目录:
1143
+
1144
+ set :views, ['views', 'templates']
1145
+
1146
+ helpers do
1147
+ def find_template(views, name, engine, &block)
1148
+ Array(views).each { |v| super(v, name, engine, &block) }
1149
+ end
1150
+ end
1151
+
1152
+ 另一个例子是为不同的引擎使用不同的目录:
1153
+
1154
+ set :views, :sass => 'views/sass', :haml => 'templates', :default => 'views'
1155
+
1156
+ helpers do
1157
+ def find_template(views, name, engine, &block)
1158
+ _, folder = views.detect { |k,v| engine == Tilt[k] }
1159
+ folder ||= views[:default]
1160
+ super(folder, name, engine, &block)
1161
+ end
1162
+ end
1163
+
1164
+ 你可以很容易地包装成一个扩展然后与他人分享!
1165
+
1166
+ 请注意 <tt>find_template</tt> 并不会检查文件真的存在,
1167
+ 而是对任何可能的路径调用给入的代码块。这并不会带来性能问题,
1168
+ 因为 +render+ 会在找到文件的时候马上使用 +break+ 。
1169
+ 同样的,模板的路径(和内容)会在除development mode以外的场合
1170
+ 被缓存。你应该时刻提醒自己这一点,
1171
+ 如果你真的想写一个非常疯狂的方法。
1172
+
1173
+ == 配置
1174
+
1175
+ 运行一次,在启动的时候,在任何环境下:
1176
+
1177
+ configure do
1178
+ # setting one option
1179
+ set :option, 'value'
1180
+
1181
+ # setting multiple options
1182
+ set :a => 1, :b => 2
1183
+
1184
+ # same as `set :option, true`
1185
+ enable :option
1186
+
1187
+ # same as `set :option, false`
1188
+ disable :option
1189
+
1190
+ # you can also have dynamic settings with blocks
1191
+ set(:css_dir) { File.join(views, 'css') }
1192
+ end
1193
+
1194
+ 只当环境 (RACK_ENV environment 变量) 被设定为
1195
+ <tt>:production</tt>的时候运行:
1196
+
1197
+ configure :production do
1198
+ ...
1199
+ end
1200
+
1201
+ 当环境被设定为 <tt>:production</tt> 或者
1202
+ <tt>:test</tt>的时候运行:
1203
+
1204
+ configure :production, :test do
1205
+ ...
1206
+ end
1207
+
1208
+ 你可以使用 <tt>settings</tt> 获得这些配置:
1209
+
1210
+ configure do
1211
+ set :foo, 'bar'
1212
+ end
1213
+
1214
+ get '/' do
1215
+ settings.foo? # => true
1216
+ settings.foo # => 'bar'
1217
+ ...
1218
+ end
1219
+
1220
+ === 可选的设置
1221
+
1222
+ [absolute_redirects] 如果被禁用,Sinatra会允许使用相对路径重定向,
1223
+ 但是,Sinatra就不再遵守 RFC 2616标准
1224
+ (HTTP 1.1), 该标准只允许绝对路径重定向。
1225
+
1226
+ 如果你的应用运行在一个未恰当设置的反向代理之后,
1227
+ 你需要启用这个选项。注意 +url+ 辅助方法
1228
+ 仍然会生成绝对 URL,除非你传入
1229
+ +false+ 作为第二参数。
1230
+
1231
+ 默认禁用。
1232
+
1233
+ [add_charsets] 设定 <tt>content_type</tt> 辅助方法会
1234
+ 自动加上字符集信息的多媒体类型。
1235
+
1236
+ 你应该添加而不是覆盖这个选项:
1237
+
1238
+ settings.add_charsets << "application/foobar"
1239
+
1240
+ [app_file] 主应用文件,用来检测项目的根路径,
1241
+ views和public文件夹和内联模板。
1242
+
1243
+ [bind] 绑定的IP 地址 (默认: 0.0.0.0)。
1244
+ 仅对于内置的服务器有用。
1245
+
1246
+ [default_encoding] 默认编码
1247
+ (默认为 <tt>"utf-8"</tt>)。
1248
+
1249
+ [dump_errors] 在log中显示错误。
1250
+
1251
+ [environment] 当前环境,默认是 <tt>ENV['RACK_ENV']</tt>,
1252
+ 或者 <tt>"development"</tt> 如果不可用。
1253
+
1254
+ [logging] 使用logger
1255
+
1256
+ [lock] 对每一个请求放置一个锁,
1257
+ 只使用进程并发处理请求。
1258
+
1259
+ 如果你的应用不是线程安全则需启动。
1260
+ 默认禁用。
1261
+
1262
+ [method_override] 使用 <tt>_method</tt> 魔法以允许在旧的浏览器中在
1263
+ 表单中使用 put/delete 方法
1264
+
1265
+ [port] 监听的端口号。只对内置服务器有用。
1266
+
1267
+ [prefixed_redirects] 是否添加 <tt>request.script_name</tt> 到
1268
+ 重定向请求,如果没有设定绝对路径。那样的话
1269
+ <tt>redirect '/foo'</tt> 会和
1270
+ <tt>redirect to('/foo')</tt>起相同作用。默认禁用。
1271
+
1272
+ [public_folder] public文件夹的位置。
1273
+
1274
+ [reload_templates] 是否每个请求都重新载入模板。
1275
+ 在development mode和 Ruby 1.8.6 中被企业(用来
1276
+ 消除一个Ruby内存泄漏的bug)。
1277
+
1278
+ [root] 项目的根目录。
1279
+
1280
+ [raise_errors] 抛出异常(应用会停下)。
1281
+
1282
+ [run] 如果启用,Sinatra会开启web服务器。
1283
+ 如果使用rackup或其他方式则不要启用。
1284
+
1285
+ [running] 内置的服务器在运行吗?
1286
+ 不要修改这个设置!
1287
+
1288
+ [server] 服务器,或用于内置服务器的列表。
1289
+ 默认是 ['thin', 'mongrel', 'webrick'], 顺序表明了
1290
+ 优先级。
1291
+
1292
+ [sessions] 开启基于cookie的sesson。
1293
+
1294
+ [show_exceptions] 在浏览器中显示一个stack trace。
1295
+
1296
+ [static] Sinatra是否处理静态文件。
1297
+ 当服务器能够处理则禁用。
1298
+ 禁用会增强性能。
1299
+ 默认开启。
1300
+
1301
+ [views] views 文件夹。
1302
+
1303
+ == 错误处理
1304
+
1305
+ 错误处理在与路由和前置过滤器相同的上下文中运行,
1306
+ 这意味着你可以使用许多好东西,比如 <tt>haml</tt>, <tt>erb</tt>,
1307
+ <tt>halt</tt>,等等。
1308
+
1309
+ === 未找到
1310
+
1311
+ 当一个 <tt>Sinatra::NotFound</tt> 错误被抛出的时候,
1312
+ 或者响应状态码是404,<tt>not_found</tt> 处理器会被调用:
1313
+
1314
+ not_found do
1315
+ 'This is nowhere to be found'
1316
+ end
1317
+
1318
+ === 错误
1319
+
1320
+ +error+ 处理器,在任何路由代码块或者过滤器抛出异常的时候会被调用。
1321
+ 异常对象可以通过<tt>sinatra.error</tt> Rack 变量获得:
1322
+
1323
+
1324
+ error do
1325
+ 'Sorry there was a nasty error - ' + env['sinatra.error'].name
1326
+ end
1327
+
1328
+ 自定义错误:
1329
+
1330
+ error MyCustomError do
1331
+ 'So what happened was...' + env['sinatra.error'].message
1332
+ end
1333
+
1334
+ 那么,当这个发生的时候:
1335
+
1336
+ get '/' do
1337
+ raise MyCustomError, 'something bad'
1338
+ end
1339
+
1340
+ 你会得到:
1341
+
1342
+ So what happened was... something bad
1343
+
1344
+ 另一种替代方法是,为一个状态码安装错误处理器:
1345
+
1346
+ error 403 do
1347
+ 'Access forbidden'
1348
+ end
1349
+
1350
+ get '/secret' do
1351
+ 403
1352
+ end
1353
+
1354
+ 或者一个范围:
1355
+
1356
+ error 400..510 do
1357
+ 'Boom'
1358
+ end
1359
+
1360
+ 在运行在development环境下时,Sinatra会安装特殊的
1361
+ <tt>not_found</tt> 和 <tt>error</tt> 处理器。
1362
+
1363
+ == Rack 中间件
1364
+
1365
+ Sinatra 依靠 Rack[http://rack.rubyforge.org/],
1366
+ 一个面向Ruby web框架的最小标准接口。
1367
+ Rack的一个最有趣的面向应用开发者的能力是支持“中间件”——坐落在服务器和你的应用之间,
1368
+ 监视 并/或 操作HTTP请求/响应以
1369
+ 提供多样类型的常用功能。
1370
+
1371
+ Sinatra 让建立Rack中间件管道异常简单,
1372
+ 通过顶层的 +use+ 方法:
1373
+
1374
+ require 'sinatra'
1375
+ require 'my_custom_middleware'
1376
+
1377
+ use Rack::Lint
1378
+ use MyCustomMiddleware
1379
+
1380
+ get '/hello' do
1381
+ 'Hello World'
1382
+ end
1383
+
1384
+ +use+ 的语义和在 Rack::Builder[http://rack.rubyforge.org/doc/classes/Rack/Builder.html]
1385
+ DSL(在rack文件中最频繁使用)中定义的完全一样。例如,+use+
1386
+ 方法接受 多个/可变 参数,包括代码块:
1387
+
1388
+ use Rack::Auth::Basic do |username, password|
1389
+ username == 'admin' && password == 'secret'
1390
+ end
1391
+
1392
+ Rack中分布有多样的标准中间件,针对日志,
1393
+ 调试,URL路由,认证和session处理。
1394
+ Sinatra会自动使用这里面的大部分组件,
1395
+ 所以你一般不需要显示地 +use+ 他们。
1396
+
1397
+ == 测试
1398
+
1399
+ Sinatra的测试可以使用任何基于Rack的测试程序库或者框架来编写。
1400
+ {Rack::Test}[http://gitrdoc.com/brynary/rack-test]
1401
+ 是推荐候选:
1402
+
1403
+ require 'my_sinatra_app'
1404
+ require 'test/unit'
1405
+ require 'rack/test'
1406
+
1407
+ class MyAppTest < Test::Unit::TestCase
1408
+ include Rack::Test::Methods
1409
+
1410
+ def app
1411
+ Sinatra::Application
1412
+ end
1413
+
1414
+ def test_my_default
1415
+ get '/'
1416
+ assert_equal 'Hello World!', last_response.body
1417
+ end
1418
+
1419
+ def test_with_params
1420
+ get '/meet', :name => 'Frank'
1421
+ assert_equal 'Hello Frank!', last_response.body
1422
+ end
1423
+
1424
+ def test_with_rack_env
1425
+ get '/', {}, 'HTTP_USER_AGENT' => 'Songbird'
1426
+ assert_equal "You're using Songbird!", last_response.body
1427
+ end
1428
+ end
1429
+
1430
+ 请注意: 内置的 Sinatra::Test 模块和 Sinatra::TestHarness 类
1431
+ 在 0.9.2 版本已废弃。
1432
+
1433
+ == Sinatra::Base - 中间件,程序库和模块化应用
1434
+
1435
+ 把你的应用定义在顶层,对于微型应用这会工作得很好,
1436
+ 但是在构建可复用的组件时候会带来客观的不利,
1437
+ 比如构建Rack中间件,Rails metal,带有服务器组件的简单程序库,
1438
+ 或者甚至是Sinatra扩展。顶层的DSL污染了Object命名空间,
1439
+ 并假定了一个微型应用风格的配置 (例如, 单一的应用文件,
1440
+ ./public 和 ./views 目录,日志,异常细节页面,等等)。
1441
+ 这时应该让 Sinatra::Base 走到台前了:
1442
+
1443
+ require 'sinatra/base'
1444
+
1445
+ class MyApp < Sinatra::Base
1446
+ set :sessions, true
1447
+ set :foo, 'bar'
1448
+
1449
+ get '/' do
1450
+ 'Hello world!'
1451
+ end
1452
+ end
1453
+
1454
+ Sinatra::Base子类可用的方法实际上就是通过顶层 DSL
1455
+ 可用的方法。
1456
+ 大部分顶层应用可以通过两个改变转换成Sinatra::Base组件:
1457
+
1458
+ * 你的文件应当引入 +sinatra/base+ 而不是 +sinatra+;
1459
+ 否则,所有的Sinatra的 DSL 方法将会被引进到
1460
+ 主命名空间。
1461
+ * 把你的应用的路由,错误处理,过滤器和选项放在
1462
+ 一个Sinatra::Base的子类中。
1463
+
1464
+ <tt>+Sinatra::Base+</tt> 是一张白纸。大部分的选项默认是禁用的,
1465
+ 包含内置的服务器。参见 {选项和配置}[http://sinatra.github.com/configuration.html]
1466
+ 查看可用选项的具体细节和他们的行为。
1467
+
1468
+ === 模块化 vs. 传统的方式
1469
+
1470
+ 与通常的认识相反,传统的方式没有任何错误。
1471
+ 如果它适合你的应用,你不需要转换到模块化的应用。
1472
+
1473
+ 和模块化方式相比只有两个缺点:
1474
+
1475
+ * 你对每个Ruby进程只能定义一个Sinatra应用,如果你需要更多,
1476
+ 切换到模块化方式。
1477
+
1478
+ * 传统方式使用代理方法污染了 Object 。如果你打算
1479
+ 把你的应用封装进一个 library/gem,转换到模块化方式。
1480
+
1481
+ 没有任何原因阻止你混合模块化和传统方式。
1482
+
1483
+ 如果从一种转换到另一种,你需要注意settings中的
1484
+ 一些微小的不同:
1485
+
1486
+ Setting Classic Modular
1487
+
1488
+ app_file file loading sinatra nil
1489
+ run $0 == app_file false
1490
+ logging true false
1491
+ method_override true false
1492
+ inline_templates true false
1493
+
1494
+
1495
+ === 运行一个模块化应用
1496
+
1497
+ 有两种方式运行一个模块化应用,使用
1498
+ <tt>run!</tt>来运行:
1499
+
1500
+ # my_app.rb
1501
+ require 'sinatra/base'
1502
+
1503
+ class MyApp < Sinatra::Base
1504
+ # ... app code here ...
1505
+
1506
+ # start the server if ruby file executed directly
1507
+ run! if app_file == $0
1508
+ end
1509
+
1510
+ 运行:
1511
+
1512
+ ruby my_app.rb
1513
+
1514
+ 或者使用一个 <tt>config.ru</tt>,允许你使用任何Rack处理器:
1515
+
1516
+ # config.ru
1517
+ require './my_app'
1518
+ run MyApp
1519
+
1520
+ 运行:
1521
+
1522
+ rackup -p 4567
1523
+
1524
+ === 使用config.ru运行传统方式的应用
1525
+
1526
+ 编写你的应用:
1527
+
1528
+ # app.rb
1529
+ require 'sinatra'
1530
+
1531
+ get '/' do
1532
+ 'Hello world!'
1533
+ end
1534
+
1535
+ 加入相应的 <tt>config.ru</tt>:
1536
+
1537
+ require './app'
1538
+ run Sinatra::Application
1539
+
1540
+ === 什么时候用 config.ru?
1541
+
1542
+ 以下情况你可能需要使用 <tt>config.ru</tt>:
1543
+
1544
+ * 你要使用不同的 Rack 处理器部署 (Passenger, Unicorn,
1545
+ Heroku, ...).
1546
+ * 你想使用一个或者多个 <tt>Sinatra::Base</tt>的子类.
1547
+ * 你只想把Sinatra当作中间件使用,而不是端点。
1548
+
1549
+ <b>你并不需要切换到<tt>config.ru</tt>仅仅因为你切换到模块化方式,
1550
+ 你同样不需要切换到模块化方式,
1551
+ 仅仅因为要运行 <tt>config.ru</tt>.</b>
1552
+
1553
+ === 把Sinatra当成中间件来使用
1554
+
1555
+ 不仅Sinatra有能力使用其他的Rack中间件,任何Sinatra
1556
+ 应用程序都可以反过来自身被当作中间件,被加在任何Rack端点前面。
1557
+ 这个端点可以是任何Sinatra应用,或者任何基于Rack的应用程序
1558
+ (Rails/Ramaze/Camping/...)。
1559
+
1560
+ require 'sinatra/base'
1561
+
1562
+ class LoginScreen < Sinatra::Base
1563
+ enable :sessions
1564
+
1565
+ get('/login') { haml :login }
1566
+
1567
+ post('/login') do
1568
+ if params[:name] = 'admin' and params[:password] = 'admin'
1569
+ session['user_name'] = params[:name]
1570
+ else
1571
+ redirect '/login'
1572
+ end
1573
+ end
1574
+ end
1575
+
1576
+ class MyApp < Sinatra::Base
1577
+ # 在前置过滤器前运行中间件
1578
+ use LoginScreen
1579
+
1580
+ before do
1581
+ unless session['user_name']
1582
+ halt "Access denied, please <a href='/login'>login</a>."
1583
+ end
1584
+ end
1585
+
1586
+ get('/') { "Hello #{session['user_name']}." }
1587
+ end
1588
+
1589
+ == 变量域和绑定
1590
+
1591
+ 当前所在的变量域决定了哪些方法和变量是可用的。
1592
+
1593
+
1594
+ === 应用/类 变量域
1595
+
1596
+ 每个Sinatra应用相当与Sinatra::Base的一个子类。
1597
+ 如果你在使用顶层DSL(<tt>require 'sinatra'</tt>),那么这个类就是
1598
+ Sinatra::Application,或者这个类就是你显式创建的子类。
1599
+ 在类层面,你具有的方法类似于 `get` 或者 `before`,但是你不能访问
1600
+ `request` 对象或者 `session`, 因为对于所有的请求,
1601
+ 只有单一的应用类。
1602
+
1603
+ 通过 `set` 创建的选项是类层面的方法:
1604
+
1605
+ class MyApp < Sinatra::Base
1606
+ # 嘿,我在应用变量域!
1607
+ set :foo, 42
1608
+ foo # => 42
1609
+
1610
+ get '/foo' do
1611
+ # 嘿,我不再处于应用变量域了!
1612
+ end
1613
+ end
1614
+
1615
+ 在下列情况下你将拥有应用变量域的绑定:
1616
+
1617
+ * 在应用类中
1618
+ * 在扩展中定义的方法
1619
+ * 传递给 `helpers` 的代码块
1620
+ * 用作`set`值的过程/代码块
1621
+
1622
+ 你可以访问变量域对象(就是应用类)就像这样:
1623
+
1624
+ * 通过传递给代码块的对象 (<tt>configure { |c| ... }</tt>)
1625
+ * 在请求变量域中使用`settings`
1626
+
1627
+ === 请求/实例 变量域
1628
+
1629
+ 对于每个进入的请求,一个新的应用类的实例会被创建
1630
+ 所有的处理器代码块在该变量域被运行。在这个变量域中,
1631
+ 你可以访问 `request` 和 `session` 对象,或者调用渲染方法比如
1632
+ `erb` 或者 `haml`。你可以在请求变量域当中通过`settings`辅助方法
1633
+ 访问应用变量域:
1634
+
1635
+ class MyApp < Sinatra::Base
1636
+ # 嘿,我在应用变量域!
1637
+ get '/define_route/:name' do
1638
+ # 针对 '/define_route/:name' 的请求变量域
1639
+ @value = 42
1640
+
1641
+ settings.get("/#{params[:name]}") do
1642
+ # 针对 "/#{params[:name]}" 的请求变量域
1643
+ @value # => nil (并不是相同的请求)
1644
+ end
1645
+
1646
+ "Route defined!"
1647
+ end
1648
+ end
1649
+
1650
+ 在以下情况将获得请求变量域:
1651
+
1652
+ * get/head/post/put/delete 代码块
1653
+ * 前置/后置 过滤器
1654
+ * 辅助方法
1655
+ * 模板/视图
1656
+
1657
+ === 代理变量域
1658
+
1659
+ 代理变量域只是把方法转送到类变量域。可是,
1660
+ 他并非表现得100%类似于类变量域, 因为你并不能获得类的绑定:
1661
+ 只有显式地标记为供代理使用的方法才是可用的,
1662
+ 而且你不能和类变量域共享变量/状态。(解释:你有了一个不同的
1663
+ `self`)。 你可以显式地增加方法代理,通过调用
1664
+ <tt>Sinatra::Delegator.delegate :method_name</tt>。
1665
+
1666
+ 在以下情况将获得代理变量域:
1667
+
1668
+ * 顶层的绑定,如果你做过 <tt>require "sinatra"</tt>
1669
+ * 在扩展了 `Sinatra::Delegator` mixin的对象
1670
+
1671
+ 自己在这里看一下代码:
1672
+ {Sinatra::Delegator mixin}[http://github.com/sinatra/sinatra/blob/ceac46f0bc129a6e994a06100aa854f606fe5992/lib/sinatra/base.rb#L1128]
1673
+ 已经 {被包含进了主命名空间}[http://github.com/sinatra/sinatra/blob/ceac46f0bc129a6e994a06100aa854f606fe5992/lib/sinatra/main.rb#L28]。
1674
+
1675
+ == 命令行
1676
+
1677
+ Sinatra 应用可以被直接运行:
1678
+
1679
+ ruby myapp.rb [-h] [-x] [-e ENVIRONMENT] [-p PORT] [-o HOST] [-s HANDLER]
1680
+
1681
+ 选项是:
1682
+
1683
+ -h # help
1684
+ -p # 设定端口 (默认是 4567)
1685
+ -o # 设定主机名 (默认是 0.0.0.0)
1686
+ -e # 设定环境 (默认是 development)
1687
+ -s # 限定 rack 服务器/处理器 (默认是 thin)
1688
+ -x # 打开互斥锁 (默认是 off)
1689
+
1690
+ == 必要条件
1691
+
1692
+ 推荐在 Ruby 1.8.7, 1.9.2, JRuby 或者 Rubinius 上安装Sinatra。
1693
+
1694
+ 下面的Ruby版本是官方支持的:
1695
+
1696
+ [ Ruby 1.8.6 ]
1697
+ 不推荐在1.8.6上安装Sinatra,
1698
+ 但是直到Sinatra 1.3.0发布才会放弃对它的支持。
1699
+ RDoc 和 CoffeScript模板不被这个Ruby版本支持。
1700
+ 1.8.6在它的Hash实现中包含一个内存泄漏问题,
1701
+ 该问题会被1.1.1版本之前的Sinatra引发。
1702
+ 当前版本使用性能下降的代价排除了这个问题。你需要把Rack降级到1.1.x,
1703
+ 因为Rack >= 1.2不再支持1.8.6。
1704
+
1705
+ [ Ruby 1.8.7 ]
1706
+ 1.8.7 被完全支持,但是,如果没有特别原因,
1707
+ 我们推荐你升级到 1.9.2 或者切换到 JRuby 或者 Rubinius.
1708
+
1709
+ [ Ruby 1.9.2 ]
1710
+ 1.9.2 被支持而且推荐。注意 Radius 和 Markaby
1711
+ 模板并不和1.9兼容。不要使用 1.9.2p0, 它被已知会产生
1712
+ segmentation faults.
1713
+
1714
+ [ Rubinius ]
1715
+ Rubinius 被官方支持 (Rubinius >= 1.2.2),
1716
+ 除了Textile模板。
1717
+
1718
+ [ JRuby ]
1719
+ JRuby 被官方支持 (JRuby >= 1.5.6)。
1720
+ 目前未知和第三方模板库有关的问题,
1721
+ 但是,如果你选择了JRuby,请查看一下JRuby rack 处理器,
1722
+ 因为 Thin web 服务器还没有在JRuby上获得支持。
1723
+
1724
+ 我们也会时刻关注新的Ruby版本。
1725
+
1726
+ 下面的 Ruby 实现没有被官方支持,
1727
+ 但是已知可以运行 Sinatra:
1728
+
1729
+ * JRuby 和 Rubinius 老版本
1730
+ * MacRuby
1731
+ * Maglev
1732
+ * IronRuby
1733
+ * Ruby 1.9.0 and 1.9.1
1734
+
1735
+ 不被官方支持的意思是,如果在不被支持的平台上有运行错误,
1736
+ 我们假定不是我们的问题,而是平台的问题。
1737
+
1738
+ Sinatra应该会运行在任何支持上述Ruby实现的操作系统。
1739
+
1740
+
1741
+ == 紧追前沿
1742
+
1743
+ 如果你喜欢使用 Sinatra 的最新鲜的代码,请放心的使用 master
1744
+ 分支来运行你的程序,它会非常的稳定。
1745
+ cd myapp
1746
+ git clone git://github.com/sinatra/sinatra.git
1747
+ ruby -Isinatra/lib myapp.rb
1748
+
1749
+ 我们也会不定期的发布预发布gems,所以你也可以运行
1750
+
1751
+ gem install sinatra --pre
1752
+
1753
+ 来获得最新的特性。
1754
+
1755
+ === 通过Bundler
1756
+ 如果你想使用最新的Sinatra运行你的应用,通过
1757
+ {Bundler}[http://gembundler.com/] 是推荐的方式。
1758
+
1759
+ 首先,安装bundler,如果你还没有安装:
1760
+
1761
+ gem install bundler
1762
+
1763
+ 然后,在你的项目目录下,创建一个 +Gemfile+:
1764
+
1765
+ source :rubygems
1766
+ gem 'sinatra', :git => "git://github.com/sinatra/sinatra.git"
1767
+
1768
+ # 其他的依赖关系
1769
+ gem 'haml' # 举例,如果你想用haml
1770
+ gem 'activerecord', '~> 3.0' # 也许你还需要 ActiveRecord 3.x
1771
+
1772
+ 请注意在这里你需要列出你的应用的所有依赖关系。
1773
+ Sinatra的直接依赖关系 (Rack and Tilt) 将会,
1774
+ 自动被Bundler获取和添加。
1775
+
1776
+ 现在你可以像这样运行你的应用:
1777
+
1778
+ bundle exec ruby myapp.rb
1779
+
1780
+ === 使用自己的
1781
+ 创建一个本地克隆并通过 <tt>sinatra/lib</tt> 目录运行你的应用,
1782
+ 通过 <tt>$LOAD_PATH</tt>:
1783
+
1784
+ cd myapp
1785
+ git clone git://github.com/sinatra/sinatra.git
1786
+ ruby -Isinatra/lib myapp.rb
1787
+
1788
+ 为了在未来更新 Sinatra 源代码:
1789
+
1790
+ cd myapp/sinatra
1791
+ git pull
1792
+
1793
+ === 全局安装
1794
+
1795
+ 你可以自行编译 gem :
1796
+
1797
+
1798
+ git clone git://github.com/sinatra/sinatra.git
1799
+ cd sinatra
1800
+ rake sinatra.gemspec
1801
+ rake install
1802
+
1803
+ 如果你以root身份安装 gems,最后一步应该是
1804
+
1805
+ sudo rake install
1806
+
1807
+ == 更多
1808
+
1809
+ * {项目主页(英文)}[http://www.sinatrarb.com/] - 更多的文档,
1810
+ 新闻,和其他资源的链接。
1811
+ * {贡献}[http://www.sinatrarb.com/contributing] - 找到了一个bug?
1812
+ 需要帮助?有了一个 patch?
1813
+ * {问题追踪}[http://github.com/sinatra/sinatra/issues]
1814
+ * {Twitter}[http://twitter.com/sinatra]
1815
+ * {邮件列表}[http://groups.google.com/group/sinatrarb/topics]
1816
+ * {IRC: #sinatra}[irc://chat.freenode.net/#sinatra] on http://freenode.net