Permalink
Commits on Oct 13, 2012
  1. Merge pull request #7935 from leereilly/minor-gemfile-twerk

    Clean up Gemfile entry (replace double quotes with single quotes) [ci skip]
    rafaelfranca committed Oct 13, 2012
  2. Tighten up asset precompile tests

    jeremy committed Oct 13, 2012
  3. Remove the queue container. Premature consolidation. Set up and maint…

    …ain queues in the classes that use them instead.
    jeremy committed Oct 13, 2012
  4. Merge pull request #7891 from schneems/schneems/rake_command_warning

    Prompt to run rake when accidentally typed rails
    josevalim committed Oct 13, 2012
Commits on Oct 12, 2012
  1. performance improvements to joins!

    Before:
    
    Calculating -------------------------------------
                      ar        87 i/100ms
    -------------------------------------------------
                      ar      823.4 (±11.8%) i/s -       4089 in   5.070234s
    
    After:
    
    Calculating -------------------------------------
                      ar        88 i/100ms
    -------------------------------------------------
                      ar      894.1 (±3.9%) i/s -       4488 in   5.028161s
    
    Same test as 3a6dfca
    tenderlove committed Oct 12, 2012
  2. Speed up relation merging by reducing calls to Array#-

    before:
    
    Calculating -------------------------------------
                      ar        83 i/100ms
    -------------------------------------------------
                      ar      832.1 (±4.0%) i/s -       4233 in   5.096611s
    
    after:
    
    Calculating -------------------------------------
                      ar        87 i/100ms
    -------------------------------------------------
                      ar      839.0 (±9.3%) i/s -       4176 in   5.032782s
    
    Benchmark:
    
    require 'config/environment'
    require 'benchmark/ips'
    
    GC.disable
    
    unless User.find_by_login('tater')
      u = User.new
      u.login = 'tater'
      u.save!
    end
    
    def active_record
      user = User.find_by_login('tater')
      starred = user.starred_items.count
    end
    
    active_record
    
    Benchmark.ips do |x|
      x.report("ar") { active_record }
    end
    tenderlove committed Oct 12, 2012
  3. Prompt to run rake when accidentally typed rails

    Developers from all levels will accidentally run rake tasks using the `rails` keyword when they meant to use `rake`. Often times beginners struggle with the difference between the tools. The most common example would be `$ rails db:migrate`
    
    Rather than telling the developer simply that they did not use a valid rails command, we can see if it was a valid rake command first. If it is a valid rake command we can auto execute it giving the user a period of time to cancel if that isn't what they intended.
    
    Here is what `rake db:migrate` would look like if you cancel the command:
    
    
    ```sh
    $ rails db:migrate
    Assuming you meant: $ rake db:migrate 
    press any key to cancel in 3 seconds
    > 
    command terminated ...
    ```
    
    Here is what it looks like if you don't cancel the command:
    
    ```sh
    $ rails db:migrate
    Assuming you meant: $ rake db:migrate 
    press any key to cancel in 3 seconds
    > 
    Running: $ rake db:migrate 
    ==  Foo: migrating ============================================================
    ==  Foo: migrated (0.0000s) ===================================================
    ```
    schneems committed Oct 9, 2012
  4. Merge pull request #7007 from Mik-die/hash_extract

    make Hash#extract! more symmetric with Hash#slice
    rafaelfranca committed Oct 12, 2012
  5. Merge pull request #7926 from senny/whitespace_cleanup

    trailling whitespace cleanup in query_methods.rb [ci skip]
    rafaelfranca committed Oct 12, 2012
  6. Merge pull request #7923 from josh/seperate-asset-tag-and-url-concerns

    Split asset url helpers into seperate AssetUrlHelper
    rafaelfranca committed Oct 12, 2012
  7. ActiveSupport::SynchronousQueue doesn't have the drain method.

    Now we are using teh SynchronousQueue in the test environment instead of
    the TestQueue
    rafaelfranca committed Oct 12, 2012
  8. Merge pull request #7871 from bjnord/master

    Support another file type .rake in `rake notes`
    rafaelfranca committed Oct 12, 2012
  9. Merge pull request #7913 from mje113/master

    MemCacheStore's move to dalli as a backend broke :race_condition_ttl support
    fxn committed Oct 12, 2012
  10. Merge pull request #7919 from arunagw/warning_removed_shadowing

    warning removed: shadowing outer local variable - value
    rafaelfranca committed Oct 12, 2012
  11. Merge pull request #7765 from insside/clever-order

    learn ActiveReccord::Querying#order work with hash arguments
    jonleighton committed Oct 12, 2012
  12. learn ActiveRecord::QueryMethods#order work with hash arguments

    Tima Maslyuchenko committed Sep 26, 2012
  13. Immediately run queued jobs in tests. Otherwise you have to explicitl…

    …y drain the queue to actually deliver your emails.
    jeremy committed Oct 12, 2012
  14. Don't allocate new strings in compiled attribute methods

    This improves memory and performance without having to use symbols which
    present DoS problems. Thanks @headius and @tenderlove for the
    suggestion.
    
    Benchmark
    ---------
    
    require 'active_record'
    require 'benchmark/ips'
    
    ActiveRecord::Base.establish_connection(adapter: 'sqlite3', database:
    ':memory:')
    
    class Post < ActiveRecord::Base
      connection.create_table :posts, force: true do |t|
        t.string :name
      end
    end
    
    post = Post.create name: 'omg'
    
    Benchmark.ips do |r|
      r.report('Post.new')          { Post.new name: 'omg' }
      r.report('post.name')         { post.name }
      r.report('post.name=')        { post.name = 'omg' }
      r.report('Post.find(1).name') { Post.find(1).name }
    end
    
    Before
    ------
    
    Calculating -------------------------------------
                Post.new      1419 i/100ms
               post.name      7538 i/100ms
              post.name=      3024 i/100ms
       Post.find(1).name       243 i/100ms
    -------------------------------------------------
                Post.new    20637.6 (±12.7%) i/s -     102168 in   5.039578s
               post.name  1167897.7 (±18.2%) i/s -    5186144 in   4.983077s
              post.name=    64305.6 (±9.6%) i/s -     317520 in   4.998720s
       Post.find(1).name     2678.8 (±10.8%) i/s -      13365 in   5.051265s
    
    After
    -----
    
    Calculating -------------------------------------
                Post.new      1431 i/100ms
               post.name      7790 i/100ms
              post.name=      3181 i/100ms
       Post.find(1).name       245 i/100ms
    -------------------------------------------------
                Post.new    21308.8 (±12.2%) i/s -     105894 in   5.053879s
               post.name  1534103.8 (±2.1%) i/s -    7634200 in   4.979405s
              post.name=    67441.0 (±7.5%) i/s -     337186 in   5.037871s
       Post.find(1).name     2681.9 (±10.6%) i/s -      13475 in   5.084511s
    jonleighton committed Oct 12, 2012
  15. Revert "Key the attributes hash with symbols"

    This reverts commit 86c3dfb.
    
    Conflicts:
    	activerecord/lib/active_record/attribute_methods/read.rb
    
    Reason: whilst this increased performance, it also presents a DoS risk
    via memory exhaustion if users were allowing user input to dictate the
    arguments of read/write_attribute. I will investigate alternative ways
    to cut down on string allocations here.
    jonleighton committed Oct 5, 2012
  16. Merge pull request #7917 from dfens/master

    Cosmetic changes: remove trailing whitespaces from tests
    josevalim committed Oct 12, 2012
  17. Cleanup trailing whitespaces

    dfens committed Oct 12, 2012
  18. Merge pull request #7915 from frodsan/docs_permit

    update AC::Parameters#permit documentation [ci skip]
    rafaelfranca committed Oct 12, 2012
  19. update AC::Parameters#permit documentation [ci skip]

    bdd105d changes the behaviour of AC::Parameters#permit.
    Francesco Rodriguez committed Oct 12, 2012
  20. When executing permit with just a key that points to a hash, DO NOT a…

    …llow all the hash
    
    params.require(:person).permit(:projects_attributes) was returning
    => {"projects_attributes"=>{"0"=>{"name"=>"Project 1"}}}
    
    When should return
    => {}
    
    You should be doing ...
    params.require(:person).permit(projects_attributes: :name)
    to get just the projects attributes you want to allow
    spastorino committed Oct 12, 2012
  21. adding a test for b21f24d

    tenderlove committed Oct 12, 2012
Commits on Oct 11, 2012
  1. Merge pull request #7912 from mrship/master

    CacheDigests: Support templates in directories several levels deep
    rafaelfranca committed Oct 11, 2012
  2. Padding expires_in by 5 minutes on dalli key write to facilitate :rac…

    …e_condition_ttl working correctly.
    mje113 committed Oct 11, 2012