FYI Code Review: rackupdate4

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.

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs