scout_realtime 0.5.1
Sign up to get free protection for your applications and to get access to all the features.
- 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,343 @@
|
|
1
|
+
# Methods used internally by the backports.
|
2
|
+
module Backports
|
3
|
+
MOST_EXTREME_OBJECT_EVER = Object.new # :nodoc:
|
4
|
+
class << MOST_EXTREME_OBJECT_EVER
|
5
|
+
def < (whatever)
|
6
|
+
true
|
7
|
+
end
|
8
|
+
|
9
|
+
def > (whatever)
|
10
|
+
true
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
def self.require_relative_dir
|
15
|
+
dir = caller.first.split(/\.rb:\d/,2).first
|
16
|
+
short_path = dir[/.*(backports\/.*)/, 1] << '/'
|
17
|
+
Dir.entries(dir).
|
18
|
+
map{|f| Regexp.last_match(1) if /^(.*)\.rb$/ =~ f}.
|
19
|
+
compact.
|
20
|
+
sort.
|
21
|
+
each do |f|
|
22
|
+
require short_path + f
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
module StdLib
|
27
|
+
class LoadedFeatures
|
28
|
+
if RUBY_VERSION >= "1.9"
|
29
|
+
# Full paths are recorded in $LOADED_FEATURES.
|
30
|
+
@@our_loads = {}
|
31
|
+
# Check loaded features for one that matches "#{any of the load path}/#{feature}"
|
32
|
+
def include?(feature)
|
33
|
+
return true if @@our_loads[feature]
|
34
|
+
# Assume backported features are Ruby libraries (i.e. not C)
|
35
|
+
@loaded ||= $LOADED_FEATURES.group_by{|p| File.basename(p, ".rb")}
|
36
|
+
if fullpaths = @loaded[File.basename(feature, ".rb")]
|
37
|
+
fullpaths.any?{|fullpath|
|
38
|
+
base_dir, = fullpath.partition("/#{feature}")
|
39
|
+
$LOAD_PATH.include?(base_dir)
|
40
|
+
}
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
def self.mark_as_loaded(feature)
|
45
|
+
@@our_loads[feature] = true
|
46
|
+
# Nothing to do, the full path will be OK
|
47
|
+
end
|
48
|
+
|
49
|
+
else
|
50
|
+
# Requested features are recorded in $LOADED_FEATURES
|
51
|
+
def include?(feature)
|
52
|
+
# Assume backported features are Ruby libraries (i.e. not C)
|
53
|
+
$LOADED_FEATURES.include?("#{File.basename(feature, '.rb')}.rb")
|
54
|
+
end
|
55
|
+
|
56
|
+
def self.mark_as_loaded(feature)
|
57
|
+
$LOADED_FEATURES << "#{File.basename(feature, '.rb')}.rb"
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
class << self
|
63
|
+
attr_accessor :extended_lib
|
64
|
+
|
65
|
+
def extend_relative relative_dir="stdlib"
|
66
|
+
loaded = Backports::StdLib::LoadedFeatures.new
|
67
|
+
dir = File.expand_path(relative_dir, File.dirname(caller.first.split(/:\d/,2).first))
|
68
|
+
Dir.entries(dir).
|
69
|
+
map{|f| Regexp.last_match(1) if /^(.*)\.rb$/ =~ f}.
|
70
|
+
compact.
|
71
|
+
each do |f|
|
72
|
+
path = File.expand_path(f, dir)
|
73
|
+
if loaded.include?(f)
|
74
|
+
require path
|
75
|
+
else
|
76
|
+
@extended_lib[f] << path
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
81
|
+
self.extended_lib ||= Hash.new{|h, k| h[k] = []}
|
82
|
+
end
|
83
|
+
|
84
|
+
# Metaprogramming utility to make block optional.
|
85
|
+
# Tests first if block is already optional when given options
|
86
|
+
def self.make_block_optional(mod, *methods)
|
87
|
+
mod = class << mod; self; end unless mod.is_a? Module
|
88
|
+
options = methods.last.is_a?(Hash) ? methods.pop : {}
|
89
|
+
methods.each do |selector|
|
90
|
+
unless mod.method_defined? selector
|
91
|
+
warn "#{mod}##{selector} is not defined, so block can't be made optional"
|
92
|
+
next
|
93
|
+
end
|
94
|
+
unless options[:force]
|
95
|
+
# Check if needed
|
96
|
+
test_on = options.fetch(:test_on)
|
97
|
+
result = begin
|
98
|
+
test_on.send(selector, *options.fetch(:arg, []))
|
99
|
+
rescue LocalJumpError
|
100
|
+
false
|
101
|
+
end
|
102
|
+
next if result.class.name =~ /Enumerator$/
|
103
|
+
end
|
104
|
+
require 'enumerator'
|
105
|
+
arity = mod.instance_method(selector).arity
|
106
|
+
last_arg = []
|
107
|
+
if arity < 0
|
108
|
+
last_arg = ["*rest"]
|
109
|
+
arity = -1-arity
|
110
|
+
end
|
111
|
+
arg_sequence = ((0...arity).map{|i| "arg_#{i}"} + last_arg + ["&block"]).join(", ")
|
112
|
+
|
113
|
+
alias_method_chain(mod, selector, :optional_block) do |aliased_target, punctuation|
|
114
|
+
mod.module_eval <<-end_eval, __FILE__, __LINE__ + 1
|
115
|
+
def #{aliased_target}_with_optional_block#{punctuation}(#{arg_sequence})
|
116
|
+
return to_enum(:#{aliased_target}_without_optional_block#{punctuation}, #{arg_sequence}) unless block_given?
|
117
|
+
#{aliased_target}_without_optional_block#{punctuation}(#{arg_sequence})
|
118
|
+
end
|
119
|
+
end_eval
|
120
|
+
end
|
121
|
+
end
|
122
|
+
end
|
123
|
+
|
124
|
+
# Metaprogramming utility to convert the first file argument to path
|
125
|
+
def self.convert_first_argument_to_path(klass, selector)
|
126
|
+
mod = class << klass; self; end
|
127
|
+
unless mod.method_defined? selector
|
128
|
+
warn "#{mod}##{selector} is not defined, so argument can't converted to path"
|
129
|
+
return
|
130
|
+
end
|
131
|
+
arity = mod.instance_method(selector).arity
|
132
|
+
last_arg = []
|
133
|
+
if arity < 0
|
134
|
+
last_arg = ["*rest"]
|
135
|
+
arity = -1-arity
|
136
|
+
end
|
137
|
+
arg_sequence = (["file"] + (1...arity).map{|i| "arg_#{i}"} + last_arg + ["&block"]).join(", ")
|
138
|
+
|
139
|
+
alias_method_chain(mod, selector, :potential_path_argument) do |aliased_target, punctuation|
|
140
|
+
mod.module_eval <<-end_eval, __FILE__, __LINE__ + 1
|
141
|
+
def #{aliased_target}_with_potential_path_argument#{punctuation}(#{arg_sequence})
|
142
|
+
file = Backports.convert_path(file)
|
143
|
+
#{aliased_target}_without_potential_path_argument#{punctuation}(#{arg_sequence})
|
144
|
+
end
|
145
|
+
end_eval
|
146
|
+
end
|
147
|
+
end
|
148
|
+
|
149
|
+
# Metaprogramming utility to convert all file arguments to paths
|
150
|
+
def self.convert_all_arguments_to_path(klass, selector, skip)
|
151
|
+
mod = class << klass; self; end
|
152
|
+
unless mod.method_defined? selector
|
153
|
+
warn "#{mod}##{selector} is not defined, so arguments can't converted to path"
|
154
|
+
return
|
155
|
+
end
|
156
|
+
first_args = (1..skip).map{|i| "arg_#{i}"}.join(",") + (skip > 0 ? "," : "")
|
157
|
+
alias_method_chain(mod, selector, :potential_path_arguments) do |aliased_target, punctuation|
|
158
|
+
mod.module_eval <<-end_eval, __FILE__, __LINE__ + 1
|
159
|
+
def #{aliased_target}_with_potential_path_arguments#{punctuation}(#{first_args}*files, &block)
|
160
|
+
files = files.map{|f| Backports.convert_path(f) }
|
161
|
+
#{aliased_target}_without_potential_path_arguments#{punctuation}(#{first_args}*files, &block)
|
162
|
+
end
|
163
|
+
end_eval
|
164
|
+
end
|
165
|
+
end
|
166
|
+
|
167
|
+
def self.convert_path(path)
|
168
|
+
try_convert(path, IO, :to_io) ||
|
169
|
+
begin
|
170
|
+
path = path.to_path if path.respond_to?(:to_path)
|
171
|
+
try_convert(path, String, :to_str) || path
|
172
|
+
end
|
173
|
+
end
|
174
|
+
|
175
|
+
# Modified to avoid polluting Module if so desired
|
176
|
+
# (from Rails)
|
177
|
+
def self.alias_method_chain(mod, target, feature)
|
178
|
+
mod.class_eval do
|
179
|
+
# Strip out punctuation on predicates or bang methods since
|
180
|
+
# e.g. target?_without_feature is not a valid method name.
|
181
|
+
aliased_target, punctuation = target.to_s.sub(/([?!=])$/, ''), $1
|
182
|
+
yield(aliased_target, punctuation) if block_given?
|
183
|
+
|
184
|
+
with_method, without_method = "#{aliased_target}_with_#{feature}#{punctuation}", "#{aliased_target}_without_#{feature}#{punctuation}"
|
185
|
+
|
186
|
+
alias_method without_method, target
|
187
|
+
alias_method target, with_method
|
188
|
+
|
189
|
+
case
|
190
|
+
when public_method_defined?(without_method)
|
191
|
+
public target
|
192
|
+
when protected_method_defined?(without_method)
|
193
|
+
protected target
|
194
|
+
when private_method_defined?(without_method)
|
195
|
+
private target
|
196
|
+
end
|
197
|
+
end
|
198
|
+
end
|
199
|
+
|
200
|
+
# Helper method to coerce a value into a specific class.
|
201
|
+
# Raises a TypeError if the coercion fails or the returned value
|
202
|
+
# is not of the right class.
|
203
|
+
# (from Rubinius)
|
204
|
+
def self.coerce_to(obj, cls, meth)
|
205
|
+
return obj if obj.kind_of?(cls)
|
206
|
+
|
207
|
+
begin
|
208
|
+
ret = obj.__send__(meth)
|
209
|
+
rescue Exception => e
|
210
|
+
raise TypeError, "Coercion error: #{obj.inspect}.#{meth} => #{cls} failed:\n" \
|
211
|
+
"(#{e.message})"
|
212
|
+
end
|
213
|
+
raise TypeError, "Coercion error: obj.#{meth} did NOT return a #{cls} (was #{ret.class})" unless ret.kind_of? cls
|
214
|
+
ret
|
215
|
+
end
|
216
|
+
|
217
|
+
def self.coerce_to_int(obj)
|
218
|
+
coerce_to(obj, Integer, :to_int)
|
219
|
+
end
|
220
|
+
|
221
|
+
def self.coerce_to_ary(obj)
|
222
|
+
coerce_to(obj, Array, :to_ary)
|
223
|
+
end
|
224
|
+
|
225
|
+
def self.coerce_to_str(obj)
|
226
|
+
coerce_to(obj, String, :to_str)
|
227
|
+
end
|
228
|
+
|
229
|
+
def self.is_array?(obj)
|
230
|
+
coerce_to(obj, Array, :to_ary) if obj.respond_to? :to_ary
|
231
|
+
end
|
232
|
+
|
233
|
+
def self.try_convert(obj, cls, meth)
|
234
|
+
return obj if obj.kind_of?(cls)
|
235
|
+
return nil unless obj.respond_to?(meth)
|
236
|
+
ret = obj.__send__(meth)
|
237
|
+
raise TypeError, "Coercion error: obj.#{meth} did NOT return a #{cls} (was #{ret.class})" unless ret.nil? || ret.kind_of?(cls)
|
238
|
+
ret
|
239
|
+
end
|
240
|
+
|
241
|
+
# Checks for a failed comparison (in which case it throws an ArgumentError)
|
242
|
+
# Additionally, it maps any negative value to -1 and any positive value to +1
|
243
|
+
# (from Rubinius)
|
244
|
+
def self.coerce_to_comparison(a, b, cmp = (a <=> b))
|
245
|
+
raise ArgumentError, "comparison of #{a} with #{b} failed" if cmp.nil?
|
246
|
+
return 1 if cmp > 0
|
247
|
+
return -1 if cmp < 0
|
248
|
+
0
|
249
|
+
end
|
250
|
+
|
251
|
+
# Used internally to make it easy to deal with optional arguments
|
252
|
+
# (from Rubinius)
|
253
|
+
Undefined = Object.new
|
254
|
+
|
255
|
+
# Used internally.
|
256
|
+
# Safe alias_method that will only alias if the source exists and destination doesn't
|
257
|
+
def self.alias_method(mod, new_name, old_name)
|
258
|
+
mod.instance_eval do
|
259
|
+
alias_method new_name, old_name
|
260
|
+
end if mod.method_defined?(old_name) && !mod.method_defined?(new_name)
|
261
|
+
end
|
262
|
+
|
263
|
+
# Used internally to combine {IO|File} options hash into mode (String or Integer)
|
264
|
+
def self.combine_mode_and_option(mode = nil, options = Backports::Undefined)
|
265
|
+
# Can't backport autoclose, {internal|external|}encoding
|
266
|
+
mode, options = nil, mode if mode.respond_to?(:to_hash) and options == Backports::Undefined
|
267
|
+
options = {} if options == nil || options == Backports::Undefined
|
268
|
+
options = coerce_to(options, Hash, :to_hash)
|
269
|
+
if mode && options[:mode]
|
270
|
+
raise ArgumentError, "mode specified twice"
|
271
|
+
end
|
272
|
+
mode ||= options[:mode] || "r"
|
273
|
+
mode = try_convert(mode, String, :to_str) || try_convert(mode, Integer, :to_int) || mode
|
274
|
+
if options[:textmode] || options[:binmode]
|
275
|
+
text = options[:textmode] || (mode.is_a?(String) && mode =~ /t/)
|
276
|
+
bin = options[:binmode] || (mode.is_a?(String) ? mode =~ /b/ : mode & File::Constants::BINARY != 0)
|
277
|
+
if text && bin
|
278
|
+
raise ArgumentError, "both textmode and binmode specified"
|
279
|
+
end
|
280
|
+
case
|
281
|
+
when !options[:binmode]
|
282
|
+
when mode.is_a?(String)
|
283
|
+
mode.insert(1, "b")
|
284
|
+
else
|
285
|
+
mode |= File::Constants::BINARY
|
286
|
+
end
|
287
|
+
end
|
288
|
+
mode
|
289
|
+
end
|
290
|
+
|
291
|
+
# Used internally to combine {IO|File} options hash into mode (String or Integer) and perm
|
292
|
+
def self.combine_mode_perm_and_option(mode = nil, perm = Backports::Undefined, options = Backports::Undefined)
|
293
|
+
mode, options = nil, mode if mode.is_a?(Hash) and perm == Backports::Undefined
|
294
|
+
perm, options = nil, perm if perm.is_a?(Hash) and options == Backports::Undefined
|
295
|
+
perm = nil if perm == Backports::Undefined
|
296
|
+
options = {} if options == Backports::Undefined
|
297
|
+
if perm && options[:perm]
|
298
|
+
raise ArgumentError, "perm specified twice"
|
299
|
+
end
|
300
|
+
[combine_mode_and_option(mode, options), perm || options[:perm]]
|
301
|
+
end
|
302
|
+
|
303
|
+
def self.write(binary, filename, string, offset, options)
|
304
|
+
offset, options = nil, offset if Hash === offset and options == Backports::Undefined
|
305
|
+
options = {} if options == Backports::Undefined
|
306
|
+
File.open(filename, 'a+'){} if offset # insure existence
|
307
|
+
options = {:mode => offset.nil? ? "w" : "r+"}.merge(options)
|
308
|
+
args = options[:open_args] || [options]
|
309
|
+
File.open(filename, *Backports.combine_mode_perm_and_option(*args)) do |f|
|
310
|
+
f.binmode if binary && f.respond_to?(:binmode)
|
311
|
+
f.seek(offset) unless offset.nil?
|
312
|
+
f.write(string)
|
313
|
+
end
|
314
|
+
end
|
315
|
+
|
316
|
+
def self.suppress_verbose_warnings
|
317
|
+
before = $VERBOSE
|
318
|
+
$VERBOSE = false if $VERBOSE # Set to false (default warning) but not nil (no warnings)
|
319
|
+
yield
|
320
|
+
ensure
|
321
|
+
$VERBOSE = before
|
322
|
+
end
|
323
|
+
end
|
324
|
+
|
325
|
+
module Kernel
|
326
|
+
def require_with_backports(lib)
|
327
|
+
begin
|
328
|
+
return false unless require_without_backports(lib)
|
329
|
+
paths = Backports::StdLib.extended_lib.fetch(lib, nil)
|
330
|
+
rescue LoadError
|
331
|
+
return false if Backports::StdLib::LoadedFeatures.new.include?(lib)
|
332
|
+
raise unless paths = Backports::StdLib.extended_lib.fetch(lib, nil)
|
333
|
+
Backports::StdLib::LoadedFeatures.mark_as_loaded(lib)
|
334
|
+
end
|
335
|
+
if paths
|
336
|
+
paths.each do |path|
|
337
|
+
require_without_backports(path)
|
338
|
+
end
|
339
|
+
end
|
340
|
+
true
|
341
|
+
end
|
342
|
+
Backports.alias_method_chain self, :require, :backports
|
343
|
+
end
|
@@ -0,0 +1,275 @@
|
|
1
|
+
require 'fileutils'
|
2
|
+
require 'optparse'
|
3
|
+
require 'yaml'
|
4
|
+
require 'erb'
|
5
|
+
require 'etc'
|
6
|
+
|
7
|
+
=begin
|
8
|
+
|
9
|
+
This is a utility for setting up a binary executable for a service.
|
10
|
+
|
11
|
+
# Dante::Runner.new("buffet", :pid_path => "/var/run/buffet.pid") do
|
12
|
+
# ...startup service here...
|
13
|
+
# end
|
14
|
+
|
15
|
+
=end
|
16
|
+
|
17
|
+
module Dante
|
18
|
+
class Runner
|
19
|
+
MAX_START_TRIES = 5
|
20
|
+
|
21
|
+
attr_accessor :options, :name, :description, :verify_options_hook
|
22
|
+
|
23
|
+
class << self
|
24
|
+
def run(*args, &block)
|
25
|
+
self.new(*args, &block)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
def initialize(name, defaults={}, &block)
|
30
|
+
@name = name
|
31
|
+
@startup_command = block
|
32
|
+
@options = {
|
33
|
+
:host => '0.0.0.0',
|
34
|
+
:pid_path => "/var/run/#{@name}.pid",
|
35
|
+
:log_path => false,
|
36
|
+
:debug => true
|
37
|
+
}.merge(defaults)
|
38
|
+
end
|
39
|
+
|
40
|
+
# Accepts options for the process
|
41
|
+
# @runner.with_options { |opts| opts.on(...) }
|
42
|
+
def with_options(&block)
|
43
|
+
@with_options = block
|
44
|
+
end
|
45
|
+
|
46
|
+
# Executes the runner based on options
|
47
|
+
# @runner.execute
|
48
|
+
# @runner.execute { ... }
|
49
|
+
def execute(opts={}, &block)
|
50
|
+
parse_options
|
51
|
+
self.options.merge!(opts)
|
52
|
+
|
53
|
+
@verify_options_hook.call(self.options) if @verify_options_hook
|
54
|
+
|
55
|
+
if options.include?(:kill)
|
56
|
+
self.stop
|
57
|
+
else # create process
|
58
|
+
self.stop if options.include?(:restart)
|
59
|
+
|
60
|
+
# If a username, uid, groupname, or gid is passed,
|
61
|
+
# drop privileges accordingly.
|
62
|
+
|
63
|
+
if options[:group]
|
64
|
+
gid = options[:group].is_a?(Integer) ? options[:group] : Etc.getgrnam(options[:group]).gid
|
65
|
+
Process::GID.change_privilege(gid)
|
66
|
+
end
|
67
|
+
|
68
|
+
if options[:user]
|
69
|
+
uid = options[:user].is_a?(Integer) ? options[:user] : Etc.getpwnam(options[:user]).uid
|
70
|
+
Process::UID.change_privilege(uid)
|
71
|
+
end
|
72
|
+
|
73
|
+
@startup_command = block if block_given?
|
74
|
+
options[:daemonize] ? daemonize : start
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
def daemonize
|
79
|
+
return log("Process is already started") if self.daemon_running? # daemon already started
|
80
|
+
|
81
|
+
if !options[:log_path]
|
82
|
+
options[:log_path] = "/var/log/#{@name}.log"
|
83
|
+
end
|
84
|
+
|
85
|
+
# Start process
|
86
|
+
pid = fork do
|
87
|
+
exit if fork
|
88
|
+
Process.setsid
|
89
|
+
exit if fork
|
90
|
+
store_pid(Process.pid)
|
91
|
+
File.umask 0000
|
92
|
+
redirect_output!
|
93
|
+
start
|
94
|
+
end
|
95
|
+
Process.waitpid pid
|
96
|
+
# Ensure process is running
|
97
|
+
if until_true(MAX_START_TRIES) { self.daemon_running? }
|
98
|
+
log "Daemon has started successfully"
|
99
|
+
true
|
100
|
+
else # Failed to start
|
101
|
+
log "Daemonized process couldn't be started"
|
102
|
+
false
|
103
|
+
end
|
104
|
+
end
|
105
|
+
|
106
|
+
def start
|
107
|
+
log "Starting #{@name} service..."
|
108
|
+
|
109
|
+
if log_path = options[:log_path] && options[:daemonize].nil?
|
110
|
+
redirect_output!
|
111
|
+
end
|
112
|
+
|
113
|
+
trap("INT") {
|
114
|
+
interrupt
|
115
|
+
exit
|
116
|
+
}
|
117
|
+
|
118
|
+
trap("TERM"){
|
119
|
+
log "Trying to stop #{@name}..."
|
120
|
+
exit
|
121
|
+
}
|
122
|
+
|
123
|
+
@startup_command.call(self.options) if @startup_command
|
124
|
+
end
|
125
|
+
|
126
|
+
# Stops a daemonized process
|
127
|
+
def stop(kill_arg=nil)
|
128
|
+
if self.daemon_running?
|
129
|
+
kill_pid(kill_arg || options[:kill])
|
130
|
+
until_true(MAX_START_TRIES) { self.daemon_stopped? }
|
131
|
+
else # not running
|
132
|
+
log "No #{@name} processes are running"
|
133
|
+
false
|
134
|
+
end
|
135
|
+
end
|
136
|
+
|
137
|
+
def restart
|
138
|
+
self.stop
|
139
|
+
self.start
|
140
|
+
end
|
141
|
+
|
142
|
+
def interrupt
|
143
|
+
if options[:debug]
|
144
|
+
raise Interrupt
|
145
|
+
sleep 1
|
146
|
+
else
|
147
|
+
log "Interrupt received; stopping #{@name}"
|
148
|
+
end
|
149
|
+
end
|
150
|
+
|
151
|
+
# Returns true if process is not running
|
152
|
+
def daemon_stopped?
|
153
|
+
! self.daemon_running?
|
154
|
+
end
|
155
|
+
|
156
|
+
# Returns running for the daemonized process
|
157
|
+
# self.daemon_running?
|
158
|
+
def daemon_running?
|
159
|
+
return false unless File.exist?(options[:pid_path])
|
160
|
+
Process.kill 0, File.read(options[:pid_path]).to_i
|
161
|
+
true
|
162
|
+
rescue Errno::ESRCH
|
163
|
+
false
|
164
|
+
end
|
165
|
+
|
166
|
+
protected
|
167
|
+
|
168
|
+
def parse_options
|
169
|
+
headline = [@name, @description].compact.join(" - ")
|
170
|
+
OptionParser.new do |opts|
|
171
|
+
opts.summary_width = 25
|
172
|
+
opts.banner = [headline, "\n\n",
|
173
|
+
"Usage: #{@name} [-p port] [-P file] [-d] [-k]\n",
|
174
|
+
" #{@name} --help\n"].compact.join("")
|
175
|
+
opts.separator ""
|
176
|
+
|
177
|
+
opts.on("-p", "--port PORT", Integer, "Specify port", "(default: #{options[:port]})") do |v|
|
178
|
+
options[:port] = v
|
179
|
+
end
|
180
|
+
|
181
|
+
opts.on("-P", "--pid FILE", String, "save PID in FILE when using -d option.", "(default: #{options[:pid_path]})") do |v|
|
182
|
+
options[:pid_path] = File.expand_path(v)
|
183
|
+
end
|
184
|
+
|
185
|
+
opts.on("-d", "--daemon", "Daemonize mode") do |v|
|
186
|
+
options[:daemonize] = v
|
187
|
+
end
|
188
|
+
|
189
|
+
opts.on("-l", "--log FILE", String, "Logfile for output", "(default: /var/log/#{@name}.log)") do |v|
|
190
|
+
options[:log_path] = v
|
191
|
+
end
|
192
|
+
|
193
|
+
opts.on("-k", "--kill [PORT]", String, "Kill specified running daemons - leave blank to kill all.") do |v|
|
194
|
+
options[:kill] = v
|
195
|
+
end
|
196
|
+
|
197
|
+
opts.on("-u", "--user USER", String, "User to run as") do |user|
|
198
|
+
options[:user] = user
|
199
|
+
end
|
200
|
+
|
201
|
+
opts.on("-G", "--group GROUP", String, "Group to run as") do |group|
|
202
|
+
options[:group] = group
|
203
|
+
end
|
204
|
+
|
205
|
+
opts.on_tail("-?", "--help", "Display this usage information.") do
|
206
|
+
puts "#{opts}\n"
|
207
|
+
exit
|
208
|
+
end
|
209
|
+
|
210
|
+
# Load options specified through 'with_options'
|
211
|
+
instance_exec(opts, &@with_options) if @with_options
|
212
|
+
end.parse!
|
213
|
+
options
|
214
|
+
end
|
215
|
+
|
216
|
+
def store_pid(pid)
|
217
|
+
FileUtils.mkdir_p(File.dirname(options[:pid_path]))
|
218
|
+
File.open(options[:pid_path], 'w'){|f| f.write("#{pid}\n")}
|
219
|
+
end
|
220
|
+
|
221
|
+
def kill_pid(k='*')
|
222
|
+
Dir[options[:pid_path]].each do |f|
|
223
|
+
begin
|
224
|
+
pid = IO.read(f).chomp.to_i
|
225
|
+
FileUtils.rm f
|
226
|
+
Process.kill('TERM', pid)
|
227
|
+
log "Stopped PID: #{pid} at #{f}"
|
228
|
+
rescue => e
|
229
|
+
log "Failed to stop! #{k}: #{e}"
|
230
|
+
end
|
231
|
+
end
|
232
|
+
end
|
233
|
+
|
234
|
+
# Redirect output based on log settings (reopens stdout/stderr to specified logfile)
|
235
|
+
# If log_path is nil, redirect to /dev/null to quiet output
|
236
|
+
def redirect_output!
|
237
|
+
if log_path = options[:log_path]
|
238
|
+
# if the log directory doesn't exist, create it
|
239
|
+
FileUtils.mkdir_p File.dirname(options[:log_path]), :mode => 0755
|
240
|
+
# touch the log file to create it
|
241
|
+
FileUtils.touch log_path
|
242
|
+
# Set permissions on the log file
|
243
|
+
File.chmod(0644, log_path)
|
244
|
+
# Reopen $stdout (NOT +STDOUT+) to start writing to the log file
|
245
|
+
$stdout.reopen(log_path, 'a')
|
246
|
+
# Redirect $stderr to $stdout
|
247
|
+
$stderr.reopen $stdout
|
248
|
+
$stdout.sync = true
|
249
|
+
else # redirect to /dev/null
|
250
|
+
# We're not bothering to sync if we're dumping to /dev/null
|
251
|
+
# because /dev/null doesn't care about buffered output
|
252
|
+
$stdin.reopen '/dev/null'
|
253
|
+
$stdout.reopen '/dev/null', 'a'
|
254
|
+
$stderr.reopen $stdout
|
255
|
+
end
|
256
|
+
log_path = options[:log_path] ? options[:log_path] : '/dev/null'
|
257
|
+
end
|
258
|
+
|
259
|
+
# Runs until the block condition is met or the timeout_seconds is exceeded
|
260
|
+
# until_true(10) { ...return_condition... }
|
261
|
+
def until_true(timeout_seconds, interval=1, &block)
|
262
|
+
elapsed_seconds = 0
|
263
|
+
while elapsed_seconds < timeout_seconds && block.call != true
|
264
|
+
elapsed_seconds += interval
|
265
|
+
sleep(interval)
|
266
|
+
end
|
267
|
+
elapsed_seconds < timeout_seconds
|
268
|
+
end
|
269
|
+
|
270
|
+
def log(message)
|
271
|
+
puts message
|
272
|
+
end
|
273
|
+
|
274
|
+
end
|
275
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
require "dante/version"
|
2
|
+
require "dante/runner"
|
3
|
+
|
4
|
+
=begin
|
5
|
+
|
6
|
+
Dante.run("process-name") do
|
7
|
+
begin
|
8
|
+
# ...something here
|
9
|
+
rescue Interrupt
|
10
|
+
# ...shutdown here
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
=end
|
15
|
+
|
16
|
+
module Dante
|
17
|
+
|
18
|
+
# Forks a process and handles option parsing and start/stopping.
|
19
|
+
#
|
20
|
+
# @example
|
21
|
+
# Dante.run("process-name") { Server.run! }
|
22
|
+
#
|
23
|
+
def self.run(name, options={}, &blk)
|
24
|
+
Runner.new(name, options, &blk).execute
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
module Rack
|
2
|
+
module Auth
|
3
|
+
# Rack::Auth::AbstractHandler implements common authentication functionality.
|
4
|
+
#
|
5
|
+
# +realm+ should be set for all handlers.
|
6
|
+
|
7
|
+
class AbstractHandler
|
8
|
+
|
9
|
+
attr_accessor :realm
|
10
|
+
|
11
|
+
def initialize(app, realm=nil, &authenticator)
|
12
|
+
@app, @realm, @authenticator = app, realm, authenticator
|
13
|
+
end
|
14
|
+
|
15
|
+
|
16
|
+
private
|
17
|
+
|
18
|
+
def unauthorized(www_authenticate = challenge)
|
19
|
+
return [ 401,
|
20
|
+
{ 'Content-Type' => 'text/plain',
|
21
|
+
'Content-Length' => '0',
|
22
|
+
'WWW-Authenticate' => www_authenticate.to_s },
|
23
|
+
[]
|
24
|
+
]
|
25
|
+
end
|
26
|
+
|
27
|
+
def bad_request
|
28
|
+
return [ 400,
|
29
|
+
{ 'Content-Type' => 'text/plain',
|
30
|
+
'Content-Length' => '0' },
|
31
|
+
[]
|
32
|
+
]
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|