Permalink
Switch branches/tags
Commits on Oct 13, 2012
  1. Merge pull request #7891 from schneems/schneems/rake_command_warning

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

    tenderlove committed Oct 12, 2012
    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
  2. Speed up relation merging by reducing calls to Array#-

    tenderlove committed Oct 12, 2012
    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
  3. Prompt to run rake when accidentally typed rails

    schneems committed Oct 9, 2012
    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) ===================================================
    ```
  4. Merge pull request #7007 from Mik-die/hash_extract

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

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

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

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

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

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

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

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

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

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

    jonleighton committed Oct 12, 2012
    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
  15. Revert "Key the attributes hash with symbols"

    jonleighton committed Oct 5, 2012
    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.
  16. Merge pull request #7917 from dfens/master

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

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

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

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

    spastorino committed Oct 12, 2012
    …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
  21. adding a test for b21f24d

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

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

    mje113 committed Oct 11, 2012
    …e_condition_ttl working correctly.
  3. Merge pull request #7886 from senny/3675_assert_template_twice_agains…

    rafaelfranca committed Oct 11, 2012
    …t_same_partial
    
    assert_template works when the same partial was rendered multiple times
  4. Merge pull request #7908 from arunagw/build_fix_railties

    rafaelfranca committed Oct 11, 2012
    No need to test for rack-cache present in gem file
  5. refactor `ActionView::TestCase` internals to track rendered locals

    senny committed Oct 9, 2012
    this refactoring extracts the semi complex data structure of rendered locals
    per view into into a separate class
  6. No need to test for rack-cache present in Gemfile

    arunagw committed Oct 11, 2012
    as it's removed here 
    1fc7954