2013年になりました.今年もよろしくお願いいたします.
普段は座学のプログラミング科目ですが,月末に一度だけ,演習室で実施します.こちらで用意したプログラムを打ち込んだあと,その内容を日本語で書いてもらいます.答案は授業中に回収し,赤入れをして,返却します.
プログラムを打ち込む際に,時間を計測してもらいます.これは,2年前期の補修科目と同じサーバ,同じデータベースを使います.
CGIスクリプトに,何年何月何日以前のデータは検索の対象外とする処理を入れれば,それでおしまいだったのですが,思うことあって,スクリプトファイルに手を加えました.言語はもちろんRubyです.
具体的には:
- DBMSをPostgreSQLからSQLite3へ
- erubyコマンドを使用せず,Pure Rubyで実行
- 一部カラム名を変更(desc→task; SQLで,列名が予約語のとき)
- suexecを使用(SQLite3のデータベースファイル読み書きのため)
サーバは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
#!/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用のデータベースも設定完了です.
データベースや表示のところは変更することなく,動作しました.