*0.3.1* * Removed application.rb file and fixed serverside script. * Fixed bug in Caching.validate_stamp where the expiry stamp would be the file stamp + max_age - leading to stale resources. *0.3.0* * Disabled cluster_spec and parts of daemon_spec for now due to strange forking behavior. * Removed static file cache from Static. * Fixed daemon_spec to work correctly. * Removed all tests, moved specs to /spec, and fixed rakefile. * Converted cluster_test to cluster_spec. * Converted daemon_test to daemon_spec. * Updated specs to work with RSpec 0.7. * Changed rake spec task to do coverage as well. * Renamed controller.rb to controllers.rb. * Added String.underscore method. * Renamed ServerSide::Controller.process to response. * Improved HTTP caching code to better conform to the HTTP spec. Also improved the validate_cache method to work without a block as well. * Removed unit tests that were converted to specs. * Router now expects handlers to return non-nil if the request was handled. Otherwise, the request goes to the next handler with an appropriate rule. * Improved spec coverage for caching. * Wrote Server spec. * Wrote Router spec. * Refactored HTTP::Server to allow creating instances without starting them. * Fixed Router.routes_defined? to return non-nil if default route is defined. * Renamed Router.has_routes? to routes_defined?. * Fixed Static.serve_template and Static.serve_static to work correctly (render templates.) * Removed deprecated code in Template.render. * Wrote Static spec. * Fixed bug in serverside script - wrong call to route_default instead of default_route. * Refactored ServerSide::Template and wrote template spec. * Added documentation to Controller. * Fixed Controller.mount to build a self.inherited method, and do the routing there. ==0.2.9 * Improved rake clean task. * Added HTTP::Request.send_file method. * Added basic rendering capabilities to ServerSide::Controller. * Added support for lambda rules in ServerSide::Controller.mount. * Start work on controller class. * Renamed Router.route_default to default_route. * Fixed small errors in documentation. * Changed ServerSide::Static.serve_static to look for index.html inside directory before serving the directory. * Added HTTP::Caching.cache_etags and cache_stamp methods. * Fixed bug in doc_rforge rake task. * Rewrote request unit test into request spec. ==0.2.8 * Refactored ServerSide::Static to use HTTP::Caching code. * Added spec coverage rake task. * Added HTTP::Caching module. * Added response_headers attribute to HTTP::Request. * Refactored ServerSide::Static constants. * Renamed ServerSide::StaticFiles to ServerSide::Static. * Added static_server.rb script. ==0.2.7 * Wrote spec for HTTP::Connection. * Added spec files to rake stats reporting. * Changed @conn to @socket in both HTTP::Connection and HTTP::Request for better readability. * Wrote functional test for request body (but at least some of the testing should be in a unit test.) * Added request body parsing (both URL-encoded and multipart.) * Moved all HTTP::Const constants into HTTP::Request. * Added Date to response headers. This is needed for caching to work correctly. * Fixed bug in serverside script that caused an exception when specifying port number. ==0.2.6 * Refactored HTTP-related code into a new HTTP::Request class and a simplified HTTP::Connection. * Another small change to docs. * Fixed small error in Rakefile that prevented doc_rforge task from updating the docs. * Fixed minor documentation error. ==0.2.5 * Added template serving to static file module. * Wrote a simple ERB template system. * More documentation tweaks. * Changed how response cookies are formatted for somewhat better performance. * Updated documentation. * Removed deprecated code in lib/serverside/application.rb. * Added HTTP cookie functionality (parse, set and delete.) * Updated rakefile to include a spec task, as well as an rcov task. Updated test task to include spec and rcov tasks. * Started writing RSpec tests. This looks like a very interesting concept. * Added /test/spec directory. ==0.2.0 * Updated RFuzz script to work, but it doesn't still do anything interesting. * Added a serve command to serverside script. * Changed substition of embedded parameters from (.*) to (.+). * Added rule compilation after setting the default handler. * Added doc_rforge rake task (for updating the docs on rubyforge.org). * Added stats and svn_add rake tasks. * Fixed routing unit tests. * Added Router.has_routes? method. * Finished unit tests for routing. * Added Connection::Base.redirect. * Added routing code from /research/routing, implemented functional test. * Learned about the (?:) modifier and fixed the request parsing regexp. * Added a profiled version of a static server - /test/functional/static_profile.rb. * Added freezing of HTTP headers. * Small change to documentation. * Changed filename for cluster pid file to serverside_cluster.pid. * Added documentation. * Fixed require in serverside script to load the gem. * Fixed the Daemon pid file for static file server mode. * Added directory listing to static file server. * Fixed request header parsing Regexp so a trailing slash would be ignored. * Added static application. Using the binary script in static mode works. * Added cluster class with unit tests. * Added unit tests for static server. * Added static server functional test. * Added static file serving code. * Renamed ServerSide::Request to ServerSide::Connection. This is more appropriate. * Added functional static server test. * Added test/functional for functional tests. Updated Rakefile. * Added Request.send_response and stream. * Added faster Symbol.to_s to core_ext. * Added HTTP parsing code with unit tests. * More unit tests for application code. * Basic server code works with unit tests. * Added option parsing to serverside script. * Added daemon code and unit tests. ==0.1 * Added host attribute to Controller::Request. * Added ability to create rules on any request attribute, not just path. * Added ability to mount controllers with a block for a rule. * Wrote object extensions to create frozen constants on the fly. * Changed DirHandler to use frozen strings for cache header. * Hooked Mongrel server to Controller::Router. * Imported request code with unit tests. * Wrote unit tests for daemon module. * Wrote unit tests for controller routing code. * Refactored controller routing code. * Imported unit tests for extensions. * Created Rakefile. * Prototypical routing code. * Fixed location of daemon pid files. * Imported Mongrel code from Reality project. * Imported extensions from Reality project. * Implemented daemon and server cluster.