Commits on Aug 15, 2009
  1. Got tests to pass with some more changes.

      * request.formats is much simpler now
        * For XHRs or Accept headers with a single item, we use the Accept header
        * For other requests, we use params[:format] or fallback to HTML
        * This is primarily to work around the fact that browsers provide completely
          broken Accept headers, so we have to whitelist the few cases we can
          specifically isolate and treat other requests as coming from the browser
        * For APIs, we can support single-item Accept headers, which disambiguates
          from the browsers
      * Requests to an action that only has an XML template from the browser will
        no longer find the template. This worked previously because most browsers
        provide a catch-all */*, but this was mostly accidental behavior. If you
        want to serve XML, either use the :xml format in links, or explicitly
        specify the XML template: render "template.xml".
    wycats committed Aug 15, 2009
Commits on Aug 14, 2009
  1. Caches and cache clearing seems to actually work, but the actual arch…

    …itecture is kind of messy. Next: CLEAN UP.
    wycats committed Aug 14, 2009
Commits on Aug 13, 2009
  1. More cleanup of ActionView and reduction in need for blocks in some c…

      * only one of partial_name or :as will be available as a local
      * `object` is removed
      * Simplify _layout_for in most cases.
        * Remove <% render :partial do |args| %>
        * <% render :partial do %> still works fine
    wycats committed Aug 12, 2009
  2. Clean up ActionView some:

      * Call _evaluate_assigns_and_ivars at the two entry points so we don't have to
        do a check at every render.
      * Make template.render viable without having to go through a wrapper method
      * Remove old TemplateHandler#render(template, local_assigns) path so we don't have
        to set self.template every time we render a template.
      * Move Template rescuing code to Template#render so it gets caught every time.
      * Pull in some tests from Pratik that test render @object in ActionView
    wycats committed Aug 11, 2009
Commits on Aug 12, 2009
  1. make mysql and postgresql rebuild databases on every CI build, to pre…

    …vent breakages such as collation and character set changing
    Signed-off-by: Yehuda Katz <>
    thewoolleyman committed with wycats Aug 12, 2009
  2. Remove submodule

    wycats committed Aug 12, 2009
Commits on Aug 11, 2009
  1. More perf work:

      * Move #set_cookie and #delete_cookie inline to optimize. These optimizations should
        almost certainly be sent back upstream to Rack. The optimization involves using
        an ivar for cookies instead of indexing into the headers each time.
      * Was able to use a bare Hash for headers now that cookies have their own joining
        semantics (some code assumed that the raw cookies were an Array).
      * Cache blankness of body on body=
      * Improve expand_cache_key for Arrays of a single element (common in our case)
      * Use a simple layout condition check unless conditions are used
      * Cache visible actions
      * Lazily load the UrlRewriter
      * Make etag an ivar that is set on prepare!
    wycats committed Aug 10, 2009
  2. Got overhead down from 127 to 85. All tests pass:

      * Tentatively replaced HeaderHash with SimpleHeaderHash, which does not preserve
        case but does handle converting Arrays to Strings in to_hash. This requires
        further discussion.
      * Moved default_charset to ActionDispatch::Response to avoid having to hop over
        to ActionController. Ideally, this would be a constant on AD::Response, but
        some tests expect to be able to change it dynamically and I didn't want to change
        them yet.
      * Completely override #initialize from Rack::Response. Previously, it was creating
        a HeaderHash, and then we were creating an entirely new one. There is no way to
        call super without incurring the overhead of creating a HeaderHash.
      * Override #write from Rack::Response. Its implementation tracks Content-Length,
        and doing so adds additional overhead that could be mooted if other middleware
        changes the body. It is more efficiently done at the top-level server.
      * Change sending_file to an instance_variable instead of header inspection. In
        general, if a state is important, it should be set as a property of the response
        not reconstructed later.
      * Set the Etag to @body instead of .body. AS::Cache.expand_cache_key handles
        Arrays fine, and it's more efficient to let it handle the body parts, since
        it is not forced to create a joined String.
      * If we detect the default cache control case, just set it, rather than setting
        the constituent parts and then running the normal (expensive) code to generate
        the string.
    wycats committed Aug 10, 2009
  3. Further experimentation. Was able to cut the cost of rendering 100 pa…

    …rtials in a collection in half.
      To discuss: What are the desired semantics (if any) for layouts in a collection. There are no
      tests for it at present, and I'm not sure if it's needed at all.
      Deprecated on this branch: `object` pointing at the current object in partials. You can still
      use the partial name, or use :as to achieve the same thing. This is obviously up for discussion.
    wycats committed Aug 10, 2009
  4. Add a few more benches

    wycats committed Aug 9, 2009
  5. This change causes some failing tests, but it should be possible to m…

    …ake them pass with minimal performance impact.
    wycats committed Aug 9, 2009
  6. Add tests for hm:t#push failures

    lifo committed Aug 11, 2009
Commits on Aug 10, 2009
  1. AMo overrides alias_attribute and manages aliasing all known attribut…

    …e method matchers
    josh committed Aug 10, 2009
  2. Use less strict rules in generators lookup, so people can lay their g…

    …enerators wherever they want.
    josevalim committed Aug 10, 2009
  3. Fixed typo in test name and CHANGELOG [#3017 state:resolved]

    Signed-off-by: Pratik Naik <>
    arthurgeek committed with lifo Aug 10, 2009
  4. Add validates_format_of :without => /regexp/ option [Elliot Winkler, …

    …Peer Allan]
    [#430 state:resolved]
      Example :
        validates_format_of :subdomain, :without => /www|admin|mail/
    Signed-off-by: Pratik Naik <>
    mcmire committed with lifo Aug 10, 2009
  5. find_cmd should return the full path of the db command

    [#1488 state:committed]
    Signed-off-by: Jeremy Kemper <>
    kamal committed with jeremy Aug 10, 2009
  6. Introduce grouped_collection_select helper.

    [#1249 state:committed]
    Signed-off-by: Jeremy Kemper <>
    codeape committed with jeremy Aug 10, 2009
  7. Correctly handle offsets in Multibyte::Chars#index and #rindex.

    The offset in codepoints was being passed directly to the wrapped string's index/rindex method. Now we translate the offset into bytes first.
    [#3028 state:committed]
    Signed-off-by: Jeremy Kemper <>
    eostrom committed with jeremy Aug 10, 2009
  8. Add tests for scoping schema_migrations index by global table prefix …

    …and suffix
    [#1543 state:committed]
    Signed-off-by: Jeremy Kemper <>
    cristibalan committed with jeremy Aug 9, 2009