require 'erb' require 'drb/drb' require 'cgi' require 'nkf' class BGColor def initialize @colors = ['#eeeeff', '#bbbbff'] @count = -1 end attr_accessor :colors def next_bgcolor @count += 1 @count = 0 if @colors.size <= @count "bgcolor='#{@colors[@count]}'" end alias :to_s :next_bgcolor end class ReminderPage include ERB::Util def initialize(reminder) @reminder = reminder end def script_name(cgi) cgi.script_name end def make_param(hash) hash.collect do |k, v| u(k) + '=' + u(v) end.join(';') end def anchor(cgi, hash) %Q++ end alias :a :anchor def a_delete(cgi, key) anchor(cgi, {'cmd'=>'delete', 'key'=>key}) end erb_src = < <% @reminder.to_a.each do |k, v| %> > <% end %> >
<%= k %> <%=h v %> [<%=a_delete(cgi, k)%>X]
 
EOS ERB.new(erb_src).def_method(self, 'build_page(cgi)') def to_html(cgi) build_page(cgi) rescue DRb::DRbConnError %Q+

It seems that the reminder server is downed.

+ end def kconv(str) NKF.nkf('-edXm0', str.to_s) end def do_add(cgi) item ,= cgi['item'] return if item.nil? || item.size == 0 @reminder.add(kconv(item)) end def do_delete(cgi) key ,= cgi['key'] return if key.nil? || key.size == 0 @reminder.delete(key.to_i) end def do_request(cgi) cmd ,= cgi['cmd'] case cmd.to_s when 'add' do_add(cgi) when 'delete' do_delete(cgi) end end end if __FILE__ == $0 there = DRbObject.new_with_uri('druby://localhost:12345') front = ReminderPage.new(there) DRb.start_service('druby://localhost:12346', front) puts DRb.uri DRb.thread.join end