Changeset 34 for trunk

Show
Ignore:
Timestamp:
01/23/2006 16:51:15 (3 years ago)
Author:
why
Message:

camping.gemspec: version 1.2.
lib/camping.rb: trying to reflow.
examples/serve: chdir into each example directory when running its app.

Location:
trunk
Files:
3 modified

Legend:

Unmodified
Added
Removed
  • trunk/camping.gemspec

    r33 r34  
    22spec = Gem::Specification.new do |s| 
    33  s.name = 'camping' 
    4   s.version = "1.1" 
     4  s.version = "1.2" 
    55  s.platform = Gem::Platform::RUBY 
    66  s.summary = "miniature rails for stay-at-home moms" 
  • trunk/examples/serve

    r28 r34  
    1 #!/bin/env ruby 
     1#!/usr/bin/env ruby 
    22# 
    33# Serves all examples, mounted into Webrick. 
     
    55require 'stringio' 
    66require 'webrick/httpserver' 
     7 
     8dir = Dir.pwd 
    79apps =  
    810    Dir['*'].select do |d| 
     11        Dir.chdir(dir) 
    912        if File.exists? "#{d}/#{d}.rb" 
    10             load "#{d}/#{d}.rb" 
     13            begin 
     14                Dir.chdir("#{dir}/#{d}") 
     15                load "#{d}.rb" 
     16                true 
     17            rescue Exception => e 
     18                puts "Camping app `#{d}' will not load: #{e.class} #{e.message}" 
     19            end 
    1120        end 
    1221    end 
     
    3140                header.delete('status') 
    3241              end 
    33               if header.has_key?('set-cookie') 
    34                 header['set-cookie'].each{|k| 
    35                   self.cookies << WEBrick::Cookie.parse_set_cookie(k) 
    36                 } 
    37                 header.delete('set-cookie') 
    38               end 
    3942              header.each{|key, val| self[key] = val.join(", ") } 
    4043            rescue => ex 
     
    4346            self.body = body 
    4447        end 
     48        Dir.chdir("#{dir}/#{app}") 
    4549        klass.run((req.body and StringIO.new(req.body)), resp) 
     50        Dir.chdir(dir) 
     51        nil 
    4652    end 
    4753end 
  • trunk/lib/camping.rb

    r32 r34  
    33module Helpers;def R c,*args;p=/\(.+?\)/;args.inject(c.urls.detect{|x|x.scan(p 
    44).size==args.size}.dup){|str,a|str.sub(p,(a.method(a.class.primary_key)[]rescue 
    5 a).to_s)};end;def / p;p[/^\//]?@root+p:p end; def errors_for(o); ul.errors {  
    6 o.errors.each_full { |er| li er } } unless o.errors.empty?; end; end; module Controllers; 
    7 module Base; include Helpers;attr_accessor :input,:cookies,:headers,:body,:status,:root;def 
    8 method_missing(m,*args,&blk);str=m==:render ? markaview(*args,&blk):eval( 
    9 "markaby.#{m}(*args,&blk)");str=markaview(:layout){str}rescue nil;r(200,str. 
    10 to_s);end;def r(s,b,h={});@status=s;@headers.merge!(h);@body=b;end;def  
    11 redirect(c,*args);c=R(c,*args)if c.respond_to?:urls;r(302,'','Location'=>self/c);end;def service(r, 
    12 e,m,a)@status,@headers,@root=200,{},e['SCRIPT_NAME'];cook=C.cookie_parse(e[ 
    13 'HTTP_COOKIE']||e['COOKIE']);qs=C.qs_parse(e['QUERY_STRING']);if "POST"==m;inp=r.read(e[ 
     5a).to_s)};end;def / p;p[/^\//]?@root+p:p end;def errors_for(o);ul.errors{o. 
     6errors.each_full{|er|li er}}unless o.errors.empty?;end;end;module Controllers 
     7module Base; include Helpers;attr_accessor :input,:cookies,:headers,:body, 
     8:status,:root;def method_missing(m,*args,&blk);str=m==:render ? markaview(*args, 
     9&blk):eval("markaby.#{m}(*args,&blk)");str=markaview(:layout){str}rescue nil;r( 
     10200,str.to_s);end;def r(s,b,h={});@status=s;@headers.merge!(h);@body=b;end;def  
     11redirect(c,*args);c=R(c,*args)if c.respond_to?:urls;r(302,'','Location'=>self/c) 
     12end;def service(r,e,m,a)@status,@headers,@root=200,{},e['SCRIPT_NAME'];cook=C.kp( 
     13e['HTTP_COOKIE']);qs=C.qs_parse(e['QUERY_STRING']);if "POST"==m;inp=r.read(e[ 
    1414'CONTENT_LENGTH'].to_i);if %r|\Amultipart/form-data.*boundary=\"?([^\";,]+)|n. 
    1515match(e['CONTENT_TYPE']);b="--#$1";inp.split(/(?:\r?\n|\A)#{Regexp::quote( 
     
    3939A-F]{2})+)/n){[$1.delete('%')].pack('H*')} end;def qs_parse(qs,d ='&;');(qs||'' 
    4040).split(/[#{d}] */n).inject({}){|hsh, p|k,v=p.split('=',2).map{|v|unescape(v)} 
    41 hsh[k]=v unless v.blank?;hsh} end; def cookie_parse(s);c=qs_parse(s,';,') end 
     41hsh[k]=v unless v.blank?;hsh} end; def kp(s);c=qs_parse(s,';,') end 
    4242def run(r=$stdin,w=$stdout);w<<begin;k,a=Controllers.D "/#{ENV['PATH_INFO']}". 
    4343gsub(%r!/+!,'/');m=ENV['REQUEST_METHOD']||"GET";k.class_eval{include C