require "article" class BBS include Enumerable def initialize( datafile ) @datafile = datafile @list = [] end def get() File.open( @datafile, "r" ) do |file| file.flock( File::LOCK_SH ) file.each do |line| @list.push( Article.new( line ) ) end end end def post( *args ) File.open( @datafile, "r+" ) do |file| file.flock( File::LOCK_EX ) file.each do |line| @list.push( Article.new( line ) ) end file.rewind() file.truncate( 0 ) @list.unshift( Article.post( *args ) ) @list.each do |article| file.puts( article.to_s ) end end end def size @list.size end def each @list.each do |article| yield article end end end class BBSError < StandardError end