tfpt unshelve /shelveset:“rackupdate4;REDMOND\jimmysch”
Note: the diff has been truncated of adding a Rails example and a bunch
of gems (see below).
Fixes for running rack-based applications
Ruby changes:
- Put ESPIPE class in Errno module; it was defined at top-level which is
incorrect, and Sinatra’s error-reporting depends on it. - Remove ‘hacks’ from irake; it doesn’t exist anymore
IronRuby.Rack changes:
- request.body is always a string
- rack.input should never have a null contents (eg. StringIO.new(nil)).
- rack.version should be set to Rack::VERSION, rather than hardcoded.
- Ruby errors shouldn’t be swallowed because the error handler threw
- Generate the rack env with Ruby types the first time around, and only
execute Ruby code where needed. - Make sure AppPath is a full path
- Lazy load web.config settings, and allow setting RACK_ENV from
web.config. - Remove locks in HttpHandler and HttpHandlerFactory; may revert this
change after speaking with the ASP.NET team to better understand
the request architecture. - Requests are processed asynchronously
- Manually set TOPLEVEL_BINDING since it’s not set automatically when
IronRuby is embedded. - Canonlicalize paths of files added to the load path, so Ruby files
always show “/” as the path separator. - Always log exceptions to ironrack.log, and only show them to the HTML
page when RACK_ENV is ‘development’. - Update Rails example app, and run all examples in RACK_ENV production
mode. - Add Rails example that uses ActiveRecord (IronRuby.RailsDB.Example)
- Update gems: rails 2.3.5, sinatra 0.9.4, ironruby-sqlserver 0.1.0,
rspec 1.3.0, and make sure the executables are in the gembin dir. - Add Microsoft.Dynamic.csproj to IronRuby.Rack.sln
- Update permissions instructions in README.
- Clean up little perf test, and add an actual test of IronRuby.Rack,
though testing is still very lacking.