<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -1,7 +1,7 @@
 require 'rubygems'
 spec = Gem::Specification.new do |s|
   s.name = 'camping'
-  s.version = &quot;1.1&quot;
+  s.version = &quot;1.2&quot;
   s.platform = Gem::Platform::RUBY
   s.summary = &quot;miniature rails for stay-at-home moms&quot;
   s.add_dependency('activerecord')</diff>
      <filename>camping.gemspec</filename>
    </modified>
    <modified>
      <diff>@@ -1,13 +1,22 @@
-#!/bin/env ruby
+#!/usr/bin/env ruby
 #
 # Serves all examples, mounted into Webrick.
 #
 require 'stringio'
 require 'webrick/httpserver'
+
+dir = Dir.pwd
 apps = 
     Dir['*'].select do |d|
+        Dir.chdir(dir)
         if File.exists? &quot;#{d}/#{d}.rb&quot;
-            load &quot;#{d}/#{d}.rb&quot;
+            begin
+                Dir.chdir(&quot;#{dir}/#{d}&quot;)
+                load &quot;#{d}.rb&quot;
+                true
+            rescue Exception =&gt; e
+                puts &quot;Camping app `#{d}' will not load: #{e.class} #{e.message}&quot;
+            end
         end
     end
 apps.map! do |app|
@@ -30,19 +39,16 @@ apps.each do |app, klass|
                 self.status = $1.to_i
                 header.delete('status')
               end
-              if header.has_key?('set-cookie')
-                header['set-cookie'].each{|k|
-                  self.cookies &lt;&lt; WEBrick::Cookie.parse_set_cookie(k)
-                }
-                header.delete('set-cookie')
-              end
               header.each{|key, val| self[key] = val.join(&quot;, &quot;) }
             rescue =&gt; ex
               raise WEBrick::HTTPStatus::InternalServerError, ex.message
             end
             self.body = body
         end
+        Dir.chdir(&quot;#{dir}/#{app}&quot;)
         klass.run((req.body and StringIO.new(req.body)), resp)
+        Dir.chdir(dir)
+        nil
     end
 end
 trap(:INT) do</diff>
      <filename>examples/serve</filename>
    </modified>
    <modified>
      <diff>@@ -2,15 +2,15 @@
 module Camping;C=self;S=File.read(__FILE__).gsub(/_{2}FILE_{2}/,__FILE__.dump)
 module Helpers;def R c,*args;p=/\(.+?\)/;args.inject(c.urls.detect{|x|x.scan(p
 ).size==args.size}.dup){|str,a|str.sub(p,(a.method(a.class.primary_key)[]rescue
-a).to_s)};end;def / p;p[/^\//]?@root+p:p end; def errors_for(o); ul.errors { 
-o.errors.each_full { |er| li er } } unless o.errors.empty?; end; end; module Controllers;
-module Base; include Helpers;attr_accessor :input,:cookies,:headers,:body,:status,:root;def
-method_missing(m,*args,&amp;blk);str=m==:render ? markaview(*args,&amp;blk):eval(
-&quot;markaby.#{m}(*args,&amp;blk)&quot;);str=markaview(:layout){str}rescue nil;r(200,str.
-to_s);end;def r(s,b,h={});@status=s;@headers.merge!(h);@body=b;end;def 
-redirect(c,*args);c=R(c,*args)if c.respond_to?:urls;r(302,'','Location'=&gt;self/c);end;def service(r,
-e,m,a)@status,@headers,@root=200,{},e['SCRIPT_NAME'];cook=C.cookie_parse(e[
-'HTTP_COOKIE']||e['COOKIE']);qs=C.qs_parse(e['QUERY_STRING']);if &quot;POST&quot;==m;inp=r.read(e[
+a).to_s)};end;def / p;p[/^\//]?@root+p:p end;def errors_for(o);ul.errors{o.
+errors.each_full{|er|li er}}unless o.errors.empty?;end;end;module Controllers
+module Base; include Helpers;attr_accessor :input,:cookies,:headers,:body,
+:status,:root;def method_missing(m,*args,&amp;blk);str=m==:render ? markaview(*args,
+&amp;blk):eval(&quot;markaby.#{m}(*args,&amp;blk)&quot;);str=markaview(:layout){str}rescue nil;r(
+200,str.to_s);end;def r(s,b,h={});@status=s;@headers.merge!(h);@body=b;end;def 
+redirect(c,*args);c=R(c,*args)if c.respond_to?:urls;r(302,'','Location'=&gt;self/c)
+end;def service(r,e,m,a)@status,@headers,@root=200,{},e['SCRIPT_NAME'];cook=C.kp(
+e['HTTP_COOKIE']);qs=C.qs_parse(e['QUERY_STRING']);if &quot;POST&quot;==m;inp=r.read(e[
 'CONTENT_LENGTH'].to_i);if %r|\Amultipart/form-data.*boundary=\&quot;?([^\&quot;;,]+)|n.
 match(e['CONTENT_TYPE']);b=&quot;--#$1&quot;;inp.split(/(?:\r?\n|\A)#{Regexp::quote(
 b)}(?:--)?\r\n/m).each{|pt|h,v=pt.split(&quot;\r\n\r\n&quot;,2);fh={};[:name,:filename].
@@ -38,7 +38,7 @@ escape s;s.to_s.gsub(/([^ a-zA-Z0-9_.-]+)/n){'%'+$1.unpack('H2'*$1.size).join(
 '%').upcase}.tr(' ','+') end;def unescape(s);s.tr('+', ' ').gsub(/((?:%[0-9a-f\
 A-F]{2})+)/n){[$1.delete('%')].pack('H*')} end;def qs_parse(qs,d ='&amp;;');(qs||''
 ).split(/[#{d}] */n).inject({}){|hsh, p|k,v=p.split('=',2).map{|v|unescape(v)}
-hsh[k]=v unless v.blank?;hsh} end; def cookie_parse(s);c=qs_parse(s,';,') end
+hsh[k]=v unless v.blank?;hsh} end; def kp(s);c=qs_parse(s,';,') end
 def run(r=$stdin,w=$stdout);w&lt;&lt;begin;k,a=Controllers.D &quot;/#{ENV['PATH_INFO']}&quot;.
 gsub(%r!/+!,'/');m=ENV['REQUEST_METHOD']||&quot;GET&quot;;k.class_eval{include C
 include Controllers::Base;include Models};o=k.new;o.service(r,ENV,m,a);rescue\</diff>
      <filename>lib/camping.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>663796cf92879f47161287a5fff71a289960e7c2</id>
    </parent>
  </parents>
  <author>
    <name>_why</name>
    <email>why@whytheluckystiff.net</email>
  </author>
  <url>http://github.com/judofyr/camping/commit/2bd07da716585172c9a65d89e3e8e2d73275756b</url>
  <id>2bd07da716585172c9a65d89e3e8e2d73275756b</id>
  <committed-date>2006-01-23T14:51:15-08:00</committed-date>
  <authored-date>2006-01-23T14:51:15-08:00</authored-date>
  <message>camping.gemspec: version 1.2.
lib/camping.rb: trying to reflow.
examples/serve: chdir into each example directory when running its app.</message>
  <tree>c167c572b375a339b4b4c188db5af2b63bee9d55</tree>
  <committer>
    <name>_why</name>
    <email>why@whytheluckystiff.net</email>
  </committer>
</commit>
