$rails_json = true # core require 'optparse' # internal require 'chassis' require 'rails_adapter' require 'fuzed_handler' # read command line options options = {} opts = OptionParser.new do |opts| opts.on("-r", "--rails-root RAILS_ROOT", String) do |x| options[:rails_root] = x end opts.on("-t", "--test", "enable test mode") do options[:test] = true end opts.on("-e", "--rails-env ENV", String) do |x| options[:rails_env] = x end end opts.parse(ARGV) options[:rails_root] = File.join(File.dirname(__FILE__), *%w[.. test app]) if options[:test] options[:rails_env] ||= 'development' # app app = Rack::Adapter::Rails.new(:root => options[:rails_root], :environment => options[:rails_env]) logfile = options[:rails_root] + "/log/fuzed.#{Process.pid}.log" $handler = Rack::Handler::Fuzed.new(app, logfile) # chassis class RailsHandler < Chassis kind "rails" handle(:handle_request, :request) do |args| $handler.service(args[:request]) end end # test mode if options[:test] req = {:method => :POST, :http_version => [1, 1], :querypath => "/main/go", :querydata => "", :servername => "testing:8002", :headers => {:connection => "keep-alive", :accept => "text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5", :host => "localhost:8002", :referer => "http://localhost:8002/main/ready", :user_agent => "Mozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3", :keep_alive => "300", :content_length => "7", :content_type => "application/x-www-form-urlencoded", :"Cache-Control" => "max-age=0", :"Accept-Charset" => "ISO-8859-1,utf-8;q=0.7,*;q=0.7", :"Accept-Encoding" => "gzip,deflate", :"Accept-Language" => "en-us,en;q=0.5"}, :cookies => ["_helloworld_session_id=d3eae987aab3230377abc433b7a8d7c1"], :pathinfo => "/Users/tom/dev/fuzed/helloworld/public", :postdata => "val=foo"} p $handler.service(req) exit! end