1. 15 10月, 2012 6 次提交
  2. 14 10月, 2012 10 次提交
  3. 13 10月, 2012 18 次提交
  4. 12 10月, 2012 6 次提交
    • B
      06129c0e
    • T
    • J
      Immediately run queued jobs in tests. Otherwise you have to explicitly drain... · 79db8db4
      Jeremy Kemper 提交于
      Immediately run queued jobs in tests. Otherwise you have to explicitly drain the queue to actually deliver your emails.
      79db8db4
    • A
      11f01bee
    • J
      Don't allocate new strings in compiled attribute methods · f1765019
      Jon Leighton 提交于
      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
      f1765019
    • J
      Revert "Key the attributes hash with symbols" · 9e5f7cc6
      Jon Leighton 提交于
      This reverts commit 86c3dfbd.
      
      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.
      9e5f7cc6