1. 09 9月, 2015 26 次提交
  2. 08 9月, 2015 14 次提交
    • Y
      Merge pull request #21512 from X0nic/guides-clarify-timeout-error · 8d1af2b1
      Yves Senn 提交于
      [Rails Guides] clarify `ActiveRecord::ConnectionTimeoutError`
      8d1af2b1
    • E
      Merge pull request #21511 from rwz/ar-exceptions-no-args · 26905007
      Eileen M. Uchitelle 提交于
      Removes mandatory arguments from AR exceptions
      26905007
    • Y
      Merge pull request #21548 from yui-knk/feature/define_tables_as_interface · e0cdc7c2
      Yves Senn 提交于
      Define `SchemaStatements#tables` as interface
      e0cdc7c2
    • Y
      Define `SchemaStatements#tables` as interface · 1fbd954e
      yui-knk 提交于
      These 3 methods expect `ConnectionAdapters` to have `tables` method,
      so make it clear that `tables` method is interface.
      
      * `ConnectionAdapters::SchemaCache#prepare_tables`
      * `db:schema:cache:dump` task
      * `SchemaDumper#tables`
      1fbd954e
    • Y
      Merge pull request #21530 from arvindmehra/am-ar-to-activerecord · 3e617bbf
      Yves Senn 提交于
      Replace AR with ActiveRecord to make it more readable [ci skip]
      3e617bbf
    • Y
      Merge pull request #21528 from yui-knk/test/add_tests_for_mysql2_view · 8a639ffc
      Yves Senn 提交于
      Add tests for test/cases/adapters/mysql2/view_test.rb
      8a639ffc
    • Y
      Add view tests for MySQL · bb0d7078
      yui-knk 提交于
      Basically view tests for MySQL are same with
      `test/cases/adapters/postgresql/view_test.rb`.
      
      So move `test/cases/adapters/postgresql/view_test.rb` to
      `test/cases/view_test.rb` and make them only run if
      `current_adapter` supports writable view.
      bb0d7078
    • A
      dad0c267
    • K
      Merge pull request #21519 from y-yagi/test_runner_raise_error · e75b92c0
      Kasper Timm Hansen 提交于
      raise LoadError when a non-existent file or directory is specified to the test runner
      e75b92c0
    • R
      💣 · b4f82efd
      Rafael Mendonça França 提交于
      b4f82efd
    • R
      Memoized reflections accessor · 0675210c
      Rafael Mendonça França 提交于
      Its value never change since associations are defined at class load time
      so there is no need to build the hash everytime the method is called.
      
      Before this change:
      
          Calculating -------------------------------------
                   reflections   804.000  i/100ms
          -------------------------------------------------
                   reflections      8.213k (±26.2%) i/s -     36.180k
      
      After this change:
      
          Calculating -------------------------------------
                   reflections    24.548k i/100ms
          -------------------------------------------------
                   reflections      1.591M (±25.7%) i/s -      7.364M
      
      Benchmark script:
      
          require 'bundler/setup'
      
          require 'active_record'
          require 'benchmark/ips'
      
          ActiveRecord::Base.establish_connection(adapter: 'sqlite3', database: ':memory:')
          ActiveRecord::Migration.verbose = false
      
          ActiveRecord::Schema.define do
            100.times do |i|
              create_table "users#{i}", force: true
            end
      
            create_table :cars, force: true do |t|
              100.times do |i|
                t.references "users#{i}"
              end
            end
          end
      
          class Car < ActiveRecord::Base
            100.times do |i|
              belongs_to "users#{i}".to_sym
            end
          end
      
          Benchmark.ips do |x|
            x.report('reflections') { Car.reflections }
          end
      0675210c
    • R
      Merge pull request #21537 from tgxworld/perf_reduce_allocation · 9bf772d9
      Rafael Mendonça França 提交于
      PERF: Reduce allocation in `resolve_column_aliases`.
      9bf772d9
    • G
      Reduce allocation in `resolve_column_aliases`. · 607a4482
      Guo Xiang Tan 提交于
      Benchmark Script Used:
      ```
      begin
        require 'bundler/inline'
      rescue LoadError => e
        $stderr.puts 'Bundler version 1.10 or later is required. Please update your Bundler'
        raise e
      end
      
      gemfile(true) do
        source 'https://rubygems.org'
        gem 'rails', path: '~/rails' # master against ref "f1f0a3f8"
        gem 'arel', github: 'rails/arel', branch: 'master'
        gem 'rack', github: 'rack/rack', branch: 'master'
        gem 'sass'
        gem 'sprockets-rails', github: 'rails/sprockets-rails', branch: 'master'
        gem 'sprockets', github: 'rails/sprockets', branch: 'master'
        gem 'pg'
        gem 'benchmark-ips'
      end
      
      require 'active_record'
      require 'benchmark/ips'
      
      ActiveRecord::Base.establish_connection('postgres://postgres@localhost:5432/rubybench')
      
      ActiveRecord::Migration.verbose = false
      
      ActiveRecord::Schema.define do
        create_table :users, force: true do |t|
          t.string :name, :email
          t.timestamps null: false
        end
      end
      
      class User < ActiveRecord::Base; end
      
      attributes = {
        name: "Lorem ipsum dolor sit amet, consectetur adipiscing elit.",
        email: "foobar@email.com",
      }
      
      1000.times { User.create!(attributes) }
      
      Benchmark.ips(5, 3) do |x|
        x.report('where with hash single') { User.where(name: "Lorem ipsum dolor sit amet, consectetur adipiscing elit.") }
        x.report('where with string single') { User.where("users.name = ?", "Lorem ipsum dolor sit amet, consectetur adipiscing elit.") }
        x.report('where with hash double') { User.where(name: "Lorem ipsum dolor sit amet, consectetur adipiscing elit.", email: "foobar@email.com") }
        x.report('where with string double') { User.where("users.name = ? AND users.email = ?", "Lorem ipsum dolor sit amet, consectetur adipiscing elit.", "foobar@email.com") }
        x.compare!
      end
      ```
      
      Before:
      ```
      Calculating -------------------------------------
      where with hash single
                               3.300k i/100ms
      where with string single
                               4.965k i/100ms
      where with hash double
                               2.594k i/100ms
      where with string double
                               4.400k i/100ms
      -------------------------------------------------
      where with hash single
                               35.161k (± 1.2%) i/s -    178.200k
      where with string single
                               53.368k (± 2.9%) i/s -    268.110k
      where with hash double
                               27.364k (± 1.1%) i/s -    137.482k
      where with string double
                               46.876k (± 2.1%) i/s -    237.600k
      
      Comparison:
      where with string single:    53368.1 i/s
      where with string double:    46875.5 i/s - 1.14x slower
      where with hash single:    35160.8 i/s - 1.52x slower
      where with hash double:    27364.0 i/s - 1.95x slower
      ```
      
      After:
      ```
      Calculating -------------------------------------
      where with hash single
                               3.403k i/100ms
      where with string single
                               5.167k i/100ms
      where with hash double
                               2.659k i/100ms
      where with string double
                               4.597k i/100ms
      -------------------------------------------------
      where with hash single
                               36.410k (± 1.3%) i/s -    183.762k
      where with string single
                               55.009k (± 2.6%) i/s -    279.018k
      where with hash double
                               27.951k (± 1.4%) i/s -    140.927k
      where with string double
                               48.362k (± 2.6%) i/s -    243.641k
      
      Comparison:
      where with string single:    55008.6 i/s
      where with string double:    48361.5 i/s - 1.14x slower
      where with hash single:    36410.1 i/s - 1.51x slower
      where with hash double:    27950.9 i/s - 1.97x slower
      ```
      607a4482
    • J
      Merge pull request #21520 from jeremy/friendlier-force-ssl · a11571ce
      Jeremy Daer (Kemper) 提交于
      Make `config.force_ssl` less dangerous to try and easier to disable
      a11571ce