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.
- data/.gitignore +21 -0
- data/CHANGELOG.md +7 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +22 -0
- data/README.md +37 -0
- data/Rakefile +16 -0
- data/Vagrantfile +7 -0
- data/bin/scout_realtime +117 -0
- data/lib/scout_realtime/lib/aggregator.rb +8 -0
- data/lib/scout_realtime/lib/metric.rb +36 -0
- data/lib/scout_realtime/lib/multi_aggregator.rb +12 -0
- data/lib/scout_realtime/lib/ring_buffer.rb +25 -0
- data/lib/scout_realtime/lib/trollop.rb +782 -0
- data/lib/scout_realtime/main.rb +76 -0
- data/lib/scout_realtime/models/cpu.rb +21 -0
- data/lib/scout_realtime/models/disk.rb +21 -0
- data/lib/scout_realtime/models/memory.rb +17 -0
- data/lib/scout_realtime/models/network.rb +14 -0
- data/lib/scout_realtime/models/processes.rb +13 -0
- data/lib/scout_realtime/runner.rb +34 -0
- data/lib/scout_realtime/version.rb +5 -0
- data/lib/scout_realtime/web/favicon.ico +0 -0
- data/lib/scout_realtime/web/images/logo.png +0 -0
- data/lib/scout_realtime/web/images/pause.png +0 -0
- data/lib/scout_realtime/web/images/play.png +0 -0
- data/lib/scout_realtime/web/javascripts/application.js +265 -0
- data/lib/scout_realtime/web/javascripts/bootstrap.min.js +7 -0
- data/lib/scout_realtime/web/javascripts/charts.js +189 -0
- data/lib/scout_realtime/web/javascripts/d3.barchart.js +210 -0
- data/lib/scout_realtime/web/javascripts/d3.linechart.js +168 -0
- data/lib/scout_realtime/web/javascripts/d3.v3.min.js +5 -0
- data/lib/scout_realtime/web/javascripts/handlebars-v1.1.0.js +2563 -0
- data/lib/scout_realtime/web/javascripts/jquery.js +3010 -0
- data/lib/scout_realtime/web/javascripts/metrics_for_development.js +6 -0
- data/lib/scout_realtime/web/stylesheets/bootstrap-theme.min.css +7 -0
- data/lib/scout_realtime/web/stylesheets/bootstrap.min.css +7 -0
- data/lib/scout_realtime/web/stylesheets/styles.css +254 -0
- data/lib/scout_realtime/web/views/graph.erb +6 -0
- data/lib/scout_realtime/web/views/header.erb +8 -0
- data/lib/scout_realtime/web/views/index.erb +21 -0
- data/lib/scout_realtime/web/views/layout.erb +33 -0
- data/lib/scout_realtime/web/views/overview_charts.erb +30 -0
- data/lib/scout_realtime/web/views/processes.erb +31 -0
- data/lib/scout_realtime/web/views/sidebar.erb +19 -0
- data/lib/scout_realtime/web_app.rb +59 -0
- data/lib/scout_realtime.rb +58 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/argf/bytes.rb +1 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/argf/chars.rb +1 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/argf/each.rb +3 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/argf/each_byte.rb +9 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/argf/each_char.rb +35 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/argf/each_line.rb +3 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/argf/getbyte.rb +5 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/argf/lines.rb +5 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/argf/readbyte.rb +5 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/argf.rb +3 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/array/collect.rb +3 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/array/combination.rb +24 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/array/cycle.rb +16 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/array/delete_if.rb +3 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/array/each.rb +3 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/array/each_index.rb +3 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/array/find_index.rb +1 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/array/flatten.rb +47 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/array/index.rb +15 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/array/map.rb +3 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/array/permutation.rb +30 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/array/pop.rb +15 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/array/product.rb +32 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/array/reject.rb +3 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/array/reverse_each.rb +3 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/array/rindex.rb +15 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/array/select.rb +3 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/array/shift.rb +13 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/array/shuffle.rb +17 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/array.rb +3 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/binding/eval.rb +7 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/binding.rb +3 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/dir/each.rb +7 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/dir/foreach.rb +9 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/dir.rb +3 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/enumerable/count.rb +17 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/enumerable/cycle.rb +24 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/enumerable/detect.rb +3 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/enumerable/drop.rb +13 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/enumerable/drop_while.rb +16 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/enumerable/each_cons.rb +4 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/enumerable/each_slice.rb +4 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/enumerable/each_with_index.rb +3 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/enumerable/entries.rb +11 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/enumerable/find.rb +3 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/enumerable/find_all.rb +3 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/enumerable/find_index.rb +21 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/enumerable/first.rb +21 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/enumerable/group_by.rb +14 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/enumerable/inject.rb +14 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/enumerable/max_by.rb +16 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/enumerable/min_by.rb +16 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/enumerable/minmax.rb +21 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/enumerable/minmax_by.rb +19 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/enumerable/none.rb +7 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/enumerable/one.rb +23 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/enumerable/partition.rb +3 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/enumerable/reduce.rb +1 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/enumerable/reject.rb +3 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/enumerable/reverse_each.rb +12 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/enumerable/select.rb +3 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/enumerable/sort_by.rb +3 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/enumerable/take.rb +9 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/enumerable/take_while.rb +14 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/enumerable/to_a.rb +12 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/enumerable.rb +3 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/enumerator/each.rb +6 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/enumerator/next.rb +15 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/enumerator/rewind.rb +13 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/enumerator/with_index.rb +14 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/enumerator.rb +3 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/env/delete_if.rb +3 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/env/each.rb +3 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/env/each_key.rb +3 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/env/each_pair.rb +3 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/env/each_value.rb +3 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/env/reject.rb +4 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/env/select.rb +3 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/env.rb +3 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/fixnum/div.rb +7 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/fixnum/fdiv.rb +7 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/fixnum.rb +3 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/float/fdiv.rb +3 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/float.rb +3 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/gc/stress.rb +9 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/gc.rb +3 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/hash/constructor.rb +25 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/hash/delete_if.rb +3 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/hash/each.rb +3 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/hash/each_key.rb +3 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/hash/each_pair.rb +3 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/hash/each_value.rb +3 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/hash/eql.rb +1 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/hash/hash.rb +17 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/hash/reject.rb +3 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/hash/select.rb +3 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/hash.rb +3 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/integer/downto.rb +3 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/integer/even.rb +7 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/integer/odd.rb +7 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/integer/ord.rb +7 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/integer/pred.rb +7 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/integer/times.rb +3 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/integer/upto.rb +3 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/integer.rb +3 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/io/bytes.rb +1 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/io/chars.rb +1 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/io/each.rb +3 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/io/each_byte.rb +6 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/io/each_char.rb +34 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/io/each_line.rb +6 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/io/foreach.rb +7 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/io/getbyte.rb +3 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/io/lines.rb +1 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/io/readbyte.rb +3 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/io.rb +3 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/kernel/__method__.rb +8 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/kernel/instance_exec.rb +10 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/kernel/tap.rb +8 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/kernel.rb +3 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/method/name.rb +49 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/method.rb +3 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/module/class_exec.rb +1 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/module/module_exec.rb +11 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/module.rb +3 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/numeric/step.rb +3 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/numeric.rb +3 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/object_space/each_object.rb +5 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/object_space.rb +3 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/process/exec.rb +3 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/process.rb +3 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/range/each.rb +3 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/range/step.rb +3 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/range.rb +3 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/regexp/union.rb +11 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/regexp.rb +3 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/stdlib/tmpdir.rb +44 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/stdlib.rb +1 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/stop_iteration.rb +14 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/string/bytes.rb +1 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/string/bytesize.rb +3 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/string/each.rb +3 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/string/each_byte.rb +5 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/string/each_char.rb +13 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/string/each_line.rb +5 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/string/end_with.rb +12 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/string/lines.rb +1 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/string/partition.rb +20 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/string/rpartition.rb +19 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/string/start_with.rb +12 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/string/upto.rb +15 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/string.rb +3 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/struct/each.rb +3 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/struct/each_pair.rb +3 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/struct.rb +3 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/symbol/to_proc.rb +8 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7/symbol.rb +3 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.7.rb +3 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.8.rb +2 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.8.rb +2 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/array/sample.rb +19 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/array/try_convert.rb +7 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/array.rb +3 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/dir/to_path.rb +3 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/dir.rb +3 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/enumerable/each_with_index.rb +14 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/enumerable/each_with_object.rb +9 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/enumerable.rb +3 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/enumerator/new.rb +40 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/enumerator/with_object.rb +6 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/enumerator.rb +3 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/env/key.rb +5 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/env.rb +3 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/file/atime.rb +5 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/file/basename.rb +5 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/file/binary.rb +6 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/file/blockdev.rb +5 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/file/chardev.rb +5 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/file/chmod.rb +5 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/file/chown.rb +5 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/file/ctime.rb +5 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/file/delete.rb +5 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/file/directory.rb +5 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/file/dirname.rb +5 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/file/executable.rb +5 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/file/executable_real.rb +5 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/file/exist.rb +5 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/file/exists.rb +5 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/file/expand_path.rb +14 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/file/extname.rb +5 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/file/file.rb +5 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/file/ftype.rb +5 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/file/grpowned.rb +5 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/file/join.rb +5 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/file/lchmod.rb +5 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/file/lchown.rb +5 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/file/link.rb +5 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/file/lstat.rb +5 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/file/mtime.rb +5 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/file/new.rb +5 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/file/open.rb +23 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/file/owned.rb +5 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/file/pipe.rb +5 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/file/readable.rb +5 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/file/readable_real.rb +5 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/file/readlink.rb +5 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/file/rename.rb +5 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/file/setgid.rb +5 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/file/setuid.rb +5 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/file/size.rb +14 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/file/socket.rb +5 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/file/split.rb +5 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/file/stat.rb +5 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/file/sticky.rb +5 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/file/symlink.rb +6 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/file/to_path.rb +3 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/file/truncate.rb +5 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/file/unlink.rb +5 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/file/writable.rb +5 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/file/writable_real.rb +5 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/file/zero.rb +5 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/file.rb +3 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/float/round.rb +21 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/float.rb +3 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/hash/assoc.rb +12 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/hash/default_proc.rb +14 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/hash/key.rb +3 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/hash/rassoc.rb +9 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/hash/try_convert.rb +7 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/hash.rb +3 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/integer/magnitude.rb +3 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/integer/round.rb +24 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/integer.rb +3 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/io/binread.rb +10 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/io/open.rb +21 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/io/try_convert.rb +7 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/io/ungetbyte.rb +3 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/io.rb +3 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/kernel/__callee__.rb +7 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/kernel/define_singleton_method.rb +9 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/kernel/public_method.rb +11 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/kernel/public_send.rb +13 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/kernel/require_relative.rb +14 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/kernel.rb +3 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/math/log.rb +20 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/math/log2.rb +5 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/math.rb +3 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/numeric/round.rb +11 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/numeric.rb +3 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/proc/case_compare.rb +6 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/proc/curry.rb +24 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/proc/lambda.rb +40 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/proc/yield.rb +3 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/proc.rb +3 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/range/cover.rb +3 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/range.rb +3 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/regexp/try_convert.rb +7 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/regexp.rb +3 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/stdlib/prime.rb +497 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/stdlib.rb +1 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/string/ascii_only.rb +7 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/string/chr.rb +7 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/string/clear.rb +8 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/string/codepoints.rb +8 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/string/each_codepoint.rb +3 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/string/getbyte.rb +3 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/string/ord.rb +7 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/string/setbyte.rb +3 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/string/try_convert.rb +7 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/string.rb +3 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/symbol/capitalize.rb +7 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/symbol/casecmp.rb +8 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/symbol/comparable.rb +7 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/symbol/comparison.rb +8 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/symbol/downcase.rb +7 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/symbol/element_reference.rb +7 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/symbol/empty.rb +7 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/symbol/length.rb +7 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/symbol/match.rb +9 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/symbol/next.rb +1 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/symbol/size.rb +7 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/symbol/succ.rb +8 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/symbol/swapcase.rb +7 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/symbol/upcase.rb +7 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.1/symbol.rb +3 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.1.rb +3 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.2/array/keep_if.rb +8 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.2/array/product.rb +26 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.2/array/repeated_combination.rb +25 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.2/array/repeated_permutation.rb +26 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.2/array/rotate.rb +17 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.2/array/select.rb +8 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.2/array/sort_by.rb +9 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.2/array/uniq.rb +30 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.2/array.rb +3 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.2/complex/to_r.rb +10 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.2/complex.rb +3 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.2/dir/home.rb +5 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.2/dir.rb +3 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.2/enumerable/chunk.rb +39 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.2/enumerable/collect_concat.rb +1 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.2/enumerable/each_entry.rb +11 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.2/enumerable/flat_map.rb +11 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.2/enumerable/slice_before.rb +30 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.2/enumerable.rb +3 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.2/float/infinity.rb +3 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.2/float/nan.rb +3 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.2/float.rb +3 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.2/hash/keep_if.rb +8 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.2/hash/select.rb +9 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.2/hash.rb +3 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.2/kernel/singleton_class.rb +7 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.2/kernel.rb +3 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.2/random.rb +1 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.2/stdlib/matrix/eigenvalue_decomposition.rb +886 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.2/stdlib/matrix/lup_decomposition.rb +218 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.2/stdlib/matrix.rb +1871 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.2/stdlib/set.rb +13 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.2/stdlib.rb +1 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.2.rb +3 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.3/file/null.rb +16 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.3/file.rb +3 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.3/io/advise.rb +24 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.3/io/binwrite.rb +7 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.3/io/write.rb +7 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.3/io.rb +3 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.3/string/byteslice.rb +36 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.3/string/prepend.rb +10 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.3/string.rb +3 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.3.rb +3 -0
- data/lib/vendor/backports-3.3.5/lib/backports/1.9.rb +2 -0
- data/lib/vendor/backports-3.3.5/lib/backports/2.0.0/array/bsearch.rb +32 -0
- data/lib/vendor/backports-3.3.5/lib/backports/2.0.0/array.rb +3 -0
- data/lib/vendor/backports-3.3.5/lib/backports/2.0.0/enumerable/lazy.rb +216 -0
- data/lib/vendor/backports-3.3.5/lib/backports/2.0.0/enumerable.rb +3 -0
- data/lib/vendor/backports-3.3.5/lib/backports/2.0.0/enumerator/lazy.rb +1 -0
- data/lib/vendor/backports-3.3.5/lib/backports/2.0.0/enumerator.rb +3 -0
- data/lib/vendor/backports-3.3.5/lib/backports/2.0.0/env/to_h.rb +5 -0
- data/lib/vendor/backports-3.3.5/lib/backports/2.0.0/env.rb +3 -0
- data/lib/vendor/backports-3.3.5/lib/backports/2.0.0/hash/default_proc.rb +16 -0
- data/lib/vendor/backports-3.3.5/lib/backports/2.0.0/hash/to_h.rb +7 -0
- data/lib/vendor/backports-3.3.5/lib/backports/2.0.0/hash.rb +3 -0
- data/lib/vendor/backports-3.3.5/lib/backports/2.0.0/nil/to_h.rb +7 -0
- data/lib/vendor/backports-3.3.5/lib/backports/2.0.0/nil.rb +3 -0
- data/lib/vendor/backports-3.3.5/lib/backports/2.0.0/range/bsearch.rb +49 -0
- data/lib/vendor/backports-3.3.5/lib/backports/2.0.0/range.rb +3 -0
- data/lib/vendor/backports-3.3.5/lib/backports/2.0.0/stdlib/abbrev.rb +1 -0
- data/lib/vendor/backports-3.3.5/lib/backports/2.0.0/stdlib/fake_stdlib_lib.rb +1 -0
- data/lib/vendor/backports-3.3.5/lib/backports/2.0.0/stdlib/ostruct.rb +27 -0
- data/lib/vendor/backports-3.3.5/lib/backports/2.0.0/stdlib.rb +1 -0
- data/lib/vendor/backports-3.3.5/lib/backports/2.0.0/struct/to_h.rb +9 -0
- data/lib/vendor/backports-3.3.5/lib/backports/2.0.0/struct.rb +3 -0
- data/lib/vendor/backports-3.3.5/lib/backports/2.0.0.rb +3 -0
- data/lib/vendor/backports-3.3.5/lib/backports/2.0.rb +2 -0
- data/lib/vendor/backports-3.3.5/lib/backports/basic_object.rb +53 -0
- data/lib/vendor/backports-3.3.5/lib/backports/extra/random/MT19937.rb +76 -0
- data/lib/vendor/backports-3.3.5/lib/backports/extra/random/bits_and_bytes.rb +91 -0
- data/lib/vendor/backports-3.3.5/lib/backports/extra/random/implementation.rb +93 -0
- data/lib/vendor/backports-3.3.5/lib/backports/extra/random/load.rb +17 -0
- data/lib/vendor/backports-3.3.5/lib/backports/force/array_map.rb +1 -0
- data/lib/vendor/backports-3.3.5/lib/backports/force/enumerable_map.rb +3 -0
- data/lib/vendor/backports-3.3.5/lib/backports/force/hash_select.rb +9 -0
- data/lib/vendor/backports-3.3.5/lib/backports/force/string_length.rb +10 -0
- data/lib/vendor/backports-3.3.5/lib/backports/force/string_size.rb +1 -0
- data/lib/vendor/backports-3.3.5/lib/backports/rails/array.rb +6 -0
- data/lib/vendor/backports-3.3.5/lib/backports/rails/enumerable.rb +12 -0
- data/lib/vendor/backports-3.3.5/lib/backports/rails/hash.rb +31 -0
- data/lib/vendor/backports-3.3.5/lib/backports/rails/kernel.rb +6 -0
- data/lib/vendor/backports-3.3.5/lib/backports/rails/module.rb +6 -0
- data/lib/vendor/backports-3.3.5/lib/backports/rails/string.rb +42 -0
- data/lib/vendor/backports-3.3.5/lib/backports/rails.rb +4 -0
- data/lib/vendor/backports-3.3.5/lib/backports/tools.rb +343 -0
- data/lib/vendor/backports-3.3.5/lib/backports/version.rb +3 -0
- data/lib/vendor/backports-3.3.5/lib/backports.rb +4 -0
- data/lib/vendor/dante-0.2.0/lib/dante/runner.rb +275 -0
- data/lib/vendor/dante-0.2.0/lib/dante/version.rb +3 -0
- data/lib/vendor/dante-0.2.0/lib/dante.rb +26 -0
- data/lib/vendor/rack-1.5.2/lib/rack/auth/abstract/handler.rb +37 -0
- data/lib/vendor/rack-1.5.2/lib/rack/auth/abstract/request.rb +43 -0
- data/lib/vendor/rack-1.5.2/lib/rack/auth/basic.rb +58 -0
- data/lib/vendor/rack-1.5.2/lib/rack/auth/digest/md5.rb +129 -0
- data/lib/vendor/rack-1.5.2/lib/rack/auth/digest/nonce.rb +51 -0
- data/lib/vendor/rack-1.5.2/lib/rack/auth/digest/params.rb +53 -0
- data/lib/vendor/rack-1.5.2/lib/rack/auth/digest/request.rb +41 -0
- data/lib/vendor/rack-1.5.2/lib/rack/backports/uri/common_18.rb +56 -0
- data/lib/vendor/rack-1.5.2/lib/rack/backports/uri/common_192.rb +52 -0
- data/lib/vendor/rack-1.5.2/lib/rack/backports/uri/common_193.rb +29 -0
- data/lib/vendor/rack-1.5.2/lib/rack/body_proxy.rb +39 -0
- data/lib/vendor/rack-1.5.2/lib/rack/builder.rb +149 -0
- data/lib/vendor/rack-1.5.2/lib/rack/cascade.rb +52 -0
- data/lib/vendor/rack-1.5.2/lib/rack/chunked.rb +58 -0
- data/lib/vendor/rack-1.5.2/lib/rack/commonlogger.rb +64 -0
- data/lib/vendor/rack-1.5.2/lib/rack/conditionalget.rb +67 -0
- data/lib/vendor/rack-1.5.2/lib/rack/config.rb +20 -0
- data/lib/vendor/rack-1.5.2/lib/rack/content_length.rb +33 -0
- data/lib/vendor/rack-1.5.2/lib/rack/content_type.rb +29 -0
- data/lib/vendor/rack-1.5.2/lib/rack/deflater.rb +116 -0
- data/lib/vendor/rack-1.5.2/lib/rack/directory.rb +161 -0
- data/lib/vendor/rack-1.5.2/lib/rack/etag.rb +64 -0
- data/lib/vendor/rack-1.5.2/lib/rack/file.rb +138 -0
- data/lib/vendor/rack-1.5.2/lib/rack/handler/cgi.rb +61 -0
- data/lib/vendor/rack-1.5.2/lib/rack/handler/evented_mongrel.rb +8 -0
- data/lib/vendor/rack-1.5.2/lib/rack/handler/fastcgi.rb +98 -0
- data/lib/vendor/rack-1.5.2/lib/rack/handler/lsws.rb +61 -0
- data/lib/vendor/rack-1.5.2/lib/rack/handler/mongrel.rb +100 -0
- data/lib/vendor/rack-1.5.2/lib/rack/handler/scgi.rb +67 -0
- data/lib/vendor/rack-1.5.2/lib/rack/handler/swiftiplied_mongrel.rb +8 -0
- data/lib/vendor/rack-1.5.2/lib/rack/handler/thin.rb +27 -0
- data/lib/vendor/rack-1.5.2/lib/rack/handler/webrick.rb +81 -0
- data/lib/vendor/rack-1.5.2/lib/rack/handler.rb +107 -0
- data/lib/vendor/rack-1.5.2/lib/rack/head.rb +22 -0
- data/lib/vendor/rack-1.5.2/lib/rack/lint.rb +699 -0
- data/lib/vendor/rack-1.5.2/lib/rack/lobster.rb +65 -0
- data/lib/vendor/rack-1.5.2/lib/rack/lock.rb +26 -0
- data/lib/vendor/rack-1.5.2/lib/rack/logger.rb +18 -0
- data/lib/vendor/rack-1.5.2/lib/rack/methodoverride.rb +31 -0
- data/lib/vendor/rack-1.5.2/lib/rack/mime.rb +677 -0
- data/lib/vendor/rack-1.5.2/lib/rack/mock.rb +190 -0
- data/lib/vendor/rack-1.5.2/lib/rack/multipart/generator.rb +93 -0
- data/lib/vendor/rack-1.5.2/lib/rack/multipart/parser.rb +176 -0
- data/lib/vendor/rack-1.5.2/lib/rack/multipart/uploaded_file.rb +34 -0
- data/lib/vendor/rack-1.5.2/lib/rack/multipart.rb +34 -0
- data/lib/vendor/rack-1.5.2/lib/rack/nulllogger.rb +18 -0
- data/lib/vendor/rack-1.5.2/lib/rack/recursive.rb +61 -0
- data/lib/vendor/rack-1.5.2/lib/rack/reloader.rb +109 -0
- data/lib/vendor/rack-1.5.2/lib/rack/request.rb +380 -0
- data/lib/vendor/rack-1.5.2/lib/rack/response.rb +155 -0
- data/lib/vendor/rack-1.5.2/lib/rack/rewindable_input.rb +104 -0
- data/lib/vendor/rack-1.5.2/lib/rack/runtime.rb +27 -0
- data/lib/vendor/rack-1.5.2/lib/rack/sendfile.rb +155 -0
- data/lib/vendor/rack-1.5.2/lib/rack/server.rb +362 -0
- data/lib/vendor/rack-1.5.2/lib/rack/session/abstract/id.rb +398 -0
- data/lib/vendor/rack-1.5.2/lib/rack/session/cookie.rb +178 -0
- data/lib/vendor/rack-1.5.2/lib/rack/session/memcache.rb +93 -0
- data/lib/vendor/rack-1.5.2/lib/rack/session/pool.rb +79 -0
- data/lib/vendor/rack-1.5.2/lib/rack/showexceptions.rb +378 -0
- data/lib/vendor/rack-1.5.2/lib/rack/showstatus.rb +113 -0
- data/lib/vendor/rack-1.5.2/lib/rack/static.rb +153 -0
- data/lib/vendor/rack-1.5.2/lib/rack/urlmap.rb +76 -0
- data/lib/vendor/rack-1.5.2/lib/rack/utils/okjson.rb +599 -0
- data/lib/vendor/rack-1.5.2/lib/rack/utils.rb +628 -0
- data/lib/vendor/rack-1.5.2/lib/rack.rb +87 -0
- data/lib/vendor/rack-protection-1.5.1/lib/rack/protection/authenticity_token.rb +31 -0
- data/lib/vendor/rack-protection-1.5.1/lib/rack/protection/base.rb +119 -0
- data/lib/vendor/rack-protection-1.5.1/lib/rack/protection/escaped_params.rb +87 -0
- data/lib/vendor/rack-protection-1.5.1/lib/rack/protection/form_token.rb +23 -0
- data/lib/vendor/rack-protection-1.5.1/lib/rack/protection/frame_options.rb +37 -0
- data/lib/vendor/rack-protection-1.5.1/lib/rack/protection/http_origin.rb +32 -0
- data/lib/vendor/rack-protection-1.5.1/lib/rack/protection/ip_spoofing.rb +23 -0
- data/lib/vendor/rack-protection-1.5.1/lib/rack/protection/json_csrf.rb +35 -0
- data/lib/vendor/rack-protection-1.5.1/lib/rack/protection/path_traversal.rb +47 -0
- data/lib/vendor/rack-protection-1.5.1/lib/rack/protection/remote_referrer.rb +20 -0
- data/lib/vendor/rack-protection-1.5.1/lib/rack/protection/remote_token.rb +22 -0
- data/lib/vendor/rack-protection-1.5.1/lib/rack/protection/session_hijacking.rb +36 -0
- data/lib/vendor/rack-protection-1.5.1/lib/rack/protection/version.rb +16 -0
- data/lib/vendor/rack-protection-1.5.1/lib/rack/protection/xss_header.rb +25 -0
- data/lib/vendor/rack-protection-1.5.1/lib/rack/protection.rb +40 -0
- data/lib/vendor/rack-protection-1.5.1/lib/rack-protection.rb +1 -0
- data/lib/vendor/sinatra-1.4.4/.yardopts +5 -0
- data/lib/vendor/sinatra-1.4.4/lib/sinatra/base.rb +2034 -0
- data/lib/vendor/sinatra-1.4.4/lib/sinatra/images/404.png +0 -0
- data/lib/vendor/sinatra-1.4.4/lib/sinatra/images/500.png +0 -0
- data/lib/vendor/sinatra-1.4.4/lib/sinatra/main.rb +34 -0
- data/lib/vendor/sinatra-1.4.4/lib/sinatra/show_exceptions.rb +345 -0
- data/lib/vendor/sinatra-1.4.4/lib/sinatra/version.rb +3 -0
- data/lib/vendor/sinatra-1.4.4/lib/sinatra.rb +4 -0
- data/lib/vendor/sinatra-contrib-1.4.1/lib/sinatra/capture.rb +124 -0
- data/lib/vendor/sinatra-contrib-1.4.1/lib/sinatra/config_file.rb +167 -0
- data/lib/vendor/sinatra-contrib-1.4.1/lib/sinatra/content_for.rb +125 -0
- data/lib/vendor/sinatra-contrib-1.4.1/lib/sinatra/contrib/all.rb +2 -0
- data/lib/vendor/sinatra-contrib-1.4.1/lib/sinatra/contrib/setup.rb +53 -0
- data/lib/vendor/sinatra-contrib-1.4.1/lib/sinatra/contrib/version.rb +17 -0
- data/lib/vendor/sinatra-contrib-1.4.1/lib/sinatra/contrib.rb +39 -0
- data/lib/vendor/sinatra-contrib-1.4.1/lib/sinatra/cookies.rb +331 -0
- data/lib/vendor/sinatra-contrib-1.4.1/lib/sinatra/decompile.rb +121 -0
- data/lib/vendor/sinatra-contrib-1.4.1/lib/sinatra/engine_tracking.rb +96 -0
- data/lib/vendor/sinatra-contrib-1.4.1/lib/sinatra/extension.rb +95 -0
- data/lib/vendor/sinatra-contrib-1.4.1/lib/sinatra/json.rb +131 -0
- data/lib/vendor/sinatra-contrib-1.4.1/lib/sinatra/link_header.rb +132 -0
- data/lib/vendor/sinatra-contrib-1.4.1/lib/sinatra/multi_route.rb +87 -0
- data/lib/vendor/sinatra-contrib-1.4.1/lib/sinatra/namespace.rb +284 -0
- data/lib/vendor/sinatra-contrib-1.4.1/lib/sinatra/reloader.rb +394 -0
- data/lib/vendor/sinatra-contrib-1.4.1/lib/sinatra/respond_with.rb +247 -0
- data/lib/vendor/sinatra-contrib-1.4.1/lib/sinatra/streaming.rb +243 -0
- data/lib/vendor/sinatra-contrib-1.4.1/lib/sinatra/test_helpers.rb +87 -0
- data/lib/vendor/tilt-1.4.1/lib/tilt/asciidoc.rb +34 -0
- data/lib/vendor/tilt-1.4.1/lib/tilt/builder.rb +40 -0
- data/lib/vendor/tilt-1.4.1/lib/tilt/coffee.rb +54 -0
- data/lib/vendor/tilt-1.4.1/lib/tilt/css.rb +80 -0
- data/lib/vendor/tilt-1.4.1/lib/tilt/csv.rb +71 -0
- data/lib/vendor/tilt-1.4.1/lib/tilt/erb.rb +110 -0
- data/lib/vendor/tilt-1.4.1/lib/tilt/etanni.rb +27 -0
- data/lib/vendor/tilt-1.4.1/lib/tilt/haml.rb +64 -0
- data/lib/vendor/tilt-1.4.1/lib/tilt/liquid.rb +45 -0
- data/lib/vendor/tilt-1.4.1/lib/tilt/markaby.rb +52 -0
- data/lib/vendor/tilt-1.4.1/lib/tilt/markdown.rb +214 -0
- data/lib/vendor/tilt-1.4.1/lib/tilt/nokogiri.rb +43 -0
- data/lib/vendor/tilt-1.4.1/lib/tilt/plain.rb +20 -0
- data/lib/vendor/tilt-1.4.1/lib/tilt/radius.rb +55 -0
- data/lib/vendor/tilt-1.4.1/lib/tilt/rdoc.rb +47 -0
- data/lib/vendor/tilt-1.4.1/lib/tilt/string.rb +21 -0
- data/lib/vendor/tilt-1.4.1/lib/tilt/template.rb +292 -0
- data/lib/vendor/tilt-1.4.1/lib/tilt/textile.rb +30 -0
- data/lib/vendor/tilt-1.4.1/lib/tilt/wiki.rb +58 -0
- data/lib/vendor/tilt-1.4.1/lib/tilt/yajl.rb +94 -0
- data/lib/vendor/tilt-1.4.1/lib/tilt.rb +204 -0
- data/scout_realtime.gemspec +30 -0
- data/test/data_for_testing.rb +1 -0
- data/test/lib/metric_test.rb +48 -0
- data/test/models/cpu_test.rb +24 -0
- data/test/models/disk_test.rb +24 -0
- data/test/models/memory_test.rb +24 -0
- data/test/models/network_test.rb +24 -0
- data/test/models/processes_test.rb +24 -0
- data/test/runner_test.rb +30 -0
- data/test/test_helper.rb +4 -0
- metadata +730 -0
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
# Copyright (c) 2009 Michael Fellinger m.fellinger@gmail.com
|
|
2
|
+
# Rack::Reloader is subject to the terms of an MIT-style license.
|
|
3
|
+
# See COPYING or http://www.opensource.org/licenses/mit-license.php.
|
|
4
|
+
|
|
5
|
+
require 'pathname'
|
|
6
|
+
|
|
7
|
+
module Rack
|
|
8
|
+
|
|
9
|
+
# High performant source reloader
|
|
10
|
+
#
|
|
11
|
+
# This class acts as Rack middleware.
|
|
12
|
+
#
|
|
13
|
+
# What makes it especially suited for use in a production environment is that
|
|
14
|
+
# any file will only be checked once and there will only be made one system
|
|
15
|
+
# call stat(2).
|
|
16
|
+
#
|
|
17
|
+
# Please note that this will not reload files in the background, it does so
|
|
18
|
+
# only when actively called.
|
|
19
|
+
#
|
|
20
|
+
# It is performing a check/reload cycle at the start of every request, but
|
|
21
|
+
# also respects a cool down time, during which nothing will be done.
|
|
22
|
+
class Reloader
|
|
23
|
+
def initialize(app, cooldown = 10, backend = Stat)
|
|
24
|
+
@app = app
|
|
25
|
+
@cooldown = cooldown
|
|
26
|
+
@last = (Time.now - cooldown)
|
|
27
|
+
@cache = {}
|
|
28
|
+
@mtimes = {}
|
|
29
|
+
|
|
30
|
+
extend backend
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def call(env)
|
|
34
|
+
if @cooldown and Time.now > @last + @cooldown
|
|
35
|
+
if Thread.list.size > 1
|
|
36
|
+
Thread.exclusive{ reload! }
|
|
37
|
+
else
|
|
38
|
+
reload!
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
@last = Time.now
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
@app.call(env)
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def reload!(stderr = $stderr)
|
|
48
|
+
rotation do |file, mtime|
|
|
49
|
+
previous_mtime = @mtimes[file] ||= mtime
|
|
50
|
+
safe_load(file, mtime, stderr) if mtime > previous_mtime
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
# A safe Kernel::load, issuing the hooks depending on the results
|
|
55
|
+
def safe_load(file, mtime, stderr = $stderr)
|
|
56
|
+
load(file)
|
|
57
|
+
stderr.puts "#{self.class}: reloaded `#{file}'"
|
|
58
|
+
file
|
|
59
|
+
rescue LoadError, SyntaxError => ex
|
|
60
|
+
stderr.puts ex
|
|
61
|
+
ensure
|
|
62
|
+
@mtimes[file] = mtime
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
module Stat
|
|
66
|
+
def rotation
|
|
67
|
+
files = [$0, *$LOADED_FEATURES].uniq
|
|
68
|
+
paths = ['./', *$LOAD_PATH].uniq
|
|
69
|
+
|
|
70
|
+
files.map{|file|
|
|
71
|
+
next if file =~ /\.(so|bundle)$/ # cannot reload compiled files
|
|
72
|
+
|
|
73
|
+
found, stat = figure_path(file, paths)
|
|
74
|
+
next unless found && stat && mtime = stat.mtime
|
|
75
|
+
|
|
76
|
+
@cache[file] = found
|
|
77
|
+
|
|
78
|
+
yield(found, mtime)
|
|
79
|
+
}.compact
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
# Takes a relative or absolute +file+ name, a couple possible +paths+ that
|
|
83
|
+
# the +file+ might reside in. Returns the full path and File::Stat for the
|
|
84
|
+
# path.
|
|
85
|
+
def figure_path(file, paths)
|
|
86
|
+
found = @cache[file]
|
|
87
|
+
found = file if !found and Pathname.new(file).absolute?
|
|
88
|
+
found, stat = safe_stat(found)
|
|
89
|
+
return found, stat if found
|
|
90
|
+
|
|
91
|
+
paths.find do |possible_path|
|
|
92
|
+
path = ::File.join(possible_path, file)
|
|
93
|
+
found, stat = safe_stat(path)
|
|
94
|
+
return ::File.expand_path(found), stat if found
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
return false, false
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
def safe_stat(file)
|
|
101
|
+
return unless file
|
|
102
|
+
stat = ::File.stat(file)
|
|
103
|
+
return file, stat if stat.file?
|
|
104
|
+
rescue Errno::ENOENT, Errno::ENOTDIR, Errno::ESRCH
|
|
105
|
+
@cache.delete(file) and false
|
|
106
|
+
end
|
|
107
|
+
end
|
|
108
|
+
end
|
|
109
|
+
end
|
|
@@ -0,0 +1,380 @@
|
|
|
1
|
+
require 'rack/utils'
|
|
2
|
+
|
|
3
|
+
module Rack
|
|
4
|
+
# Rack::Request provides a convenient interface to a Rack
|
|
5
|
+
# environment. It is stateless, the environment +env+ passed to the
|
|
6
|
+
# constructor will be directly modified.
|
|
7
|
+
#
|
|
8
|
+
# req = Rack::Request.new(env)
|
|
9
|
+
# req.post?
|
|
10
|
+
# req.params["data"]
|
|
11
|
+
#
|
|
12
|
+
# The environment hash passed will store a reference to the Request object
|
|
13
|
+
# instantiated so that it will only instantiate if an instance of the Request
|
|
14
|
+
# object doesn't already exist.
|
|
15
|
+
|
|
16
|
+
class Request
|
|
17
|
+
# The environment of the request.
|
|
18
|
+
attr_reader :env
|
|
19
|
+
|
|
20
|
+
def initialize(env)
|
|
21
|
+
@env = env
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def body; @env["rack.input"] end
|
|
25
|
+
def script_name; @env["SCRIPT_NAME"].to_s end
|
|
26
|
+
def path_info; @env["PATH_INFO"].to_s end
|
|
27
|
+
def request_method; @env["REQUEST_METHOD"] end
|
|
28
|
+
def query_string; @env["QUERY_STRING"].to_s end
|
|
29
|
+
def content_length; @env['CONTENT_LENGTH'] end
|
|
30
|
+
|
|
31
|
+
def content_type
|
|
32
|
+
content_type = @env['CONTENT_TYPE']
|
|
33
|
+
content_type.nil? || content_type.empty? ? nil : content_type
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def session; @env['rack.session'] ||= {} end
|
|
37
|
+
def session_options; @env['rack.session.options'] ||= {} end
|
|
38
|
+
def logger; @env['rack.logger'] end
|
|
39
|
+
|
|
40
|
+
# The media type (type/subtype) portion of the CONTENT_TYPE header
|
|
41
|
+
# without any media type parameters. e.g., when CONTENT_TYPE is
|
|
42
|
+
# "text/plain;charset=utf-8", the media-type is "text/plain".
|
|
43
|
+
#
|
|
44
|
+
# For more information on the use of media types in HTTP, see:
|
|
45
|
+
# http://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.7
|
|
46
|
+
def media_type
|
|
47
|
+
content_type && content_type.split(/\s*[;,]\s*/, 2).first.downcase
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
# The media type parameters provided in CONTENT_TYPE as a Hash, or
|
|
51
|
+
# an empty Hash if no CONTENT_TYPE or media-type parameters were
|
|
52
|
+
# provided. e.g., when the CONTENT_TYPE is "text/plain;charset=utf-8",
|
|
53
|
+
# this method responds with the following Hash:
|
|
54
|
+
# { 'charset' => 'utf-8' }
|
|
55
|
+
def media_type_params
|
|
56
|
+
return {} if content_type.nil?
|
|
57
|
+
Hash[*content_type.split(/\s*[;,]\s*/)[1..-1].
|
|
58
|
+
collect { |s| s.split('=', 2) }.
|
|
59
|
+
map { |k,v| [k.downcase, v] }.flatten]
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
# The character set of the request body if a "charset" media type
|
|
63
|
+
# parameter was given, or nil if no "charset" was specified. Note
|
|
64
|
+
# that, per RFC2616, text/* media types that specify no explicit
|
|
65
|
+
# charset are to be considered ISO-8859-1.
|
|
66
|
+
def content_charset
|
|
67
|
+
media_type_params['charset']
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
def scheme
|
|
71
|
+
if @env['HTTPS'] == 'on'
|
|
72
|
+
'https'
|
|
73
|
+
elsif @env['HTTP_X_FORWARDED_SSL'] == 'on'
|
|
74
|
+
'https'
|
|
75
|
+
elsif @env['HTTP_X_FORWARDED_SCHEME']
|
|
76
|
+
@env['HTTP_X_FORWARDED_SCHEME']
|
|
77
|
+
elsif @env['HTTP_X_FORWARDED_PROTO']
|
|
78
|
+
@env['HTTP_X_FORWARDED_PROTO'].split(',')[0]
|
|
79
|
+
else
|
|
80
|
+
@env["rack.url_scheme"]
|
|
81
|
+
end
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
def ssl?
|
|
85
|
+
scheme == 'https'
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
def host_with_port
|
|
89
|
+
if forwarded = @env["HTTP_X_FORWARDED_HOST"]
|
|
90
|
+
forwarded.split(/,\s?/).last
|
|
91
|
+
else
|
|
92
|
+
@env['HTTP_HOST'] || "#{@env['SERVER_NAME'] || @env['SERVER_ADDR']}:#{@env['SERVER_PORT']}"
|
|
93
|
+
end
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
def port
|
|
97
|
+
if port = host_with_port.split(/:/)[1]
|
|
98
|
+
port.to_i
|
|
99
|
+
elsif port = @env['HTTP_X_FORWARDED_PORT']
|
|
100
|
+
port.to_i
|
|
101
|
+
elsif @env.has_key?("HTTP_X_FORWARDED_HOST")
|
|
102
|
+
DEFAULT_PORTS[scheme]
|
|
103
|
+
else
|
|
104
|
+
@env["SERVER_PORT"].to_i
|
|
105
|
+
end
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
def host
|
|
109
|
+
# Remove port number.
|
|
110
|
+
host_with_port.to_s.gsub(/:\d+\z/, '')
|
|
111
|
+
end
|
|
112
|
+
|
|
113
|
+
def script_name=(s); @env["SCRIPT_NAME"] = s.to_s end
|
|
114
|
+
def path_info=(s); @env["PATH_INFO"] = s.to_s end
|
|
115
|
+
|
|
116
|
+
|
|
117
|
+
# Checks the HTTP request method (or verb) to see if it was of type DELETE
|
|
118
|
+
def delete?; request_method == "DELETE" end
|
|
119
|
+
|
|
120
|
+
# Checks the HTTP request method (or verb) to see if it was of type GET
|
|
121
|
+
def get?; request_method == "GET" end
|
|
122
|
+
|
|
123
|
+
# Checks the HTTP request method (or verb) to see if it was of type HEAD
|
|
124
|
+
def head?; request_method == "HEAD" end
|
|
125
|
+
|
|
126
|
+
# Checks the HTTP request method (or verb) to see if it was of type OPTIONS
|
|
127
|
+
def options?; request_method == "OPTIONS" end
|
|
128
|
+
|
|
129
|
+
# Checks the HTTP request method (or verb) to see if it was of type PATCH
|
|
130
|
+
def patch?; request_method == "PATCH" end
|
|
131
|
+
|
|
132
|
+
# Checks the HTTP request method (or verb) to see if it was of type POST
|
|
133
|
+
def post?; request_method == "POST" end
|
|
134
|
+
|
|
135
|
+
# Checks the HTTP request method (or verb) to see if it was of type PUT
|
|
136
|
+
def put?; request_method == "PUT" end
|
|
137
|
+
|
|
138
|
+
# Checks the HTTP request method (or verb) to see if it was of type TRACE
|
|
139
|
+
def trace?; request_method == "TRACE" end
|
|
140
|
+
|
|
141
|
+
|
|
142
|
+
# The set of form-data media-types. Requests that do not indicate
|
|
143
|
+
# one of the media types presents in this list will not be eligible
|
|
144
|
+
# for form-data / param parsing.
|
|
145
|
+
FORM_DATA_MEDIA_TYPES = [
|
|
146
|
+
'application/x-www-form-urlencoded',
|
|
147
|
+
'multipart/form-data'
|
|
148
|
+
]
|
|
149
|
+
|
|
150
|
+
# The set of media-types. Requests that do not indicate
|
|
151
|
+
# one of the media types presents in this list will not be eligible
|
|
152
|
+
# for param parsing like soap attachments or generic multiparts
|
|
153
|
+
PARSEABLE_DATA_MEDIA_TYPES = [
|
|
154
|
+
'multipart/related',
|
|
155
|
+
'multipart/mixed'
|
|
156
|
+
]
|
|
157
|
+
|
|
158
|
+
# Default ports depending on scheme. Used to decide whether or not
|
|
159
|
+
# to include the port in a generated URI.
|
|
160
|
+
DEFAULT_PORTS = { 'http' => 80, 'https' => 443, 'coffee' => 80 }
|
|
161
|
+
|
|
162
|
+
# Determine whether the request body contains form-data by checking
|
|
163
|
+
# the request Content-Type for one of the media-types:
|
|
164
|
+
# "application/x-www-form-urlencoded" or "multipart/form-data". The
|
|
165
|
+
# list of form-data media types can be modified through the
|
|
166
|
+
# +FORM_DATA_MEDIA_TYPES+ array.
|
|
167
|
+
#
|
|
168
|
+
# A request body is also assumed to contain form-data when no
|
|
169
|
+
# Content-Type header is provided and the request_method is POST.
|
|
170
|
+
def form_data?
|
|
171
|
+
type = media_type
|
|
172
|
+
meth = env["rack.methodoverride.original_method"] || env['REQUEST_METHOD']
|
|
173
|
+
(meth == 'POST' && type.nil?) || FORM_DATA_MEDIA_TYPES.include?(type)
|
|
174
|
+
end
|
|
175
|
+
|
|
176
|
+
# Determine whether the request body contains data by checking
|
|
177
|
+
# the request media_type against registered parse-data media-types
|
|
178
|
+
def parseable_data?
|
|
179
|
+
PARSEABLE_DATA_MEDIA_TYPES.include?(media_type)
|
|
180
|
+
end
|
|
181
|
+
|
|
182
|
+
# Returns the data received in the query string.
|
|
183
|
+
def GET
|
|
184
|
+
if @env["rack.request.query_string"] == query_string
|
|
185
|
+
@env["rack.request.query_hash"]
|
|
186
|
+
else
|
|
187
|
+
@env["rack.request.query_string"] = query_string
|
|
188
|
+
@env["rack.request.query_hash"] = parse_query(query_string)
|
|
189
|
+
end
|
|
190
|
+
end
|
|
191
|
+
|
|
192
|
+
# Returns the data received in the request body.
|
|
193
|
+
#
|
|
194
|
+
# This method support both application/x-www-form-urlencoded and
|
|
195
|
+
# multipart/form-data.
|
|
196
|
+
def POST
|
|
197
|
+
if @env["rack.input"].nil?
|
|
198
|
+
raise "Missing rack.input"
|
|
199
|
+
elsif @env["rack.request.form_input"].eql? @env["rack.input"]
|
|
200
|
+
@env["rack.request.form_hash"]
|
|
201
|
+
elsif form_data? || parseable_data?
|
|
202
|
+
@env["rack.request.form_input"] = @env["rack.input"]
|
|
203
|
+
unless @env["rack.request.form_hash"] = parse_multipart(env)
|
|
204
|
+
form_vars = @env["rack.input"].read
|
|
205
|
+
|
|
206
|
+
# Fix for Safari Ajax postings that always append \0
|
|
207
|
+
# form_vars.sub!(/\0\z/, '') # performance replacement:
|
|
208
|
+
form_vars.slice!(-1) if form_vars[-1] == ?\0
|
|
209
|
+
|
|
210
|
+
@env["rack.request.form_vars"] = form_vars
|
|
211
|
+
@env["rack.request.form_hash"] = parse_query(form_vars)
|
|
212
|
+
|
|
213
|
+
@env["rack.input"].rewind
|
|
214
|
+
end
|
|
215
|
+
@env["rack.request.form_hash"]
|
|
216
|
+
else
|
|
217
|
+
{}
|
|
218
|
+
end
|
|
219
|
+
end
|
|
220
|
+
|
|
221
|
+
# The union of GET and POST data.
|
|
222
|
+
#
|
|
223
|
+
# Note that modifications will not be persisted in the env. Use update_param or delete_param if you want to destructively modify params.
|
|
224
|
+
def params
|
|
225
|
+
@params ||= self.GET.merge(self.POST)
|
|
226
|
+
rescue EOFError
|
|
227
|
+
self.GET.dup
|
|
228
|
+
end
|
|
229
|
+
|
|
230
|
+
# Destructively update a parameter, whether it's in GET and/or POST. Returns nil.
|
|
231
|
+
#
|
|
232
|
+
# The parameter is updated wherever it was previous defined, so GET, POST, or both. If it wasn't previously defined, it's inserted into GET.
|
|
233
|
+
#
|
|
234
|
+
# env['rack.input'] is not touched.
|
|
235
|
+
def update_param(k, v)
|
|
236
|
+
found = false
|
|
237
|
+
if self.GET.has_key?(k)
|
|
238
|
+
found = true
|
|
239
|
+
self.GET[k] = v
|
|
240
|
+
end
|
|
241
|
+
if self.POST.has_key?(k)
|
|
242
|
+
found = true
|
|
243
|
+
self.POST[k] = v
|
|
244
|
+
end
|
|
245
|
+
unless found
|
|
246
|
+
self.GET[k] = v
|
|
247
|
+
end
|
|
248
|
+
@params = nil
|
|
249
|
+
nil
|
|
250
|
+
end
|
|
251
|
+
|
|
252
|
+
# Destructively delete a parameter, whether it's in GET or POST. Returns the value of the deleted parameter.
|
|
253
|
+
#
|
|
254
|
+
# If the parameter is in both GET and POST, the POST value takes precedence since that's how #params works.
|
|
255
|
+
#
|
|
256
|
+
# env['rack.input'] is not touched.
|
|
257
|
+
def delete_param(k)
|
|
258
|
+
v = [ self.POST.delete(k), self.GET.delete(k) ].compact.first
|
|
259
|
+
@params = nil
|
|
260
|
+
v
|
|
261
|
+
end
|
|
262
|
+
|
|
263
|
+
# shortcut for request.params[key]
|
|
264
|
+
def [](key)
|
|
265
|
+
params[key.to_s]
|
|
266
|
+
end
|
|
267
|
+
|
|
268
|
+
# shortcut for request.params[key] = value
|
|
269
|
+
#
|
|
270
|
+
# Note that modifications will not be persisted in the env. Use update_param or delete_param if you want to destructively modify params.
|
|
271
|
+
def []=(key, value)
|
|
272
|
+
params[key.to_s] = value
|
|
273
|
+
end
|
|
274
|
+
|
|
275
|
+
# like Hash#values_at
|
|
276
|
+
def values_at(*keys)
|
|
277
|
+
keys.map{|key| params[key] }
|
|
278
|
+
end
|
|
279
|
+
|
|
280
|
+
# the referer of the client
|
|
281
|
+
def referer
|
|
282
|
+
@env['HTTP_REFERER']
|
|
283
|
+
end
|
|
284
|
+
alias referrer referer
|
|
285
|
+
|
|
286
|
+
def user_agent
|
|
287
|
+
@env['HTTP_USER_AGENT']
|
|
288
|
+
end
|
|
289
|
+
|
|
290
|
+
def cookies
|
|
291
|
+
hash = @env["rack.request.cookie_hash"] ||= {}
|
|
292
|
+
string = @env["HTTP_COOKIE"]
|
|
293
|
+
|
|
294
|
+
return hash if string == @env["rack.request.cookie_string"]
|
|
295
|
+
hash.clear
|
|
296
|
+
|
|
297
|
+
# According to RFC 2109:
|
|
298
|
+
# If multiple cookies satisfy the criteria above, they are ordered in
|
|
299
|
+
# the Cookie header such that those with more specific Path attributes
|
|
300
|
+
# precede those with less specific. Ordering with respect to other
|
|
301
|
+
# attributes (e.g., Domain) is unspecified.
|
|
302
|
+
cookies = Utils.parse_query(string, ';,') { |s| Rack::Utils.unescape(s) rescue s }
|
|
303
|
+
cookies.each { |k,v| hash[k] = Array === v ? v.first : v }
|
|
304
|
+
@env["rack.request.cookie_string"] = string
|
|
305
|
+
hash
|
|
306
|
+
end
|
|
307
|
+
|
|
308
|
+
def xhr?
|
|
309
|
+
@env["HTTP_X_REQUESTED_WITH"] == "XMLHttpRequest"
|
|
310
|
+
end
|
|
311
|
+
|
|
312
|
+
def base_url
|
|
313
|
+
url = "#{scheme}://#{host}"
|
|
314
|
+
url << ":#{port}" if port != DEFAULT_PORTS[scheme]
|
|
315
|
+
url
|
|
316
|
+
end
|
|
317
|
+
|
|
318
|
+
# Tries to return a remake of the original request URL as a string.
|
|
319
|
+
def url
|
|
320
|
+
base_url + fullpath
|
|
321
|
+
end
|
|
322
|
+
|
|
323
|
+
def path
|
|
324
|
+
script_name + path_info
|
|
325
|
+
end
|
|
326
|
+
|
|
327
|
+
def fullpath
|
|
328
|
+
query_string.empty? ? path : "#{path}?#{query_string}"
|
|
329
|
+
end
|
|
330
|
+
|
|
331
|
+
def accept_encoding
|
|
332
|
+
@env["HTTP_ACCEPT_ENCODING"].to_s.split(/\s*,\s*/).map do |part|
|
|
333
|
+
encoding, parameters = part.split(/\s*;\s*/, 2)
|
|
334
|
+
quality = 1.0
|
|
335
|
+
if parameters and /\Aq=([\d.]+)/ =~ parameters
|
|
336
|
+
quality = $1.to_f
|
|
337
|
+
end
|
|
338
|
+
[encoding, quality]
|
|
339
|
+
end
|
|
340
|
+
end
|
|
341
|
+
|
|
342
|
+
def trusted_proxy?(ip)
|
|
343
|
+
ip =~ /\A127\.0\.0\.1\Z|\A(10|172\.(1[6-9]|2[0-9]|30|31)|192\.168)\.|\A::1\Z|\Afd[0-9a-f]{2}:.+|\Alocalhost\Z|\Aunix\Z|\Aunix:/i
|
|
344
|
+
end
|
|
345
|
+
|
|
346
|
+
def ip
|
|
347
|
+
remote_addrs = split_ip_addresses(@env['REMOTE_ADDR'])
|
|
348
|
+
remote_addrs = reject_trusted_ip_addresses(remote_addrs)
|
|
349
|
+
|
|
350
|
+
return remote_addrs.first if remote_addrs.any?
|
|
351
|
+
|
|
352
|
+
forwarded_ips = split_ip_addresses(@env['HTTP_X_FORWARDED_FOR'])
|
|
353
|
+
|
|
354
|
+
if client_ip = @env['HTTP_CLIENT_IP']
|
|
355
|
+
# If forwarded_ips doesn't include the client_ip, it might be an
|
|
356
|
+
# ip spoofing attempt, so we ignore HTTP_CLIENT_IP
|
|
357
|
+
return client_ip if forwarded_ips.include?(client_ip)
|
|
358
|
+
end
|
|
359
|
+
|
|
360
|
+
return reject_trusted_ip_addresses(forwarded_ips).last || @env["REMOTE_ADDR"]
|
|
361
|
+
end
|
|
362
|
+
|
|
363
|
+
protected
|
|
364
|
+
def split_ip_addresses(ip_addresses)
|
|
365
|
+
ip_addresses ? ip_addresses.strip.split(/[,\s]+/) : []
|
|
366
|
+
end
|
|
367
|
+
|
|
368
|
+
def reject_trusted_ip_addresses(ip_addresses)
|
|
369
|
+
ip_addresses.reject { |ip| trusted_proxy?(ip) }
|
|
370
|
+
end
|
|
371
|
+
|
|
372
|
+
def parse_query(qs)
|
|
373
|
+
Utils.parse_nested_query(qs)
|
|
374
|
+
end
|
|
375
|
+
|
|
376
|
+
def parse_multipart(env)
|
|
377
|
+
Rack::Multipart.parse_multipart(env)
|
|
378
|
+
end
|
|
379
|
+
end
|
|
380
|
+
end
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
require 'rack/request'
|
|
2
|
+
require 'rack/utils'
|
|
3
|
+
require 'time'
|
|
4
|
+
|
|
5
|
+
module Rack
|
|
6
|
+
# Rack::Response provides a convenient interface to create a Rack
|
|
7
|
+
# response.
|
|
8
|
+
#
|
|
9
|
+
# It allows setting of headers and cookies, and provides useful
|
|
10
|
+
# defaults (a OK response containing HTML).
|
|
11
|
+
#
|
|
12
|
+
# You can use Response#write to iteratively generate your response,
|
|
13
|
+
# but note that this is buffered by Rack::Response until you call
|
|
14
|
+
# +finish+. +finish+ however can take a block inside which calls to
|
|
15
|
+
# +write+ are synchronous with the Rack response.
|
|
16
|
+
#
|
|
17
|
+
# Your application's +call+ should end returning Response#finish.
|
|
18
|
+
|
|
19
|
+
class Response
|
|
20
|
+
attr_accessor :length
|
|
21
|
+
|
|
22
|
+
def initialize(body=[], status=200, header={})
|
|
23
|
+
@status = status.to_i
|
|
24
|
+
@header = Utils::HeaderHash.new.merge(header)
|
|
25
|
+
|
|
26
|
+
@chunked = "chunked" == @header['Transfer-Encoding']
|
|
27
|
+
@writer = lambda { |x| @body << x }
|
|
28
|
+
@block = nil
|
|
29
|
+
@length = 0
|
|
30
|
+
|
|
31
|
+
@body = []
|
|
32
|
+
|
|
33
|
+
if body.respond_to? :to_str
|
|
34
|
+
write body.to_str
|
|
35
|
+
elsif body.respond_to?(:each)
|
|
36
|
+
body.each { |part|
|
|
37
|
+
write part.to_s
|
|
38
|
+
}
|
|
39
|
+
else
|
|
40
|
+
raise TypeError, "stringable or iterable required"
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
yield self if block_given?
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
attr_reader :header
|
|
47
|
+
attr_accessor :status, :body
|
|
48
|
+
|
|
49
|
+
def [](key)
|
|
50
|
+
header[key]
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
def []=(key, value)
|
|
54
|
+
header[key] = value
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
def set_cookie(key, value)
|
|
58
|
+
Utils.set_cookie_header!(header, key, value)
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
def delete_cookie(key, value={})
|
|
62
|
+
Utils.delete_cookie_header!(header, key, value)
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
def redirect(target, status=302)
|
|
66
|
+
self.status = status
|
|
67
|
+
self["Location"] = target
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
def finish(&block)
|
|
71
|
+
@block = block
|
|
72
|
+
|
|
73
|
+
if [204, 205, 304].include?(status.to_i)
|
|
74
|
+
header.delete "Content-Type"
|
|
75
|
+
header.delete "Content-Length"
|
|
76
|
+
close
|
|
77
|
+
[status.to_i, header, []]
|
|
78
|
+
else
|
|
79
|
+
[status.to_i, header, BodyProxy.new(self){}]
|
|
80
|
+
end
|
|
81
|
+
end
|
|
82
|
+
alias to_a finish # For *response
|
|
83
|
+
alias to_ary finish # For implicit-splat on Ruby 1.9.2
|
|
84
|
+
|
|
85
|
+
def each(&callback)
|
|
86
|
+
@body.each(&callback)
|
|
87
|
+
@writer = callback
|
|
88
|
+
@block.call(self) if @block
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
# Append to body and update Content-Length.
|
|
92
|
+
#
|
|
93
|
+
# NOTE: Do not mix #write and direct #body access!
|
|
94
|
+
#
|
|
95
|
+
def write(str)
|
|
96
|
+
s = str.to_s
|
|
97
|
+
@length += Rack::Utils.bytesize(s) unless @chunked
|
|
98
|
+
@writer.call s
|
|
99
|
+
|
|
100
|
+
header["Content-Length"] = @length.to_s unless @chunked
|
|
101
|
+
str
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
def close
|
|
105
|
+
body.close if body.respond_to?(:close)
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
def empty?
|
|
109
|
+
@block == nil && @body.empty?
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
alias headers header
|
|
113
|
+
|
|
114
|
+
module Helpers
|
|
115
|
+
def invalid?; status < 100 || status >= 600; end
|
|
116
|
+
|
|
117
|
+
def informational?; status >= 100 && status < 200; end
|
|
118
|
+
def successful?; status >= 200 && status < 300; end
|
|
119
|
+
def redirection?; status >= 300 && status < 400; end
|
|
120
|
+
def client_error?; status >= 400 && status < 500; end
|
|
121
|
+
def server_error?; status >= 500 && status < 600; end
|
|
122
|
+
|
|
123
|
+
def ok?; status == 200; end
|
|
124
|
+
def bad_request?; status == 400; end
|
|
125
|
+
def forbidden?; status == 403; end
|
|
126
|
+
def not_found?; status == 404; end
|
|
127
|
+
def method_not_allowed?; status == 405; end
|
|
128
|
+
def unprocessable?; status == 422; end
|
|
129
|
+
|
|
130
|
+
def redirect?; [301, 302, 303, 307].include? status; end
|
|
131
|
+
|
|
132
|
+
# Headers
|
|
133
|
+
attr_reader :headers, :original_headers
|
|
134
|
+
|
|
135
|
+
def include?(header)
|
|
136
|
+
!!headers[header]
|
|
137
|
+
end
|
|
138
|
+
|
|
139
|
+
def content_type
|
|
140
|
+
headers["Content-Type"]
|
|
141
|
+
end
|
|
142
|
+
|
|
143
|
+
def content_length
|
|
144
|
+
cl = headers["Content-Length"]
|
|
145
|
+
cl ? cl.to_i : cl
|
|
146
|
+
end
|
|
147
|
+
|
|
148
|
+
def location
|
|
149
|
+
headers["Location"]
|
|
150
|
+
end
|
|
151
|
+
end
|
|
152
|
+
|
|
153
|
+
include Helpers
|
|
154
|
+
end
|
|
155
|
+
end
|