scout_realtime 0.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (563) hide show
  1. data/.gitignore +21 -0
  2. data/CHANGELOG.md +7 -0
  3. data/Gemfile +4 -0
  4. data/LICENSE.txt +22 -0
  5. data/README.md +37 -0
  6. data/Rakefile +16 -0
  7. data/Vagrantfile +7 -0
  8. data/bin/scout_realtime +117 -0
  9. data/lib/scout_realtime/lib/aggregator.rb +8 -0
  10. data/lib/scout_realtime/lib/metric.rb +36 -0
  11. data/lib/scout_realtime/lib/multi_aggregator.rb +12 -0
  12. data/lib/scout_realtime/lib/ring_buffer.rb +25 -0
  13. data/lib/scout_realtime/lib/trollop.rb +782 -0
  14. data/lib/scout_realtime/main.rb +76 -0
  15. data/lib/scout_realtime/models/cpu.rb +21 -0
  16. data/lib/scout_realtime/models/disk.rb +21 -0
  17. data/lib/scout_realtime/models/memory.rb +17 -0
  18. data/lib/scout_realtime/models/network.rb +14 -0
  19. data/lib/scout_realtime/models/processes.rb +13 -0
  20. data/lib/scout_realtime/runner.rb +34 -0
  21. data/lib/scout_realtime/version.rb +5 -0
  22. data/lib/scout_realtime/web/favicon.ico +0 -0
  23. data/lib/scout_realtime/web/images/logo.png +0 -0
  24. data/lib/scout_realtime/web/images/pause.png +0 -0
  25. data/lib/scout_realtime/web/images/play.png +0 -0
  26. data/lib/scout_realtime/web/javascripts/application.js +265 -0
  27. data/lib/scout_realtime/web/javascripts/bootstrap.min.js +7 -0
  28. data/lib/scout_realtime/web/javascripts/charts.js +189 -0
  29. data/lib/scout_realtime/web/javascripts/d3.barchart.js +210 -0
  30. data/lib/scout_realtime/web/javascripts/d3.linechart.js +168 -0
  31. data/lib/scout_realtime/web/javascripts/d3.v3.min.js +5 -0
  32. data/lib/scout_realtime/web/javascripts/handlebars-v1.1.0.js +2563 -0
  33. data/lib/scout_realtime/web/javascripts/jquery.js +3010 -0
  34. data/lib/scout_realtime/web/javascripts/metrics_for_development.js +6 -0
  35. data/lib/scout_realtime/web/stylesheets/bootstrap-theme.min.css +7 -0
  36. data/lib/scout_realtime/web/stylesheets/bootstrap.min.css +7 -0
  37. data/lib/scout_realtime/web/stylesheets/styles.css +254 -0
  38. data/lib/scout_realtime/web/views/graph.erb +6 -0
  39. data/lib/scout_realtime/web/views/header.erb +8 -0
  40. data/lib/scout_realtime/web/views/index.erb +21 -0
  41. data/lib/scout_realtime/web/views/layout.erb +33 -0
  42. data/lib/scout_realtime/web/views/overview_charts.erb +30 -0
  43. data/lib/scout_realtime/web/views/processes.erb +31 -0
  44. data/lib/scout_realtime/web/views/sidebar.erb +19 -0
  45. data/lib/scout_realtime/web_app.rb +59 -0
  46. data/lib/scout_realtime.rb +58 -0
  47. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/argf/bytes.rb +1 -0
  48. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/argf/chars.rb +1 -0
  49. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/argf/each.rb +3 -0
  50. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/argf/each_byte.rb +9 -0
  51. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/argf/each_char.rb +35 -0
  52. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/argf/each_line.rb +3 -0
  53. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/argf/getbyte.rb +5 -0
  54. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/argf/lines.rb +5 -0
  55. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/argf/readbyte.rb +5 -0
  56. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/argf.rb +3 -0
  57. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/array/collect.rb +3 -0
  58. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/array/combination.rb +24 -0
  59. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/array/cycle.rb +16 -0
  60. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/array/delete_if.rb +3 -0
  61. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/array/each.rb +3 -0
  62. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/array/each_index.rb +3 -0
  63. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/array/find_index.rb +1 -0
  64. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/array/flatten.rb +47 -0
  65. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/array/index.rb +15 -0
  66. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/array/map.rb +3 -0
  67. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/array/permutation.rb +30 -0
  68. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/array/pop.rb +15 -0
  69. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/array/product.rb +32 -0
  70. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/array/reject.rb +3 -0
  71. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/array/reverse_each.rb +3 -0
  72. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/array/rindex.rb +15 -0
  73. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/array/select.rb +3 -0
  74. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/array/shift.rb +13 -0
  75. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/array/shuffle.rb +17 -0
  76. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/array.rb +3 -0
  77. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/binding/eval.rb +7 -0
  78. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/binding.rb +3 -0
  79. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/dir/each.rb +7 -0
  80. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/dir/foreach.rb +9 -0
  81. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/dir.rb +3 -0
  82. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/enumerable/count.rb +17 -0
  83. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/enumerable/cycle.rb +24 -0
  84. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/enumerable/detect.rb +3 -0
  85. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/enumerable/drop.rb +13 -0
  86. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/enumerable/drop_while.rb +16 -0
  87. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/enumerable/each_cons.rb +4 -0
  88. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/enumerable/each_slice.rb +4 -0
  89. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/enumerable/each_with_index.rb +3 -0
  90. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/enumerable/entries.rb +11 -0
  91. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/enumerable/find.rb +3 -0
  92. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/enumerable/find_all.rb +3 -0
  93. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/enumerable/find_index.rb +21 -0
  94. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/enumerable/first.rb +21 -0
  95. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/enumerable/group_by.rb +14 -0
  96. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/enumerable/inject.rb +14 -0
  97. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/enumerable/max_by.rb +16 -0
  98. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/enumerable/min_by.rb +16 -0
  99. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/enumerable/minmax.rb +21 -0
  100. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/enumerable/minmax_by.rb +19 -0
  101. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/enumerable/none.rb +7 -0
  102. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/enumerable/one.rb +23 -0
  103. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/enumerable/partition.rb +3 -0
  104. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/enumerable/reduce.rb +1 -0
  105. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/enumerable/reject.rb +3 -0
  106. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/enumerable/reverse_each.rb +12 -0
  107. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/enumerable/select.rb +3 -0
  108. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/enumerable/sort_by.rb +3 -0
  109. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/enumerable/take.rb +9 -0
  110. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/enumerable/take_while.rb +14 -0
  111. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/enumerable/to_a.rb +12 -0
  112. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/enumerable.rb +3 -0
  113. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/enumerator/each.rb +6 -0
  114. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/enumerator/next.rb +15 -0
  115. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/enumerator/rewind.rb +13 -0
  116. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/enumerator/with_index.rb +14 -0
  117. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/enumerator.rb +3 -0
  118. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/env/delete_if.rb +3 -0
  119. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/env/each.rb +3 -0
  120. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/env/each_key.rb +3 -0
  121. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/env/each_pair.rb +3 -0
  122. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/env/each_value.rb +3 -0
  123. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/env/reject.rb +4 -0
  124. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/env/select.rb +3 -0
  125. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/env.rb +3 -0
  126. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/fixnum/div.rb +7 -0
  127. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/fixnum/fdiv.rb +7 -0
  128. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/fixnum.rb +3 -0
  129. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/float/fdiv.rb +3 -0
  130. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/float.rb +3 -0
  131. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/gc/stress.rb +9 -0
  132. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/gc.rb +3 -0
  133. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/hash/constructor.rb +25 -0
  134. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/hash/delete_if.rb +3 -0
  135. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/hash/each.rb +3 -0
  136. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/hash/each_key.rb +3 -0
  137. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/hash/each_pair.rb +3 -0
  138. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/hash/each_value.rb +3 -0
  139. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/hash/eql.rb +1 -0
  140. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/hash/hash.rb +17 -0
  141. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/hash/reject.rb +3 -0
  142. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/hash/select.rb +3 -0
  143. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/hash.rb +3 -0
  144. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/integer/downto.rb +3 -0
  145. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/integer/even.rb +7 -0
  146. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/integer/odd.rb +7 -0
  147. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/integer/ord.rb +7 -0
  148. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/integer/pred.rb +7 -0
  149. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/integer/times.rb +3 -0
  150. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/integer/upto.rb +3 -0
  151. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/integer.rb +3 -0
  152. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/io/bytes.rb +1 -0
  153. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/io/chars.rb +1 -0
  154. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/io/each.rb +3 -0
  155. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/io/each_byte.rb +6 -0
  156. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/io/each_char.rb +34 -0
  157. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/io/each_line.rb +6 -0
  158. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/io/foreach.rb +7 -0
  159. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/io/getbyte.rb +3 -0
  160. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/io/lines.rb +1 -0
  161. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/io/readbyte.rb +3 -0
  162. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/io.rb +3 -0
  163. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/kernel/__method__.rb +8 -0
  164. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/kernel/instance_exec.rb +10 -0
  165. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/kernel/tap.rb +8 -0
  166. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/kernel.rb +3 -0
  167. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/method/name.rb +49 -0
  168. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/method.rb +3 -0
  169. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/module/class_exec.rb +1 -0
  170. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/module/module_exec.rb +11 -0
  171. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/module.rb +3 -0
  172. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/numeric/step.rb +3 -0
  173. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/numeric.rb +3 -0
  174. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/object_space/each_object.rb +5 -0
  175. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/object_space.rb +3 -0
  176. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/process/exec.rb +3 -0
  177. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/process.rb +3 -0
  178. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/range/each.rb +3 -0
  179. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/range/step.rb +3 -0
  180. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/range.rb +3 -0
  181. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/regexp/union.rb +11 -0
  182. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/regexp.rb +3 -0
  183. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/stdlib/tmpdir.rb +44 -0
  184. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/stdlib.rb +1 -0
  185. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/stop_iteration.rb +14 -0
  186. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/string/bytes.rb +1 -0
  187. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/string/bytesize.rb +3 -0
  188. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/string/each.rb +3 -0
  189. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/string/each_byte.rb +5 -0
  190. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/string/each_char.rb +13 -0
  191. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/string/each_line.rb +5 -0
  192. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/string/end_with.rb +12 -0
  193. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/string/lines.rb +1 -0
  194. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/string/partition.rb +20 -0
  195. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/string/rpartition.rb +19 -0
  196. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/string/start_with.rb +12 -0
  197. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/string/upto.rb +15 -0
  198. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/string.rb +3 -0
  199. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/struct/each.rb +3 -0
  200. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/struct/each_pair.rb +3 -0
  201. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/struct.rb +3 -0
  202. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/symbol/to_proc.rb +8 -0
  203. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/symbol.rb +3 -0
  204. data/lib/vendor/backports-3.3.5/lib/backports/1.8.7.rb +3 -0
  205. data/lib/vendor/backports-3.3.5/lib/backports/1.8.8.rb +2 -0
  206. data/lib/vendor/backports-3.3.5/lib/backports/1.8.rb +2 -0
  207. data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/array/sample.rb +19 -0
  208. data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/array/try_convert.rb +7 -0
  209. data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/array.rb +3 -0
  210. data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/dir/to_path.rb +3 -0
  211. data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/dir.rb +3 -0
  212. data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/enumerable/each_with_index.rb +14 -0
  213. data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/enumerable/each_with_object.rb +9 -0
  214. data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/enumerable.rb +3 -0
  215. data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/enumerator/new.rb +40 -0
  216. data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/enumerator/with_object.rb +6 -0
  217. data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/enumerator.rb +3 -0
  218. data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/env/key.rb +5 -0
  219. data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/env.rb +3 -0
  220. data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/file/atime.rb +5 -0
  221. data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/file/basename.rb +5 -0
  222. data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/file/binary.rb +6 -0
  223. data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/file/blockdev.rb +5 -0
  224. data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/file/chardev.rb +5 -0
  225. data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/file/chmod.rb +5 -0
  226. data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/file/chown.rb +5 -0
  227. data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/file/ctime.rb +5 -0
  228. data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/file/delete.rb +5 -0
  229. data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/file/directory.rb +5 -0
  230. data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/file/dirname.rb +5 -0
  231. data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/file/executable.rb +5 -0
  232. data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/file/executable_real.rb +5 -0
  233. data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/file/exist.rb +5 -0
  234. data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/file/exists.rb +5 -0
  235. data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/file/expand_path.rb +14 -0
  236. data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/file/extname.rb +5 -0
  237. data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/file/file.rb +5 -0
  238. data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/file/ftype.rb +5 -0
  239. data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/file/grpowned.rb +5 -0
  240. data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/file/join.rb +5 -0
  241. data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/file/lchmod.rb +5 -0
  242. data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/file/lchown.rb +5 -0
  243. data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/file/link.rb +5 -0
  244. data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/file/lstat.rb +5 -0
  245. data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/file/mtime.rb +5 -0
  246. data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/file/new.rb +5 -0
  247. data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/file/open.rb +23 -0
  248. data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/file/owned.rb +5 -0
  249. data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/file/pipe.rb +5 -0
  250. data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/file/readable.rb +5 -0
  251. data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/file/readable_real.rb +5 -0
  252. data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/file/readlink.rb +5 -0
  253. data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/file/rename.rb +5 -0
  254. data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/file/setgid.rb +5 -0
  255. data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/file/setuid.rb +5 -0
  256. data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/file/size.rb +14 -0
  257. data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/file/socket.rb +5 -0
  258. data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/file/split.rb +5 -0
  259. data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/file/stat.rb +5 -0
  260. data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/file/sticky.rb +5 -0
  261. data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/file/symlink.rb +6 -0
  262. data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/file/to_path.rb +3 -0
  263. data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/file/truncate.rb +5 -0
  264. data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/file/unlink.rb +5 -0
  265. data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/file/writable.rb +5 -0
  266. data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/file/writable_real.rb +5 -0
  267. data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/file/zero.rb +5 -0
  268. data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/file.rb +3 -0
  269. data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/float/round.rb +21 -0
  270. data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/float.rb +3 -0
  271. data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/hash/assoc.rb +12 -0
  272. data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/hash/default_proc.rb +14 -0
  273. data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/hash/key.rb +3 -0
  274. data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/hash/rassoc.rb +9 -0
  275. data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/hash/try_convert.rb +7 -0
  276. data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/hash.rb +3 -0
  277. data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/integer/magnitude.rb +3 -0
  278. data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/integer/round.rb +24 -0
  279. data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/integer.rb +3 -0
  280. data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/io/binread.rb +10 -0
  281. data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/io/open.rb +21 -0
  282. data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/io/try_convert.rb +7 -0
  283. data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/io/ungetbyte.rb +3 -0
  284. data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/io.rb +3 -0
  285. data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/kernel/__callee__.rb +7 -0
  286. data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/kernel/define_singleton_method.rb +9 -0
  287. data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/kernel/public_method.rb +11 -0
  288. data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/kernel/public_send.rb +13 -0
  289. data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/kernel/require_relative.rb +14 -0
  290. data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/kernel.rb +3 -0
  291. data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/math/log.rb +20 -0
  292. data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/math/log2.rb +5 -0
  293. data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/math.rb +3 -0
  294. data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/numeric/round.rb +11 -0
  295. data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/numeric.rb +3 -0
  296. data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/proc/case_compare.rb +6 -0
  297. data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/proc/curry.rb +24 -0
  298. data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/proc/lambda.rb +40 -0
  299. data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/proc/yield.rb +3 -0
  300. data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/proc.rb +3 -0
  301. data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/range/cover.rb +3 -0
  302. data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/range.rb +3 -0
  303. data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/regexp/try_convert.rb +7 -0
  304. data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/regexp.rb +3 -0
  305. data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/stdlib/prime.rb +497 -0
  306. data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/stdlib.rb +1 -0
  307. data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/string/ascii_only.rb +7 -0
  308. data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/string/chr.rb +7 -0
  309. data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/string/clear.rb +8 -0
  310. data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/string/codepoints.rb +8 -0
  311. data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/string/each_codepoint.rb +3 -0
  312. data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/string/getbyte.rb +3 -0
  313. data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/string/ord.rb +7 -0
  314. data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/string/setbyte.rb +3 -0
  315. data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/string/try_convert.rb +7 -0
  316. data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/string.rb +3 -0
  317. data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/symbol/capitalize.rb +7 -0
  318. data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/symbol/casecmp.rb +8 -0
  319. data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/symbol/comparable.rb +7 -0
  320. data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/symbol/comparison.rb +8 -0
  321. data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/symbol/downcase.rb +7 -0
  322. data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/symbol/element_reference.rb +7 -0
  323. data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/symbol/empty.rb +7 -0
  324. data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/symbol/length.rb +7 -0
  325. data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/symbol/match.rb +9 -0
  326. data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/symbol/next.rb +1 -0
  327. data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/symbol/size.rb +7 -0
  328. data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/symbol/succ.rb +8 -0
  329. data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/symbol/swapcase.rb +7 -0
  330. data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/symbol/upcase.rb +7 -0
  331. data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/symbol.rb +3 -0
  332. data/lib/vendor/backports-3.3.5/lib/backports/1.9.1.rb +3 -0
  333. data/lib/vendor/backports-3.3.5/lib/backports/1.9.2/array/keep_if.rb +8 -0
  334. data/lib/vendor/backports-3.3.5/lib/backports/1.9.2/array/product.rb +26 -0
  335. data/lib/vendor/backports-3.3.5/lib/backports/1.9.2/array/repeated_combination.rb +25 -0
  336. data/lib/vendor/backports-3.3.5/lib/backports/1.9.2/array/repeated_permutation.rb +26 -0
  337. data/lib/vendor/backports-3.3.5/lib/backports/1.9.2/array/rotate.rb +17 -0
  338. data/lib/vendor/backports-3.3.5/lib/backports/1.9.2/array/select.rb +8 -0
  339. data/lib/vendor/backports-3.3.5/lib/backports/1.9.2/array/sort_by.rb +9 -0
  340. data/lib/vendor/backports-3.3.5/lib/backports/1.9.2/array/uniq.rb +30 -0
  341. data/lib/vendor/backports-3.3.5/lib/backports/1.9.2/array.rb +3 -0
  342. data/lib/vendor/backports-3.3.5/lib/backports/1.9.2/complex/to_r.rb +10 -0
  343. data/lib/vendor/backports-3.3.5/lib/backports/1.9.2/complex.rb +3 -0
  344. data/lib/vendor/backports-3.3.5/lib/backports/1.9.2/dir/home.rb +5 -0
  345. data/lib/vendor/backports-3.3.5/lib/backports/1.9.2/dir.rb +3 -0
  346. data/lib/vendor/backports-3.3.5/lib/backports/1.9.2/enumerable/chunk.rb +39 -0
  347. data/lib/vendor/backports-3.3.5/lib/backports/1.9.2/enumerable/collect_concat.rb +1 -0
  348. data/lib/vendor/backports-3.3.5/lib/backports/1.9.2/enumerable/each_entry.rb +11 -0
  349. data/lib/vendor/backports-3.3.5/lib/backports/1.9.2/enumerable/flat_map.rb +11 -0
  350. data/lib/vendor/backports-3.3.5/lib/backports/1.9.2/enumerable/slice_before.rb +30 -0
  351. data/lib/vendor/backports-3.3.5/lib/backports/1.9.2/enumerable.rb +3 -0
  352. data/lib/vendor/backports-3.3.5/lib/backports/1.9.2/float/infinity.rb +3 -0
  353. data/lib/vendor/backports-3.3.5/lib/backports/1.9.2/float/nan.rb +3 -0
  354. data/lib/vendor/backports-3.3.5/lib/backports/1.9.2/float.rb +3 -0
  355. data/lib/vendor/backports-3.3.5/lib/backports/1.9.2/hash/keep_if.rb +8 -0
  356. data/lib/vendor/backports-3.3.5/lib/backports/1.9.2/hash/select.rb +9 -0
  357. data/lib/vendor/backports-3.3.5/lib/backports/1.9.2/hash.rb +3 -0
  358. data/lib/vendor/backports-3.3.5/lib/backports/1.9.2/kernel/singleton_class.rb +7 -0
  359. data/lib/vendor/backports-3.3.5/lib/backports/1.9.2/kernel.rb +3 -0
  360. data/lib/vendor/backports-3.3.5/lib/backports/1.9.2/random.rb +1 -0
  361. data/lib/vendor/backports-3.3.5/lib/backports/1.9.2/stdlib/matrix/eigenvalue_decomposition.rb +886 -0
  362. data/lib/vendor/backports-3.3.5/lib/backports/1.9.2/stdlib/matrix/lup_decomposition.rb +218 -0
  363. data/lib/vendor/backports-3.3.5/lib/backports/1.9.2/stdlib/matrix.rb +1871 -0
  364. data/lib/vendor/backports-3.3.5/lib/backports/1.9.2/stdlib/set.rb +13 -0
  365. data/lib/vendor/backports-3.3.5/lib/backports/1.9.2/stdlib.rb +1 -0
  366. data/lib/vendor/backports-3.3.5/lib/backports/1.9.2.rb +3 -0
  367. data/lib/vendor/backports-3.3.5/lib/backports/1.9.3/file/null.rb +16 -0
  368. data/lib/vendor/backports-3.3.5/lib/backports/1.9.3/file.rb +3 -0
  369. data/lib/vendor/backports-3.3.5/lib/backports/1.9.3/io/advise.rb +24 -0
  370. data/lib/vendor/backports-3.3.5/lib/backports/1.9.3/io/binwrite.rb +7 -0
  371. data/lib/vendor/backports-3.3.5/lib/backports/1.9.3/io/write.rb +7 -0
  372. data/lib/vendor/backports-3.3.5/lib/backports/1.9.3/io.rb +3 -0
  373. data/lib/vendor/backports-3.3.5/lib/backports/1.9.3/string/byteslice.rb +36 -0
  374. data/lib/vendor/backports-3.3.5/lib/backports/1.9.3/string/prepend.rb +10 -0
  375. data/lib/vendor/backports-3.3.5/lib/backports/1.9.3/string.rb +3 -0
  376. data/lib/vendor/backports-3.3.5/lib/backports/1.9.3.rb +3 -0
  377. data/lib/vendor/backports-3.3.5/lib/backports/1.9.rb +2 -0
  378. data/lib/vendor/backports-3.3.5/lib/backports/2.0.0/array/bsearch.rb +32 -0
  379. data/lib/vendor/backports-3.3.5/lib/backports/2.0.0/array.rb +3 -0
  380. data/lib/vendor/backports-3.3.5/lib/backports/2.0.0/enumerable/lazy.rb +216 -0
  381. data/lib/vendor/backports-3.3.5/lib/backports/2.0.0/enumerable.rb +3 -0
  382. data/lib/vendor/backports-3.3.5/lib/backports/2.0.0/enumerator/lazy.rb +1 -0
  383. data/lib/vendor/backports-3.3.5/lib/backports/2.0.0/enumerator.rb +3 -0
  384. data/lib/vendor/backports-3.3.5/lib/backports/2.0.0/env/to_h.rb +5 -0
  385. data/lib/vendor/backports-3.3.5/lib/backports/2.0.0/env.rb +3 -0
  386. data/lib/vendor/backports-3.3.5/lib/backports/2.0.0/hash/default_proc.rb +16 -0
  387. data/lib/vendor/backports-3.3.5/lib/backports/2.0.0/hash/to_h.rb +7 -0
  388. data/lib/vendor/backports-3.3.5/lib/backports/2.0.0/hash.rb +3 -0
  389. data/lib/vendor/backports-3.3.5/lib/backports/2.0.0/nil/to_h.rb +7 -0
  390. data/lib/vendor/backports-3.3.5/lib/backports/2.0.0/nil.rb +3 -0
  391. data/lib/vendor/backports-3.3.5/lib/backports/2.0.0/range/bsearch.rb +49 -0
  392. data/lib/vendor/backports-3.3.5/lib/backports/2.0.0/range.rb +3 -0
  393. data/lib/vendor/backports-3.3.5/lib/backports/2.0.0/stdlib/abbrev.rb +1 -0
  394. data/lib/vendor/backports-3.3.5/lib/backports/2.0.0/stdlib/fake_stdlib_lib.rb +1 -0
  395. data/lib/vendor/backports-3.3.5/lib/backports/2.0.0/stdlib/ostruct.rb +27 -0
  396. data/lib/vendor/backports-3.3.5/lib/backports/2.0.0/stdlib.rb +1 -0
  397. data/lib/vendor/backports-3.3.5/lib/backports/2.0.0/struct/to_h.rb +9 -0
  398. data/lib/vendor/backports-3.3.5/lib/backports/2.0.0/struct.rb +3 -0
  399. data/lib/vendor/backports-3.3.5/lib/backports/2.0.0.rb +3 -0
  400. data/lib/vendor/backports-3.3.5/lib/backports/2.0.rb +2 -0
  401. data/lib/vendor/backports-3.3.5/lib/backports/basic_object.rb +53 -0
  402. data/lib/vendor/backports-3.3.5/lib/backports/extra/random/MT19937.rb +76 -0
  403. data/lib/vendor/backports-3.3.5/lib/backports/extra/random/bits_and_bytes.rb +91 -0
  404. data/lib/vendor/backports-3.3.5/lib/backports/extra/random/implementation.rb +93 -0
  405. data/lib/vendor/backports-3.3.5/lib/backports/extra/random/load.rb +17 -0
  406. data/lib/vendor/backports-3.3.5/lib/backports/force/array_map.rb +1 -0
  407. data/lib/vendor/backports-3.3.5/lib/backports/force/enumerable_map.rb +3 -0
  408. data/lib/vendor/backports-3.3.5/lib/backports/force/hash_select.rb +9 -0
  409. data/lib/vendor/backports-3.3.5/lib/backports/force/string_length.rb +10 -0
  410. data/lib/vendor/backports-3.3.5/lib/backports/force/string_size.rb +1 -0
  411. data/lib/vendor/backports-3.3.5/lib/backports/rails/array.rb +6 -0
  412. data/lib/vendor/backports-3.3.5/lib/backports/rails/enumerable.rb +12 -0
  413. data/lib/vendor/backports-3.3.5/lib/backports/rails/hash.rb +31 -0
  414. data/lib/vendor/backports-3.3.5/lib/backports/rails/kernel.rb +6 -0
  415. data/lib/vendor/backports-3.3.5/lib/backports/rails/module.rb +6 -0
  416. data/lib/vendor/backports-3.3.5/lib/backports/rails/string.rb +42 -0
  417. data/lib/vendor/backports-3.3.5/lib/backports/rails.rb +4 -0
  418. data/lib/vendor/backports-3.3.5/lib/backports/tools.rb +343 -0
  419. data/lib/vendor/backports-3.3.5/lib/backports/version.rb +3 -0
  420. data/lib/vendor/backports-3.3.5/lib/backports.rb +4 -0
  421. data/lib/vendor/dante-0.2.0/lib/dante/runner.rb +275 -0
  422. data/lib/vendor/dante-0.2.0/lib/dante/version.rb +3 -0
  423. data/lib/vendor/dante-0.2.0/lib/dante.rb +26 -0
  424. data/lib/vendor/rack-1.5.2/lib/rack/auth/abstract/handler.rb +37 -0
  425. data/lib/vendor/rack-1.5.2/lib/rack/auth/abstract/request.rb +43 -0
  426. data/lib/vendor/rack-1.5.2/lib/rack/auth/basic.rb +58 -0
  427. data/lib/vendor/rack-1.5.2/lib/rack/auth/digest/md5.rb +129 -0
  428. data/lib/vendor/rack-1.5.2/lib/rack/auth/digest/nonce.rb +51 -0
  429. data/lib/vendor/rack-1.5.2/lib/rack/auth/digest/params.rb +53 -0
  430. data/lib/vendor/rack-1.5.2/lib/rack/auth/digest/request.rb +41 -0
  431. data/lib/vendor/rack-1.5.2/lib/rack/backports/uri/common_18.rb +56 -0
  432. data/lib/vendor/rack-1.5.2/lib/rack/backports/uri/common_192.rb +52 -0
  433. data/lib/vendor/rack-1.5.2/lib/rack/backports/uri/common_193.rb +29 -0
  434. data/lib/vendor/rack-1.5.2/lib/rack/body_proxy.rb +39 -0
  435. data/lib/vendor/rack-1.5.2/lib/rack/builder.rb +149 -0
  436. data/lib/vendor/rack-1.5.2/lib/rack/cascade.rb +52 -0
  437. data/lib/vendor/rack-1.5.2/lib/rack/chunked.rb +58 -0
  438. data/lib/vendor/rack-1.5.2/lib/rack/commonlogger.rb +64 -0
  439. data/lib/vendor/rack-1.5.2/lib/rack/conditionalget.rb +67 -0
  440. data/lib/vendor/rack-1.5.2/lib/rack/config.rb +20 -0
  441. data/lib/vendor/rack-1.5.2/lib/rack/content_length.rb +33 -0
  442. data/lib/vendor/rack-1.5.2/lib/rack/content_type.rb +29 -0
  443. data/lib/vendor/rack-1.5.2/lib/rack/deflater.rb +116 -0
  444. data/lib/vendor/rack-1.5.2/lib/rack/directory.rb +161 -0
  445. data/lib/vendor/rack-1.5.2/lib/rack/etag.rb +64 -0
  446. data/lib/vendor/rack-1.5.2/lib/rack/file.rb +138 -0
  447. data/lib/vendor/rack-1.5.2/lib/rack/handler/cgi.rb +61 -0
  448. data/lib/vendor/rack-1.5.2/lib/rack/handler/evented_mongrel.rb +8 -0
  449. data/lib/vendor/rack-1.5.2/lib/rack/handler/fastcgi.rb +98 -0
  450. data/lib/vendor/rack-1.5.2/lib/rack/handler/lsws.rb +61 -0
  451. data/lib/vendor/rack-1.5.2/lib/rack/handler/mongrel.rb +100 -0
  452. data/lib/vendor/rack-1.5.2/lib/rack/handler/scgi.rb +67 -0
  453. data/lib/vendor/rack-1.5.2/lib/rack/handler/swiftiplied_mongrel.rb +8 -0
  454. data/lib/vendor/rack-1.5.2/lib/rack/handler/thin.rb +27 -0
  455. data/lib/vendor/rack-1.5.2/lib/rack/handler/webrick.rb +81 -0
  456. data/lib/vendor/rack-1.5.2/lib/rack/handler.rb +107 -0
  457. data/lib/vendor/rack-1.5.2/lib/rack/head.rb +22 -0
  458. data/lib/vendor/rack-1.5.2/lib/rack/lint.rb +699 -0
  459. data/lib/vendor/rack-1.5.2/lib/rack/lobster.rb +65 -0
  460. data/lib/vendor/rack-1.5.2/lib/rack/lock.rb +26 -0
  461. data/lib/vendor/rack-1.5.2/lib/rack/logger.rb +18 -0
  462. data/lib/vendor/rack-1.5.2/lib/rack/methodoverride.rb +31 -0
  463. data/lib/vendor/rack-1.5.2/lib/rack/mime.rb +677 -0
  464. data/lib/vendor/rack-1.5.2/lib/rack/mock.rb +190 -0
  465. data/lib/vendor/rack-1.5.2/lib/rack/multipart/generator.rb +93 -0
  466. data/lib/vendor/rack-1.5.2/lib/rack/multipart/parser.rb +176 -0
  467. data/lib/vendor/rack-1.5.2/lib/rack/multipart/uploaded_file.rb +34 -0
  468. data/lib/vendor/rack-1.5.2/lib/rack/multipart.rb +34 -0
  469. data/lib/vendor/rack-1.5.2/lib/rack/nulllogger.rb +18 -0
  470. data/lib/vendor/rack-1.5.2/lib/rack/recursive.rb +61 -0
  471. data/lib/vendor/rack-1.5.2/lib/rack/reloader.rb +109 -0
  472. data/lib/vendor/rack-1.5.2/lib/rack/request.rb +380 -0
  473. data/lib/vendor/rack-1.5.2/lib/rack/response.rb +155 -0
  474. data/lib/vendor/rack-1.5.2/lib/rack/rewindable_input.rb +104 -0
  475. data/lib/vendor/rack-1.5.2/lib/rack/runtime.rb +27 -0
  476. data/lib/vendor/rack-1.5.2/lib/rack/sendfile.rb +155 -0
  477. data/lib/vendor/rack-1.5.2/lib/rack/server.rb +362 -0
  478. data/lib/vendor/rack-1.5.2/lib/rack/session/abstract/id.rb +398 -0
  479. data/lib/vendor/rack-1.5.2/lib/rack/session/cookie.rb +178 -0
  480. data/lib/vendor/rack-1.5.2/lib/rack/session/memcache.rb +93 -0
  481. data/lib/vendor/rack-1.5.2/lib/rack/session/pool.rb +79 -0
  482. data/lib/vendor/rack-1.5.2/lib/rack/showexceptions.rb +378 -0
  483. data/lib/vendor/rack-1.5.2/lib/rack/showstatus.rb +113 -0
  484. data/lib/vendor/rack-1.5.2/lib/rack/static.rb +153 -0
  485. data/lib/vendor/rack-1.5.2/lib/rack/urlmap.rb +76 -0
  486. data/lib/vendor/rack-1.5.2/lib/rack/utils/okjson.rb +599 -0
  487. data/lib/vendor/rack-1.5.2/lib/rack/utils.rb +628 -0
  488. data/lib/vendor/rack-1.5.2/lib/rack.rb +87 -0
  489. data/lib/vendor/rack-protection-1.5.1/lib/rack/protection/authenticity_token.rb +31 -0
  490. data/lib/vendor/rack-protection-1.5.1/lib/rack/protection/base.rb +119 -0
  491. data/lib/vendor/rack-protection-1.5.1/lib/rack/protection/escaped_params.rb +87 -0
  492. data/lib/vendor/rack-protection-1.5.1/lib/rack/protection/form_token.rb +23 -0
  493. data/lib/vendor/rack-protection-1.5.1/lib/rack/protection/frame_options.rb +37 -0
  494. data/lib/vendor/rack-protection-1.5.1/lib/rack/protection/http_origin.rb +32 -0
  495. data/lib/vendor/rack-protection-1.5.1/lib/rack/protection/ip_spoofing.rb +23 -0
  496. data/lib/vendor/rack-protection-1.5.1/lib/rack/protection/json_csrf.rb +35 -0
  497. data/lib/vendor/rack-protection-1.5.1/lib/rack/protection/path_traversal.rb +47 -0
  498. data/lib/vendor/rack-protection-1.5.1/lib/rack/protection/remote_referrer.rb +20 -0
  499. data/lib/vendor/rack-protection-1.5.1/lib/rack/protection/remote_token.rb +22 -0
  500. data/lib/vendor/rack-protection-1.5.1/lib/rack/protection/session_hijacking.rb +36 -0
  501. data/lib/vendor/rack-protection-1.5.1/lib/rack/protection/version.rb +16 -0
  502. data/lib/vendor/rack-protection-1.5.1/lib/rack/protection/xss_header.rb +25 -0
  503. data/lib/vendor/rack-protection-1.5.1/lib/rack/protection.rb +40 -0
  504. data/lib/vendor/rack-protection-1.5.1/lib/rack-protection.rb +1 -0
  505. data/lib/vendor/sinatra-1.4.4/.yardopts +5 -0
  506. data/lib/vendor/sinatra-1.4.4/lib/sinatra/base.rb +2034 -0
  507. data/lib/vendor/sinatra-1.4.4/lib/sinatra/images/404.png +0 -0
  508. data/lib/vendor/sinatra-1.4.4/lib/sinatra/images/500.png +0 -0
  509. data/lib/vendor/sinatra-1.4.4/lib/sinatra/main.rb +34 -0
  510. data/lib/vendor/sinatra-1.4.4/lib/sinatra/show_exceptions.rb +345 -0
  511. data/lib/vendor/sinatra-1.4.4/lib/sinatra/version.rb +3 -0
  512. data/lib/vendor/sinatra-1.4.4/lib/sinatra.rb +4 -0
  513. data/lib/vendor/sinatra-contrib-1.4.1/lib/sinatra/capture.rb +124 -0
  514. data/lib/vendor/sinatra-contrib-1.4.1/lib/sinatra/config_file.rb +167 -0
  515. data/lib/vendor/sinatra-contrib-1.4.1/lib/sinatra/content_for.rb +125 -0
  516. data/lib/vendor/sinatra-contrib-1.4.1/lib/sinatra/contrib/all.rb +2 -0
  517. data/lib/vendor/sinatra-contrib-1.4.1/lib/sinatra/contrib/setup.rb +53 -0
  518. data/lib/vendor/sinatra-contrib-1.4.1/lib/sinatra/contrib/version.rb +17 -0
  519. data/lib/vendor/sinatra-contrib-1.4.1/lib/sinatra/contrib.rb +39 -0
  520. data/lib/vendor/sinatra-contrib-1.4.1/lib/sinatra/cookies.rb +331 -0
  521. data/lib/vendor/sinatra-contrib-1.4.1/lib/sinatra/decompile.rb +121 -0
  522. data/lib/vendor/sinatra-contrib-1.4.1/lib/sinatra/engine_tracking.rb +96 -0
  523. data/lib/vendor/sinatra-contrib-1.4.1/lib/sinatra/extension.rb +95 -0
  524. data/lib/vendor/sinatra-contrib-1.4.1/lib/sinatra/json.rb +131 -0
  525. data/lib/vendor/sinatra-contrib-1.4.1/lib/sinatra/link_header.rb +132 -0
  526. data/lib/vendor/sinatra-contrib-1.4.1/lib/sinatra/multi_route.rb +87 -0
  527. data/lib/vendor/sinatra-contrib-1.4.1/lib/sinatra/namespace.rb +284 -0
  528. data/lib/vendor/sinatra-contrib-1.4.1/lib/sinatra/reloader.rb +394 -0
  529. data/lib/vendor/sinatra-contrib-1.4.1/lib/sinatra/respond_with.rb +247 -0
  530. data/lib/vendor/sinatra-contrib-1.4.1/lib/sinatra/streaming.rb +243 -0
  531. data/lib/vendor/sinatra-contrib-1.4.1/lib/sinatra/test_helpers.rb +87 -0
  532. data/lib/vendor/tilt-1.4.1/lib/tilt/asciidoc.rb +34 -0
  533. data/lib/vendor/tilt-1.4.1/lib/tilt/builder.rb +40 -0
  534. data/lib/vendor/tilt-1.4.1/lib/tilt/coffee.rb +54 -0
  535. data/lib/vendor/tilt-1.4.1/lib/tilt/css.rb +80 -0
  536. data/lib/vendor/tilt-1.4.1/lib/tilt/csv.rb +71 -0
  537. data/lib/vendor/tilt-1.4.1/lib/tilt/erb.rb +110 -0
  538. data/lib/vendor/tilt-1.4.1/lib/tilt/etanni.rb +27 -0
  539. data/lib/vendor/tilt-1.4.1/lib/tilt/haml.rb +64 -0
  540. data/lib/vendor/tilt-1.4.1/lib/tilt/liquid.rb +45 -0
  541. data/lib/vendor/tilt-1.4.1/lib/tilt/markaby.rb +52 -0
  542. data/lib/vendor/tilt-1.4.1/lib/tilt/markdown.rb +214 -0
  543. data/lib/vendor/tilt-1.4.1/lib/tilt/nokogiri.rb +43 -0
  544. data/lib/vendor/tilt-1.4.1/lib/tilt/plain.rb +20 -0
  545. data/lib/vendor/tilt-1.4.1/lib/tilt/radius.rb +55 -0
  546. data/lib/vendor/tilt-1.4.1/lib/tilt/rdoc.rb +47 -0
  547. data/lib/vendor/tilt-1.4.1/lib/tilt/string.rb +21 -0
  548. data/lib/vendor/tilt-1.4.1/lib/tilt/template.rb +292 -0
  549. data/lib/vendor/tilt-1.4.1/lib/tilt/textile.rb +30 -0
  550. data/lib/vendor/tilt-1.4.1/lib/tilt/wiki.rb +58 -0
  551. data/lib/vendor/tilt-1.4.1/lib/tilt/yajl.rb +94 -0
  552. data/lib/vendor/tilt-1.4.1/lib/tilt.rb +204 -0
  553. data/scout_realtime.gemspec +30 -0
  554. data/test/data_for_testing.rb +1 -0
  555. data/test/lib/metric_test.rb +48 -0
  556. data/test/models/cpu_test.rb +24 -0
  557. data/test/models/disk_test.rb +24 -0
  558. data/test/models/memory_test.rb +24 -0
  559. data/test/models/network_test.rb +24 -0
  560. data/test/models/processes_test.rb +24 -0
  561. data/test/runner_test.rb +30 -0
  562. data/test/test_helper.rb +4 -0
  563. metadata +730 -0
@@ -0,0 +1,43 @@
1
+ require 'rack/request'
2
+
3
+ module Rack
4
+ module Auth
5
+ class AbstractRequest
6
+
7
+ def initialize(env)
8
+ @env = env
9
+ end
10
+
11
+ def request
12
+ @request ||= Request.new(@env)
13
+ end
14
+
15
+ def provided?
16
+ !authorization_key.nil?
17
+ end
18
+
19
+ def parts
20
+ @parts ||= @env[authorization_key].split(' ', 2)
21
+ end
22
+
23
+ def scheme
24
+ @scheme ||= parts.first.downcase
25
+ end
26
+
27
+ def params
28
+ @params ||= parts.last
29
+ end
30
+
31
+
32
+ private
33
+
34
+ AUTHORIZATION_KEYS = ['HTTP_AUTHORIZATION', 'X-HTTP_AUTHORIZATION', 'X_HTTP_AUTHORIZATION']
35
+
36
+ def authorization_key
37
+ @authorization_key ||= AUTHORIZATION_KEYS.detect { |key| @env.has_key?(key) }
38
+ end
39
+
40
+ end
41
+
42
+ end
43
+ end
@@ -0,0 +1,58 @@
1
+ require 'rack/auth/abstract/handler'
2
+ require 'rack/auth/abstract/request'
3
+
4
+ module Rack
5
+ module Auth
6
+ # Rack::Auth::Basic implements HTTP Basic Authentication, as per RFC 2617.
7
+ #
8
+ # Initialize with the Rack application that you want protecting,
9
+ # and a block that checks if a username and password pair are valid.
10
+ #
11
+ # See also: <tt>example/protectedlobster.rb</tt>
12
+
13
+ class Basic < AbstractHandler
14
+
15
+ def call(env)
16
+ auth = Basic::Request.new(env)
17
+
18
+ return unauthorized unless auth.provided?
19
+
20
+ return bad_request unless auth.basic?
21
+
22
+ if valid?(auth)
23
+ env['REMOTE_USER'] = auth.username
24
+
25
+ return @app.call(env)
26
+ end
27
+
28
+ unauthorized
29
+ end
30
+
31
+
32
+ private
33
+
34
+ def challenge
35
+ 'Basic realm="%s"' % realm
36
+ end
37
+
38
+ def valid?(auth)
39
+ @authenticator.call(*auth.credentials)
40
+ end
41
+
42
+ class Request < Auth::AbstractRequest
43
+ def basic?
44
+ !parts.first.nil? && "basic" == scheme
45
+ end
46
+
47
+ def credentials
48
+ @credentials ||= params.unpack("m*").first.split(/:/, 2)
49
+ end
50
+
51
+ def username
52
+ credentials.first
53
+ end
54
+ end
55
+
56
+ end
57
+ end
58
+ end
@@ -0,0 +1,129 @@
1
+ require 'rack/auth/abstract/handler'
2
+ require 'rack/auth/digest/request'
3
+ require 'rack/auth/digest/params'
4
+ require 'rack/auth/digest/nonce'
5
+ require 'digest/md5'
6
+
7
+ module Rack
8
+ module Auth
9
+ module Digest
10
+ # Rack::Auth::Digest::MD5 implements the MD5 algorithm version of
11
+ # HTTP Digest Authentication, as per RFC 2617.
12
+ #
13
+ # Initialize with the [Rack] application that you want protecting,
14
+ # and a block that looks up a plaintext password for a given username.
15
+ #
16
+ # +opaque+ needs to be set to a constant base64/hexadecimal string.
17
+ #
18
+ class MD5 < AbstractHandler
19
+
20
+ attr_accessor :opaque
21
+
22
+ attr_writer :passwords_hashed
23
+
24
+ def initialize(app, realm=nil, opaque=nil, &authenticator)
25
+ @passwords_hashed = nil
26
+ if opaque.nil? and realm.respond_to? :values_at
27
+ realm, opaque, @passwords_hashed = realm.values_at :realm, :opaque, :passwords_hashed
28
+ end
29
+ super(app, realm, &authenticator)
30
+ @opaque = opaque
31
+ end
32
+
33
+ def passwords_hashed?
34
+ !!@passwords_hashed
35
+ end
36
+
37
+ def call(env)
38
+ auth = Request.new(env)
39
+
40
+ unless auth.provided?
41
+ return unauthorized
42
+ end
43
+
44
+ if !auth.digest? || !auth.correct_uri? || !valid_qop?(auth)
45
+ return bad_request
46
+ end
47
+
48
+ if valid?(auth)
49
+ if auth.nonce.stale?
50
+ return unauthorized(challenge(:stale => true))
51
+ else
52
+ env['REMOTE_USER'] = auth.username
53
+
54
+ return @app.call(env)
55
+ end
56
+ end
57
+
58
+ unauthorized
59
+ end
60
+
61
+
62
+ private
63
+
64
+ QOP = 'auth'.freeze
65
+
66
+ def params(hash = {})
67
+ Params.new do |params|
68
+ params['realm'] = realm
69
+ params['nonce'] = Nonce.new.to_s
70
+ params['opaque'] = H(opaque)
71
+ params['qop'] = QOP
72
+
73
+ hash.each { |k, v| params[k] = v }
74
+ end
75
+ end
76
+
77
+ def challenge(hash = {})
78
+ "Digest #{params(hash)}"
79
+ end
80
+
81
+ def valid?(auth)
82
+ valid_opaque?(auth) && valid_nonce?(auth) && valid_digest?(auth)
83
+ end
84
+
85
+ def valid_qop?(auth)
86
+ QOP == auth.qop
87
+ end
88
+
89
+ def valid_opaque?(auth)
90
+ H(opaque) == auth.opaque
91
+ end
92
+
93
+ def valid_nonce?(auth)
94
+ auth.nonce.valid?
95
+ end
96
+
97
+ def valid_digest?(auth)
98
+ pw = @authenticator.call(auth.username)
99
+ pw && digest(auth, pw) == auth.response
100
+ end
101
+
102
+ def md5(data)
103
+ ::Digest::MD5.hexdigest(data)
104
+ end
105
+
106
+ alias :H :md5
107
+
108
+ def KD(secret, data)
109
+ H([secret, data] * ':')
110
+ end
111
+
112
+ def A1(auth, password)
113
+ [ auth.username, auth.realm, password ] * ':'
114
+ end
115
+
116
+ def A2(auth)
117
+ [ auth.method, auth.uri ] * ':'
118
+ end
119
+
120
+ def digest(auth, password)
121
+ password_hash = passwords_hashed? ? password : H(A1(auth, password))
122
+
123
+ KD(password_hash, [ auth.nonce, auth.nc, auth.cnonce, QOP, H(A2(auth)) ] * ':')
124
+ end
125
+
126
+ end
127
+ end
128
+ end
129
+ end
@@ -0,0 +1,51 @@
1
+ require 'digest/md5'
2
+
3
+ module Rack
4
+ module Auth
5
+ module Digest
6
+ # Rack::Auth::Digest::Nonce is the default nonce generator for the
7
+ # Rack::Auth::Digest::MD5 authentication handler.
8
+ #
9
+ # +private_key+ needs to set to a constant string.
10
+ #
11
+ # +time_limit+ can be optionally set to an integer (number of seconds),
12
+ # to limit the validity of the generated nonces.
13
+
14
+ class Nonce
15
+
16
+ class << self
17
+ attr_accessor :private_key, :time_limit
18
+ end
19
+
20
+ def self.parse(string)
21
+ new(*string.unpack("m*").first.split(' ', 2))
22
+ end
23
+
24
+ def initialize(timestamp = Time.now, given_digest = nil)
25
+ @timestamp, @given_digest = timestamp.to_i, given_digest
26
+ end
27
+
28
+ def to_s
29
+ [([ @timestamp, digest ] * ' ')].pack("m*").strip
30
+ end
31
+
32
+ def digest
33
+ ::Digest::MD5.hexdigest([ @timestamp, self.class.private_key ] * ':')
34
+ end
35
+
36
+ def valid?
37
+ digest == @given_digest
38
+ end
39
+
40
+ def stale?
41
+ !self.class.time_limit.nil? && (Time.now.to_i - @timestamp) > self.class.time_limit
42
+ end
43
+
44
+ def fresh?
45
+ !stale?
46
+ end
47
+
48
+ end
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,53 @@
1
+ module Rack
2
+ module Auth
3
+ module Digest
4
+ class Params < Hash
5
+
6
+ def self.parse(str)
7
+ Params[*split_header_value(str).map do |param|
8
+ k, v = param.split('=', 2)
9
+ [k, dequote(v)]
10
+ end.flatten]
11
+ end
12
+
13
+ def self.dequote(str) # From WEBrick::HTTPUtils
14
+ ret = (/\A"(.*)"\Z/ =~ str) ? $1 : str.dup
15
+ ret.gsub!(/\\(.)/, "\\1")
16
+ ret
17
+ end
18
+
19
+ def self.split_header_value(str)
20
+ str.scan( /(\w+\=(?:"[^\"]+"|[^,]+))/n ).collect{ |v| v[0] }
21
+ end
22
+
23
+ def initialize
24
+ super()
25
+
26
+ yield self if block_given?
27
+ end
28
+
29
+ def [](k)
30
+ super k.to_s
31
+ end
32
+
33
+ def []=(k, v)
34
+ super k.to_s, v.to_s
35
+ end
36
+
37
+ UNQUOTED = ['nc', 'stale']
38
+
39
+ def to_s
40
+ map do |k, v|
41
+ "#{k}=" + (UNQUOTED.include?(k) ? v.to_s : quote(v))
42
+ end.join(', ')
43
+ end
44
+
45
+ def quote(str) # From WEBrick::HTTPUtils
46
+ '"' << str.gsub(/[\\\"]/o, "\\\1") << '"'
47
+ end
48
+
49
+ end
50
+ end
51
+ end
52
+ end
53
+
@@ -0,0 +1,41 @@
1
+ require 'rack/auth/abstract/request'
2
+ require 'rack/auth/digest/params'
3
+ require 'rack/auth/digest/nonce'
4
+
5
+ module Rack
6
+ module Auth
7
+ module Digest
8
+ class Request < Auth::AbstractRequest
9
+ def method
10
+ @env['rack.methodoverride.original_method'] || @env['REQUEST_METHOD']
11
+ end
12
+
13
+ def digest?
14
+ "digest" == scheme
15
+ end
16
+
17
+ def correct_uri?
18
+ request.fullpath == uri
19
+ end
20
+
21
+ def nonce
22
+ @nonce ||= Nonce.parse(params['nonce'])
23
+ end
24
+
25
+ def params
26
+ @params ||= Params.parse(parts.last)
27
+ end
28
+
29
+ def respond_to?(sym, *)
30
+ super or params.has_key? sym.to_s
31
+ end
32
+
33
+ def method_missing(sym, *args)
34
+ return super unless params.has_key?(key = sym.to_s)
35
+ return params[key] if args.size == 0
36
+ raise ArgumentError, "wrong number of arguments (#{args.size} for 0)"
37
+ end
38
+ end
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,56 @@
1
+ # :stopdoc:
2
+
3
+ # Stolen from ruby core's uri/common.rb, with modifications to support 1.8.x
4
+ #
5
+ # https://github.com/ruby/ruby/blob/trunk/lib/uri/common.rb
6
+ #
7
+ #
8
+
9
+ module URI
10
+ TBLENCWWWCOMP_ = {} # :nodoc:
11
+ 256.times do |i|
12
+ TBLENCWWWCOMP_[i.chr] = '%%%02X' % i
13
+ end
14
+ TBLENCWWWCOMP_[' '] = '+'
15
+ TBLENCWWWCOMP_.freeze
16
+ TBLDECWWWCOMP_ = {} # :nodoc:
17
+ 256.times do |i|
18
+ h, l = i>>4, i&15
19
+ TBLDECWWWCOMP_['%%%X%X' % [h, l]] = i.chr
20
+ TBLDECWWWCOMP_['%%%x%X' % [h, l]] = i.chr
21
+ TBLDECWWWCOMP_['%%%X%x' % [h, l]] = i.chr
22
+ TBLDECWWWCOMP_['%%%x%x' % [h, l]] = i.chr
23
+ end
24
+ TBLDECWWWCOMP_['+'] = ' '
25
+ TBLDECWWWCOMP_.freeze
26
+
27
+ # Encode given +s+ to URL-encoded form data.
28
+ #
29
+ # This method doesn't convert *, -, ., 0-9, A-Z, _, a-z, but does convert SP
30
+ # (ASCII space) to + and converts others to %XX.
31
+ #
32
+ # This is an implementation of
33
+ # http://www.w3.org/TR/html5/forms.html#url-encoded-form-data
34
+ #
35
+ # See URI.decode_www_form_component, URI.encode_www_form
36
+ def self.encode_www_form_component(s)
37
+ str = s.to_s
38
+ if RUBY_VERSION < "1.9" && $KCODE =~ /u/i
39
+ str.gsub(/([^ a-zA-Z0-9_.-]+)/) do
40
+ '%' + $1.unpack('H2' * Rack::Utils.bytesize($1)).join('%').upcase
41
+ end.tr(' ', '+')
42
+ else
43
+ str.gsub(/[^*\-.0-9A-Z_a-z]/) {|m| TBLENCWWWCOMP_[m]}
44
+ end
45
+ end
46
+
47
+ # Decode given +str+ of URL-encoded form data.
48
+ #
49
+ # This decods + to SP.
50
+ #
51
+ # See URI.encode_www_form_component, URI.decode_www_form
52
+ def self.decode_www_form_component(str, enc=nil)
53
+ raise ArgumentError, "invalid %-encoding (#{str})" unless /\A(?:%[0-9a-fA-F]{2}|[^%])*\z/ =~ str
54
+ str.gsub(/\+|%[0-9a-fA-F]{2}/) {|m| TBLDECWWWCOMP_[m]}
55
+ end
56
+ end
@@ -0,0 +1,52 @@
1
+ # :stopdoc:
2
+
3
+ # Stolen from ruby core's uri/common.rb @32618ba to fix DoS issues in 1.9.2
4
+ #
5
+ # https://github.com/ruby/ruby/blob/32618ba7438a2247042bba9b5d85b5d49070f5e5/lib/uri/common.rb
6
+ #
7
+ # Issue:
8
+ # http://redmine.ruby-lang.org/issues/5149
9
+ #
10
+ # Relevant Fixes:
11
+ # https://github.com/ruby/ruby/commit/b5f91deee04aa6ccbe07c23c8222b937c22a799b
12
+ # https://github.com/ruby/ruby/commit/93177c1e5c3906abf14472ae0b905d8b5c72ce1b
13
+ #
14
+ # This should probably be removed once there is a Ruby 1.9.2 patch level that
15
+ # includes this fix.
16
+
17
+ require 'uri/common'
18
+
19
+ module URI
20
+ TBLDECWWWCOMP_ = {} unless const_defined?(:TBLDECWWWCOMP_) #:nodoc:
21
+ if TBLDECWWWCOMP_.empty?
22
+ 256.times do |i|
23
+ h, l = i>>4, i&15
24
+ TBLDECWWWCOMP_['%%%X%X' % [h, l]] = i.chr
25
+ TBLDECWWWCOMP_['%%%x%X' % [h, l]] = i.chr
26
+ TBLDECWWWCOMP_['%%%X%x' % [h, l]] = i.chr
27
+ TBLDECWWWCOMP_['%%%x%x' % [h, l]] = i.chr
28
+ end
29
+ TBLDECWWWCOMP_['+'] = ' '
30
+ TBLDECWWWCOMP_.freeze
31
+ end
32
+
33
+ def self.decode_www_form(str, enc=Encoding::UTF_8)
34
+ return [] if str.empty?
35
+ unless /\A#{WFKV_}=#{WFKV_}(?:[;&]#{WFKV_}=#{WFKV_})*\z/o =~ str
36
+ raise ArgumentError, "invalid data of application/x-www-form-urlencoded (#{str})"
37
+ end
38
+ ary = []
39
+ $&.scan(/([^=;&]+)=([^;&]*)/) do
40
+ ary << [decode_www_form_component($1, enc), decode_www_form_component($2, enc)]
41
+ end
42
+ ary
43
+ end
44
+
45
+ def self.decode_www_form_component(str, enc=Encoding::UTF_8)
46
+ raise ArgumentError, "invalid %-encoding (#{str})" unless /\A[^%]*(?:%\h\h[^%]*)*\z/ =~ str
47
+ str.gsub(/\+|%\h\h/, TBLDECWWWCOMP_).force_encoding(enc)
48
+ end
49
+
50
+ remove_const :WFKV_ if const_defined?(:WFKV_)
51
+ WFKV_ = '(?:[^%#=;&]*(?:%\h\h[^%#=;&]*)*)' # :nodoc:
52
+ end
@@ -0,0 +1,29 @@
1
+ # :stopdoc:
2
+
3
+ require 'uri/common'
4
+
5
+ # Issue:
6
+ # http://bugs.ruby-lang.org/issues/5925
7
+ #
8
+ # Relevant commit:
9
+ # https://github.com/ruby/ruby/commit/edb7cdf1eabaff78dfa5ffedfbc2e91b29fa9ca1
10
+
11
+ module URI
12
+ 256.times do |i|
13
+ TBLENCWWWCOMP_[i.chr] = '%%%02X' % i
14
+ end
15
+ TBLENCWWWCOMP_[' '] = '+'
16
+ TBLENCWWWCOMP_.freeze
17
+
18
+ 256.times do |i|
19
+ h, l = i>>4, i&15
20
+ TBLDECWWWCOMP_['%%%X%X' % [h, l]] = i.chr
21
+ TBLDECWWWCOMP_['%%%x%X' % [h, l]] = i.chr
22
+ TBLDECWWWCOMP_['%%%X%x' % [h, l]] = i.chr
23
+ TBLDECWWWCOMP_['%%%x%x' % [h, l]] = i.chr
24
+ end
25
+ TBLDECWWWCOMP_['+'] = ' '
26
+ TBLDECWWWCOMP_.freeze
27
+ end
28
+
29
+ # :startdoc:
@@ -0,0 +1,39 @@
1
+ module Rack
2
+ class BodyProxy
3
+ def initialize(body, &block)
4
+ @body, @block, @closed = body, block, false
5
+ end
6
+
7
+ def respond_to?(*args)
8
+ return false if args.first.to_s =~ /^to_ary$/
9
+ super or @body.respond_to?(*args)
10
+ end
11
+
12
+ def close
13
+ return if @closed
14
+ @closed = true
15
+ begin
16
+ @body.close if @body.respond_to? :close
17
+ ensure
18
+ @block.call
19
+ end
20
+ end
21
+
22
+ def closed?
23
+ @closed
24
+ end
25
+
26
+ # N.B. This method is a special case to address the bug described by #434.
27
+ # We are applying this special case for #each only. Future bugs of this
28
+ # class will be handled by requesting users to patch their ruby
29
+ # implementation, to save adding too many methods in this class.
30
+ def each(*args, &block)
31
+ @body.each(*args, &block)
32
+ end
33
+
34
+ def method_missing(*args, &block)
35
+ super if args.first.to_s =~ /^to_ary$/
36
+ @body.__send__(*args, &block)
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,149 @@
1
+ module Rack
2
+ # Rack::Builder implements a small DSL to iteratively construct Rack
3
+ # applications.
4
+ #
5
+ # Example:
6
+ #
7
+ # require 'rack/lobster'
8
+ # app = Rack::Builder.new do
9
+ # use Rack::CommonLogger
10
+ # use Rack::ShowExceptions
11
+ # map "/lobster" do
12
+ # use Rack::Lint
13
+ # run Rack::Lobster.new
14
+ # end
15
+ # end
16
+ #
17
+ # run app
18
+ #
19
+ # Or
20
+ #
21
+ # app = Rack::Builder.app do
22
+ # use Rack::CommonLogger
23
+ # run lambda { |env| [200, {'Content-Type' => 'text/plain'}, ['OK']] }
24
+ # end
25
+ #
26
+ # run app
27
+ #
28
+ # +use+ adds middleware to the stack, +run+ dispatches to an application.
29
+ # You can use +map+ to construct a Rack::URLMap in a convenient way.
30
+
31
+ class Builder
32
+ def self.parse_file(config, opts = Server::Options.new)
33
+ options = {}
34
+ if config =~ /\.ru$/
35
+ cfgfile = ::File.read(config)
36
+ if cfgfile[/^#\\(.*)/] && opts
37
+ options = opts.parse! $1.split(/\s+/)
38
+ end
39
+ cfgfile.sub!(/^__END__\n.*\Z/m, '')
40
+ app = new_from_string cfgfile, config
41
+ else
42
+ require config
43
+ app = Object.const_get(::File.basename(config, '.rb').capitalize)
44
+ end
45
+ return app, options
46
+ end
47
+
48
+ def self.new_from_string(builder_script, file="(rackup)")
49
+ eval "Rack::Builder.new {\n" + builder_script + "\n}.to_app",
50
+ TOPLEVEL_BINDING, file, 0
51
+ end
52
+
53
+ def initialize(default_app = nil,&block)
54
+ @use, @map, @run = [], nil, default_app
55
+ instance_eval(&block) if block_given?
56
+ end
57
+
58
+ def self.app(default_app = nil, &block)
59
+ self.new(default_app, &block).to_app
60
+ end
61
+
62
+ # Specifies middleware to use in a stack.
63
+ #
64
+ # class Middleware
65
+ # def initialize(app)
66
+ # @app = app
67
+ # end
68
+ #
69
+ # def call(env)
70
+ # env["rack.some_header"] = "setting an example"
71
+ # @app.call(env)
72
+ # end
73
+ # end
74
+ #
75
+ # use Middleware
76
+ # run lambda { |env| [200, { "Content-Type => "text/plain" }, ["OK"]] }
77
+ #
78
+ # All requests through to this application will first be processed by the middleware class.
79
+ # The +call+ method in this example sets an additional environment key which then can be
80
+ # referenced in the application if required.
81
+ def use(middleware, *args, &block)
82
+ if @map
83
+ mapping, @map = @map, nil
84
+ @use << proc { |app| generate_map app, mapping }
85
+ end
86
+ @use << proc { |app| middleware.new(app, *args, &block) }
87
+ end
88
+
89
+ # Takes an argument that is an object that responds to #call and returns a Rack response.
90
+ # The simplest form of this is a lambda object:
91
+ #
92
+ # run lambda { |env| [200, { "Content-Type" => "text/plain" }, ["OK"]] }
93
+ #
94
+ # However this could also be a class:
95
+ #
96
+ # class Heartbeat
97
+ # def self.call(env)
98
+ # [200, { "Content-Type" => "text/plain" }, ["OK"]]
99
+ # end
100
+ # end
101
+ #
102
+ # run Heartbeat
103
+ def run(app)
104
+ @run = app
105
+ end
106
+
107
+ # Creates a route within the application.
108
+ #
109
+ # Rack::Builder.app do
110
+ # map '/' do
111
+ # run Heartbeat
112
+ # end
113
+ # end
114
+ #
115
+ # The +use+ method can also be used here to specify middleware to run under a specific path:
116
+ #
117
+ # Rack::Builder.app do
118
+ # map '/' do
119
+ # use Middleware
120
+ # run Heartbeat
121
+ # end
122
+ # end
123
+ #
124
+ # This example includes a piece of middleware which will run before requests hit +Heartbeat+.
125
+ #
126
+ def map(path, &block)
127
+ @map ||= {}
128
+ @map[path] = block
129
+ end
130
+
131
+ def to_app
132
+ app = @map ? generate_map(@run, @map) : @run
133
+ fail "missing run or map statement" unless app
134
+ @use.reverse.inject(app) { |a,e| e[a] }
135
+ end
136
+
137
+ def call(env)
138
+ to_app.call(env)
139
+ end
140
+
141
+ private
142
+
143
+ def generate_map(default_app, mapping)
144
+ mapped = default_app ? {'/' => default_app} : {}
145
+ mapping.each { |r,b| mapped[r] = self.class.new(default_app, &b) }
146
+ URLMap.new(mapped)
147
+ end
148
+ end
149
+ end