CGIを使ってRubyでTwitterスパムを作った

「大人のセンター試験」スパムが流行っているので, これくらいCGIを使えば簡単に作れるやろ〜〜ってノリで作った。試験期間中にも関わらず。ツイートを読み返すと4時間かかったらしい。

引っかかった点をメモする。

システム構成

cgiファイルをcoins機室で書き, 全学計算機から公開する。

Ruby gemを使えない

全学計算機のユーザー環境では gem install できるが, CGIサーバーには反映されないため, requireでエラーになる。幸いにもCGIサーバーにbundler gem はインストールされているため, Gemfile を書き, bundle install --path=./gems でローカルにインストールし, Rubyスクリプト(CGIファイル)内で require 'bundler'; Bundler.require することでgemを使える。

ちなみに, なぜかcoins機室のCentOSではgemをインストールすることができなかった。

セッション管理にはCGIライブラリを使う

RubyCGIを書いている人なんていない(みんなSinatraを使ってる)ので, セッション管理やURIパラメータの取得方法がわかりにくいが, CGIではCGIライブラリを使う。sinatraparams#.[](ハッシュっぽいの)は CGI#.[] に対応。

CGIライブラリはSymbolに対応していない

cgi.header( { status: 'REDIRECT', Location: url }) って書きたくなるけど, これではHTTPヘッダとして扱われないので, ちゃんと cgi.header( { 'status' => 'REDIRECT', 'Location' => url } ) と書かないといけない。

CGIレスポンスの文法

めっちゃ細かかったと思うけど記憶が定かではないから各自で調べて

結局アクセスされたん?

ユーザー認証ページまで進む人はたくさんいるが, 認証してくれたのはこの12時間で1人だけらしい。残念。