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,1785 @@
1
+ = Sinatra
2
+ <i>Внимание: Этот документ является переводом английской версии и может быть устаревшим</i>
3
+
4
+ Sinatra — это предметно-ориентированный каркас (DSL) для быстрого создания функциональных веб-приложений на Ruby:
5
+
6
+ # myapp.rb
7
+ require 'sinatra'
8
+
9
+ get '/' do
10
+ 'Hello world!'
11
+ end
12
+
13
+ Установите gem:
14
+
15
+ gem install sinatra
16
+
17
+ и запустите приложение с помощью:
18
+
19
+ ruby -rubygems myapp.rb
20
+
21
+ Результат можно увидеть: http://localhost:4567
22
+
23
+ Рекомендуется также установить thin, сделать это можно командой: <tt>gem install thin</tt>.
24
+ Thin - это более производительный и функциональный сервер для разработки приложений на Sinatra.
25
+
26
+ == Маршруты
27
+
28
+ В Sinatra маршрут — это пара: <HTTP метод> и <шаблон URL>.
29
+ Каждый маршрут ассоциирован с блоком кода, исполняемого внутри, пример:
30
+
31
+ get '/' do
32
+ .. что-то показать ..
33
+ end
34
+
35
+ post '/' do
36
+ .. что-то создать ..
37
+ end
38
+
39
+ put '/' do
40
+ .. что-то заменить ..
41
+ end
42
+
43
+ patch '/' do
44
+ .. что-то изменить ..
45
+ end
46
+
47
+ delete '/' do
48
+ .. что-то удалить ..
49
+ end
50
+
51
+ options '/' do
52
+ .. что-то ответить ..
53
+ end
54
+
55
+ Маршруты сверяются с запросом в порядке очередности их записи в файле приложения. По умолчанию
56
+ будет вызван первый совпавший с запросом маршрут.
57
+
58
+ Шаблоны маршрутов могут включать в себя параметры доступные в
59
+ <tt>params</tt> xэше:
60
+
61
+ get '/hello/:name' do
62
+ # соответствует "GET /hello/foo" и "GET /hello/bar",
63
+ # где params[:name] 'foo' или 'bar'
64
+ "Hello #{params[:name]}!"
65
+ end
66
+
67
+ Можно также использовать именные параметры в переменных блоков:
68
+
69
+ get '/hello/:name' do |n|
70
+ "Hello #{n}!"
71
+ end
72
+
73
+ Шаблоны маршрутов также могут включать splat (или '*' маску, обозначающую любой символ) параметры доступные
74
+ в массиве <tt>params[:splat]</tt>:
75
+
76
+ get '/say/*/to/*' do
77
+ # соответствует /say/hello/to/world
78
+ params[:splat] # => ["hello", "world"]
79
+ end
80
+
81
+ get '/download/*.*' do
82
+ # соответствует /download/path/to/file.xml
83
+ params[:splat] # => ["path/to/file", "xml"]
84
+ end
85
+
86
+ Или с параметрами блока:
87
+
88
+ get '/download/*.*' do |path, ext|
89
+ [path, ext] # => ["path/to/file", "xml"]
90
+ end
91
+
92
+ Маршруты также могут содержать регулярные выражения:
93
+
94
+ get %r{/hello/([\w]+)} do
95
+ "Hello, #{params[:captures].first}!"
96
+ end
97
+
98
+ Или с параметром блока:
99
+
100
+ get %r{/hello/([\w]+)} do |c|
101
+ "Hello, #{c}!"
102
+ end
103
+
104
+ === Условия
105
+
106
+ Маршруты могут включать различные условия совпадений, такие как user agent:
107
+
108
+ get '/foo', :agent => /Songbird (\d\.\d)[\d\/]*?/ do
109
+ "You're using Songbird version #{params[:agent][0]}"
110
+ end
111
+
112
+ get '/foo' do
113
+ # соответствует non-songbird браузерам
114
+ end
115
+
116
+ Другими доступными условиями являются +host_name+ и +provides+:
117
+
118
+ get '/', :host_name => /^admin\./ do
119
+ "Admin Area, Access denied!"
120
+ end
121
+
122
+ get '/', :provides => 'html' do
123
+ haml :index
124
+ end
125
+
126
+ get '/', :provides => ['rss', 'atom', 'xml'] do
127
+ builder :feed
128
+ end
129
+
130
+ Вы можете задать собственные условия:
131
+
132
+ set(:probability) { |value| condition { rand <= value } }
133
+
134
+ get '/win_a_car', :probability => 0.1 do
135
+ "You won!"
136
+ end
137
+
138
+ get '/win_a_car' do
139
+ "Sorry, you lost."
140
+ end
141
+
142
+ === Возвращаемые значения
143
+
144
+ Возвращаемое значение блока маршрута ограничивается телом ответа, которое будет передано HTTP клиенту,
145
+ или следующей "прослойкой" (middleware) в Rack стеке. Чаще всего это строка, как в примерах выше.
146
+ Но и другие значения также приемлемы.
147
+
148
+ Вы можете вернуть любой объект, который будет либо корректным Rack ответом, объектом Rack body,
149
+ либо кодом состояния HTTP:
150
+
151
+ * массив с тремя переменными: <tt>[status (Fixnum), headers (Hash), response body (должен отвечать на #each)]</tt>;
152
+ * массив с двумя переменными: <tt>[status (Fixnum), response body (должен отвечать на #each)]</tt>;
153
+ * объект, отвечающий на <tt>#each</tt>, который передает только строковые типы данных в этот блок;
154
+ * Fixnum, представляющий код состояния HTTP.
155
+
156
+ Таким образом, мы легко можем создать поточный пример:
157
+
158
+ class Stream
159
+ def each
160
+ 100.times { |i| yield "#{i}\n" }
161
+ end
162
+ end
163
+
164
+ get('/') { Stream.new }
165
+
166
+ === Собственные детекторы совпадений для маршрутов
167
+
168
+ Как показано выше, Sinatra поставляется со встроенной поддержкой строк и
169
+ регулярных выражений в качестве шаблонов URL. Но и это еще не все. Вы можете
170
+ легко определить свои собственные детекторы совпадений (matchers) для маршрутов:
171
+
172
+ class AllButPattern
173
+ Match = Struct.new(:captures)
174
+
175
+ def initialize(except)
176
+ @except = except
177
+ @captures = Match.new([])
178
+ end
179
+
180
+ def match(str)
181
+ @captures unless @except === str
182
+ end
183
+ end
184
+
185
+ def all_but(pattern)
186
+ AllButPattern.new(pattern)
187
+ end
188
+
189
+ get all_but("/index") do
190
+ # ...
191
+ end
192
+
193
+ Заметьте, что предыдущий пример возможно чересчур сложен, он также может быть представлен как:
194
+
195
+ get // do
196
+ pass if request.path_info == "/index"
197
+ # ...
198
+ end
199
+
200
+ Или с использованием негативного просмотра вперед:
201
+
202
+ get %r{^(?!/index$)} do
203
+ # ...
204
+ end
205
+
206
+ == Статические файлы
207
+
208
+ Статические файлы отдаются из <tt>./public</tt> директории. Вы можете указать другое место,
209
+ указав его через опцию <tt>:public_folder</tt>:
210
+
211
+ set :public_folder, File.dirname(__FILE__) + '/static'
212
+
213
+ Учтите, что имя директории со статическими файлами не включено в URL. Например, файл
214
+ <tt>./public/css/style.css</tt> будет доступен как
215
+ <tt>http://example.com/css/style.css</tt>.
216
+
217
+ Используйте опцию <tt>:static_cache_control</tt> (см. ниже), чтобы
218
+ добавить заголовок <tt>Cache-Control</tt>.
219
+
220
+ == Представления / Шаблоны
221
+
222
+ Каждый шаблонизатор представлен своим собственным методом. Эти методы
223
+ попросту возвращают строку:
224
+
225
+ get '/' do
226
+ erb :index
227
+ end
228
+
229
+ Отобразит <tt>views/index.erb</tt>.
230
+
231
+ Вместо имени шаблона вы так же можете передавать непосредственно само
232
+ содержимое шаблона
233
+
234
+ get '/' do
235
+ code = "<%= Time.now %>"
236
+ erb code
237
+ end
238
+
239
+ Эти методы принимают второй аргумент, хеш с опциями:
240
+
241
+ get '/' do
242
+ erb :index, :layout => :post
243
+ end
244
+
245
+ Отобразит <tt>views/index.erb</tt>, вложенным в
246
+ <tt>views/post.erb</tt> (по умолчанию: <tt>views/layout.erb</tt>, если существует).
247
+
248
+ Любые опции, не понимаемые Sinatra, будут переданы в шаблонизатор
249
+
250
+ get '/' do
251
+ haml :index, :format => :html5
252
+ end
253
+
254
+ Вы также можете задавать опции для шаблонизаторов в общем:
255
+
256
+ set :haml, :format => :html5
257
+
258
+ get '/' do
259
+ haml :index
260
+ end
261
+
262
+ Опции, переданные в метод, переопределяют опции, заданные с помощью
263
+ +set+.
264
+
265
+ Доступные опции:
266
+
267
+ [locals]
268
+ Список локальных переменных, передаваемых в документ.
269
+ Например: <tt>erb "<%= foo %>", :locals => {:foo => "bar"}</tt>
270
+
271
+ [default_encoding]
272
+ Кодировка, которую следует использовать, если не удалось определить
273
+ оригинальную. По умолчанию: <tt>settings.default_encoding</tt>.
274
+
275
+ [views]
276
+ Директория с шаблонами. По умолчанию: <tt>settings.views</tt>.
277
+
278
+ [layout]
279
+ Использовать или нет лэйаут (+true+ или +false+). Если же значение Symbol,
280
+ то указывает, какой шаблон использовать в качестве лэйаута. Например:
281
+ <tt>erb :index, :layout => !request.xhr?</tt>
282
+
283
+ [content_type]
284
+ Content-Type отображенного шаблона. По умолчанию: задается шаблонизатором.
285
+
286
+ [scope]
287
+ Область видимости, в которой рендерятся шаблоны. По умолчанию: экземпляр
288
+ приложения. Если вы измените эту опцию, то переменные экземпляра и
289
+ методы-помощники станут недоступными в ваших шаблонах.
290
+
291
+ [layout_engine]
292
+ Шаблонизатор, который следует использовать для отображения лэйаута. Полезная
293
+ опция для шаблонизаторов, в которых нет никакой поддержки лэйаутов. По
294
+ умолчанию: тот же шаблонизатор, что используется и для самого шаблона.
295
+ Пример: <tt>set :rdoc, :layout_engine => :erb</tt>
296
+
297
+ По умолчанию считается, что шаблоны находятся в директории <tt>./views</tt>.
298
+ Чтобы использовать другую директорию с шаблонами:
299
+
300
+ set :views, settings.root + '/templates'
301
+
302
+ Важное замечание: вы всегда должны ссылаться на шаблоны с помощью символов
303
+ (Symbol), даже когда они в поддиректории (в этом случае используйте
304
+ <tt>:'subdir/template'</tt>). Вы должны использовать символы, потому что
305
+ иначе шаблонизаторы попросту отображают любые строки, переданные им.
306
+
307
+ === Доступные шаблонизаторы
308
+
309
+ Некоторые языки шаблонов имеют несколько реализаций. Чтобы указать, какую
310
+ реализацию использовать, вам следует просто подключить нужную
311
+ библиотеку:
312
+
313
+ require 'rdiscount' # или require 'bluecloth'
314
+ get('/') { markdown :index }
315
+
316
+ === Haml шаблоны
317
+
318
+ Зависимости:: {haml}[http://haml.info/]
319
+ Расширения файлов:: <tt>.haml</tt>
320
+ Пример:: <tt>haml :index, :format => :html5</tt>
321
+
322
+ === Erb шаблоны
323
+
324
+ Зависимости:: {erubis}[http://www.kuwata-lab.com/erubis/] или erb (включен в Ruby)
325
+ Расширения файлов:: <tt>.erb</tt>, <tt>.rhtml</tt> or <tt>.erubis</tt> (только Erubis)
326
+ Пример:: <tt>erb :index</tt>
327
+
328
+ === Builder шаблоны
329
+
330
+ Зависимости:: {builder}[http://builder.rubyforge.org/]
331
+ Расширения файлов:: <tt>.builder</tt>
332
+ Пример:: <tt>builder { |xml| xml.em "hi" }</tt>
333
+
334
+ Блок также используется и для встроенных шаблонов (см. пример).
335
+
336
+ === Nokogiri шаблоны
337
+
338
+ Зависимости:: {nokogiri}[http://nokogiri.org/]
339
+ Расширения файлов:: <tt>.nokogiri</tt>
340
+ Пример:: <tt>nokogiri { |xml| xml.em "hi" }</tt>
341
+
342
+ Блок также используется и для встроенных шаблонов (см. пример).
343
+
344
+ === Sass шаблоны
345
+
346
+ Зависимости:: {sass}[http://sass-lang.com/]
347
+ Расширения файлов:: <tt>.sass</tt>
348
+ Пример:: <tt>sass :stylesheet, :style => :expanded</tt>
349
+
350
+ === SCSS шаблоны
351
+
352
+ Зависимости:: {sass}[http://sass-lang.com/]
353
+ Расширения файлов:: <tt>.scss</tt>
354
+ Пример:: <tt>scss :stylesheet, :style => :expanded</tt>
355
+
356
+ === Less шаблоны
357
+
358
+ Зависимости:: {less}[http://www.lesscss.org/]
359
+ Расширения файлов:: <tt>.less</tt>
360
+ Пример:: <tt>less :stylesheet</tt>
361
+
362
+ === Liquid шаблоны
363
+
364
+ Зависимости:: {liquid}[http://www.liquidmarkup.org/]
365
+ Расширения файлов:: <tt>.liquid</tt>
366
+ Пример:: <tt>liquid :index, :locals => { :key => 'value' }</tt>
367
+
368
+ Так как в Liquid шаблонах невозможно вызывать методы из Ruby (кроме yield), то
369
+ вы почти всегда будете передавать в шаблон локальные переменные.
370
+
371
+ === Markdown шаблоны
372
+
373
+ Зависимости:: {rdiscount}[https://github.com/rtomayko/rdiscount], {redcarpet}[https://github.com/tanoku/redcarpet], {bluecloth}[http://deveiate.org/projects/BlueCloth], {kramdown}[http://kramdown.rubyforge.org/] или {maruku}[http://maruku.rubyforge.org/]
374
+ Расширения файлов:: <tt>.markdown</tt>, <tt>.mkd</tt> and <tt>.md</tt>
375
+ Пример:: <tt>markdown :index, :layout_engine => :erb</tt>
376
+
377
+ В Markdown невозможно вызывать методы или передавать локальные переменные.
378
+ Следовательно, вам, скорее всего, придется использовать этот шаблон совместно
379
+ с другим шаблонизатором:
380
+
381
+ erb :overview, :locals => { :text => markdown(:introduction) }
382
+
383
+ Заметьте, что вы можете вызывать метод +markdown+ из других шаблонов:
384
+
385
+ %h1 Hello From Haml!
386
+ %p= markdown(:greetings)
387
+
388
+ Вы не можете вызывать Ruby из Markdown, соответственно, вы не можете
389
+ использовать лэйауты на Markdown. Тем не менее, есть возможность использовать
390
+ один шаблонизатор для отображения шаблона, а другой для лэйаута с помощью
391
+ опции <tt>:layout_engine</tt>.
392
+
393
+ === Textile шаблоны
394
+
395
+ Зависимости:: {RedCloth}[http://redcloth.org/]
396
+ Расширения файлов:: <tt>.textile</tt>
397
+ Пример:: <tt>textile :index, :layout_engine => :erb</tt>
398
+
399
+ В Textile невозможно вызывать методы или передавать локальные переменные.
400
+ Следовательно, вам, скорее всего, придется использовать этот шаблон совместно с
401
+ другим шаблонизатором:
402
+
403
+ erb :overview, :locals => { :text => textile(:introduction) }
404
+
405
+ Заметьте, что вы можете вызывать метод +textile+ из других шаблонов:
406
+
407
+ %h1 Hello From Haml!
408
+ %p= textile(:greetings)
409
+
410
+ Вы не можете вызывать Ruby из Textile, соответственно, вы не можете
411
+ использовать лэйауты на Textile. Тем не менее, есть возможность использовать
412
+ один шаблонизатор для отображения шаблона, а другой для лэйаута с помощью
413
+ опции <tt>:layout_engine</tt>.
414
+
415
+ === RDoc шаблоны
416
+
417
+ Зависимости:: {rdoc}[http://rdoc.rubyforge.org/]
418
+ Расширения файлов:: <tt>.rdoc</tt>
419
+ Пример:: <tt>textile :README, :layout_engine => :erb</tt>
420
+
421
+ В RDoc невозможно вызывать методы или передавать локальные переменные.
422
+ Следовательно, вам, скорее всего, придется использовать этот шаблон совместно с
423
+ другим шаблонизатором:
424
+
425
+ erb :overview, :locals => { :text => rdoc(:introduction) }
426
+
427
+ Заметьте, что вы можете вызывать метод +rdoc+ из других шаблонов:
428
+
429
+ %h1 Hello From Haml!
430
+ %p= rdoc(:greetings)
431
+
432
+ Вы не можете вызывать Ruby из RDoc, соответственно, вы не можете
433
+ использовать лэйауты на RDoc. Тем не менее, есть возможность использовать
434
+ один шаблонизатор для отображения шаблона, а другой для лэйаута с помощью
435
+ опции <tt>:layout_engine</tt>.
436
+
437
+ === Radius шаблоны
438
+
439
+ Зависимости:: {radius}[http://radius.rubyforge.org/]
440
+ Расширения файлов:: <tt>.radius</tt>
441
+ Пример:: <tt>radius :index, :locals => { :key => 'value' }</tt>
442
+
443
+ Так как в Radius шаблонах невозможно вызывать методы из Ruby напрямую, то
444
+ вы почти всегда будете передавать в шаблон локальные переменные.
445
+
446
+ === Markaby шаблоны
447
+
448
+ Зависимости:: {markaby}[http://markaby.github.com/]
449
+ Расширения файлов:: <tt>.mab</tt>
450
+ Пример:: <tt>markaby { h1 "Welcome!" }</tt>
451
+
452
+ Блок также используется и для встроенных шаблонов (см. пример).
453
+
454
+ === Slim шаблоны
455
+
456
+ Зависимости:: {slim}[http://slim-lang.com/]
457
+ Расширения файлов:: <tt>.slim</tt>
458
+ Пример:: <tt>slim :index</tt>
459
+
460
+ === Creole шаблоны
461
+
462
+ Зависимости:: {creole}[https://github.com/minad/creole]
463
+ Расширения файлов:: <tt>.creole</tt>
464
+ Пример:: <tt>creole :wiki, :layout_engine => :erb</tt>
465
+
466
+ В Creole невозможно вызывать методы или передавать локальные переменные.
467
+ Следовательно, вам, скорее всего, придется использовать этот шаблон совместно с
468
+ другим шаблонизатором:
469
+
470
+ erb :overview, :locals => { :text => creole(:introduction) }
471
+
472
+ Заметьте, что вы можете вызывать метод +creole+ из других шаблонов:
473
+
474
+ %h1 Hello From Haml!
475
+ %p= creole(:greetings)
476
+
477
+ Вы не можете вызывать Ruby из Creole, соответственно, вы не можете
478
+ использовать лэйауты на Creole. Тем не менее, есть возможность использовать
479
+ один шаблонизатор для отображения шаблона, а другой для лэйаута с помощью
480
+ опции <tt>:layout_engine</tt>.
481
+
482
+ === CoffeeScript шаблоны
483
+
484
+ Зависимости:: {coffee-script}[https://github.com/josh/ruby-coffee-script] и {способ запускать javascript}[https://github.com/sstephenson/execjs/blob/master/README.md#readme]
485
+ Расширения файлов:: <tt>.coffee</tt>
486
+ Пример:: <tt>coffee :index</tt>
487
+
488
+ === Встроенные шаблоны
489
+
490
+ get '/' do
491
+ haml '%div.title Hello World'
492
+ end
493
+
494
+ Отобразит встроенный шаблон, переданный строкой.
495
+
496
+ === Доступ к переменным в шаблонах
497
+
498
+ Шаблоны интерпретируются в том же контексте, что и обработчики маршрутов. Переменные экземпляра,
499
+ установленные в процессе обработки маршрутов, будут доступны напрямую в шаблонах:
500
+
501
+ get '/:id' do
502
+ @foo = Foo.find(params[:id])
503
+ haml '%h1= @foo.name'
504
+ end
505
+
506
+ Либо установите их через хеш локальных переменных:
507
+
508
+ get '/:id' do
509
+ foo = Foo.find(params[:id])
510
+ haml '%h1= bar.name', :locals => { :bar => foo }
511
+ end
512
+
513
+ Это обычный подход, когда шаблоны рендерятся как части других шаблонов.
514
+
515
+ === Вложенные шаблоны
516
+
517
+ Шаблоны также могут быть определены в конце исходного файла:
518
+
519
+ require 'sinatra'
520
+
521
+ get '/' do
522
+ haml :index
523
+ end
524
+
525
+ __END__
526
+
527
+ @@ layout
528
+ %html
529
+ = yield
530
+
531
+ @@ index
532
+ %div.title Hello world!!!!!
533
+
534
+ Заметьте: вложенные шаблоны, определенные в исходном файле, который подключила Sinatra, будут
535
+ автоматически загружены. Вызовите <tt>enable :inline_templates</tt> напрямую, если у вас вложенные
536
+ шаблоны в других файлах.
537
+
538
+ === Именные шаблоны
539
+
540
+ Шаблоны также могут быть определены при помощи <tt>template</tt> метода:
541
+
542
+ template :layout do
543
+ "%html\n =yield\n"
544
+ end
545
+
546
+ template :index do
547
+ '%div.title Hello World!'
548
+ end
549
+
550
+ get '/' do
551
+ haml :index
552
+ end
553
+
554
+ Если шаблон с именем "layout" существует, то он будет использоваться каждый раз
555
+ при рендеринге. Вы можете отключать лэйаут в каждом конкретном случае с помощью
556
+ <tt>:layout => false</tt> или отключить его для всего приложения, например, так:
557
+ <tt>set :haml, :layout => false</tt>:
558
+
559
+ get '/' do
560
+ haml :index, :layout => !request.xhr?
561
+ end
562
+
563
+ === Привязка файловых расширений
564
+
565
+ Чтобы связать расширение файла с движком рендеринга, используйте
566
+ <tt>Tilt.register</tt>. Например, если вы хотите использовать расширение +tt+
567
+ для шаблонов Textile:
568
+
569
+ Tilt.register :tt, Tilt[:textile]
570
+
571
+ === Добавление собственного движка рендеринга
572
+
573
+ Сначала зарегистрируйте свой движок в Tilt, затем создайте метод, отвечающий за отрисовку:
574
+
575
+ Tilt.register :myat, MyAwesomeTemplateEngine
576
+
577
+ helpers do
578
+ def myat(*args) render(:myat, *args) end
579
+ end
580
+
581
+ get '/' do
582
+ myat :index
583
+ end
584
+
585
+ Отобразит <tt>./views/index.myat</tt>. Чтобы узнать больше о Tilt,
586
+ смотрите https://github.com/rtomayko/tilt
587
+
588
+ == Фильтры
589
+
590
+ +before+-фильтры выполняются перед каждым запросом в том же контексте, что и маршруты. Фильтры могут изменять
591
+ как запрос, так и ответ на него. Переменные экземпляра, установленные в фильтрах, доступны в маршрутах и шаблонах:
592
+
593
+ before do
594
+ @note = 'Hi!'
595
+ request.path_info = '/foo/bar/baz'
596
+ end
597
+
598
+ get '/foo/*' do
599
+ @note #=> 'Hi!'
600
+ params[:splat] #=> 'bar/baz'
601
+ end
602
+
603
+ +after+-фильтры выполняются после каждого запроса в том же контексте, что и пути. Фильтры могут изменять
604
+ как запрос, так и ответ на него. Переменные экземпляра, установленные в +before+-фильтрах и маршрутах,
605
+ будут доступны в +after+-фильтрах:
606
+
607
+ after do
608
+ puts response.status
609
+ end
610
+
611
+ Заметьте: если вы используете метод +body+, а не просто возвращаете строку из
612
+ маршрута, то тело ответа не будет доступно в +after+-фильтрах, так как оно будет сгенерировано позднее.
613
+
614
+ Фильтры могут использовать шаблоны URL и будут интерпретированы только если путь запроса совпадет с этим шаблоном:
615
+
616
+ before '/protected/*' do
617
+ authenticate!
618
+ end
619
+
620
+ after '/create/:slug' do |slug|
621
+ session[:last_slug] = slug
622
+ end
623
+
624
+ Как и маршруты, фильтры могут использовать условия:
625
+
626
+ before :agent => /Songbird/ do
627
+ # ...
628
+ end
629
+
630
+ after '/blog/*', :host_name => 'example.com' do
631
+ # ...
632
+ end
633
+
634
+ == Методы-помощники
635
+
636
+ Используйте метод <tt>helpers</tt>, чтобы определить методы-помощники, которые
637
+ в дальнейшем можно будет использовать в обработчиках маршрутов и шаблонах:
638
+
639
+ helpers do
640
+ def bar(name)
641
+ "#{name}bar"
642
+ end
643
+ end
644
+
645
+ get '/:name' do
646
+ bar(params[:name])
647
+ end
648
+
649
+ === Использование сессий
650
+
651
+ Сессия используется, чтобы сохранять состояние между запросами. Если эта опция
652
+ включена, то у вас будет один хеш сессии на одну пользовательскую сессию:
653
+
654
+ enable :sessions
655
+
656
+ get '/' do
657
+ "value = " << session[:value].inspect
658
+ end
659
+
660
+ get '/:value' do
661
+ session[:value] = params[:value]
662
+ end
663
+
664
+ Заметьте, что при использовании <tt>enable :sessions</tt> все данные
665
+ сохраняются в cookies. Это может быть не совсем то, что вы хотите (например,
666
+ сохранение больших объемов данных увеличит ваш трафик). В таком случае вы
667
+ можете использовать альтернативную Rack "прослойку" (middleware), реализующую
668
+ механизм сессий. Для этого *не надо* вызывать <tt>enable :sessions</tt>,
669
+ вместо этого следует подключить ее так же, как и любую другую "прослойку":
670
+
671
+ use Rack::Session::Pool, :expire_after => 2592000
672
+
673
+ get '/' do
674
+ "value = " << session[:value].inspect
675
+ end
676
+
677
+ get '/:value' do
678
+ session[:value] = params[:value]
679
+ end
680
+
681
+ Для повышения безопасности данные сессии в куках подписываются секретным
682
+ ключом. Секретный ключ генерируется Sinatra. Тем не менее, так как этот
683
+ ключ будет меняться с каждым запуском приложения, вы, возможно, захотите
684
+ установить ключ вручную, чтобы у всех экземпляров вашего приложения
685
+ был один и тот же ключ:
686
+
687
+ set :session_secret, 'super secret'
688
+
689
+ Если вы хотите больше настроек для сессий, вы можете задать их, передав хеш опций в параметр +sessions+:
690
+
691
+ set :sessions, :domain => 'foo.com'
692
+
693
+ === Прерывание
694
+
695
+ Чтобы незамедлительно прервать обработку запроса внутри фильтра или маршрута, используйте:
696
+
697
+ halt
698
+
699
+ Можно также указать статус при прерывании:
700
+
701
+ halt 410
702
+
703
+ Тело:
704
+
705
+ halt 'this will be the body'
706
+
707
+ И то, и другое:
708
+
709
+ halt 401, 'go away!'
710
+
711
+ Можно указать заголовки:
712
+
713
+ halt 402, {'Content-Type' => 'text/plain'}, 'revenge'
714
+
715
+ И, конечно, можно использовать шаблоны с +halt+:
716
+
717
+ halt erb(:error)
718
+
719
+ === Передача
720
+
721
+ Маршрут может передать обработку запроса следующему совпадающему маршруту, используя <tt>pass</tt>:
722
+
723
+ get '/guess/:who' do
724
+ pass unless params[:who] == 'Frank'
725
+ 'You got me!'
726
+ end
727
+
728
+ get '/guess/*' do
729
+ 'You missed!'
730
+ end
731
+
732
+ Блок маршрута сразу же прерывается, и контроль переходит к следующему совпадающему маршруту.
733
+ Если соответствующий маршрут не найден, то ответом на запрос будет 404.
734
+
735
+ === Вызов другого маршрута
736
+
737
+ Иногда +pass+ не подходит, например, если вы хотите получить результат
738
+ вызова другого обработчика маршрута. В таком случае просто используйте +call+:
739
+
740
+ get '/foo' do
741
+ status, headers, body = call env.merge("PATH_INFO" => '/bar')
742
+ [status, headers, body.map(&:upcase)]
743
+ end
744
+
745
+ get '/bar' do
746
+ "bar"
747
+ end
748
+
749
+ Заметьте, что в предыдущем примере можно облегчить тестирование и повысить
750
+ производительность, перенеся <tt>"bar"</tt> в метод-помощник, используемый
751
+ и в <tt>/foo</tt>, и в <tt>/bar</tt>.
752
+
753
+ Если вы хотите, чтобы запрос был отправлен в тот же экземпляр приложения, а не
754
+ в его копию, используйте <tt>call!</tt> вместо <tt>call</tt>.
755
+
756
+ Если хотите узнать больше о <tt>call</tt>, смотрите спецификацию Rack.
757
+
758
+ === Задание тела, кода и заголовков ответа
759
+
760
+ Хорошим тоном является установка кода состояния HTTP и тела ответа в возвращаемом
761
+ значении обработчика маршрута. Тем не менее, в некоторых ситуациях вам, возможно,
762
+ понадобится задать тело ответа в произвольной точке потока исполнения. Вы можете
763
+ сделать это с помощью метода-помощника +body+. Если вы задействуете метод +body+,
764
+ то вы можете использовать его и в дальнейшем, чтобы получить доступ к телу ответа.
765
+
766
+ get '/foo' do
767
+ body "bar"
768
+ end
769
+
770
+ after do
771
+ puts body
772
+ end
773
+
774
+ Также можно передать блок в метод +body+, который затем будет вызван
775
+ обработчиком Rack (такой подход может быть использован для реализации поточного
776
+ ответа, см. "Возвращаемые значения").
777
+
778
+ Аналогично вы можете установить код ответа и его заголовки:
779
+
780
+ get '/foo' do
781
+ status 418
782
+ headers \
783
+ "Allow" => "BREW, POST, GET, PROPFIND, WHEN",
784
+ "Refresh" => "Refresh: 20; http://www.ietf.org/rfc/rfc2324.txt"
785
+ body "I'm a tea pot!"
786
+ end
787
+
788
+ Как и +body+, методы +headers+ и +status+, вызванные без аргументов, возвращают
789
+ свои текущие значения.
790
+
791
+ === Логирование
792
+
793
+ В области видимости запроса метод +logger+ предоставляет доступ к экземпляру +Logger+:
794
+
795
+ get '/' do
796
+ logger.info "loading data"
797
+ # ...
798
+ end
799
+
800
+ Этот логер автоматически учитывает ваши настройки логирования в Rack. Если
801
+ логирование выключено, то этот метод вернет пустой (dummy) объект, поэтому вы можете
802
+ смело использовать его в маршрутах и фильтрах.
803
+
804
+ Заметьте, что логирование включено по умолчанию только для <tt>Sinatra::Application</tt>,
805
+ а если ваше приложение -- подкласс <tt>Sinatra::Base</tt>, то вы, наверное, захотите включить
806
+ его вручную:
807
+
808
+ class MyApp < Sinatra::Base
809
+ configure(:production, :development) do
810
+ enable :logging
811
+ end
812
+ end
813
+
814
+ === Mime-типы
815
+
816
+ Когда вы используете <tt>send_file</tt> или статические файлы, у вас могут быть mime-типы, которые Sinatra
817
+ не понимает по умолчанию. Используйте +mime_type+ для их регистрации по расширению файла:
818
+
819
+ configure do
820
+ mime_type :foo, 'text/foo'
821
+ end
822
+
823
+ Вы также можете использовать это в +content_type+ методе-помощнике:
824
+
825
+ get '/' do
826
+ content_type :foo
827
+ "foo foo foo"
828
+ end
829
+
830
+ === Генерирование URL
831
+
832
+ Чтобы сформировать URL вам следует использовать метод +url+, например, в Haml:
833
+
834
+ %a{:href => url('/foo')} foo
835
+
836
+ Этот метод учитывает обратные прокси и маршрутизаторы Rack, если они присутствуют.
837
+
838
+ Наряду с +url+ вы можете использовать +to+ (смотрите пример ниже).
839
+
840
+ === Перенаправление (редирект)
841
+
842
+ Вы можете перенаправить браузер пользователя с помощью метода +redirect+:
843
+
844
+ get '/foo' do
845
+ redirect to('/bar')
846
+ end
847
+
848
+ Любые дополнительные параметры используются по аналогии с аргументами метода +halt+:
849
+
850
+ redirect to('/bar'), 303
851
+ redirect 'http://google.com', 'wrong place, buddy'
852
+
853
+ Вы также можете перенаправить пользователя обратно, на страницу с которой он пришел,
854
+ с помощью <tt>redirect back</tt>:
855
+
856
+ get '/foo' do
857
+ "<a href='/bar'>do something</a>"
858
+ end
859
+
860
+ get '/bar' do
861
+ do_something
862
+ redirect back
863
+ end
864
+
865
+ Чтобы передать какие-либо параметры вместе с перенаправлением, либо добавьте их в строку запроса:
866
+
867
+ redirect to('/bar?sum=42')
868
+
869
+ либо используйте сессию:
870
+
871
+ enable :sessions
872
+
873
+ get '/foo' do
874
+ session[:secret] = 'foo'
875
+ redirect to('/bar')
876
+ end
877
+
878
+ get '/bar' do
879
+ session[:secret]
880
+ end
881
+
882
+ === Управление кэшированием
883
+
884
+ Установка корректных заголовков — основа правильного HTTP кэширования.
885
+
886
+ Вы можете легко выставить заголовок Cache-Control таким образом:
887
+
888
+ get '/' do
889
+ cache_control :public
890
+ "cache it!"
891
+ end
892
+
893
+ Совет: задавайте кэширование в +before+-фильтре:
894
+
895
+ before do
896
+ cache_control :public, :must_revalidate, :max_age => 60
897
+ end
898
+
899
+ Если вы используете метод +expires+ для задания соответствующего заголовка,
900
+ то <tt>Cache-Control</tt> будет выставлен автоматически:
901
+
902
+ before do
903
+ expires 500, :public, :must_revalidate
904
+ end
905
+
906
+ Чтобы как следует использовать кэширование, вам следует подумать об использовании
907
+ +etag+ и +last_modified+. Рекомендуется использовать эти методы-помощники *до*
908
+ выполнения ресурсоемких вычислений, так как они немедленно отправят ответ клиенту,
909
+ если текущая версия уже есть в их кэше:
910
+
911
+ get '/article/:id' do
912
+ @article = Article.find params[:id]
913
+ last_modified @article.updated_at
914
+ etag @article.sha1
915
+ erb :article
916
+ end
917
+
918
+ Также вы можете использовать
919
+ {weak ETag}[http://en.wikipedia.org/wiki/HTTP_ETag#Strong_and_weak_validation]:
920
+
921
+ etag @article.sha1, :weak
922
+
923
+ Эти методы-помощники не станут ничего кэшировать для вас, но они дадут
924
+ необходимую информацию для вашего кэша. Если вы ищите легкое решение для
925
+ кэширования, попробуйте {rack-cache}[http://rtomayko.github.com/rack-cache/]:
926
+
927
+ require 'rack/cache'
928
+ require 'sinatra'
929
+
930
+ use Rack::Cache
931
+
932
+ get '/' do
933
+ cache_control :public, :max_age => 36000
934
+ sleep 5
935
+ "hello"
936
+ end
937
+
938
+ Используйте опцию <tt>:static_cache_control</tt> (см. ниже), чтобы
939
+ добавить заголовок <tt>Cache-Control</tt> к статическим файлам.
940
+
941
+ === Отправка файлов
942
+
943
+ Для отправки файлов пользователю вы можете использовать метод <tt>send_file</tt>:
944
+
945
+ get '/' do
946
+ send_file 'foo.png'
947
+ end
948
+
949
+ Этот метод имеет несколько опций:
950
+
951
+ send_file 'foo.png', :type => :jpg
952
+
953
+ Возможные опции:
954
+
955
+ [filename]
956
+ имя файла, по умолчанию: реальное имя файла.
957
+
958
+ [last_modified]
959
+ значение для заголовка Last-Modified, по умолчанию: mtime (время изменения) файла.
960
+
961
+ [type]
962
+ тип файла, по умолчанию: предполагается по расширению файла.
963
+
964
+ [disposition]
965
+ используется для заголовка Content-Disposition, возможные значения:
966
+ +nil+ (по умолчанию), <tt>:attachment</tt> и <tt>:inline</tt>.
967
+
968
+ [length]
969
+ значения для заголовка Content-Length, по умолчанию: размер файла.
970
+
971
+
972
+ Этот метод будет использовать возможности Rack сервера для отправки файлов, если они
973
+ доступны, а в противном случае, будет напрямую отдавать файл из Ruby процесса.
974
+ Метод <tt>send_file</tt> также обеспечивает автоматическую обработку частичных (range)
975
+ запросов с помощью Sinatra.
976
+
977
+ === Доступ к объекту запроса
978
+
979
+ Объект входящего запроса доступен на уровне обработки запроса (в фильтрах, маршрутах,
980
+ обработчиках ошибок) с помощью <tt>request</tt> метода:
981
+
982
+ # приложение запущено на http://example.com/example
983
+ get '/foo' do
984
+ t = %w[text/css text/html application/javascript]
985
+ request.accept # ['text/html', '*/*']
986
+ request.accept? 'text/xml' # true
987
+ request.preferred_type(t) # 'text/html'
988
+ request.body # тело запроса, посланное клиентом (см. ниже)
989
+ request.scheme # "http"
990
+ request.script_name # "/example"
991
+ request.path_info # "/foo"
992
+ request.port # 80
993
+ request.request_method # "GET"
994
+ request.query_string # ""
995
+ request.content_length # длина тела запроса
996
+ request.media_type # медиатип тела запроса
997
+ request.host # "example.com"
998
+ request.get? # true (есть аналоги для других методов HTTP)
999
+ request.form_data? # false
1000
+ request["some_param"] # значение параметра some_param. Шорткат для хеша params
1001
+ request.referrer # источник запроса клиента либо '/'
1002
+ request.user_agent # user agent (используется для :agent условия)
1003
+ request.cookies # хеш, содержащий cookies браузера
1004
+ request.xhr? # является ли запрос ajax запросом?
1005
+ request.url # "http://example.com/example/foo"
1006
+ request.path # "/example/foo"
1007
+ request.ip # IP-адрес клиента
1008
+ request.secure? # false (true, если запрос сделан через SSL)
1009
+ request.forwarded? # true (если сервер работает за обратным прокси)
1010
+ request.env # "сырой" env хеш, полученный Rack
1011
+ end
1012
+
1013
+ Некоторые опции, такие как <tt>script_name</tt> или <tt>path_info</tt> доступны для изменения:
1014
+
1015
+ before { request.path_info = "/" }
1016
+
1017
+ get "/" do
1018
+ "all requests end up here"
1019
+ end
1020
+
1021
+ <tt>request.body</tt> является IO или StringIO объектом:
1022
+
1023
+ post "/api" do
1024
+ request.body.rewind # в случае, если кто-то уже прочитал тело запроса
1025
+ data = JSON.parse request.body.read
1026
+ "Hello #{data['name']}!"
1027
+ end
1028
+
1029
+ === Вложения
1030
+
1031
+ Вы можете использовать метод +attachment+, чтобы сказать браузеру, что ответ
1032
+ сервера должен быть сохранен на диск, а не отображен:
1033
+
1034
+ get '/' do
1035
+ attachment
1036
+ "store it!"
1037
+ end
1038
+
1039
+ Вы также можете указать имя файла:
1040
+
1041
+ get '/' do
1042
+ attachment "info.txt"
1043
+ "store it!"
1044
+ end
1045
+
1046
+ === Поиск шаблонов
1047
+
1048
+ Для поиска шаблонов и их последующего рендеринга используется метод <tt>find_template</tt>:
1049
+
1050
+ find_template settings.views, 'foo', Tilt[:haml] do |file|
1051
+ puts "could be #{file}"
1052
+ end
1053
+
1054
+ Это не слишком полезный пример. Зато полезен тот факт, что вы можете переопределить
1055
+ этот метод, чтобы использовать свой собственный механизм поиска. Например, если вы
1056
+ хотите, чтобы можно было использовать несколько директорий с шаблонами:
1057
+
1058
+ set :views, ['views', 'templates']
1059
+
1060
+ helpers do
1061
+ def find_template(views, name, engine, &block)
1062
+ Array(views).each { |v| super(v, name, engine, &block) }
1063
+ end
1064
+ end
1065
+
1066
+ Другой пример, в котором используются разные директории для движков рендеринга:
1067
+
1068
+ set :views, :sass => 'views/sass', :haml => 'templates', :default => 'views'
1069
+
1070
+ helpers do
1071
+ def find_template(views, name, engine, &block)
1072
+ _, folder = views.detect { |k,v| engine == Tilt[k] }
1073
+ folder ||= views[:default]
1074
+ super(folder, name, engine, &block)
1075
+ end
1076
+ end
1077
+
1078
+ Вы можете легко вынести этот код в расширение и поделиться им с остальными!
1079
+
1080
+ Заметьте, что <tt>find_template</tt> не проверяет, существует ли файл на самом деле,
1081
+ а вызывает заданный блок для всех возможных путей. Дело тут не в производительности,
1082
+ дело в том, что +render+ вызовет +break+, как только файл не будет найден.
1083
+ Содержимое и местонахождение шаблонов будет закэшировано, если приложение запущено не
1084
+ в режиме разработки (set :environment, :development). Вы должны помнить об этих нюансах,
1085
+ если пишите по-настоящему "сумасшедший" метод.
1086
+
1087
+ == Конфигурация
1088
+
1089
+ Этот блок исполняется один раз при старте в любом окружении, режиме (environment):
1090
+
1091
+ configure do
1092
+ # задание одной опции
1093
+ set :option, 'value'
1094
+
1095
+ # устанавливаем несколько опций
1096
+ set :a => 1, :b => 2
1097
+
1098
+ # то же самое, что и `set :option, true`
1099
+ enable :option
1100
+
1101
+ # то же самое, что и `set :option, false`
1102
+ disable :option
1103
+
1104
+ # у вас могут быть "динамические" опции с блоками
1105
+ set(:css_dir) { File.join(views, 'css') }
1106
+ end
1107
+
1108
+ Будет запущено, когда окружение (RACK_ENV переменная) <tt>:production</tt>:
1109
+
1110
+ configure :production do
1111
+ ...
1112
+ end
1113
+
1114
+ Будет запущено, когда окружение <tt>:production</tt> или <tt>:test</tt>:
1115
+
1116
+ configure :production, :test do
1117
+ ...
1118
+ end
1119
+
1120
+ Вы можете получить доступ к этим опциям с помощью <tt>settings</tt>:
1121
+
1122
+ configure do
1123
+ set :foo, 'bar'
1124
+ end
1125
+
1126
+ get '/' do
1127
+ settings.foo? # => true
1128
+ settings.foo # => 'bar'
1129
+ ...
1130
+ end
1131
+
1132
+ === Доступные настройки
1133
+
1134
+ [absolute_redirects] если отключено, то Sinatra будет позволять использование
1135
+ относительных перенаправлений, но при этом перестанет
1136
+ соответствовать RFC 2616 (HTTP 1.1), который разрешает только
1137
+ абсолютные перенаправления.
1138
+
1139
+ Включайте эту опцию, если ваше приложение работает за обратным прокси,
1140
+ который настроен не совсем корректно. Обратите внимание, метод +url+
1141
+ все равно будет генерировать абсолютные URL, если вы не передадите
1142
+ +false+ вторым аргументом.
1143
+
1144
+ Отключено по умолчанию.
1145
+
1146
+ [add_charsets] mime-типы, к которым метод <tt>content_type</tt> будет автоматически
1147
+ добавлять информацию о кодировке.
1148
+
1149
+ Вам следует добавлять значения к этой опции вместо ее переопределения:
1150
+
1151
+ settings.add_charsets << "application/foobar"
1152
+
1153
+ [app_file] главный файл приложения, используется для определения корневой директории
1154
+ проекта, директорий с шаблонами и статическими файлами, вложенных шаблонов.
1155
+
1156
+ [bind] используемый IP-адрес (по умолчанию: 0.0.0.0). Используется только
1157
+ встроенным сервером.
1158
+
1159
+ [default_encoding] кодировка, если неизвестна (по умолчанию: <tt>"utf-8"</tt>).
1160
+
1161
+ [dump_errors] отображать ошибки в логе.
1162
+
1163
+ [environment] текущее окружение, по умолчанию, значение <tt>ENV['RACK_ENV']</tt>
1164
+ или <tt>"development"</tt>, если <tt>ENV['RACK_ENV']</tt> не доступна.
1165
+
1166
+ [logging] использовать логер.
1167
+
1168
+ [lock] создает блокировку для каждого запроса, которая гарантирует обработку
1169
+ только одного запроса в текущий момент времени в Ruby процессе.
1170
+
1171
+ Включайте, если ваше приложение не потоко-безопасно (thread-safe).
1172
+ Отключено по умолчанию.
1173
+
1174
+ [method_override] использовать "магический" параметр <tt>_method</tt>, чтобы позволить
1175
+ использование PUT/DELETE форм в браузерах, которые не поддерживают
1176
+ эти методы.
1177
+
1178
+ [port] порт, на котором будет работать сервер. Используется только
1179
+ встроенным сервером.
1180
+
1181
+ [prefixed_redirects] добавлять или нет параметр <tt>request.script_name</tt> к редиректам,
1182
+ если не задан абсолютный путь. Таким образом, <tt>redirect '/foo'</tt>
1183
+ будет вести себя как <tt>redirect to('/foo')</tt>. Отключено по умолчанию.
1184
+
1185
+ [public_folder] директория, откуда будут раздаваться статические файлы.
1186
+
1187
+ [reload_templates] перезагружать или нет шаблоны на каждый запрос.
1188
+ Включено в режиме разработки.
1189
+
1190
+ [root] корневая директория проекта.
1191
+
1192
+ [raise_errors] выбрасывать исключения (будет останавливать приложение).
1193
+
1194
+ [run] если включено, Sinatra будет самостоятельно запускать веб-сервер.
1195
+ Не включайте, если используете rackup или аналогичные средства.
1196
+
1197
+ [running] работает ли сейчас встроенный сервер?
1198
+ Не меняйте эту опцию!
1199
+
1200
+ [server] сервер или список серверов, которые следует использовать в качестве
1201
+ встроенного сервера. По умолчанию: ['thin', 'mongrel', 'webrick'],
1202
+ порядок задает приоритет.
1203
+
1204
+ [sessions] включить сессии на основе кук (cookie).
1205
+
1206
+ [show_exceptions] показывать исключения/стек вызовов (stack trace) в браузере.
1207
+
1208
+ [static] должна ли Sinatra осуществлять раздачу статических файлов.
1209
+ Отключите, когда используете какой-либо веб-сервер для этой цели.
1210
+ Отключение значительно улучшит производительность приложения.
1211
+ По умолчанию включено в классических и отключено в модульных
1212
+ приложениях.
1213
+
1214
+ [static_cache_control] Когда Sinatra отдает статические файлы, используйте эту опцию,
1215
+ чтобы добавить им заголовок <tt>Cache-Control</tt>. Для этого
1216
+ используется метод-помощник +cache_control+. По умолчанию отключено.
1217
+ Используйте массив, когда надо задать несколько значений:
1218
+ <tt>set :static_cache_control, [:public, :max_age => 300]</tt>
1219
+
1220
+ [views] директория с шаблонами.
1221
+
1222
+ == Обработка ошибок
1223
+
1224
+ Обработчики ошибок исполняются в том же контексте, что и маршруты, и +before+-фильтры, а это означает, что всякие
1225
+ прелести вроде <tt>haml</tt>, <tt>erb</tt>, <tt>halt</tt> и т.д. доступны и им.
1226
+
1227
+ === Not Found
1228
+
1229
+ Когда выброшено исключение <tt>Sinatra::NotFound</tt>, или кодом ответа является 404,
1230
+ то будет вызван <tt>not_found</tt> обработчик:
1231
+
1232
+ not_found do
1233
+ 'This is nowhere to be found.'
1234
+ end
1235
+
1236
+ === Ошибки
1237
+
1238
+ Обработчик ошибок +error+ будет вызван, когда исключение выброшено из блока маршрута, либо из фильтра.
1239
+ Объект-исключение доступен как переменная <tt>sinatra.error</tt> в Rack:
1240
+
1241
+ error do
1242
+ 'Sorry there was a nasty error - ' + env['sinatra.error'].name
1243
+ end
1244
+
1245
+ Частные ошибки:
1246
+
1247
+ error MyCustomError do
1248
+ 'So what happened was...' + env['sinatra.error'].message
1249
+ end
1250
+
1251
+ Тогда, если это произошло:
1252
+
1253
+ get '/' do
1254
+ raise MyCustomError, 'something bad'
1255
+ end
1256
+
1257
+ То вы получите:
1258
+
1259
+ So what happened was... something bad
1260
+
1261
+ Также вы можете установить обработчик ошибок для кода состояния HTTP:
1262
+
1263
+ error 403 do
1264
+ 'Access forbidden'
1265
+ end
1266
+
1267
+ get '/secret' do
1268
+ 403
1269
+ end
1270
+
1271
+ Либо набора кодов:
1272
+
1273
+ error 400..510 do
1274
+ 'Boom'
1275
+ end
1276
+
1277
+ Sinatra устанавливает специальные <tt>not_found</tt> и <tt>error</tt> обработчики, когда приложение запущено в режиме
1278
+ разработки (окружение <tt>:development</tt>).
1279
+
1280
+ == Rack "прослойки"
1281
+
1282
+ Sinatra использует Rack[http://rack.rubyforge.org/], минимальный стандартный
1283
+ интерфейс для веб-фреймворков на Ruby. Одной из самых интересных для разработчиков возможностей Rack
1284
+ является поддержка "прослоек" ("middleware") — компонентов,
1285
+ находящихся "между" сервером и вашим приложением, которые отслеживают и/или манипулируют
1286
+ HTTP запросами/ответами для предоставления различной функциональности.
1287
+
1288
+ В Sinatra очень просто использовать такие "прослойки" с помощью метода +use+:
1289
+
1290
+ require 'sinatra'
1291
+ require 'my_custom_middleware'
1292
+
1293
+ use Rack::Lint
1294
+ use MyCustomMiddleware
1295
+
1296
+ get '/hello' do
1297
+ 'Hello World'
1298
+ end
1299
+
1300
+ Семантика +use+ идентична той, что определена для
1301
+ Rack::Builder[http://rack.rubyforge.org/doc/classes/Rack/Builder.html] DSL
1302
+ (чаще всего используется в rackup файлах). Например, метод +use+ принимает
1303
+ как множественные переменные, так и блоки:
1304
+
1305
+ use Rack::Auth::Basic do |username, password|
1306
+ username == 'admin' && password == 'secret'
1307
+ end
1308
+
1309
+ Rack распространяется с различными стандартными "прослойками"
1310
+ для логирования, отладки, маршрутизации URL, аутентификации, обработки сессий. Sinatra использует
1311
+ многие из этих компонентов автоматически, основываясь на конфигурации, чтобы вам не приходилось
1312
+ подключать (+use+) их вручную.
1313
+
1314
+ Вы можете найти полезные прослойки в
1315
+ {rack}[https://github.com/rack/rack/tree/master/lib/rack],
1316
+ {rack-contrib}[https://github.com/rack/rack-contrib#readme],
1317
+ {CodeRack}[http://coderack.org/] или в
1318
+ {Rack wiki}[https://github.com/rack/rack/wiki/List-of-Middleware].
1319
+
1320
+ == Тестирование
1321
+
1322
+ Тесты для Sinatra приложений могут быть написаны с помощью библиотек, фреймворков, поддерживающих
1323
+ тестирование Rack. {Rack::Test}[http://rdoc.info/github/brynary/rack-test/master/frames] рекомендован:
1324
+
1325
+ require 'my_sinatra_app'
1326
+ require 'test/unit'
1327
+ require 'rack/test'
1328
+
1329
+ class MyAppTest < Test::Unit::TestCase
1330
+ include Rack::Test::Methods
1331
+
1332
+ def app
1333
+ Sinatra::Application
1334
+ end
1335
+
1336
+ def test_my_default
1337
+ get '/'
1338
+ assert_equal 'Hello World!', last_response.body
1339
+ end
1340
+
1341
+ def test_with_params
1342
+ get '/meet', :name => 'Frank'
1343
+ assert_equal 'Hello Frank!', last_response.body
1344
+ end
1345
+
1346
+ def test_with_rack_env
1347
+ get '/', {}, 'HTTP_USER_AGENT' => 'Songbird'
1348
+ assert_equal "You're using Songbird!", last_response.body
1349
+ end
1350
+ end
1351
+
1352
+ == Sinatra::Base — "прослойки", библиотеки и модульные приложения
1353
+
1354
+ Описание своего приложения самым простейшим способом (с помощью DSL верхнего уровня,
1355
+ как в примерах выше) отлично работает для крохотных приложений. Тем не менее,
1356
+ такой метод имеет множество недостатков при создании компонентов, таких как
1357
+ Rack middleware ("прослоек"), Rails metal, простых библиотек с серверными компонентами,
1358
+ расширений Sinatra.
1359
+
1360
+ DSL верхнего уровня "загрязняет" пространство имен <tt>Object</tt> и подразумевает стиль конфигурации
1361
+ микро-приложения (например, единый файл приложения, <tt>./public</tt> и
1362
+ <tt>./views</tt> директории, логирование, страницу деталей об исключениях
1363
+ и т.д.). И тут на помощь приходит <tt>Sinatra::Base</tt>:
1364
+
1365
+ require 'sinatra/base'
1366
+
1367
+ class MyApp < Sinatra::Base
1368
+ set :sessions, true
1369
+ set :foo, 'bar'
1370
+
1371
+ get '/' do
1372
+ 'Hello world!'
1373
+ end
1374
+ end
1375
+
1376
+ Методы, доступные <tt>Sinatra::Base</tt> подклассам идентичны тем, что доступны
1377
+ в DSL верхнего уровня. Большинство приложений верхнего уровня могут быть
1378
+ конвертированы в <tt>Sinatra::Base</tt> компоненты с помощью двух модификаций:
1379
+
1380
+ * Вы должны подключать <tt>sinatra/base</tt> вместо +sinatra+,
1381
+ иначе все методы, предоставляемые Sinatra, будут импортированы в глобальное пространство имен.
1382
+ * Поместите все маршруты, обработчики ошибок, фильтры и опции в подкласс <tt>Sinatra::Base</tt>.
1383
+
1384
+ <tt>Sinatra::Base</tt> — это чистый лист. Большинство опций, включая встроенный сервер, по умолчанию отключены.
1385
+ Смотрите {Опции и конфигурация}[http://www.sinatrarb.com/configuration.html] для детальной информации
1386
+ об опциях и их поведении.
1387
+
1388
+ === Модульные приложения против классических
1389
+
1390
+ Вопреки всеобщему убеждению, в классическом стиле (самом простом) нет ничего плохого.
1391
+ Если этот стиль подходит вашему приложению, вы не обязаны переписывать его в модульное
1392
+ приложение.
1393
+
1394
+ У классического стиля есть всего два недостатка относительно модульного:
1395
+
1396
+ * У вас может быть только одно приложение Sinatra на один Ruby процесс. Если вы планируете
1397
+ использовать больше, то переключайтесь на модульный стиль.
1398
+
1399
+ * Приложения, использующие классический стиль, добавляют методы к Object. Если вы
1400
+ планируете поставлять свое приложение в виде библиотеки/gem, то переходите
1401
+ на модульный стиль.
1402
+
1403
+ Не существует причин, по которым вы не могли бы смешивать модульный и классический стили.
1404
+
1405
+ Переходя с одного стиля на другой, примите во внимание следующие изменения в настройках:
1406
+
1407
+ Опция Классический Модульный
1408
+
1409
+ app_file файл с приложением файл с подклассом Sinatra::Base
1410
+ run $0 == app_file false
1411
+ logging true false
1412
+ method_override true false
1413
+ inline_templates true false
1414
+ static true false
1415
+
1416
+
1417
+ === Запуск модульных приложений
1418
+
1419
+ Есть два общепринятых способа запускать модульные приложения: запуск напрямую с помощью <tt>run!</tt>:
1420
+
1421
+ # my_app.rb
1422
+ require 'sinatra/base'
1423
+
1424
+ class MyApp < Sinatra::Base
1425
+ # ... здесь код приложения ...
1426
+
1427
+ # запускаем сервер, если исполняется текущий файл
1428
+ run! if app_file == $0
1429
+ end
1430
+
1431
+ И запускаем с помощью:
1432
+
1433
+ ruby my_app.rb
1434
+
1435
+ Или с помощью конфигурационного файла <tt>config.ru</tt>, который позволяет использовать любой
1436
+ Rack-совместимый сервер приложений.
1437
+
1438
+ # config.ru
1439
+ require './my_app'
1440
+ run MyApp
1441
+
1442
+ Запускаем:
1443
+
1444
+ rackup -p 4567
1445
+
1446
+ === Запуск классических приложений с config.ru
1447
+
1448
+ Файл приложения:
1449
+
1450
+ # app.rb
1451
+ require 'sinatra'
1452
+
1453
+ get '/' do
1454
+ 'Hello world!'
1455
+ end
1456
+
1457
+ И соответствующий <tt>config.ru</tt>:
1458
+
1459
+ require './app'
1460
+ run Sinatra::Application
1461
+
1462
+ === Когда использовать config.ru?
1463
+
1464
+ Вот несколько причин, по которым вы, возможно, захотите использовать <tt>config.ru</tt>:
1465
+
1466
+ * вы хотите разворачивать свое приложение на различных Rack-совместимых серверах (Passenger, Unicorn,
1467
+ Heroku, ...);
1468
+ * вы хотите использовать более одного подкласса <tt>Sinatra::Base</tt>;
1469
+ * вы хотите использовать Sinatra только в качестве "прослойки" Rack.
1470
+
1471
+ <b>Совсем необязательно переходить на использование <tt>config.ru</tt> лишь потому, что вы стали
1472
+ использовать модульный стиль приложения. И необязательно использовать модульный стиль, чтобы
1473
+ запускать приложение с помощью <tt>config.ru</tt>.</b>
1474
+
1475
+ === Использование Sinatra в качестве "прослойки"
1476
+
1477
+ Не только сама Sinatra может использовать "прослойки" Rack, но и любое Sinatra приложение
1478
+ само может быть добавлено к любому Rack endpoint в качестве "прослойки". Этим endpoint (конечной точкой)
1479
+ может быть другое Sinatra приложение, или приложение, основанное на Rack (Rails/Ramaze/Camping/...):
1480
+
1481
+ require 'sinatra/base'
1482
+
1483
+ class LoginScreen < Sinatra::Base
1484
+ enable :sessions
1485
+
1486
+ get('/login') { haml :login }
1487
+
1488
+ post('/login') do
1489
+ if params[:name] == 'admin' && params[:password] == 'admin'
1490
+ session['user_name'] = params[:name]
1491
+ else
1492
+ redirect '/login'
1493
+ end
1494
+ end
1495
+ end
1496
+
1497
+ class MyApp < Sinatra::Base
1498
+ # "прослойка" будет запущена перед фильтрами
1499
+ use LoginScreen
1500
+
1501
+ before do
1502
+ unless session['user_name']
1503
+ halt "Access denied, please <a href='/login'>login</a>."
1504
+ end
1505
+ end
1506
+
1507
+ get('/') { "Hello #{session['user_name']}." }
1508
+ end
1509
+
1510
+ === Создание приложений "на лету"
1511
+
1512
+ Иногда требуется создавать Sinatra приложения "на лету" (например,
1513
+ из другого приложения). Это возможно с помощью <tt>Sinatra.new</tt>:
1514
+
1515
+ require 'sinatra/base'
1516
+ my_app = Sinatra.new { get('/') { "hi" } }
1517
+ my_app.run!
1518
+
1519
+ Этот метод может принимать аргументом приложение, от которого
1520
+ следует наследоваться:
1521
+
1522
+ # config.ru
1523
+ require 'sinatra/base'
1524
+
1525
+ controller = Sinatra.new do
1526
+ enable :logging
1527
+ helpers MyHelpers
1528
+ end
1529
+
1530
+ map('/a') do
1531
+ run Sinatra.new(controller) { get('/') { 'a' } }
1532
+ end
1533
+
1534
+ map('/b') do
1535
+ run Sinatra.new(controller) { get('/') { 'b' } }
1536
+ end
1537
+
1538
+ Это особенно полезно для тестирования расширений Sinatra и при
1539
+ использовании Sinatra внутри вашей библиотеки.
1540
+
1541
+ Благодаря этому, использовать Sinatra как "прослойку" очень просто:
1542
+
1543
+ require 'sinatra/base'
1544
+
1545
+ use Sinatra do
1546
+ get('/') { ... }
1547
+ end
1548
+
1549
+ run RailsProject::Application
1550
+
1551
+
1552
+ == Области видимости и привязка
1553
+
1554
+ Текущая область видимости определяет методы и переменные, доступные
1555
+ в данный момент.
1556
+
1557
+ === Область видимости приложения / класса
1558
+
1559
+ Любое Sinatra приложение соответствует подклассу <tt>Sinatra::Base</tt>. Если вы
1560
+ используете DSL верхнего уровня (<tt>require 'sinatra'</tt>), то этим классом будет
1561
+ <tt>Sinatra::Application</tt>, иначе это будет подкласс, который вы создали вручную.
1562
+ На уровне класса вам будут доступны такие методы, как +get+ или +before+, но вы
1563
+ не сможете получить доступ к объектам +request+ или +session+, так как существует
1564
+ только один класс приложения для всех запросов.
1565
+
1566
+ Опции, созданные с помощью +set+, являются методами уровня класса:
1567
+
1568
+ class MyApp < Sinatra::Base
1569
+ # Я в области видимости приложения!
1570
+ set :foo, 42
1571
+ foo # => 42
1572
+
1573
+ get '/foo' do
1574
+ # Я больше не в области видимости приложения!
1575
+ end
1576
+ end
1577
+
1578
+ У вас будет область видимости приложения внутри:
1579
+
1580
+ * тела вашего класса приложения;
1581
+ * методов, определенных расширениями;
1582
+ * блока, переданного в +helpers+;
1583
+ * блоков, использованных как значения для +set+;
1584
+ * блока, переданного в <tt>Sinatra.new</tt>.
1585
+
1586
+ Вы можете получить доступ к объекту области видимости (классу приложения) следующими способами:
1587
+
1588
+ * через объект, переданный блокам конфигурации (<tt>configure { |c| ... }</tt>);
1589
+ * +settings+ внутри области видимости запроса.
1590
+
1591
+ === Область видимости запроса/экземпляра
1592
+
1593
+ Для каждого входящего запроса будет создан новый экземпляр вашего приложения,
1594
+ и все блоки обработчика будут запущены в этом контексте. В этой области
1595
+ видимости вам доступны +request+ и +session+ объекты, вызовы методов
1596
+ рендеринга, такие как +erb+ или +haml+. Вы можете получить доступ к
1597
+ области видимости приложения из контекста запроса, используя метод-помощник +settings+:
1598
+
1599
+ class MyApp < Sinatra::Base
1600
+ # Я в области видимости приложения!
1601
+ get '/define_route/:name' do
1602
+ # Область видимости запроса '/define_route/:name'
1603
+ @value = 42
1604
+
1605
+ settings.get("/#{params[:name]}") do
1606
+ # Область видимости запроса "/#{params[:name]}"
1607
+ @value # => nil (другой запрос)
1608
+ end
1609
+
1610
+ "Route defined!"
1611
+ end
1612
+ end
1613
+
1614
+ У вас будет область видимости запроса в:
1615
+
1616
+ * get/head/post/put/delete/options блоках;
1617
+ * before/after фильтрах;
1618
+ * методах-помощниках;
1619
+ * шаблонах/отображениях.
1620
+
1621
+ === Область видимости делегирования
1622
+
1623
+ Область видимости делегирования просто перенаправляет методы в область видимости класса.
1624
+ Однако, она не полностью ведет себя как область видимости класса, так как у вас нет
1625
+ привязки к классу. Только методы, явно помеченные для делегирования, будут доступны,
1626
+ а переменных/состояний области видимости класса не будет (иначе говоря,
1627
+ у вас будет другой +self+ объект). Вы можете
1628
+ непосредственно добавить методы делегирования, используя
1629
+ <tt>Sinatra::Delegator.delegate :method_name</tt>.
1630
+
1631
+ У вас будет контекст делегирования внутри:
1632
+
1633
+ * привязки верхнего уровня, если вы сделали <tt>require 'sinatra'</tt>;
1634
+ * объекта, расширенного с помощью <tt>Sinatra::Delegator</tt>.
1635
+
1636
+ Посмотрите сами в код: тут
1637
+ {Sinatra::Delegator примесь}[http://github.com/sinatra/sinatra/blob/ceac46f0bc129a6e994a06100aa854f606fe5992/lib/sinatra/base.rb#L1128]
1638
+ будет {включена в глобальное пространство имен}[http://github.com/sinatra/sinatra/blob/ceac46f0bc129a6e994a06100aa854f606fe5992/lib/sinatra/main.rb#L28].
1639
+
1640
+ == Командная строка
1641
+
1642
+ Sinatra приложения могут быть запущены напрямую:
1643
+
1644
+ ruby myapp.rb [-h] [-x] [-e ENVIRONMENT] [-p PORT] [-o HOST] [-s HANDLER]
1645
+
1646
+ Опции включают:
1647
+
1648
+ -h # раздел помощи
1649
+ -p # указание порта (по умолчанию 4567)
1650
+ -o # указание хоста (по умолчанию 0.0.0.0)
1651
+ -e # указание окружения, режима (по умолчанию development)
1652
+ -s # указание rack сервера/обработчика (по умолчанию thin)
1653
+ -x # включить мьютекс-блокировку (по умолчанию выключена)
1654
+
1655
+ == Системные требования
1656
+
1657
+ Следующие версии Ruby официально поддерживаются:
1658
+
1659
+ [ Ruby 1.8.7 ]
1660
+ 1.8.7 полностью поддерживается, тем не менее, если вас ничто не держит на
1661
+ этой версии, рекомендуем обновиться до 1.9.2 или перейти на JRuby или Rubinius.
1662
+
1663
+ [ Ruby 1.9.2 ]
1664
+ 1.9.2 поддерживается и рекомендована к использованию. Заметьте, что Radius и Markaby
1665
+ пока несовместимы с 1.9.2. Не используйте 1.9.2p0, известно, что эта
1666
+ версия весьма нестабильна при использовании Sinatra.
1667
+
1668
+ [ Rubinius ]
1669
+ Rubinius официально поддерживается (Rubinius >= 1.2.3), всё, включая все
1670
+ языки шаблонов, работает.
1671
+
1672
+ [ JRuby ]
1673
+ JRuby официально поддерживается (JRuby >= 1.6.1). Нет никаких проблем с
1674
+ использованием альтернативных шаблонов. Тем не менее, если вы выбираете
1675
+ JRuby, то, пожалуйста, посмотрите на JRuby Rack-сервера, так как Thin не
1676
+ поддерживается полностью на JRuby. Поддержка расширений на C в JRuby все
1677
+ еще экспериментальная, что на данный момент затрагивает только RDiscount и
1678
+ Redcarpet.
1679
+
1680
+ <b>Ruby 1.8.6 больше не поддерживается.</b> Если вы хотите запускать свое
1681
+ приложение на 1.8.6, откатитесь до Sinatra 1.2, которая будет получать все
1682
+ исправления ошибок до тех пор, пока не будет выпущена Sinatra 1.4.0
1683
+
1684
+ Мы также следим за предстоящими к выходу версиями Ruby.
1685
+
1686
+ Следующие реализации Ruby не поддерживаются официально, но известно, что на
1687
+ них запускается Sinatra:
1688
+
1689
+ * старые версии JRuby и Rubinius;
1690
+ * MacRuby, Maglev, IronRuby;
1691
+ * Ruby 1.9.0 и 1.9.1;
1692
+ * Ruby 1.8.6 с помощью {backports}[https://github.com/marcandre/backports/#readme].
1693
+
1694
+ То, что версия официально не поддерживается, означает, что, если что-то не
1695
+ работает на этой версии, а на поддерживаемой работает - это не наша проблема, а их.
1696
+
1697
+ Мы также запускаем наши CI-тесты на последней версии Ruby (предстоящей 1.9.3),
1698
+ но мы не можем ничего гарантировать, так как она постоянно развивается.
1699
+ Предполагается, что 1.9.3p0 будет поддерживаться.
1700
+
1701
+ Sinatra должна работать на любой операционной системе, в которой есть одна из указанных выше версий Ruby.
1702
+
1703
+ == На острие
1704
+
1705
+ Если вы хотите использовать самый последний код Sinatra, не бойтесь запускать
1706
+ свое приложение вместе с кодом из master ветки Sinatra, она весьма стабильна.
1707
+
1708
+ Мы также время от времени выпускаем предварительные версии, так что вы можете делать так:
1709
+
1710
+ gem install sinatra --pre
1711
+
1712
+ Чтобы воспользоваться некоторыми самыми последними возможностями.
1713
+
1714
+ === С помощью Bundler
1715
+
1716
+ Если вы хотите запускать свое приложение с последней версией Sinatra, то
1717
+ рекомендуем использовать {Bundler}[http://gembundler.com/].
1718
+
1719
+ Сначала установите Bundler, если у вас его еще нет:
1720
+
1721
+ gem install bundler
1722
+
1723
+ Затем создайте файл +Gemfile+ в директории вашего проекта:
1724
+
1725
+ source :rubygems
1726
+ gem 'sinatra', :git => "git://github.com/sinatra/sinatra.git"
1727
+
1728
+ # другие зависимости
1729
+ gem 'haml' # например, если используете haml
1730
+ gem 'activerecord', '~> 3.0' # может быть, вам нужен и ActiveRecord 3.x
1731
+
1732
+ Обратите внимание, вам нужно будет указывать все зависимости вашего приложения
1733
+ в этом файле. Однако, непосредственные зависимости Sinatra (Rack и Tilt) Bundler
1734
+ автоматически скачает и добавит.
1735
+
1736
+ Теперь вы можете запускать свое приложение так:
1737
+
1738
+ bundle exec ruby myapp.rb
1739
+
1740
+ === Вручную
1741
+
1742
+ Создайте локальный клон репозитория и запускайте свое приложение с <tt>sinatra/lib</tt>
1743
+ директорией в <tt>$LOAD_PATH</tt>:
1744
+
1745
+ cd myapp
1746
+ git clone git://github.com/sinatra/sinatra.git
1747
+ ruby -Isinatra/lib myapp.rb
1748
+
1749
+ Чтобы обновить исходники Sinatra:
1750
+
1751
+ cd myapp/sinatra
1752
+ git pull
1753
+
1754
+ === Установка глобально
1755
+
1756
+ Вы можете самостоятельно собрать gem:
1757
+
1758
+ git clone git://github.com/sinatra/sinatra.git
1759
+ cd sinatra
1760
+ rake sinatra.gemspec
1761
+ rake install
1762
+
1763
+ Если вы устанавливаете пакеты (gem) от пользователя root, то вашим следующим шагом должна быть команда
1764
+
1765
+ sudo rake install
1766
+
1767
+ == Версии
1768
+
1769
+ Sinatra использует {Semantic Versioning}[http://semver.org/], SemVer и
1770
+ SemVerTag.
1771
+
1772
+ == Дальнейшее чтение
1773
+
1774
+ * {Веб-сайт проекта}[http://www.sinatrarb.com/] - Дополнительная документация,
1775
+ новости и ссылки на другие ресурсы.
1776
+ * {Участие в проекте}[http://www.sinatrarb.com/contributing] - Обнаружили баг? Нужна помощь? Написали патч?
1777
+ * {Слежение за проблемами/ошибками}[http://github.com/sinatra/sinatra/issues]
1778
+ * {Twitter}[http://twitter.com/sinatra]
1779
+ * {Группы рассылки}[http://groups.google.com/group/sinatrarb/topics]
1780
+ * {IRC: #sinatra}[irc://chat.freenode.net/#sinatra] на http://freenode.net
1781
+ * {Sinatra Book}[http://sinatra-book.gittr.com] учебник и сборник рецептов
1782
+ * {Sinatra Recipes}[http://recipes.sinatrarb.com/] сборник рецептов
1783
+ * API документация к {последнему релизу}[http://rubydoc.info/gems/sinatra]
1784
+ или {текущему HEAD}[http://rubydoc.info/github/sinatra/sinatra] на
1785
+ http://rubydoc.info