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選択からコンボボックス、ラジオボタン、チェックボックスの設定






