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,104 @@
|
|
1
|
+
# -*- encoding: binary -*-
|
2
|
+
require 'tempfile'
|
3
|
+
require 'rack/utils'
|
4
|
+
|
5
|
+
module Rack
|
6
|
+
# Class which can make any IO object rewindable, including non-rewindable ones. It does
|
7
|
+
# this by buffering the data into a tempfile, which is rewindable.
|
8
|
+
#
|
9
|
+
# rack.input is required to be rewindable, so if your input stream IO is non-rewindable
|
10
|
+
# by nature (e.g. a pipe or a socket) then you can wrap it in an object of this class
|
11
|
+
# to easily make it rewindable.
|
12
|
+
#
|
13
|
+
# Don't forget to call #close when you're done. This frees up temporary resources that
|
14
|
+
# RewindableInput uses, though it does *not* close the original IO object.
|
15
|
+
class RewindableInput
|
16
|
+
def initialize(io)
|
17
|
+
@io = io
|
18
|
+
@rewindable_io = nil
|
19
|
+
@unlinked = false
|
20
|
+
end
|
21
|
+
|
22
|
+
def gets
|
23
|
+
make_rewindable unless @rewindable_io
|
24
|
+
@rewindable_io.gets
|
25
|
+
end
|
26
|
+
|
27
|
+
def read(*args)
|
28
|
+
make_rewindable unless @rewindable_io
|
29
|
+
@rewindable_io.read(*args)
|
30
|
+
end
|
31
|
+
|
32
|
+
def each(&block)
|
33
|
+
make_rewindable unless @rewindable_io
|
34
|
+
@rewindable_io.each(&block)
|
35
|
+
end
|
36
|
+
|
37
|
+
def rewind
|
38
|
+
make_rewindable unless @rewindable_io
|
39
|
+
@rewindable_io.rewind
|
40
|
+
end
|
41
|
+
|
42
|
+
# Closes this RewindableInput object without closing the originally
|
43
|
+
# wrapped IO oject. Cleans up any temporary resources that this RewindableInput
|
44
|
+
# has created.
|
45
|
+
#
|
46
|
+
# This method may be called multiple times. It does nothing on subsequent calls.
|
47
|
+
def close
|
48
|
+
if @rewindable_io
|
49
|
+
if @unlinked
|
50
|
+
@rewindable_io.close
|
51
|
+
else
|
52
|
+
@rewindable_io.close!
|
53
|
+
end
|
54
|
+
@rewindable_io = nil
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
private
|
59
|
+
|
60
|
+
# Ruby's Tempfile class has a bug. Subclass it and fix it.
|
61
|
+
class Tempfile < ::Tempfile
|
62
|
+
def _close
|
63
|
+
@tmpfile.close if @tmpfile
|
64
|
+
@data[1] = nil if @data
|
65
|
+
@tmpfile = nil
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
def make_rewindable
|
70
|
+
# Buffer all data into a tempfile. Since this tempfile is private to this
|
71
|
+
# RewindableInput object, we chmod it so that nobody else can read or write
|
72
|
+
# it. On POSIX filesystems we also unlink the file so that it doesn't
|
73
|
+
# even have a file entry on the filesystem anymore, though we can still
|
74
|
+
# access it because we have the file handle open.
|
75
|
+
@rewindable_io = Tempfile.new('RackRewindableInput')
|
76
|
+
@rewindable_io.chmod(0000)
|
77
|
+
@rewindable_io.set_encoding(Encoding::BINARY) if @rewindable_io.respond_to?(:set_encoding)
|
78
|
+
@rewindable_io.binmode
|
79
|
+
if filesystem_has_posix_semantics?
|
80
|
+
# Use ::File.unlink as 1.9.1 Tempfile has a bug where unlink closes the file!
|
81
|
+
::File.unlink @rewindable_io.path
|
82
|
+
raise 'Unlink failed. IO closed.' if @rewindable_io.closed?
|
83
|
+
@unlinked = true
|
84
|
+
end
|
85
|
+
|
86
|
+
buffer = ""
|
87
|
+
while @io.read(1024 * 4, buffer)
|
88
|
+
entire_buffer_written_out = false
|
89
|
+
while !entire_buffer_written_out
|
90
|
+
written = @rewindable_io.write(buffer)
|
91
|
+
entire_buffer_written_out = written == Rack::Utils.bytesize(buffer)
|
92
|
+
if !entire_buffer_written_out
|
93
|
+
buffer.slice!(0 .. written - 1)
|
94
|
+
end
|
95
|
+
end
|
96
|
+
end
|
97
|
+
@rewindable_io.rewind
|
98
|
+
end
|
99
|
+
|
100
|
+
def filesystem_has_posix_semantics?
|
101
|
+
RUBY_PLATFORM !~ /(mswin|mingw|cygwin|java)/
|
102
|
+
end
|
103
|
+
end
|
104
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module Rack
|
2
|
+
# Sets an "X-Runtime" response header, indicating the response
|
3
|
+
# time of the request, in seconds
|
4
|
+
#
|
5
|
+
# You can put it right before the application to see the processing
|
6
|
+
# time, or before all the other middlewares to include time for them,
|
7
|
+
# too.
|
8
|
+
class Runtime
|
9
|
+
def initialize(app, name = nil)
|
10
|
+
@app = app
|
11
|
+
@header_name = "X-Runtime"
|
12
|
+
@header_name << "-#{name}" if name
|
13
|
+
end
|
14
|
+
|
15
|
+
def call(env)
|
16
|
+
start_time = Time.now
|
17
|
+
status, headers, body = @app.call(env)
|
18
|
+
request_time = Time.now - start_time
|
19
|
+
|
20
|
+
if !headers.has_key?(@header_name)
|
21
|
+
headers[@header_name] = "%0.6f" % request_time
|
22
|
+
end
|
23
|
+
|
24
|
+
[status, headers, body]
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,155 @@
|
|
1
|
+
require 'rack/file'
|
2
|
+
|
3
|
+
module Rack
|
4
|
+
|
5
|
+
# = Sendfile
|
6
|
+
#
|
7
|
+
# The Sendfile middleware intercepts responses whose body is being
|
8
|
+
# served from a file and replaces it with a server specific X-Sendfile
|
9
|
+
# header. The web server is then responsible for writing the file contents
|
10
|
+
# to the client. This can dramatically reduce the amount of work required
|
11
|
+
# by the Ruby backend and takes advantage of the web server's optimized file
|
12
|
+
# delivery code.
|
13
|
+
#
|
14
|
+
# In order to take advantage of this middleware, the response body must
|
15
|
+
# respond to +to_path+ and the request must include an X-Sendfile-Type
|
16
|
+
# header. Rack::File and other components implement +to_path+ so there's
|
17
|
+
# rarely anything you need to do in your application. The X-Sendfile-Type
|
18
|
+
# header is typically set in your web servers configuration. The following
|
19
|
+
# sections attempt to document
|
20
|
+
#
|
21
|
+
# === Nginx
|
22
|
+
#
|
23
|
+
# Nginx supports the X-Accel-Redirect header. This is similar to X-Sendfile
|
24
|
+
# but requires parts of the filesystem to be mapped into a private URL
|
25
|
+
# hierarachy.
|
26
|
+
#
|
27
|
+
# The following example shows the Nginx configuration required to create
|
28
|
+
# a private "/files/" area, enable X-Accel-Redirect, and pass the special
|
29
|
+
# X-Sendfile-Type and X-Accel-Mapping headers to the backend:
|
30
|
+
#
|
31
|
+
# location ~ /files/(.*) {
|
32
|
+
# internal;
|
33
|
+
# alias /var/www/$1;
|
34
|
+
# }
|
35
|
+
#
|
36
|
+
# location / {
|
37
|
+
# proxy_redirect off;
|
38
|
+
#
|
39
|
+
# proxy_set_header Host $host;
|
40
|
+
# proxy_set_header X-Real-IP $remote_addr;
|
41
|
+
# proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
42
|
+
#
|
43
|
+
# proxy_set_header X-Sendfile-Type X-Accel-Redirect;
|
44
|
+
# proxy_set_header X-Accel-Mapping /var/www/=/files/;
|
45
|
+
#
|
46
|
+
# proxy_pass http://127.0.0.1:8080/;
|
47
|
+
# }
|
48
|
+
#
|
49
|
+
# Note that the X-Sendfile-Type header must be set exactly as shown above.
|
50
|
+
# The X-Accel-Mapping header should specify the location on the file system,
|
51
|
+
# followed by an equals sign (=), followed name of the private URL pattern
|
52
|
+
# that it maps to. The middleware performs a simple substitution on the
|
53
|
+
# resulting path.
|
54
|
+
#
|
55
|
+
# See Also: http://wiki.codemongers.com/NginxXSendfile
|
56
|
+
#
|
57
|
+
# === lighttpd
|
58
|
+
#
|
59
|
+
# Lighttpd has supported some variation of the X-Sendfile header for some
|
60
|
+
# time, although only recent version support X-Sendfile in a reverse proxy
|
61
|
+
# configuration.
|
62
|
+
#
|
63
|
+
# $HTTP["host"] == "example.com" {
|
64
|
+
# proxy-core.protocol = "http"
|
65
|
+
# proxy-core.balancer = "round-robin"
|
66
|
+
# proxy-core.backends = (
|
67
|
+
# "127.0.0.1:8000",
|
68
|
+
# "127.0.0.1:8001",
|
69
|
+
# ...
|
70
|
+
# )
|
71
|
+
#
|
72
|
+
# proxy-core.allow-x-sendfile = "enable"
|
73
|
+
# proxy-core.rewrite-request = (
|
74
|
+
# "X-Sendfile-Type" => (".*" => "X-Sendfile")
|
75
|
+
# )
|
76
|
+
# }
|
77
|
+
#
|
78
|
+
# See Also: http://redmine.lighttpd.net/wiki/lighttpd/Docs:ModProxyCore
|
79
|
+
#
|
80
|
+
# === Apache
|
81
|
+
#
|
82
|
+
# X-Sendfile is supported under Apache 2.x using a separate module:
|
83
|
+
#
|
84
|
+
# https://tn123.org/mod_xsendfile/
|
85
|
+
#
|
86
|
+
# Once the module is compiled and installed, you can enable it using
|
87
|
+
# XSendFile config directive:
|
88
|
+
#
|
89
|
+
# RequestHeader Set X-Sendfile-Type X-Sendfile
|
90
|
+
# ProxyPassReverse / http://localhost:8001/
|
91
|
+
# XSendFile on
|
92
|
+
#
|
93
|
+
# === Mapping parameter
|
94
|
+
#
|
95
|
+
# The third parameter allows for an overriding extension of the
|
96
|
+
# X-Accel-Mapping header. Mappings should be provided in tuples of internal to
|
97
|
+
# external. The internal values may contain regular expression syntax, they
|
98
|
+
# will be matched with case indifference.
|
99
|
+
|
100
|
+
class Sendfile
|
101
|
+
F = ::File
|
102
|
+
|
103
|
+
def initialize(app, variation=nil, mappings=[])
|
104
|
+
@app = app
|
105
|
+
@variation = variation
|
106
|
+
@mappings = mappings.map do |internal, external|
|
107
|
+
[/^#{internal}/i, external]
|
108
|
+
end
|
109
|
+
end
|
110
|
+
|
111
|
+
def call(env)
|
112
|
+
status, headers, body = @app.call(env)
|
113
|
+
if body.respond_to?(:to_path)
|
114
|
+
case type = variation(env)
|
115
|
+
when 'X-Accel-Redirect'
|
116
|
+
path = F.expand_path(body.to_path)
|
117
|
+
if url = map_accel_path(env, path)
|
118
|
+
headers['Content-Length'] = '0'
|
119
|
+
headers[type] = url
|
120
|
+
body.close if body.respond_to?(:close)
|
121
|
+
body = []
|
122
|
+
else
|
123
|
+
env['rack.errors'].puts "X-Accel-Mapping header missing"
|
124
|
+
end
|
125
|
+
when 'X-Sendfile', 'X-Lighttpd-Send-File'
|
126
|
+
path = F.expand_path(body.to_path)
|
127
|
+
headers['Content-Length'] = '0'
|
128
|
+
headers[type] = path
|
129
|
+
body.close if body.respond_to?(:close)
|
130
|
+
body = []
|
131
|
+
when '', nil
|
132
|
+
else
|
133
|
+
env['rack.errors'].puts "Unknown x-sendfile variation: '#{variation}'.\n"
|
134
|
+
end
|
135
|
+
end
|
136
|
+
[status, headers, body]
|
137
|
+
end
|
138
|
+
|
139
|
+
private
|
140
|
+
def variation(env)
|
141
|
+
@variation ||
|
142
|
+
env['sendfile.type'] ||
|
143
|
+
env['HTTP_X_SENDFILE_TYPE']
|
144
|
+
end
|
145
|
+
|
146
|
+
def map_accel_path(env, path)
|
147
|
+
if mapping = @mappings.find { |internal,_| internal =~ path }
|
148
|
+
path.sub(*mapping)
|
149
|
+
elsif mapping = env['HTTP_X_ACCEL_MAPPING']
|
150
|
+
internal, external = mapping.split('=', 2).map{ |p| p.strip }
|
151
|
+
path.sub(/^#{internal}/i, external)
|
152
|
+
end
|
153
|
+
end
|
154
|
+
end
|
155
|
+
end
|
@@ -0,0 +1,362 @@
|
|
1
|
+
require 'optparse'
|
2
|
+
|
3
|
+
module Rack
|
4
|
+
class Server
|
5
|
+
class Options
|
6
|
+
def parse!(args)
|
7
|
+
options = {}
|
8
|
+
opt_parser = OptionParser.new("", 24, ' ') do |opts|
|
9
|
+
opts.banner = "Usage: rackup [ruby options] [rack options] [rackup config]"
|
10
|
+
|
11
|
+
opts.separator ""
|
12
|
+
opts.separator "Ruby options:"
|
13
|
+
|
14
|
+
lineno = 1
|
15
|
+
opts.on("-e", "--eval LINE", "evaluate a LINE of code") { |line|
|
16
|
+
eval line, TOPLEVEL_BINDING, "-e", lineno
|
17
|
+
lineno += 1
|
18
|
+
}
|
19
|
+
|
20
|
+
opts.on("-b", "--builder BUILDER_LINE", "evaluate a BUILDER_LINE of code as a builder script") { |line|
|
21
|
+
options[:builder] = line
|
22
|
+
}
|
23
|
+
|
24
|
+
opts.on("-d", "--debug", "set debugging flags (set $DEBUG to true)") {
|
25
|
+
options[:debug] = true
|
26
|
+
}
|
27
|
+
opts.on("-w", "--warn", "turn warnings on for your script") {
|
28
|
+
options[:warn] = true
|
29
|
+
}
|
30
|
+
|
31
|
+
opts.on("-I", "--include PATH",
|
32
|
+
"specify $LOAD_PATH (may be used more than once)") { |path|
|
33
|
+
(options[:include] ||= []).concat(path.split(":"))
|
34
|
+
}
|
35
|
+
|
36
|
+
opts.on("-r", "--require LIBRARY",
|
37
|
+
"require the library, before executing your script") { |library|
|
38
|
+
options[:require] = library
|
39
|
+
}
|
40
|
+
|
41
|
+
opts.separator ""
|
42
|
+
opts.separator "Rack options:"
|
43
|
+
opts.on("-s", "--server SERVER", "serve using SERVER (thin/puma/webrick/mongrel)") { |s|
|
44
|
+
options[:server] = s
|
45
|
+
}
|
46
|
+
|
47
|
+
opts.on("-o", "--host HOST", "listen on HOST (default: 0.0.0.0)") { |host|
|
48
|
+
options[:Host] = host
|
49
|
+
}
|
50
|
+
|
51
|
+
opts.on("-p", "--port PORT", "use PORT (default: 9292)") { |port|
|
52
|
+
options[:Port] = port
|
53
|
+
}
|
54
|
+
|
55
|
+
opts.on("-O", "--option NAME[=VALUE]", "pass VALUE to the server as option NAME. If no VALUE, sets it to true. Run '#{$0} -s SERVER -h' to get a list of options for SERVER") { |name|
|
56
|
+
name, value = name.split('=', 2)
|
57
|
+
value = true if value.nil?
|
58
|
+
options[name.to_sym] = value
|
59
|
+
}
|
60
|
+
|
61
|
+
opts.on("-E", "--env ENVIRONMENT", "use ENVIRONMENT for defaults (default: development)") { |e|
|
62
|
+
options[:environment] = e
|
63
|
+
}
|
64
|
+
|
65
|
+
opts.on("-D", "--daemonize", "run daemonized in the background") { |d|
|
66
|
+
options[:daemonize] = d ? true : false
|
67
|
+
}
|
68
|
+
|
69
|
+
opts.on("-P", "--pid FILE", "file to store PID (default: rack.pid)") { |f|
|
70
|
+
options[:pid] = ::File.expand_path(f)
|
71
|
+
}
|
72
|
+
|
73
|
+
opts.separator ""
|
74
|
+
opts.separator "Common options:"
|
75
|
+
|
76
|
+
opts.on_tail("-h", "-?", "--help", "Show this message") do
|
77
|
+
puts opts
|
78
|
+
puts handler_opts(options)
|
79
|
+
|
80
|
+
exit
|
81
|
+
end
|
82
|
+
|
83
|
+
opts.on_tail("--version", "Show version") do
|
84
|
+
puts "Rack #{Rack.version} (Release: #{Rack.release})"
|
85
|
+
exit
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
begin
|
90
|
+
opt_parser.parse! args
|
91
|
+
rescue OptionParser::InvalidOption => e
|
92
|
+
warn e.message
|
93
|
+
abort opt_parser.to_s
|
94
|
+
end
|
95
|
+
|
96
|
+
options[:config] = args.last if args.last
|
97
|
+
options
|
98
|
+
end
|
99
|
+
|
100
|
+
def handler_opts(options)
|
101
|
+
begin
|
102
|
+
info = []
|
103
|
+
server = Rack::Handler.get(options[:server]) || Rack::Handler.default(options)
|
104
|
+
if server && server.respond_to?(:valid_options)
|
105
|
+
info << ""
|
106
|
+
info << "Server-specific options for #{server.name}:"
|
107
|
+
|
108
|
+
has_options = false
|
109
|
+
server.valid_options.each do |name, description|
|
110
|
+
next if name.to_s.match(/^(Host|Port)[^a-zA-Z]/) # ignore handler's host and port options, we do our own.
|
111
|
+
info << " -O %-21s %s" % [name, description]
|
112
|
+
has_options = true
|
113
|
+
end
|
114
|
+
return "" if !has_options
|
115
|
+
end
|
116
|
+
info.join("\n")
|
117
|
+
rescue NameError
|
118
|
+
return "Warning: Could not find handler specified (#{options[:server] || 'default'}) to determine handler-specific options"
|
119
|
+
end
|
120
|
+
end
|
121
|
+
end
|
122
|
+
|
123
|
+
# Start a new rack server (like running rackup). This will parse ARGV and
|
124
|
+
# provide standard ARGV rackup options, defaulting to load 'config.ru'.
|
125
|
+
#
|
126
|
+
# Providing an options hash will prevent ARGV parsing and will not include
|
127
|
+
# any default options.
|
128
|
+
#
|
129
|
+
# This method can be used to very easily launch a CGI application, for
|
130
|
+
# example:
|
131
|
+
#
|
132
|
+
# Rack::Server.start(
|
133
|
+
# :app => lambda do |e|
|
134
|
+
# [200, {'Content-Type' => 'text/html'}, ['hello world']]
|
135
|
+
# end,
|
136
|
+
# :server => 'cgi'
|
137
|
+
# )
|
138
|
+
#
|
139
|
+
# Further options available here are documented on Rack::Server#initialize
|
140
|
+
def self.start(options = nil)
|
141
|
+
new(options).start
|
142
|
+
end
|
143
|
+
|
144
|
+
attr_writer :options
|
145
|
+
|
146
|
+
# Options may include:
|
147
|
+
# * :app
|
148
|
+
# a rack application to run (overrides :config)
|
149
|
+
# * :config
|
150
|
+
# a rackup configuration file path to load (.ru)
|
151
|
+
# * :environment
|
152
|
+
# this selects the middleware that will be wrapped around
|
153
|
+
# your application. Default options available are:
|
154
|
+
# - development: CommonLogger, ShowExceptions, and Lint
|
155
|
+
# - deployment: CommonLogger
|
156
|
+
# - none: no extra middleware
|
157
|
+
# note: when the server is a cgi server, CommonLogger is not included.
|
158
|
+
# * :server
|
159
|
+
# choose a specific Rack::Handler, e.g. cgi, fcgi, webrick
|
160
|
+
# * :daemonize
|
161
|
+
# if true, the server will daemonize itself (fork, detach, etc)
|
162
|
+
# * :pid
|
163
|
+
# path to write a pid file after daemonize
|
164
|
+
# * :Host
|
165
|
+
# the host address to bind to (used by supporting Rack::Handler)
|
166
|
+
# * :Port
|
167
|
+
# the port to bind to (used by supporting Rack::Handler)
|
168
|
+
# * :AccessLog
|
169
|
+
# webrick acess log options (or supporting Rack::Handler)
|
170
|
+
# * :debug
|
171
|
+
# turn on debug output ($DEBUG = true)
|
172
|
+
# * :warn
|
173
|
+
# turn on warnings ($-w = true)
|
174
|
+
# * :include
|
175
|
+
# add given paths to $LOAD_PATH
|
176
|
+
# * :require
|
177
|
+
# require the given libraries
|
178
|
+
def initialize(options = nil)
|
179
|
+
@options = options
|
180
|
+
@app = options[:app] if options && options[:app]
|
181
|
+
end
|
182
|
+
|
183
|
+
def options
|
184
|
+
@options ||= parse_options(ARGV)
|
185
|
+
end
|
186
|
+
|
187
|
+
def default_options
|
188
|
+
{
|
189
|
+
:environment => ENV['RACK_ENV'] || "development",
|
190
|
+
:pid => nil,
|
191
|
+
:Port => 9292,
|
192
|
+
:Host => "0.0.0.0",
|
193
|
+
:AccessLog => [],
|
194
|
+
:config => "config.ru"
|
195
|
+
}
|
196
|
+
end
|
197
|
+
|
198
|
+
def app
|
199
|
+
@app ||= options[:builder] ? build_app_from_string : build_app_and_options_from_config
|
200
|
+
end
|
201
|
+
|
202
|
+
def self.logging_middleware
|
203
|
+
lambda { |server|
|
204
|
+
server.server.name =~ /CGI/ ? nil : [Rack::CommonLogger, $stderr]
|
205
|
+
}
|
206
|
+
end
|
207
|
+
|
208
|
+
def self.middleware
|
209
|
+
@middleware ||= begin
|
210
|
+
m = Hash.new {|h,k| h[k] = []}
|
211
|
+
m["deployment"].concat [
|
212
|
+
[Rack::ContentLength],
|
213
|
+
[Rack::Chunked],
|
214
|
+
logging_middleware
|
215
|
+
]
|
216
|
+
m["development"].concat m["deployment"] + [[Rack::ShowExceptions], [Rack::Lint]]
|
217
|
+
m
|
218
|
+
end
|
219
|
+
end
|
220
|
+
|
221
|
+
def middleware
|
222
|
+
self.class.middleware
|
223
|
+
end
|
224
|
+
|
225
|
+
def start &blk
|
226
|
+
if options[:warn]
|
227
|
+
$-w = true
|
228
|
+
end
|
229
|
+
|
230
|
+
if includes = options[:include]
|
231
|
+
$LOAD_PATH.unshift(*includes)
|
232
|
+
end
|
233
|
+
|
234
|
+
if library = options[:require]
|
235
|
+
require library
|
236
|
+
end
|
237
|
+
|
238
|
+
if options[:debug]
|
239
|
+
$DEBUG = true
|
240
|
+
require 'pp'
|
241
|
+
p options[:server]
|
242
|
+
pp wrapped_app
|
243
|
+
pp app
|
244
|
+
end
|
245
|
+
|
246
|
+
check_pid! if options[:pid]
|
247
|
+
|
248
|
+
# Touch the wrapped app, so that the config.ru is loaded before
|
249
|
+
# daemonization (i.e. before chdir, etc).
|
250
|
+
wrapped_app
|
251
|
+
|
252
|
+
daemonize_app if options[:daemonize]
|
253
|
+
|
254
|
+
write_pid if options[:pid]
|
255
|
+
|
256
|
+
trap(:INT) do
|
257
|
+
if server.respond_to?(:shutdown)
|
258
|
+
server.shutdown
|
259
|
+
else
|
260
|
+
exit
|
261
|
+
end
|
262
|
+
end
|
263
|
+
|
264
|
+
server.run wrapped_app, options, &blk
|
265
|
+
end
|
266
|
+
|
267
|
+
def server
|
268
|
+
@_server ||= Rack::Handler.get(options[:server]) || Rack::Handler.default(options)
|
269
|
+
end
|
270
|
+
|
271
|
+
private
|
272
|
+
def build_app_and_options_from_config
|
273
|
+
if !::File.exist? options[:config]
|
274
|
+
abort "configuration #{options[:config]} not found"
|
275
|
+
end
|
276
|
+
|
277
|
+
app, options = Rack::Builder.parse_file(self.options[:config], opt_parser)
|
278
|
+
self.options.merge! options
|
279
|
+
app
|
280
|
+
end
|
281
|
+
|
282
|
+
def build_app_from_string
|
283
|
+
Rack::Builder.new_from_string(self.options[:builder])
|
284
|
+
end
|
285
|
+
|
286
|
+
def parse_options(args)
|
287
|
+
options = default_options
|
288
|
+
|
289
|
+
# Don't evaluate CGI ISINDEX parameters.
|
290
|
+
# http://www.meb.uni-bonn.de/docs/cgi/cl.html
|
291
|
+
args.clear if ENV.include?("REQUEST_METHOD")
|
292
|
+
|
293
|
+
options.merge! opt_parser.parse!(args)
|
294
|
+
options[:config] = ::File.expand_path(options[:config])
|
295
|
+
ENV["RACK_ENV"] = options[:environment]
|
296
|
+
options
|
297
|
+
end
|
298
|
+
|
299
|
+
def opt_parser
|
300
|
+
Options.new
|
301
|
+
end
|
302
|
+
|
303
|
+
def build_app(app)
|
304
|
+
middleware[options[:environment]].reverse_each do |middleware|
|
305
|
+
middleware = middleware.call(self) if middleware.respond_to?(:call)
|
306
|
+
next unless middleware
|
307
|
+
klass, *args = middleware
|
308
|
+
app = klass.new(app, *args)
|
309
|
+
end
|
310
|
+
app
|
311
|
+
end
|
312
|
+
|
313
|
+
def wrapped_app
|
314
|
+
@wrapped_app ||= build_app app
|
315
|
+
end
|
316
|
+
|
317
|
+
def daemonize_app
|
318
|
+
if RUBY_VERSION < "1.9"
|
319
|
+
exit if fork
|
320
|
+
Process.setsid
|
321
|
+
exit if fork
|
322
|
+
Dir.chdir "/"
|
323
|
+
STDIN.reopen "/dev/null"
|
324
|
+
STDOUT.reopen "/dev/null", "a"
|
325
|
+
STDERR.reopen "/dev/null", "a"
|
326
|
+
else
|
327
|
+
Process.daemon
|
328
|
+
end
|
329
|
+
end
|
330
|
+
|
331
|
+
def write_pid
|
332
|
+
::File.open(options[:pid], ::File::CREAT | ::File::EXCL | ::File::WRONLY ){ |f| f.write("#{Process.pid}") }
|
333
|
+
at_exit { ::File.delete(options[:pid]) if ::File.exist?(options[:pid]) }
|
334
|
+
rescue Errno::EEXIST
|
335
|
+
check_pid!
|
336
|
+
retry
|
337
|
+
end
|
338
|
+
|
339
|
+
def check_pid!
|
340
|
+
case pidfile_process_status
|
341
|
+
when :running, :not_owned
|
342
|
+
$stderr.puts "A server is already running. Check #{options[:pid]}."
|
343
|
+
exit(1)
|
344
|
+
when :dead
|
345
|
+
::File.delete(options[:pid])
|
346
|
+
end
|
347
|
+
end
|
348
|
+
|
349
|
+
def pidfile_process_status
|
350
|
+
return :exited unless ::File.exist?(options[:pid])
|
351
|
+
|
352
|
+
pid = ::File.read(options[:pid]).to_i
|
353
|
+
Process.kill(0, pid)
|
354
|
+
:running
|
355
|
+
rescue Errno::ESRCH
|
356
|
+
:dead
|
357
|
+
rescue Errno::EPERM
|
358
|
+
:not_owned
|
359
|
+
end
|
360
|
+
|
361
|
+
end
|
362
|
+
end
|