わさっきhb

大学(教育研究)とか ,親馬鹿とか,和歌山とか,とか,とか.

時間計測スクリプトを変更

2013年になりました.今年もよろしくお願いいたします.
普段は座学のプログラミング科目ですが,月末に一度だけ,演習室で実施します.こちらで用意したプログラムを打ち込んだあと,その内容を日本語で書いてもらいます.答案は授業中に回収し,赤入れをして,返却します.
プログラムを打ち込む際に,時間を計測してもらいます.これは,2年前期の補修科目と同じサーバ,同じデータベースを使います.
CGIスクリプトに,何年何月何日以前のデータは検索の対象外とする処理を入れれば,それでおしまいだったのですが,思うことあって,スクリプトファイルに手を加えました.言語はもちろんRubyです.
具体的には:

サーバはUbuntuです.シェルでsudo -iを実行してrootになり,次のコマンドでインストールをしていきました.

# apt-get install apache2-suexec
# apt-get install ruby-dev
# apt-get install sqlite3 libsqlite3-dev libsqlite3-ruby
# gem install sqlite3
# gem install activerecord

Rubyスクリプトのほうは,これまで

#!/usr/bin/eruby -Ku -C utf-8
<%
require 'rubygems'
require 'active_record'
require 'cgi'
require 'clocker.rb' # 自作スクリプト.ClockerUserなども定義

ActiveRecord::Base.establish_connection(
                                        :adapter => 'postgresql',
                                        :host => 'localhost',
                                        :username => '...',
                                        :port => 5432, 
                                        :password => '...',
                                        :database => '...'
                                        )
tg = ClockerUser.new(CGI.new("html4Tr")).analyze_user
%>
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
...

となっていたのを,

#!/usr/bin/env ruby
# -*- coding: utf-8 -*-

require 'rubygems'
require 'active_record'
require 'cgi'
require 'erb'
require './clocker.rb' # 自作スクリプト.ClockerUserなども定義

ActiveRecord::Base.establish_connection(
                                        :adapter => 'sqlite3',
                                        :database => 'database.db'
                                        )
cgi = CGI.new("html5")
tg = ClockerUser.new(cgi).analyze_user

html = <<'EOS'
<!DOCTYPE html>
...
EOS

cgi.out {ERB.new(html).result}

と書き換えました.
データベースの設定は,別のRubyスクリプトファイルにしています.開いて,「Migration」を探すと,「< ActiveRecord::Migration」をつけて定義しているクラスが見つかりました.その中の,「:desc」を,「:task」にすれば,カラム名の変更作業はおしまいです.
pryを起動して,このファイルを読み込み,アップするメソッドを実行すれば,SQLite3用のデータベースも設定完了です.
データベースや表示のところは変更することなく,動作しました.