Ruby の Mechanize を使って自分が作った WEBアプリケーションの機能拡張を比較的簡単に実装できます。この例のアプリケーションの処理がある分類毎なので、それをある程度一括で処理してしまおうというものです。運用上の処理として、対象が多くなると手作業では大変になりますので、利用してみました。 注意するのは、この場合サーバから Perl の cgi を呼び出すので、あまり大量の処理を行うとサーバーに負荷をかけすぎる事になるので、注意して数を調整する配慮は必要となります。 ここで指定しているタイムアウトは、CPU の負荷では無く、一回の呼び出しがネットワークなのでそのタイムアウトになります。 ここで利用している agent.post は、標準のメソッドですが、これを拡張する方法もあります。 ※ 以下のサンプルコードでは、継続行の使い方のガイドラインも示しています
#!/usr/local/bin/ruby print "Content-type: text/html; Charset=shift_jis\n\n" # エラーを出力する為の処理 $stderr = $stdout # Ruby 本体をWEBアプリとして使う時の為の定義 # ( ここでは使っていません ) require "cgi" cgi = CGI.new require 'uri' # さくらインターネットで WWW::Mechanize をインストールして # 利用するのに必要だった定義 ENV['GEM_HOME']="/home/lightbox/gems" $LOAD_PATH.push('/home/lightbox/lib') require 'rubygems' require 'mechanize' # ********************************************************** # 処理本体 # ********************************************************** agent = WWW::Mechanize.new # 呼び出しタイムアウト設定 # ( \ で継続行 ) agent.open_timeout \ = 60 * 10 # ( = 演算子で継続行 ) agent.read_timeout = 60 * 10 # ループ処理用配列 mid = [ 'CprogBase' \ ,'CommonSpec' ] # 以下だと継続行はいりません mid = [ 'CprogBase', 'CommonSpec' ] p mid print "<br>" # 配列の要素ぶんの繰り返し処理 (mid.length).times { |i| agent.post('WEBアプリケーションのURL', { 'SendButton' => '一括', 'CommandField' => 'パスワード', 'mid' => mid[i] }) print "#{mid[i]}<br>" } print "ok"
関連する記事 Mechanize : クラスのメソッドをオーバライド してヘッダーを送れるようにしてiPhoneとしてサーバに認識させる
|
【Rubyの最新記事】
- Ruby(mechanize) で PHP からの JSON 経由でデータベース(MySQL)の値を取得
- Ruby(Mechanize) : ココログギャラリー名の変更
- Ruby : Seesaa の設定ページの「最新の情報に更新」ボタンを Ruby の mechanize で押す
- Ruby : 日本語の正規表現はバイナリで
- Mechanize : クラスのメソッドをオーバライドしてヘッダーを送れるようにしてiPhoneとしてサーバに認識させる
- Ruby : 根本的なエラー処理 / 標準エラー出力の出力先を標準出力に変更する
- Ruby : ココログのアクセス解析ページの当日データの取得
- Ruby : メソッド定義で URLエンコード
- Ruby : Seesaa の複数のブログの現在の訪問者数とページビューの一覧
- Ruby : ココログギャラリーの設定から、Ruby の基本処理
- Ruby : Seesaa のブログ設定画面で、Form選択からコンボボックス、ラジオボタン、チェックボックスの設定