Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

update README, CHANGELOG

  • Loading branch information...
commit 7e1324f49fac5c01440138084a8f6f4ec772f265 1 parent 94a798a
@kitamomonga authored
Showing with 194 additions and 32 deletions.
  1. +11 −0 CHANGELOG
  2. +28 −32 README.rdoc
  3. +155 −0 README.rdoc.ja
View
11 CHANGELOG
@@ -0,0 +1,11 @@
+= ChangeLog
+
+== 0.2.0 (2011-07-13)
+* Mechanize 2.0 support (also works Mechanize 1.0.0)
+* adds nothing to Mechanize#pre_connect_hooks.
+ Mechanize-ProgressBar does not use any Mechanize hooks.
+* socket reading log of Mechanize("reading 1234 bytes"...) are removed when using the same IO.
+ {:suppress_logger => true} is automatically set if agent.log@dev == ProgressBar#out.
+
+== 0.1.1
+* init
View
60 README.rdoc
@@ -1,16 +1,16 @@
= mechanize-progressbar
-Mechanize-Progressbar provides ProgressBar when you use Mechanize#get.
+Mechanize-Progressbar provides ProgressBar when you use Mechanize#get/Page#click.
HTTP response only. HTTP requests are not supported.
-Mechanize-Progressbar sets proc object to Mechanize#pre_connect_hooks.
== you can do
-
+script:
require 'mechanize'
require 'mechanize/progressbar'
agent = Mechanize.new
agent.progressbar{ agent.get(large_file) }
-
+
+$stderr output:
http://host/large_file.zip
15% |ooooooo | 135.2KB 21.9KB/s ETA: 00:00:10
@@ -18,7 +18,7 @@ Mechanize-Progressbar sets proc object to Mechanize#pre_connect_hooks.
- Ruby 1.8.6 or later
- recent Rubygems
-- Mechanize gem
+- Mechanize gem (1.0.0, 2.0)
- ProgressBar gem
== USAGE
@@ -38,57 +38,53 @@ Link#click also works.
agent.page.link_with(:text => 'download here').click
end
-If you want to modify ProgressBar object, set options.
+=== config ProgressBar
+
+If you want to modify ProgressBar object, set options to argument.
- pbar = ProgressBar.new(title, total, out)
- pbar.format = format
- pbar.format_arguments = format_arguments
+ pbar = ProgressBar.new(@title, @total, @out)
+ pbar.format = @format
+ pbar.format_arguments = @format_arguments
is
agent = Mechanize.new
agent.progressbar(
- :title => title,
- :total => total,
- :out => out,
- :format => format,
- :format_arguments => format_arguments
+ :title => @title,
+ :total => @total,
+ :out => @out,
+ :format => @format,
+ :format_arguments => @format_arguments
){ agent.get(large_file) }
Mechanize-Progressbar prints the URL to $stderr before progressbar.
+script:
agent.progressbar{ agent.get(large_file) }
-
+output:
http://uri.host/large_file.zip
15% |ooooo | 135.2KB 21.9KB/s ETA: 00:00:10
If you do not want the "two-line mode", set (:single => true).
+script:
agent.progressbar(:single => true){ agent.get(large_file) }
-
+output:
uri.host: 15% |ooo | 135.2KB 21.9KB/s ETA: 00:00:10
-When you use Mechanize Logger and same output(i.e, agent.log=Logger.new($stdout)),
-set (:suppress_logger => true).
+When Mechanize Logger output is same to ProgressBar (i.e, agent.log=Logger.new($stderr)),
+Mechanize::ProgressBar stops showing socket read log.
- agent.log = Logger.new($stdout)
+script:
+ agent.log = Logger.new($stderr)
agent.progressbar{ agent.get(large_file) }
-
- http://uri.host/large_file.zip
- D, [...] DEBUG -- : Read 1000 bytes
- 10% |ooo | 100.2KB 21.9KB/s ETA: 00:00:11
- D, [...] DEBUG -- : Read 2000 bytes
- 15% |ooooo | 200.1KB 21.9KB/s ETA: 00:00:08
- ...
-
- agent.log = Logger.new($stdout)
- agent.progressbar(:suppress_logger => true){ agent.get(large_file) }
-
+output:
http://uri.host/large_file.zip
100% |ooooooooooooooooooooooooooooooo| 1024.0KB 21.9KB/s Time: 00:00:20
D, [...] DEBUG -- : Read 102400 bytes
-LARGE FILE DOWNLOAD NOTE:
+
+== LARGE FILE DOWNLOAD NOTE
Mechanize keeps all the got files as String object.
When you get the five 100MB files, Mechanize uses at least 500MB memory.
@@ -98,7 +94,7 @@ If you wish to run Mechanize with minimum memory usage, try
== Licence
-GNU GENERAL PUBLIC LICENSE Version 2
+MIT
alike Mechanize.
View
155 README.rdoc.ja
@@ -0,0 +1,155 @@
+= mechanize-progressbar
+
+Mechanize-Progressbar は Mechanize で get や click したときにテキストの進捗バーを表示します(ProgressBar gem 使用)。
+サーバからファイルを取得するときのみ有効です。GET や POST の送信進行状況を表示させることはできません。
+
+== できること
+script:
+ require 'mechanize'
+ require 'mechanize/progressbar'
+ agent = Mechanize.new
+ agent.progressbar{ agent.get(large_file) }
+
+$stderr output:
+ http://host/large_file.zip
+ 15% |ooooooo | 135.2KB 21.9KB/s ETA: 00:00:10
+
+== 必要なもの
+
+- Ruby 1.8.6 か 1.8.7、1.9.1、1.9.2。jruby では未テスト
+- 最近の Rubygems
+- gem ライブラリ Mechanize (1.0.0 と 2.0 に対応)
+- gem ライブラリ ProgressBar
+
+== USAGE
+
+Mechanize#progressbar のブロック内でファイルを get してください。
+
+ require 'mechanize'
+ require 'mechanize/progressbar'
+ agent = Mechanize.new
+ agent.progressbar{ agent.get(large_file) }
+
+リンクをクリックしても動作します。
+
+ agent = Mechanize.new
+ agent.get(some_page)
+ agent.progressbar do
+ agent.page.link_with(:text => 'download here').click
+ end
+
+ProgressBar の設定を変更したい場合は、キーワード風引数で指定します。
+ProgressBar で以下のように設定するはずだった場合は、
+
+ pbar = ProgressBar.new(@title, @total, @out)
+ pbar.format = @format
+ pbar.format_arguments = @format_arguments
+
+次のように引数に書くことになります。
+今のところ設定は保存されず、ブロックを作成するたびに引数を指定する必要があります。
+
+ agent = Mechanize.new
+ agent.progressbar(
+ :title => @title,
+ :total => @total,
+ :out => @out,
+ :format => @format,
+ :format_arguments => @format_arguments
+ ){ agent.get(large_file) }
+
+=== {:title => @title}
+
+タイトルを指定します。デフォルトの 2行表示では1行目に、1行表示モード(:single)では左端に表示されます。
+ProgressBar 側の制限で、1行表示モードでは半角15文字までしか表示されません。
+1行モード時には ProgressBar#initialize の第 1引数に渡されます。ProgressBar のマニュアルを参照してください。
+
+=== {:total => @total}
+
+最終的なバイト数を指定します。
+ProgressBar#initialize の第 2引数に渡されます。ProgressBar のマニュアルを参照してください。
+デフォルトではレスポンスヘッダの Content-Length を利用しています。
+
+=== {:out => @out}
+
+出力先の IO オブジェクトを指定します。デフォルトでは $stderr です。
+ProgressBar#initialize の第 3引数に渡されます。ProgressBar のマニュアルを参照してください。
+
+=== {:format => @format}
+
+ProgressBar のフォーマットを指定しますその1です。
+ProgressBar#format= のマニュアルを参照してください。
+
+=== {:format_arguments => @format_arguments}
+
+ProgressBar のフォーマットを指定しますその2です。
+ProgressBar#format_arguments= のマニュアルを参照してください。
+
+=== {:reversed => true/false}
+
+ProgressBar の代わりに ReversedProgressBar を使用します。
+バーの増加表示方向が逆になります。
+
+=== {:file_transfer_mode => true/false}
+
+ProgressBar をファイル転送用の表示にします。デフォルトで true です。
+ProgressBar#file_transfer_mode= のマニュアルを参照してください。
+
+=== {:single => true/false}
+
+1行モードの可否を設定します。デフォルトでは false で、2行表示になっています。
+
+Mechanize-Progressbar は取得する URL を適当に表示してからプログレスバーを表示しますが、
+
+script:
+ agent.progressbar{ agent.get(large_file) }
+output:
+ http://uri.host/large_file.zip
+ 15% |ooooo | 135.2KB 21.9KB/s ETA: 00:00:10
+
+この部分が2行になってるのが嫌だという場合は、引数に (:single => true) を指定します。
+1行モードだと、ProgressBar gem の本来の表示になります。
+
+script:
+ agent.progressbar(:single => true){ agent.get(large_file) }
+output:
+ uri.host: 15% |ooo | 135.2KB 21.9KB/s ETA: 00:00:10
+
+=== {:suppress_logger => true/false}
+
+Mechanize に Logger が設定されていて、その出力先が ProgressBar と同じだった場合(デフォルトでは$stderr)、
+"Read 1234 bytes" というような逐次のデータ取得表示は自動で抑制されます。
+
+script:
+ agent.log = Logger.new($stderr)
+ agent.progressbar{ agent.get(large_file) }
+output:
+ http://uri.host/large_file.zip
+ 100% |ooooooooooooooooooooooooooooooo| 1024.0KB 21.9KB/s Time: 00:00:20
+ D, [...] DEBUG -- : Read 102400 bytes
+
+最終的なファイルサイズのみ表示されています。
+これを出力先が異なっても行ないたいという場合は、(:suppress_logger => true) としてください。
+Logger の出力に逐次表示が含まれなくなります(あまり使い出がないとは思うのですが)。
+
+(:suppress_logger => false) とすると、出力先が被っていた場合はブログレスバーがぐちゃぐちゃになります。
+おすすめできません。
+
+== ファイル取得時のメモリ使用仕様
+
+Mechanize は取得した全ファイルを履歴兼キャッシュとしてスクリプト終了まで保持し続けています(GCの対象にはなりません)。
+100MBのファイルを5個取得したら、使用メモリは最低でも500MBになっています。
+Mechanize の仕様なのでどうにもならないのですが、履歴数を最低の 1にすることで軽減することはできます。
+
+ agent.max_history = 1
+
+== Licence
+
+Mechanize がないと動作しないので、 Mechanize と同様に MIT ライセンスです。
+
+== Author
+
+kitamomonga
+kitamomonga@gmail.com
+
+きたももんががきたん。
+http://d.hatena.ne.jp/kitamomonga/
Please sign in to comment.
Something went wrong with that request. Please try again.