Home > KNOWLEDGES > Ruby > ジャストシステムInternetDiskへのバックアップを自動化
ジャストシステムInternetDiskへのバックアップを自動化

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/}

参考資料