Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Commits on Sep 1, 2015
  1. @aditya-kapoor
  2. @carlosantoniodasilva

    Fix failure introduced by #17351 due to the new mocks implementation

    carlosantoniodasilva authored
    It was not expecting the new `case_insensitive` option to be passed to
    `generate_message`, instead of fixing the test we can just not pass this
    option down since it is specific to the confirmation validator and not
    necessary for the error message.
  3. @jashank
  4. @rafaelfranca

    Merge pull request #17351 from akshat-sharma/master

    rafaelfranca authored
    Add case_sensitive option for confirmation validation
  5. @pramod-sharma

    Add case_sensitive option for confirmation validation

    pramod-sharma authored
    Case :- 1. In case of email confirmation one needs case insensitive comparison
            2. In case of password confirmation one needs case sensitive comparison
    
    [ci skip] Update Guides for case_sensitive option in confirmation validation
Commits on Aug 28, 2015
  1. @robin850
Commits on Aug 26, 2015
  1. @ronakjangir47
Commits on Aug 21, 2015
  1. @Gaurav2728
Commits on Aug 11, 2015
  1. @rodzyn

    Rename match_attribute_method? to matched_attribute_method

    rodzyn authored
    `match_attribute_method?` is a bit confusing because it suggest
    that a return value is a boolean which is not true.
Commits on Aug 7, 2015
  1. @zzak

    Remove XML Serialization from core.

    zzak authored
    This includes the following classes:
    
    - ActiveModel::Serializers::Xml
    - ActiveRecord::Serialization::XmlSerializer
Commits on Jul 28, 2015
  1. @y-yagi
Commits on Jul 19, 2015
  1. @schneems

    Freeze string literals when not mutated.

    schneems authored
    I wrote a utility that helps find areas where you could optimize your program using a frozen string instead of a string literal, it's called [let_it_go](https://github.com/schneems/let_it_go). After going through the output and adding `.freeze` I was able to eliminate the creation of 1,114 string objects on EVERY request to [codetriage](codetriage.com). How does this impact execution?
    
    To look at memory:
    
    ```ruby
    require 'get_process_mem'
    
    mem = GetProcessMem.new
    GC.start
    GC.disable
    1_114.times { " " }
    before = mem.mb
    
    after = mem.mb
    GC.enable
    puts "Diff: #{after - before} mb"
    
    ```
    
    Creating 1,114 string objects results in `Diff: 0.03125 mb` of RAM allocated on every request. Or 1mb every 32 requests.
    
    To look at raw speed:
    
    ```ruby
    require 'benchmark/ips'
    
    number_of_objects_reduced = 1_114
    
    Benchmark.ips do |x|
      x.report("freeze")    { number_of_objects_reduced.times { " ".freeze } }
      x.report("no-freeze") { number_of_objects_reduced.times { " " } }
    end
    ```
    
    We get the results
    
    ```
    Calculating -------------------------------------
                  freeze     1.428k i/100ms
               no-freeze   609.000  i/100ms
    -------------------------------------------------
                  freeze     14.363k (± 8.5%) i/s -     71.400k
               no-freeze      6.084k (± 8.1%) i/s -     30.450k
    ```
    
    Now we can do some maths:
    
    ```ruby
    ips = 6_226k # iterations / 1 second
    call_time_before = 1.0 / ips # seconds per iteration 
    
    ips = 15_254 # iterations / 1 second
    call_time_after = 1.0 / ips # seconds per iteration 
    
    diff = call_time_before - call_time_after
    
    number_of_objects_reduced * diff * 100
    
    # => 0.4530373333993266 miliseconds saved per request
    ```
    
    So we're shaving off 1 second of execution time for every 220 requests. 
    
    Is this going to be an insane speed boost to any Rails app: nope. Should we merge it: yep. 
    
    p.s. If you know of a method call that doesn't modify a string input such as [String#gsub](https://github.com/schneems/let_it_go/blob/b0e2da69f0cca87ab581022baa43291cdf48638c/lib/let_it_go/core_ext/string.rb#L37) please [give me a pull request to the appropriate file](https://github.com/schneems/let_it_go/blob/b0e2da69f0cca87ab581022baa43291cdf48638c/lib/let_it_go/core_ext/string.rb#L37), or open an issue in LetItGo so we can track and freeze more strings. 
    
    Keep those strings Frozen
    
    ![](https://www.dropbox.com/s/z4dj9fdsv213r4v/let-it-go.gif?dl=1)
Commits on Jul 15, 2015
  1. @tgxworld

    Revert "Revert "Reduce allocations when running AR callbacks.""

    tgxworld authored
    This reverts commit bdc1d32.
    
    Before:
    Calculating -------------------------------------
                            22.000  i/100ms
    -------------------------------------------------
                            229.700  (± 0.4%) i/s -      1.166k
    Total Allocated Object: 9939
    
    After:
    Calculating -------------------------------------
                            24.000  i/100ms
    -------------------------------------------------
                            246.443  (± 0.8%) i/s -      1.248k
    Total Allocated Object: 7939
    
    ```
    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', github: 'rails/rails', ref: 'bdc1d329d4eea823d07cf010064bd19c07099ff3'
      gem 'rails', github: 'rails/rails', ref: 'd2876141d08341ec67cf6a11a073d1acfb920de7'
      gem 'arel', github: 'rails/arel'
      gem 'sqlite3'
      gem 'benchmark-ips'
    end
    
    require 'active_record'
    require 'benchmark/ips'
    
    ActiveRecord::Base.establish_connection('sqlite3::memory:')
    
    ActiveRecord::Migration.verbose = false
    
    ActiveRecord::Schema.define do
      create_table :users, force: true do |t|
        t.string :name, :email
        t.boolean :admin
        t.timestamps null: false
      end
    end
    
    class User < ActiveRecord::Base
      default_scope { where(admin: true) }
    end
    
    admin = true
    
    1000.times do
      attributes = {
        name: "Lorem ipsum dolor sit amet, consectetur adipiscing elit.",
        email: "foobar@email.com",
        admin: admin
      }
    
      User.create!(attributes)
    
      admin = !admin
    end
    
    GC.disable
    
    Benchmark.ips(5, 3) do |x|
      x.report { User.all.to_a }
    end
    
    key =
      if RUBY_VERSION < '2.2'
        :total_allocated_object
      else
        :total_allocated_objects
      end
    
    before = GC.stat[key]
    User.all.to_a
    after = GC.stat[key]
    puts "Total Allocated Object: #{after - before}"
    ```
Commits on Jul 11, 2015
  1. @zamith

    Removes unnecessary comments from i18n validations tests [ci skip]

    zamith authored
    These comments do not add a lot to the readability, grepability or
    overall understanding of the tests, therefore I believe they can be
    safely removed.
  2. @zamith

    Remove the reference to mocha in activemodel

    zamith authored
    Activemodel is no longer dependent on mocha, so we can make the comments
    more generic.
Commits on Jul 10, 2015
  1. @kaspth

    Use private method call assertions in Active Model tests.

    kaspth authored
    Also fix Minitest constant reference.
Commits on Jul 8, 2015
  1. @rafaelfranca

    Merge pull request #20803 from TheBlasfem/marking_serialization_class

    rafaelfranca authored
    marking serialization class in Readme
  2. @TheBlasfem
Commits on Jul 7, 2015
  1. @senny

    docs, clarify the meanaing of return values from validation methods.

    senny authored
    [ci skip]
    
    Closes #20792.
    
    Custom validation methods are implemented in terms of
    callbacks. The `validate` callback chain can't be halted using return
    values of individual callbacks.
  2. @senny

    docs, remove accidental :nodoc: of ActiveModel::Validations::ClassMet…

    senny authored
    …hods methods.
    
    [ci skip]
    
    While this :nodoc: did hide the constant it also removed the following
    methods from the API docs:
    
    - #attribute_method?
    - #clear_validators!
    - #validate
    - #validators
    - #validators_on
    
    Those are public API and should be visible.
    
    Issue was caused by dee4fbc
    
    /cc @zzak
Commits on Jul 1, 2015
  1. @robin850

    Separate the constraint and other options [ci skip]

    robin850 authored
    Only one constraint option can be used at a time (except for the minimum
    and maximum ones that can eventually be combined). However, other
    options can be used with them (e.g. the validation failure message).
    So let's make the distinction between these two different options
    categories.
    
    [Yves Senn, Matthew Draper & Robin Dupret]
Commits on Jun 27, 2015
  1. @radanskoric
Commits on Jun 23, 2015
  1. @robin850
Commits on Jun 22, 2015
  1. @meinac
  2. @senny

    docs, :scissors: wrongly placed heading. [ci skip]

    senny authored
    The heading "Active Model Length Validator" was shown on the
    "ActiveModel::Validations" page without any text following it.
Commits on Jun 21, 2015
  1. @repinel

    Move the validations HelperMethods to its own file

    repinel authored
    Closes #11209
    
    [Roque Pinel & Steven Yang]
Commits on Jun 11, 2015
  1. @senny
  2. @senny

    use our runner (`bin/test`) for framework components.

    senny authored
    This adds a script `bin/test` to most Rails framework components. The
    script uses the rails minitest plugin to augment the runner.
    See #19571 for details about the
    plugin.
    
    I did not yet add `bin/test` for activerecord, activejob and railties.
    These components rely on specific setup performed in the rake-tasks.
Commits on Jun 10, 2015
  1. @rafaelfranca

    Revert "Add code example for include option of AM::Serialization#seri…

    rafaelfranca authored
    …alizable_hash"
    
    This reverts commit 3d949f3.
    
    This was already documented in other PR.
Commits on Jun 9, 2015
  1. @radanskoric @rafaelfranca
Commits on Jun 8, 2015
  1. @davydovanton
Commits on Jun 7, 2015
  1. @robin850
  2. @robin850

    Merge pull request #20004 from rusikf/patch-1

    robin850 authored
    add docs to include option at ActiveModel::Serialization [ci skip]
Commits on May 29, 2015
  1. @rafaelfranca

    Require yaml for isolation test

    rafaelfranca authored
    It was removed when we removed mocha at
    5a6ae7f
  2. formatting changes

    unknown authored
Something went wrong with that request. Please try again.