vividfire.netは「 Radiant CMS 」で構築されており、コンテンツが格納されたSQLite3のデータベースファイルはジャストシステムのオンラインストレージ「InternetDisk (インターネットディスク)」にバックアップを行っています。
InternetDsikにファイルをアップロードするためには通常はwebベースの画面を操作する必要がありますが、 vividfire.netのバックアップは、WWW::Mechanize を使った下記のRubyスクリプトで自動的に行っています。
#!/usr/bin/env ruby
require 'rubygems'
require 'mechanize'
USER_NAME = 'somebody@example.jp'
PASSWORD = 'himitsu'
upload_file = ARGV[0] || ''
if not File.exist?(upload_file) then
puts 'upload a file to www.idisk-just.com'
puts ''
puts 'usage:'
puts "#{__FILE__} upload_file_name"
puts ''
exit 1
end
agent = WWW::Mechanize.new
# InternetDiskトップページ
page = agent.get('http://www.idisk-just.com/')
# ログイン
form = page.forms[0]
form.fields.name('user_name').value = USER_NAME
form.fields.name('password').value = PASSWORD
page = form.submit
# アップロード
# ファイル名セット, 「上書きしない」チェックボックス クリア
page = agent.get('https://www.idisk-just.com/disk/upload')
form = page.forms[0]
form.file_uploads.first.file_name = upload_file
form.checkboxes.name('overwrite').uncheck # checked == false:上書き
page = form.submit
# ログアウト
# URLに'logout'が含まれるリンクを探して最初に見つかったものをクリック
link_logout = page.links.find {|x| x.href =~ /logout/}