schema_validations 1.0.0 → 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
 - data/.travis.yml +9 -8
 - data/README.md +27 -30
 - data/Rakefile +3 -3
 - data/gemfiles/Gemfile.base +4 -0
 - data/gemfiles/rails-3.2/Gemfile.base +3 -0
 - data/gemfiles/rails-4.1/Gemfile.base +3 -0
 - data/lib/schema_validations/active_record/validations.rb +18 -3
 - data/lib/schema_validations/version.rb +1 -1
 - data/schema_dev.yml +7 -0
 - data/schema_validations.gemspec +4 -3
 - data/spec/spec_helper.rb +15 -3
 - data/spec/validations_spec.rb +70 -60
 - metadata +43 -30
 - data/gemfiles/Gemfile.rails-3.2 +0 -4
 - data/gemfiles/Gemfile.rails-4.0 +0 -4
 - data/runspecs +0 -107
 - data/spec/connection.rb +0 -14
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA1:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: cf56fe0be502dcf9f95a0f67c2a8b03a8c51040e
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: add46e41c04f6a0beb6ab4281ba0c5b6d28560be
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 0759bedcb1a79fb0005837fd6554d946ce8125ad2eee50bbb000b74775213bb3fe943ef2cfeb26fce60a29315d29b8c68b92661e7cc94c05ec5a6393e46baaf8
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 61cd1032954a0b865b916884a44dcdbb88f04129bbde467b311506b802a0ee1feb9aa895ca33122bae07c50f3273b2c1ccce3529d681db3e14c760b4ad16573b
         
     | 
    
        data/.travis.yml
    CHANGED
    
    | 
         @@ -1,10 +1,11 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # This file was auto-generated by the schema_dev tool, based on the data in
         
     | 
| 
      
 2 
     | 
    
         
            +
            #                 ./schema_dev.yml
         
     | 
| 
      
 3 
     | 
    
         
            +
            # Please do not edit this file; any changes will be overwritten next time
         
     | 
| 
      
 4 
     | 
    
         
            +
            # schema_dev gets run.
         
     | 
| 
      
 5 
     | 
    
         
            +
            ---
         
     | 
| 
       1 
6 
     | 
    
         
             
            rvm:
         
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
     | 
    
         
            -
             
     | 
| 
      
 7 
     | 
    
         
            +
            - 1.9.3
         
     | 
| 
      
 8 
     | 
    
         
            +
            - 2.1.3
         
     | 
| 
       4 
9 
     | 
    
         
             
            gemfile:
         
     | 
| 
       5 
     | 
    
         
            -
             
     | 
| 
       6 
     | 
    
         
            -
             
     | 
| 
       7 
     | 
    
         
            -
            notifications:
         
     | 
| 
       8 
     | 
    
         
            -
              recipients:
         
     | 
| 
       9 
     | 
    
         
            -
                - michal.lomnicki@gmail.com
         
     | 
| 
       10 
     | 
    
         
            -
                - ronen@barzel.org
         
     | 
| 
      
 10 
     | 
    
         
            +
            - gemfiles/rails-3.2/Gemfile.sqlite3
         
     | 
| 
      
 11 
     | 
    
         
            +
            - gemfiles/rails-4.1/Gemfile.sqlite3
         
     | 
    
        data/README.md
    CHANGED
    
    | 
         @@ -5,8 +5,8 @@ definitions simpler and more DRY, by automatically defining validations based 
     | 
|
| 
       5 
5 
     | 
    
         
             
            on the database schema.
         
     | 
| 
       6 
6 
     | 
    
         | 
| 
       7 
7 
     | 
    
         
             
            [](http://badge.fury.io/rb/schema_validations)
         
     | 
| 
       8 
     | 
    
         
            -
            [](http://travis-ci.org/SchemaPlus/schema_validations)
         
     | 
| 
      
 9 
     | 
    
         
            +
            [](https://gemnasium.com/SchemaPlus/schema_validations)
         
     | 
| 
       10 
10 
     | 
    
         | 
| 
       11 
11 
     | 
    
         
             
            ## Overview
         
     | 
| 
       12 
12 
     | 
    
         | 
| 
         @@ -25,7 +25,7 @@ In that case :null => false, :limit => 30 and :boolean must be covered on the 
     | 
|
| 
       25 
25 
     | 
    
         
             
            model level.
         
     | 
| 
       26 
26 
     | 
    
         | 
| 
       27 
27 
     | 
    
         
             
                class User < ActiveRecord::Base
         
     | 
| 
       28 
     | 
    
         
            -
                  validates :email, :presence => true, :length => 30
         
     | 
| 
      
 28 
     | 
    
         
            +
                  validates :email, :presence => true, :length => { :maximum => 30 }
         
     | 
| 
       29 
29 
     | 
    
         
             
                  validates :confirmed, :presence => true, :inclusion => { :in => [true, false] }
         
     | 
| 
       30 
30 
     | 
    
         
             
                end
         
     | 
| 
       31 
31 
     | 
    
         | 
| 
         @@ -81,19 +81,19 @@ You can also pass options as per above. 
     | 
|
| 
       81 
81 
     | 
    
         | 
| 
       82 
82 
     | 
    
         
             
            Constraints:
         
     | 
| 
       83 
83 
     | 
    
         | 
| 
       84 
     | 
    
         
            -
             
     | 
| 
       85 
     | 
    
         
            -
             
     | 
| 
       86 
     | 
    
         
            -
             
     | 
| 
       87 
     | 
    
         
            -
             
     | 
| 
       88 
     | 
    
         
            -
             
     | 
| 
      
 84 
     | 
    
         
            +
            |      Constraint     |                     Validation                           |
         
     | 
| 
      
 85 
     | 
    
         
            +
            |---------------------|----------------------------------------------------------|
         
     | 
| 
      
 86 
     | 
    
         
            +
            | :null => false      | validates ... :presence => true                          |
         
     | 
| 
      
 87 
     | 
    
         
            +
            | :limit => 100       | validates ... :length => { :maximum => 100 }             |
         
     | 
| 
      
 88 
     | 
    
         
            +
            | :unique => true     | validates ... :uniqueness => true                        |
         
     | 
| 
       89 
89 
     | 
    
         | 
| 
       90 
90 
     | 
    
         
             
            Data types:
         
     | 
| 
       91 
91 
     | 
    
         | 
| 
       92 
     | 
    
         
            -
             
     | 
| 
       93 
     | 
    
         
            -
             
     | 
| 
       94 
     | 
    
         
            -
             
     | 
| 
       95 
     | 
    
         
            -
             
     | 
| 
       96 
     | 
    
         
            -
             
     | 
| 
      
 92 
     | 
    
         
            +
            |         Type       |                      Validation                           |
         
     | 
| 
      
 93 
     | 
    
         
            +
            |--------------------|-----------------------------------------------------------|
         
     | 
| 
      
 94 
     | 
    
         
            +
            | :boolean           | :validates ... :inclusion => { :in => [true, false] }     |
         
     | 
| 
      
 95 
     | 
    
         
            +
            | :float             | :validates ... :numericality => true                      |
         
     | 
| 
      
 96 
     | 
    
         
            +
            | :integer           | :validates ... :numericality => { :only_integer => true } |
         
     | 
| 
       97 
97 
     | 
    
         | 
| 
       98 
98 
     | 
    
         
             
            ## Dependency
         
     | 
| 
       99 
99 
     | 
    
         | 
| 
         @@ -105,11 +105,10 @@ config. 
     | 
|
| 
       105 
105 
     | 
    
         | 
| 
       106 
106 
     | 
    
         
             
            ## Compatibility
         
     | 
| 
       107 
107 
     | 
    
         | 
| 
       108 
     | 
    
         
            -
            SchemaValidations  
     | 
| 
       109 
     | 
    
         
            -
             
     | 
| 
       110 
     | 
    
         
            -
            *   rails 3.2 or 4.0
         
     | 
| 
       111 
     | 
    
         
            -
            *   MRI ruby 1.9.3 or 2.0.0
         
     | 
| 
      
 108 
     | 
    
         
            +
            SchemaValidations is tested on all combinations of:
         
     | 
| 
       112 
109 
     | 
    
         | 
| 
      
 110 
     | 
    
         
            +
            *   rails 3.2 or 4.1
         
     | 
| 
      
 111 
     | 
    
         
            +
            *   MRI ruby 1.9.3 and 2.1.3
         
     | 
| 
       113 
112 
     | 
    
         | 
| 
       114 
113 
     | 
    
         
             
            ## How do I know what it did?
         
     | 
| 
       115 
114 
     | 
    
         
             
            If you're curious (or dubious) about what validations SchemaValidations
         
     | 
| 
         @@ -130,9 +129,13 @@ use case. 
     | 
|
| 
       130 
129 
     | 
    
         | 
| 
       131 
130 
     | 
    
         
             
            ## Release Notes
         
     | 
| 
       132 
131 
     | 
    
         | 
| 
      
 132 
     | 
    
         
            +
            ### 1.0.1
         
     | 
| 
      
 133 
     | 
    
         
            +
             
     | 
| 
      
 134 
     | 
    
         
            +
            * Fix enums in Rails 4.1.  [@lowjoel](https://github.com/lowjoel)
         
     | 
| 
      
 135 
     | 
    
         
            +
             
     | 
| 
       133 
136 
     | 
    
         
             
            ### 1.0.0
         
     | 
| 
       134 
137 
     | 
    
         | 
| 
       135 
     | 
    
         
            -
            * Works with Rails 4.0.  Thanks to  
     | 
| 
      
 138 
     | 
    
         
            +
            * Works with Rails 4.0.  Thanks to [@davll](https://github.com/davll)
         
     | 
| 
       136 
139 
     | 
    
         
             
            * No longer support Rails < 3.2 or Ruby < 1.9.3
         
     | 
| 
       137 
140 
     | 
    
         | 
| 
       138 
141 
     | 
    
         
             
            ### 0.2.2
         
     | 
| 
         @@ -154,22 +157,16 @@ use case. 
     | 
|
| 
       154 
157 
     | 
    
         | 
| 
       155 
158 
     | 
    
         
             
            ## Testing
         
     | 
| 
       156 
159 
     | 
    
         | 
| 
       157 
     | 
    
         
            -
            SchemaValidations is tested  
     | 
| 
       158 
     | 
    
         
            -
             
     | 
| 
       159 
     | 
    
         
            -
            tests, after you've forked & cloned:
         
     | 
| 
      
 160 
     | 
    
         
            +
            SchemaValidations is tested against the matrix of combinations.  To run the full combo of
         
     | 
| 
      
 161 
     | 
    
         
            +
            tests, after you've forked & cloned: 
         
     | 
| 
       160 
162 
     | 
    
         | 
| 
       161 
163 
     | 
    
         
             
                $ cd schema_validations
         
     | 
| 
       162 
     | 
    
         
            -
                $  
     | 
| 
       163 
     | 
    
         
            -
                $  
     | 
| 
      
 164 
     | 
    
         
            +
                $ schema_dev bundle install
         
     | 
| 
      
 165 
     | 
    
         
            +
                $ schema_dev rspec
         
     | 
| 
       164 
166 
     | 
    
         | 
| 
       165 
     | 
    
         
            -
             
     | 
| 
       166 
     | 
    
         
            -
            version of rails and ruby to use, such as:
         
     | 
| 
       167 
     | 
    
         
            -
                $ rvm use 1.9.2
         
     | 
| 
       168 
     | 
    
         
            -
                $ export BUNDLE_GEMFILE=gemfiles/Gemfile.rails-3.1
         
     | 
| 
       169 
     | 
    
         
            -
                $ rake spec
         
     | 
| 
      
 167 
     | 
    
         
            +
            For more info, see [schema_dev](https://github.com/SchemaPlus/schema_dev)
         
     | 
| 
       170 
168 
     | 
    
         | 
| 
       171 
     | 
    
         
            -
             
     | 
| 
       172 
     | 
    
         
            -
            coverage/index.html -- it should be at 100% coverage.
         
     | 
| 
      
 169 
     | 
    
         
            +
            Code coverage results will be in coverage/index.html -- it should be at 100% coverage.
         
     | 
| 
       173 
170 
     | 
    
         | 
| 
       174 
171 
     | 
    
         
             
            ## License
         
     | 
| 
       175 
172 
     | 
    
         | 
    
        data/Rakefile
    CHANGED
    
    | 
         @@ -2,9 +2,9 @@ require 'bundler' 
     | 
|
| 
       2 
2 
     | 
    
         
             
            Bundler::GemHelper.install_tasks
         
     | 
| 
       3 
3 
     | 
    
         | 
| 
       4 
4 
     | 
    
         
             
            require 'rspec/core/rake_task'
         
     | 
| 
       5 
     | 
    
         
            -
            RSpec::Core::RakeTask.new(:spec) 
     | 
| 
       6 
     | 
    
         
            -
             
     | 
| 
       7 
     | 
    
         
            -
             
     | 
| 
      
 5 
     | 
    
         
            +
            RSpec::Core::RakeTask.new(:spec)
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
            require 'schema_dev/tasks'
         
     | 
| 
       8 
8 
     | 
    
         | 
| 
       9 
9 
     | 
    
         
             
            task :default => :spec
         
     | 
| 
       10 
10 
     | 
    
         | 
| 
         @@ -97,11 +97,11 @@ module SchemaValidations 
     | 
|
| 
       97 
97 
     | 
    
         | 
| 
       98 
98 
     | 
    
         
             
                      # Data-type validation
         
     | 
| 
       99 
99 
     | 
    
         
             
                      if column.type == :integer
         
     | 
| 
       100 
     | 
    
         
            -
                         
     | 
| 
      
 100 
     | 
    
         
            +
                        load_integer_column_validations(name, column)
         
     | 
| 
       101 
101 
     | 
    
         
             
                      elsif column.number?
         
     | 
| 
       102 
     | 
    
         
            -
                         
     | 
| 
      
 102 
     | 
    
         
            +
                        load_numeric_column_validations(name, column)
         
     | 
| 
       103 
103 
     | 
    
         
             
                      elsif column.text? && column.limit
         
     | 
| 
       104 
     | 
    
         
            -
                         
     | 
| 
      
 104 
     | 
    
         
            +
                        load_string_column_validations(name, column)
         
     | 
| 
       105 
105 
     | 
    
         
             
                      end
         
     | 
| 
       106 
106 
     | 
    
         | 
| 
       107 
107 
     | 
    
         
             
                      # NOT NULL constraints
         
     | 
| 
         @@ -118,6 +118,21 @@ module SchemaValidations 
     | 
|
| 
       118 
118 
     | 
    
         
             
                    end
         
     | 
| 
       119 
119 
     | 
    
         
             
                  end
         
     | 
| 
       120 
120 
     | 
    
         | 
| 
      
 121 
     | 
    
         
            +
                  def load_integer_column_validations(name, column)
         
     | 
| 
      
 122 
     | 
    
         
            +
                    is_enum_column = respond_to?(:defined_enums) && defined_enums.has_key?(column.name)
         
     | 
| 
      
 123 
     | 
    
         
            +
                    unless is_enum_column
         
     | 
| 
      
 124 
     | 
    
         
            +
                      validate_logged :validates_numericality_of, name, :allow_nil => true, :only_integer => true
         
     | 
| 
      
 125 
     | 
    
         
            +
                    end
         
     | 
| 
      
 126 
     | 
    
         
            +
                  end
         
     | 
| 
      
 127 
     | 
    
         
            +
             
     | 
| 
      
 128 
     | 
    
         
            +
                  def load_numeric_column_validations(name, _)
         
     | 
| 
      
 129 
     | 
    
         
            +
                    validate_logged :validates_numericality_of, name, :allow_nil => true
         
     | 
| 
      
 130 
     | 
    
         
            +
                  end
         
     | 
| 
      
 131 
     | 
    
         
            +
             
     | 
| 
      
 132 
     | 
    
         
            +
                  def load_string_column_validations(name, column)
         
     | 
| 
      
 133 
     | 
    
         
            +
                    validate_logged :validates_length_of, name, :allow_nil => true, :maximum => column.limit
         
     | 
| 
      
 134 
     | 
    
         
            +
                  end
         
     | 
| 
      
 135 
     | 
    
         
            +
             
     | 
| 
       121 
136 
     | 
    
         
             
                  def load_association_validations #:nodoc:
         
     | 
| 
       122 
137 
     | 
    
         
             
                    reflect_on_all_associations(:belongs_to).each do |association|
         
     | 
| 
       123 
138 
     | 
    
         
             
                      # :primary_key_name was deprecated (noisily) in rails 3.1
         
     | 
    
        data/schema_dev.yml
    ADDED
    
    
    
        data/schema_validations.gemspec
    CHANGED
    
    | 
         @@ -8,7 +8,7 @@ Gem::Specification.new do |s| 
     | 
|
| 
       8 
8 
     | 
    
         
             
              s.platform    = Gem::Platform::RUBY
         
     | 
| 
       9 
9 
     | 
    
         
             
              s.authors     = ["Ronen Barzel", "Michał Łomnicki"]
         
     | 
| 
       10 
10 
     | 
    
         
             
              s.email       = ["ronen@barzel.org", "michal.lomnicki@gmail.com"]
         
     | 
| 
       11 
     | 
    
         
            -
              s.homepage    = "https://github.com/ 
     | 
| 
      
 11 
     | 
    
         
            +
              s.homepage    = "https://github.com/SchemaPlus/schema_validations"
         
     | 
| 
       12 
12 
     | 
    
         
             
              s.summary     = "Automatically creates validations basing on the database schema."
         
     | 
| 
       13 
13 
     | 
    
         
             
              s.description = "SchemaValidations extends ActiveRecord to automatically create validations by inspecting the database schema. This makes your models more DRY as you no longer need to duplicate NOT NULL, unique, numeric and varchar constraints on the model level."
         
     | 
| 
       14 
14 
     | 
    
         
             
              s.license     = 'MIT'
         
     | 
| 
         @@ -22,11 +22,12 @@ Gem::Specification.new do |s| 
     | 
|
| 
       22 
22 
     | 
    
         | 
| 
       23 
23 
     | 
    
         
             
              s.add_dependency("schema_plus")
         
     | 
| 
       24 
24 
     | 
    
         | 
| 
      
 25 
     | 
    
         
            +
              s.add_development_dependency("schema_dev", "~> 1.0")
         
     | 
| 
       25 
26 
     | 
    
         
             
              s.add_development_dependency("rake")
         
     | 
| 
       26 
27 
     | 
    
         
             
              s.add_development_dependency("rdoc")
         
     | 
| 
       27 
28 
     | 
    
         
             
              s.add_development_dependency("rspec")
         
     | 
| 
       28 
     | 
    
         
            -
              s.add_development_dependency("sqlite3")
         
     | 
| 
       29 
29 
     | 
    
         
             
              s.add_development_dependency("simplecov")
         
     | 
| 
       30 
     | 
    
         
            -
              s.add_development_dependency("simplecov-gem- 
     | 
| 
      
 30 
     | 
    
         
            +
              s.add_development_dependency("simplecov-gem-profile")
         
     | 
| 
      
 31 
     | 
    
         
            +
              s.add_development_dependency("database_cleaner")
         
     | 
| 
       31 
32 
     | 
    
         
             
            end
         
     | 
| 
       32 
33 
     | 
    
         | 
    
        data/spec/spec_helper.rb
    CHANGED
    
    | 
         @@ -1,5 +1,5 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            require 'simplecov'
         
     | 
| 
       2 
     | 
    
         
            -
            require 'simplecov-gem- 
     | 
| 
      
 2 
     | 
    
         
            +
            require 'simplecov-gem-profile'
         
     | 
| 
       3 
3 
     | 
    
         
             
            SimpleCov.start "gem"
         
     | 
| 
       4 
4 
     | 
    
         | 
| 
       5 
5 
     | 
    
         
             
            $LOAD_PATH.unshift(File.dirname(__FILE__))
         
     | 
| 
         @@ -8,8 +8,20 @@ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib')) 
     | 
|
| 
       8 
8 
     | 
    
         
             
            require 'rspec'
         
     | 
| 
       9 
9 
     | 
    
         
             
            require 'active_record'
         
     | 
| 
       10 
10 
     | 
    
         
             
            require 'schema_validations'
         
     | 
| 
       11 
     | 
    
         
            -
            require ' 
     | 
| 
       12 
     | 
    
         
            -
            require ' 
     | 
| 
      
 11 
     | 
    
         
            +
            require 'schema_dev/rspec'
         
     | 
| 
      
 12 
     | 
    
         
            +
            require 'database_cleaner'
         
     | 
| 
      
 13 
     | 
    
         
            +
            DatabaseCleaner.strategy = :truncation
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
            SchemaDev::Rspec.setup_db
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
            RSpec.configure do |config|
         
     | 
| 
      
 18 
     | 
    
         
            +
              config.before(:each) do
         
     | 
| 
      
 19 
     | 
    
         
            +
                DatabaseCleaner.clean
         
     | 
| 
      
 20 
     | 
    
         
            +
              end
         
     | 
| 
      
 21 
     | 
    
         
            +
            end
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
      
 23 
     | 
    
         
            +
            # avoid deprecation warnings
         
     | 
| 
      
 24 
     | 
    
         
            +
            I18n.enforce_available_locales = true
         
     | 
| 
       13 
25 
     | 
    
         | 
| 
       14 
26 
     | 
    
         
             
            Dir[File.dirname(__FILE__) + "/support/**/*.rb"].each {|f| require f}
         
     | 
| 
       15 
27 
     | 
    
         | 
    
        data/spec/validations_spec.rb
    CHANGED
    
    | 
         @@ -24,91 +24,81 @@ describe "Validations" do 
     | 
|
| 
       24 
24 
     | 
    
         
             
                end
         
     | 
| 
       25 
25 
     | 
    
         | 
| 
       26 
26 
     | 
    
         
             
                it "should create validations for introspection with validators" do
         
     | 
| 
       27 
     | 
    
         
            -
                  Article.validators.map{|v| v.class.name.demodulize}.uniq. 
     | 
| 
      
 27 
     | 
    
         
            +
                  expect(Article.validators.map{|v| v.class.name.demodulize}.uniq).to match_array(%W[
         
     | 
| 
       28 
28 
     | 
    
         
             
                    InclusionValidator
         
     | 
| 
       29 
29 
     | 
    
         
             
                    LengthValidator
         
     | 
| 
       30 
30 
     | 
    
         
             
                    NumericalityValidator
         
     | 
| 
       31 
31 
     | 
    
         
             
                    PresenceValidator
         
     | 
| 
       32 
32 
     | 
    
         
             
                    UniquenessValidator
         
     | 
| 
       33 
     | 
    
         
            -
                  ]
         
     | 
| 
      
 33 
     | 
    
         
            +
                  ])
         
     | 
| 
       34 
34 
     | 
    
         
             
                end
         
     | 
| 
       35 
35 
     | 
    
         | 
| 
       36 
36 
     | 
    
         
             
                it "should create validations for introspection with validators_on" do
         
     | 
| 
       37 
     | 
    
         
            -
                  Article.validators_on(:content).map{|v| v.class.name.demodulize}.uniq. 
     | 
| 
      
 37 
     | 
    
         
            +
                  expect(Article.validators_on(:content).map{|v| v.class.name.demodulize}.uniq).to match_array(%W[
         
     | 
| 
       38 
38 
     | 
    
         
             
                    PresenceValidator
         
     | 
| 
       39 
     | 
    
         
            -
                  ]
         
     | 
| 
      
 39 
     | 
    
         
            +
                  ])
         
     | 
| 
       40 
40 
     | 
    
         
             
                end
         
     | 
| 
       41 
41 
     | 
    
         | 
| 
       42 
42 
     | 
    
         
             
                it "should be valid with valid attributes" do
         
     | 
| 
       43 
     | 
    
         
            -
                  Article.new( 
     | 
| 
      
 43 
     | 
    
         
            +
                  expect(Article.new(valid_article_attributes)).to be_valid
         
     | 
| 
       44 
44 
     | 
    
         
             
                end
         
     | 
| 
       45 
45 
     | 
    
         | 
| 
       46 
46 
     | 
    
         
             
                it "should validate content presence" do
         
     | 
| 
       47 
     | 
    
         
            -
                  Article.new. 
     | 
| 
      
 47 
     | 
    
         
            +
                  expect(Article.new.error_on(:content).size).to eq(1)
         
     | 
| 
       48 
48 
     | 
    
         
             
                end
         
     | 
| 
       49 
49 
     | 
    
         | 
| 
       50 
50 
     | 
    
         
             
                it "should check title length" do
         
     | 
| 
       51 
     | 
    
         
            -
                  Article.new(:title => 'a' * 100). 
     | 
| 
      
 51 
     | 
    
         
            +
                  expect(Article.new(:title => 'a' * 100).error_on(:title).size).to eq(1)
         
     | 
| 
       52 
52 
     | 
    
         
             
                end
         
     | 
| 
       53 
53 
     | 
    
         | 
| 
       54 
54 
     | 
    
         
             
                it "should validate state numericality" do
         
     | 
| 
       55 
     | 
    
         
            -
                  Article.new(:state => 'unknown'). 
     | 
| 
      
 55 
     | 
    
         
            +
                  expect(Article.new(:state => 'unknown').error_on(:state).size).to eq(1)
         
     | 
| 
       56 
56 
     | 
    
         
             
                end
         
     | 
| 
       57 
57 
     | 
    
         | 
| 
       58 
58 
     | 
    
         
             
                it "should validate if state is integer" do
         
     | 
| 
       59 
     | 
    
         
            -
                  Article.new(:state => 1.23). 
     | 
| 
      
 59 
     | 
    
         
            +
                  expect(Article.new(:state => 1.23).error_on(:state).size).to eq(1)
         
     | 
| 
       60 
60 
     | 
    
         
             
                end
         
     | 
| 
       61 
61 
     | 
    
         | 
| 
       62 
62 
     | 
    
         
             
                it "should validate average_mark numericality" do
         
     | 
| 
       63 
     | 
    
         
            -
                  Article.new(:average_mark => "high"). 
     | 
| 
      
 63 
     | 
    
         
            +
                  expect(Article.new(:average_mark => "high").error_on(:average_mark).size).to eq(1)
         
     | 
| 
       64 
64 
     | 
    
         
             
                end
         
     | 
| 
       65 
65 
     | 
    
         | 
| 
       66 
66 
     | 
    
         
             
                it "should validate boolean fields" do
         
     | 
| 
       67 
     | 
    
         
            -
                  Article.new(:active => nil). 
     | 
| 
      
 67 
     | 
    
         
            +
                  expect(Article.new(:active => nil).error_on(:active).size).to eq(1)
         
     | 
| 
       68 
68 
     | 
    
         
             
                end
         
     | 
| 
       69 
69 
     | 
    
         | 
| 
       70 
70 
     | 
    
         
             
                it "should validate title uniqueness" do
         
     | 
| 
       71 
     | 
    
         
            -
                  article1 = Article.create( 
     | 
| 
       72 
     | 
    
         
            -
                  article2 = Article.new(:title =>  
     | 
| 
       73 
     | 
    
         
            -
                  article2. 
     | 
| 
      
 71 
     | 
    
         
            +
                  article1 = Article.create(valid_article_attributes)
         
     | 
| 
      
 72 
     | 
    
         
            +
                  article2 = Article.new(:title => valid_article_attributes[:title])
         
     | 
| 
      
 73 
     | 
    
         
            +
                  expect(article2.error_on(:title).size).to eq(1)
         
     | 
| 
       74 
74 
     | 
    
         
             
                  article1.destroy
         
     | 
| 
       75 
75 
     | 
    
         
             
                end
         
     | 
| 
       76 
76 
     | 
    
         | 
| 
       77 
77 
     | 
    
         
             
                it "should validate state uniqueness in scope of 'active' value" do
         
     | 
| 
       78 
     | 
    
         
            -
                  article1 = Article.create( 
     | 
| 
       79 
     | 
    
         
            -
                  article2 = Article.new( 
     | 
| 
       80 
     | 
    
         
            -
                  article2. 
     | 
| 
      
 78 
     | 
    
         
            +
                  article1 = Article.create(valid_article_attributes)
         
     | 
| 
      
 79 
     | 
    
         
            +
                  article2 = Article.new(valid_article_attributes.merge(:title => 'SchemaPlus 2.0 released'))
         
     | 
| 
      
 80 
     | 
    
         
            +
                  expect(article2).not_to be_valid
         
     | 
| 
       81 
81 
     | 
    
         
             
                  article2.toggle(:active)
         
     | 
| 
       82 
     | 
    
         
            -
                  article2. 
     | 
| 
      
 82 
     | 
    
         
            +
                  expect(article2).to be_valid
         
     | 
| 
       83 
83 
     | 
    
         
             
                  article1.destroy
         
     | 
| 
       84 
84 
     | 
    
         
             
                end
         
     | 
| 
       85 
85 
     | 
    
         | 
| 
       86 
86 
     | 
    
         
             
                it "should validate presence of belongs_to association" do
         
     | 
| 
       87 
87 
     | 
    
         
             
                  review = Review.new
         
     | 
| 
       88 
     | 
    
         
            -
                  review. 
     | 
| 
      
 88 
     | 
    
         
            +
                  expect(review.error_on(:article).size).to eq(1)
         
     | 
| 
       89 
89 
     | 
    
         
             
                end
         
     | 
| 
       90 
90 
     | 
    
         | 
| 
       91 
91 
     | 
    
         
             
                it "should validate uniqueness of belongs_to association" do
         
     | 
| 
       92 
     | 
    
         
            -
                  article = Article.create( 
     | 
| 
       93 
     | 
    
         
            -
                  article. 
     | 
| 
      
 92 
     | 
    
         
            +
                  article = Article.create(valid_article_attributes)
         
     | 
| 
      
 93 
     | 
    
         
            +
                  expect(article).to be_valid
         
     | 
| 
       94 
94 
     | 
    
         
             
                  review1 = Review.create(:article => article, :author => 'michal')
         
     | 
| 
       95 
     | 
    
         
            -
                  review1. 
     | 
| 
      
 95 
     | 
    
         
            +
                  expect(review1).to be_valid
         
     | 
| 
       96 
96 
     | 
    
         
             
                  review2 = Review.new(:article => article, :author => 'michal')
         
     | 
| 
       97 
     | 
    
         
            -
                  review2. 
     | 
| 
      
 97 
     | 
    
         
            +
                  expect(review2.error_on(:article_id).size).to be >= 1
         
     | 
| 
       98 
98 
     | 
    
         
             
                end
         
     | 
| 
       99 
99 
     | 
    
         | 
| 
       100 
100 
     | 
    
         
             
                it "should validate associations with unmatched column and name" do
         
     | 
| 
       101 
     | 
    
         
            -
                  Review.new. 
     | 
| 
       102 
     | 
    
         
            -
                end
         
     | 
| 
       103 
     | 
    
         
            -
             
     | 
| 
       104 
     | 
    
         
            -
                def valid_attributes
         
     | 
| 
       105 
     | 
    
         
            -
                  {
         
     | 
| 
       106 
     | 
    
         
            -
                    :title => 'SchemaPlus released!',
         
     | 
| 
       107 
     | 
    
         
            -
                    :content => "Database matters. Get full use of it but don't write unecessary code. Get SchemaPlus!",
         
     | 
| 
       108 
     | 
    
         
            -
                    :state => 3,
         
     | 
| 
       109 
     | 
    
         
            -
                    :average_mark => 9.78,
         
     | 
| 
       110 
     | 
    
         
            -
                    :active => true
         
     | 
| 
       111 
     | 
    
         
            -
                  }
         
     | 
| 
      
 101 
     | 
    
         
            +
                  expect(Review.new.error_on(:news_article).size).to eq(1)
         
     | 
| 
       112 
102 
     | 
    
         
             
                end
         
     | 
| 
       113 
103 
     | 
    
         | 
| 
       114 
104 
     | 
    
         
             
              end
         
     | 
| 
         @@ -127,44 +117,44 @@ describe "Validations" do 
     | 
|
| 
       127 
117 
     | 
    
         | 
| 
       128 
118 
     | 
    
         
             
                it "would normally have an error" do
         
     | 
| 
       129 
119 
     | 
    
         
             
                  @review = Review.new(:content => @too_big_content)
         
     | 
| 
       130 
     | 
    
         
            -
                  @review. 
     | 
| 
       131 
     | 
    
         
            -
                  @review. 
     | 
| 
      
 120 
     | 
    
         
            +
                  expect(@review.error_on(:content).size).to eq(1)
         
     | 
| 
      
 121 
     | 
    
         
            +
                  expect(@review.error_on(:author).size).to eq(1)
         
     | 
| 
       132 
122 
     | 
    
         
             
                end
         
     | 
| 
       133 
123 
     | 
    
         | 
| 
       134 
124 
     | 
    
         
             
                it "shouldn't validate fields passed to :except option" do
         
     | 
| 
       135 
125 
     | 
    
         
             
                  Review.schema_validations :except => :content
         
     | 
| 
       136 
126 
     | 
    
         
             
                  @review = Review.new(:content => @too_big_content)
         
     | 
| 
       137 
     | 
    
         
            -
                  @review. 
     | 
| 
       138 
     | 
    
         
            -
                  @review. 
     | 
| 
      
 127 
     | 
    
         
            +
                  expect(@review.errors_on(:content).size).to eq(0)
         
     | 
| 
      
 128 
     | 
    
         
            +
                  expect(@review.error_on(:author).size).to eq(1)
         
     | 
| 
       139 
129 
     | 
    
         
             
                end
         
     | 
| 
       140 
130 
     | 
    
         | 
| 
       141 
131 
     | 
    
         
             
                it "shouldn't validate types passed to :except_type option using full validation" do
         
     | 
| 
       142 
132 
     | 
    
         
             
                  Review.schema_validations :except_type => :validates_length_of
         
     | 
| 
       143 
133 
     | 
    
         
             
                  @review = Review.new(:content => @too_big_content)
         
     | 
| 
       144 
     | 
    
         
            -
                  @review. 
     | 
| 
       145 
     | 
    
         
            -
                  @review. 
     | 
| 
      
 134 
     | 
    
         
            +
                  expect(@review.errors_on(:content).size).to eq(0)
         
     | 
| 
      
 135 
     | 
    
         
            +
                  expect(@review.error_on(:author).size).to eq(1)
         
     | 
| 
       146 
136 
     | 
    
         
             
                end
         
     | 
| 
       147 
137 
     | 
    
         | 
| 
       148 
138 
     | 
    
         
             
                it "shouldn't validate types passed to :except_type option using shorthand" do
         
     | 
| 
       149 
139 
     | 
    
         
             
                  Review.schema_validations :except_type => :length
         
     | 
| 
       150 
140 
     | 
    
         
             
                  @review = Review.new(:content => @too_big_content)
         
     | 
| 
       151 
     | 
    
         
            -
                  @review. 
     | 
| 
       152 
     | 
    
         
            -
                  @review. 
     | 
| 
      
 141 
     | 
    
         
            +
                  expect(@review.errors_on(:content).size).to eq(0)
         
     | 
| 
      
 142 
     | 
    
         
            +
                  expect(@review.error_on(:author).size).to eq(1)
         
     | 
| 
       153 
143 
     | 
    
         
             
                end
         
     | 
| 
       154 
144 
     | 
    
         | 
| 
       155 
145 
     | 
    
         
             
                it "should only validate type passed to :only_type option" do
         
     | 
| 
       156 
146 
     | 
    
         
             
                  Review.schema_validations :only_type => :length
         
     | 
| 
       157 
147 
     | 
    
         
             
                  @review = Review.new(:content => @too_big_content)
         
     | 
| 
       158 
     | 
    
         
            -
                  @review. 
     | 
| 
       159 
     | 
    
         
            -
                  @review. 
     | 
| 
      
 148 
     | 
    
         
            +
                  expect(@review.error_on(:content).size).to eq(1)
         
     | 
| 
      
 149 
     | 
    
         
            +
                  expect(@review.errors_on(:author).size).to eq(0)
         
     | 
| 
       160 
150 
     | 
    
         
             
                end
         
     | 
| 
       161 
151 
     | 
    
         | 
| 
       162 
152 
     | 
    
         | 
| 
       163 
153 
     | 
    
         
             
                it "shouldn't create validations if locally disabled" do
         
     | 
| 
       164 
154 
     | 
    
         
             
                  Review.schema_validations :auto_create => false
         
     | 
| 
       165 
155 
     | 
    
         
             
                  @review = Review.new(:content => @too_big_content)
         
     | 
| 
       166 
     | 
    
         
            -
                  @review. 
     | 
| 
       167 
     | 
    
         
            -
                  @review. 
     | 
| 
      
 156 
     | 
    
         
            +
                  expect(@review.errors_on(:content).size).to eq(0)
         
     | 
| 
      
 157 
     | 
    
         
            +
                  expect(@review.error_on(:author).size).to eq(0)
         
     | 
| 
       168 
158 
     | 
    
         
             
                end
         
     | 
| 
       169 
159 
     | 
    
         
             
              end
         
     | 
| 
       170 
160 
     | 
    
         | 
| 
         @@ -182,17 +172,17 @@ describe "Validations" do 
     | 
|
| 
       182 
172 
     | 
    
         
             
                end
         
     | 
| 
       183 
173 
     | 
    
         | 
| 
       184 
174 
     | 
    
         
             
                it "should not create validation" do
         
     | 
| 
       185 
     | 
    
         
            -
                  Review.new(:content => @too_big_title). 
     | 
| 
      
 175 
     | 
    
         
            +
                  expect(Review.new(:content => @too_big_title).errors_on(:content).size).to eq(0)
         
     | 
| 
       186 
176 
     | 
    
         
             
                end
         
     | 
| 
       187 
177 
     | 
    
         | 
| 
       188 
178 
     | 
    
         
             
                it "should create validation if locally enabled explicitly" do
         
     | 
| 
       189 
179 
     | 
    
         
             
                  Review.schema_validations :auto_create => true
         
     | 
| 
       190 
     | 
    
         
            -
                  Review.new(:content => @too_big_content). 
     | 
| 
      
 180 
     | 
    
         
            +
                  expect(Review.new(:content => @too_big_content).error_on(:content).size).to eq(1)
         
     | 
| 
       191 
181 
     | 
    
         
             
                end
         
     | 
| 
       192 
182 
     | 
    
         | 
| 
       193 
183 
     | 
    
         
             
                it "should create validation if locally enabled implicitly" do
         
     | 
| 
       194 
184 
     | 
    
         
             
                  Review.schema_validations
         
     | 
| 
       195 
     | 
    
         
            -
                  Review.new(:content => @too_big_content). 
     | 
| 
      
 185 
     | 
    
         
            +
                  expect(Review.new(:content => @too_big_content).error_on(:content).size).to eq(1)
         
     | 
| 
       196 
186 
     | 
    
         
             
                end
         
     | 
| 
       197 
187 
     | 
    
         | 
| 
       198 
188 
     | 
    
         
             
              end
         
     | 
| 
         @@ -212,26 +202,26 @@ describe "Validations" do 
     | 
|
| 
       212 
202 
     | 
    
         
             
                  too_big_title = 'a' * 100
         
     | 
| 
       213 
203 
     | 
    
         
             
                  wrong_state = 'unknown'
         
     | 
| 
       214 
204 
     | 
    
         
             
                  article = Article.new(:title => too_big_title, :state => wrong_state)
         
     | 
| 
       215 
     | 
    
         
            -
                  article. 
     | 
| 
       216 
     | 
    
         
            -
                  article. 
     | 
| 
      
 205 
     | 
    
         
            +
                  expect(article.error_on(:title).size).to eq(1)
         
     | 
| 
      
 206 
     | 
    
         
            +
                  expect(article.error_on(:state).size).to eq(1)
         
     | 
| 
       217 
207 
     | 
    
         
             
                end
         
     | 
| 
       218 
208 
     | 
    
         | 
| 
       219 
209 
     | 
    
         
             
                it "shouldn't validate skipped fields" do
         
     | 
| 
       220 
210 
     | 
    
         
             
                  article = Article.new
         
     | 
| 
       221 
     | 
    
         
            -
                  article. 
     | 
| 
       222 
     | 
    
         
            -
                  article. 
     | 
| 
      
 211 
     | 
    
         
            +
                  expect(article.errors_on(:content).size).to eq(0)
         
     | 
| 
      
 212 
     | 
    
         
            +
                  expect(article.errors_on(:average_mark).size).to eq(0)
         
     | 
| 
       223 
213 
     | 
    
         
             
                end
         
     | 
| 
       224 
214 
     | 
    
         | 
| 
       225 
215 
     | 
    
         
             
                it "shouldn't validate association on unexisting column" do
         
     | 
| 
       226 
     | 
    
         
            -
                  Review.new. 
     | 
| 
      
 216 
     | 
    
         
            +
                  expect(Review.new.errors_on(:dummy_association).size).to eq(0)
         
     | 
| 
       227 
217 
     | 
    
         
             
                end
         
     | 
| 
       228 
218 
     | 
    
         | 
| 
       229 
219 
     | 
    
         
             
                it "shouldn't validate fields passed to :except option" do
         
     | 
| 
       230 
     | 
    
         
            -
                  Review.new. 
     | 
| 
      
 220 
     | 
    
         
            +
                  expect(Review.new.errors_on(:content).size).to eq(0)
         
     | 
| 
       231 
221 
     | 
    
         
             
                end
         
     | 
| 
       232 
222 
     | 
    
         | 
| 
       233 
223 
     | 
    
         
             
                it "should validate all fields but passed to :except option" do
         
     | 
| 
       234 
     | 
    
         
            -
                  Review.new. 
     | 
| 
      
 224 
     | 
    
         
            +
                  expect(Review.new.error_on(:author).size).to eq(1)
         
     | 
| 
       235 
225 
     | 
    
         
             
                end
         
     | 
| 
       236 
226 
     | 
    
         | 
| 
       237 
227 
     | 
    
         
             
              end
         
     | 
| 
         @@ -246,11 +236,11 @@ describe "Validations" do 
     | 
|
| 
       246 
236 
     | 
    
         
             
                end
         
     | 
| 
       247 
237 
     | 
    
         | 
| 
       248 
238 
     | 
    
         
             
                it "shouldn't validate associations not included in :only option" do
         
     | 
| 
       249 
     | 
    
         
            -
                  Review.new. 
     | 
| 
      
 239 
     | 
    
         
            +
                  expect(Review.new.errors_on(:article).size).to eq(0)
         
     | 
| 
       250 
240 
     | 
    
         
             
                end
         
     | 
| 
       251 
241 
     | 
    
         | 
| 
       252 
242 
     | 
    
         
             
                it "shouldn't change content columns of the model" do
         
     | 
| 
       253 
     | 
    
         
            -
                  @columns. 
     | 
| 
      
 243 
     | 
    
         
            +
                  expect(@columns).to eq(Review.content_columns)
         
     | 
| 
       254 
244 
     | 
    
         
             
                end
         
     | 
| 
       255 
245 
     | 
    
         | 
| 
       256 
246 
     | 
    
         
             
              end
         
     | 
| 
         @@ -262,18 +252,27 @@ describe "Validations" do 
     | 
|
| 
       262 
252 
     | 
    
         
             
                  class Review < ActiveRecord::Base ; end
         
     | 
| 
       263 
253 
     | 
    
         
             
                  class PremiumReview < Review ; end
         
     | 
| 
       264 
254 
     | 
    
         
             
                  PremiumReview.new
         
     | 
| 
       265 
     | 
    
         
            -
                  Review.new. 
     | 
| 
      
 255 
     | 
    
         
            +
                  expect(Review.new.error_on(:author).size).to eq(1)
         
     | 
| 
       266 
256 
     | 
    
         
             
                end
         
     | 
| 
       267 
257 
     | 
    
         | 
| 
       268 
258 
     | 
    
         
             
                it "shouldn't create doubled validations" do
         
     | 
| 
       269 
259 
     | 
    
         
             
                  class Review < ActiveRecord::Base ; end
         
     | 
| 
       270 
260 
     | 
    
         
             
                  Review.new
         
     | 
| 
       271 
261 
     | 
    
         
             
                  class PremiumReview < Review ; end
         
     | 
| 
       272 
     | 
    
         
            -
                  PremiumReview.new. 
     | 
| 
      
 262 
     | 
    
         
            +
                  expect(PremiumReview.new.error_on(:author).size).to eq(1)
         
     | 
| 
       273 
263 
     | 
    
         
             
                end
         
     | 
| 
       274 
264 
     | 
    
         | 
| 
       275 
265 
     | 
    
         
             
              end
         
     | 
| 
       276 
266 
     | 
    
         | 
| 
      
 267 
     | 
    
         
            +
              context "when used with enum" do
         
     | 
| 
      
 268 
     | 
    
         
            +
                it "does not validate numericality" do
         
     | 
| 
      
 269 
     | 
    
         
            +
                  class Article < ActiveRecord::Base
         
     | 
| 
      
 270 
     | 
    
         
            +
                    enum :state => [:happy, :sad]
         
     | 
| 
      
 271 
     | 
    
         
            +
                  end
         
     | 
| 
      
 272 
     | 
    
         
            +
                  expect(Article.new(valid_article_attributes.merge(:state => :happy))).to be_valid
         
     | 
| 
      
 273 
     | 
    
         
            +
                end
         
     | 
| 
      
 274 
     | 
    
         
            +
              end if ActiveRecord::Base.respond_to? :enum
         
     | 
| 
      
 275 
     | 
    
         
            +
             
     | 
| 
       277 
276 
     | 
    
         
             
              protected
         
     | 
| 
       278 
277 
     | 
    
         
             
              def with_auto_validations(value = true)
         
     | 
| 
       279 
278 
     | 
    
         
             
                old_value = SchemaValidations.config.auto_create
         
     | 
| 
         @@ -314,4 +313,15 @@ describe "Validations" do 
     | 
|
| 
       314 
313 
     | 
    
         
             
                end
         
     | 
| 
       315 
314 
     | 
    
         
             
              end
         
     | 
| 
       316 
315 
     | 
    
         | 
| 
      
 316 
     | 
    
         
            +
              def valid_article_attributes
         
     | 
| 
      
 317 
     | 
    
         
            +
                {
         
     | 
| 
      
 318 
     | 
    
         
            +
                  :title => 'SchemaPlus released!',
         
     | 
| 
      
 319 
     | 
    
         
            +
                  :content => "Database matters. Get full use of it but don't write unecessary code. Get SchemaPlus!",
         
     | 
| 
      
 320 
     | 
    
         
            +
                  :state => 3,
         
     | 
| 
      
 321 
     | 
    
         
            +
                  :average_mark => 9.78,
         
     | 
| 
      
 322 
     | 
    
         
            +
                  :active => true
         
     | 
| 
      
 323 
     | 
    
         
            +
                }
         
     | 
| 
      
 324 
     | 
    
         
            +
              end
         
     | 
| 
      
 325 
     | 
    
         
            +
             
     | 
| 
      
 326 
     | 
    
         
            +
             
     | 
| 
       317 
327 
     | 
    
         
             
            end
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: schema_validations
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 1.0. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 1.0.1
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Ronen Barzel
         
     | 
| 
         @@ -9,104 +9,118 @@ authors: 
     | 
|
| 
       9 
9 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       10 
10 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       11 
11 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       12 
     | 
    
         
            -
            date:  
     | 
| 
      
 12 
     | 
    
         
            +
            date: 2014-12-10 00:00:00.000000000 Z
         
     | 
| 
       13 
13 
     | 
    
         
             
            dependencies:
         
     | 
| 
       14 
14 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       15 
15 
     | 
    
         
             
              name: schema_plus
         
     | 
| 
       16 
16 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       17 
17 
     | 
    
         
             
                requirements:
         
     | 
| 
       18 
     | 
    
         
            -
                - -  
     | 
| 
      
 18 
     | 
    
         
            +
                - - ">="
         
     | 
| 
       19 
19 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       20 
20 
     | 
    
         
             
                    version: '0'
         
     | 
| 
       21 
21 
     | 
    
         
             
              type: :runtime
         
     | 
| 
       22 
22 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       23 
23 
     | 
    
         
             
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
       24 
24 
     | 
    
         
             
                requirements:
         
     | 
| 
       25 
     | 
    
         
            -
                - -  
     | 
| 
      
 25 
     | 
    
         
            +
                - - ">="
         
     | 
| 
       26 
26 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       27 
27 
     | 
    
         
             
                    version: '0'
         
     | 
| 
      
 28 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 29 
     | 
    
         
            +
              name: schema_dev
         
     | 
| 
      
 30 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
      
 31 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 32 
     | 
    
         
            +
                - - "~>"
         
     | 
| 
      
 33 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 34 
     | 
    
         
            +
                    version: '1.0'
         
     | 
| 
      
 35 
     | 
    
         
            +
              type: :development
         
     | 
| 
      
 36 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 37 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 38 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 39 
     | 
    
         
            +
                - - "~>"
         
     | 
| 
      
 40 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 41 
     | 
    
         
            +
                    version: '1.0'
         
     | 
| 
       28 
42 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       29 
43 
     | 
    
         
             
              name: rake
         
     | 
| 
       30 
44 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       31 
45 
     | 
    
         
             
                requirements:
         
     | 
| 
       32 
     | 
    
         
            -
                - -  
     | 
| 
      
 46 
     | 
    
         
            +
                - - ">="
         
     | 
| 
       33 
47 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       34 
48 
     | 
    
         
             
                    version: '0'
         
     | 
| 
       35 
49 
     | 
    
         
             
              type: :development
         
     | 
| 
       36 
50 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       37 
51 
     | 
    
         
             
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
       38 
52 
     | 
    
         
             
                requirements:
         
     | 
| 
       39 
     | 
    
         
            -
                - -  
     | 
| 
      
 53 
     | 
    
         
            +
                - - ">="
         
     | 
| 
       40 
54 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       41 
55 
     | 
    
         
             
                    version: '0'
         
     | 
| 
       42 
56 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       43 
57 
     | 
    
         
             
              name: rdoc
         
     | 
| 
       44 
58 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       45 
59 
     | 
    
         
             
                requirements:
         
     | 
| 
       46 
     | 
    
         
            -
                - -  
     | 
| 
      
 60 
     | 
    
         
            +
                - - ">="
         
     | 
| 
       47 
61 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       48 
62 
     | 
    
         
             
                    version: '0'
         
     | 
| 
       49 
63 
     | 
    
         
             
              type: :development
         
     | 
| 
       50 
64 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       51 
65 
     | 
    
         
             
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
       52 
66 
     | 
    
         
             
                requirements:
         
     | 
| 
       53 
     | 
    
         
            -
                - -  
     | 
| 
      
 67 
     | 
    
         
            +
                - - ">="
         
     | 
| 
       54 
68 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       55 
69 
     | 
    
         
             
                    version: '0'
         
     | 
| 
       56 
70 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       57 
71 
     | 
    
         
             
              name: rspec
         
     | 
| 
       58 
72 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       59 
73 
     | 
    
         
             
                requirements:
         
     | 
| 
       60 
     | 
    
         
            -
                - -  
     | 
| 
      
 74 
     | 
    
         
            +
                - - ">="
         
     | 
| 
       61 
75 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       62 
76 
     | 
    
         
             
                    version: '0'
         
     | 
| 
       63 
77 
     | 
    
         
             
              type: :development
         
     | 
| 
       64 
78 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       65 
79 
     | 
    
         
             
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
       66 
80 
     | 
    
         
             
                requirements:
         
     | 
| 
       67 
     | 
    
         
            -
                - -  
     | 
| 
      
 81 
     | 
    
         
            +
                - - ">="
         
     | 
| 
       68 
82 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       69 
83 
     | 
    
         
             
                    version: '0'
         
     | 
| 
       70 
84 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       71 
     | 
    
         
            -
              name:  
     | 
| 
      
 85 
     | 
    
         
            +
              name: simplecov
         
     | 
| 
       72 
86 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       73 
87 
     | 
    
         
             
                requirements:
         
     | 
| 
       74 
     | 
    
         
            -
                - -  
     | 
| 
      
 88 
     | 
    
         
            +
                - - ">="
         
     | 
| 
       75 
89 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       76 
90 
     | 
    
         
             
                    version: '0'
         
     | 
| 
       77 
91 
     | 
    
         
             
              type: :development
         
     | 
| 
       78 
92 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       79 
93 
     | 
    
         
             
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
       80 
94 
     | 
    
         
             
                requirements:
         
     | 
| 
       81 
     | 
    
         
            -
                - -  
     | 
| 
      
 95 
     | 
    
         
            +
                - - ">="
         
     | 
| 
       82 
96 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       83 
97 
     | 
    
         
             
                    version: '0'
         
     | 
| 
       84 
98 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       85 
     | 
    
         
            -
              name: simplecov
         
     | 
| 
      
 99 
     | 
    
         
            +
              name: simplecov-gem-profile
         
     | 
| 
       86 
100 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       87 
101 
     | 
    
         
             
                requirements:
         
     | 
| 
       88 
     | 
    
         
            -
                - -  
     | 
| 
      
 102 
     | 
    
         
            +
                - - ">="
         
     | 
| 
       89 
103 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       90 
104 
     | 
    
         
             
                    version: '0'
         
     | 
| 
       91 
105 
     | 
    
         
             
              type: :development
         
     | 
| 
       92 
106 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       93 
107 
     | 
    
         
             
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
       94 
108 
     | 
    
         
             
                requirements:
         
     | 
| 
       95 
     | 
    
         
            -
                - -  
     | 
| 
      
 109 
     | 
    
         
            +
                - - ">="
         
     | 
| 
       96 
110 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       97 
111 
     | 
    
         
             
                    version: '0'
         
     | 
| 
       98 
112 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       99 
     | 
    
         
            -
              name:  
     | 
| 
      
 113 
     | 
    
         
            +
              name: database_cleaner
         
     | 
| 
       100 
114 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       101 
115 
     | 
    
         
             
                requirements:
         
     | 
| 
       102 
     | 
    
         
            -
                - -  
     | 
| 
      
 116 
     | 
    
         
            +
                - - ">="
         
     | 
| 
       103 
117 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       104 
118 
     | 
    
         
             
                    version: '0'
         
     | 
| 
       105 
119 
     | 
    
         
             
              type: :development
         
     | 
| 
       106 
120 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       107 
121 
     | 
    
         
             
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
       108 
122 
     | 
    
         
             
                requirements:
         
     | 
| 
       109 
     | 
    
         
            -
                - -  
     | 
| 
      
 123 
     | 
    
         
            +
                - - ">="
         
     | 
| 
       110 
124 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       111 
125 
     | 
    
         
             
                    version: '0'
         
     | 
| 
       112 
126 
     | 
    
         
             
            description: SchemaValidations extends ActiveRecord to automatically create validations
         
     | 
| 
         @@ -120,26 +134,26 @@ executables: [] 
     | 
|
| 
       120 
134 
     | 
    
         
             
            extensions: []
         
     | 
| 
       121 
135 
     | 
    
         
             
            extra_rdoc_files: []
         
     | 
| 
       122 
136 
     | 
    
         
             
            files:
         
     | 
| 
       123 
     | 
    
         
            -
            - .gitignore
         
     | 
| 
       124 
     | 
    
         
            -
            - .travis.yml
         
     | 
| 
      
 137 
     | 
    
         
            +
            - ".gitignore"
         
     | 
| 
      
 138 
     | 
    
         
            +
            - ".travis.yml"
         
     | 
| 
       125 
139 
     | 
    
         
             
            - Gemfile
         
     | 
| 
       126 
140 
     | 
    
         
             
            - MIT-LICENSE
         
     | 
| 
       127 
141 
     | 
    
         
             
            - README.md
         
     | 
| 
       128 
142 
     | 
    
         
             
            - Rakefile
         
     | 
| 
       129 
     | 
    
         
            -
            - gemfiles/Gemfile. 
     | 
| 
       130 
     | 
    
         
            -
            - gemfiles/ 
     | 
| 
      
 143 
     | 
    
         
            +
            - gemfiles/Gemfile.base
         
     | 
| 
      
 144 
     | 
    
         
            +
            - gemfiles/rails-3.2/Gemfile.base
         
     | 
| 
      
 145 
     | 
    
         
            +
            - gemfiles/rails-4.1/Gemfile.base
         
     | 
| 
       131 
146 
     | 
    
         
             
            - init.rb
         
     | 
| 
       132 
147 
     | 
    
         
             
            - lib/schema_validations.rb
         
     | 
| 
       133 
148 
     | 
    
         
             
            - lib/schema_validations/active_record/validations.rb
         
     | 
| 
       134 
149 
     | 
    
         
             
            - lib/schema_validations/railtie.rb
         
     | 
| 
       135 
150 
     | 
    
         
             
            - lib/schema_validations/version.rb
         
     | 
| 
       136 
     | 
    
         
            -
            -  
     | 
| 
      
 151 
     | 
    
         
            +
            - schema_dev.yml
         
     | 
| 
       137 
152 
     | 
    
         
             
            - schema_validations.gemspec
         
     | 
| 
       138 
     | 
    
         
            -
            - spec/connection.rb
         
     | 
| 
       139 
153 
     | 
    
         
             
            - spec/spec_helper.rb
         
     | 
| 
       140 
154 
     | 
    
         
             
            - spec/support/active_model.rb
         
     | 
| 
       141 
155 
     | 
    
         
             
            - spec/validations_spec.rb
         
     | 
| 
       142 
     | 
    
         
            -
            homepage: https://github.com/ 
     | 
| 
      
 156 
     | 
    
         
            +
            homepage: https://github.com/SchemaPlus/schema_validations
         
     | 
| 
       143 
157 
     | 
    
         
             
            licenses:
         
     | 
| 
       144 
158 
     | 
    
         
             
            - MIT
         
     | 
| 
       145 
159 
     | 
    
         
             
            metadata: {}
         
     | 
| 
         @@ -149,22 +163,21 @@ require_paths: 
     | 
|
| 
       149 
163 
     | 
    
         
             
            - lib
         
     | 
| 
       150 
164 
     | 
    
         
             
            required_ruby_version: !ruby/object:Gem::Requirement
         
     | 
| 
       151 
165 
     | 
    
         
             
              requirements:
         
     | 
| 
       152 
     | 
    
         
            -
              - -  
     | 
| 
      
 166 
     | 
    
         
            +
              - - ">="
         
     | 
| 
       153 
167 
     | 
    
         
             
                - !ruby/object:Gem::Version
         
     | 
| 
       154 
168 
     | 
    
         
             
                  version: '0'
         
     | 
| 
       155 
169 
     | 
    
         
             
            required_rubygems_version: !ruby/object:Gem::Requirement
         
     | 
| 
       156 
170 
     | 
    
         
             
              requirements:
         
     | 
| 
       157 
     | 
    
         
            -
              - -  
     | 
| 
      
 171 
     | 
    
         
            +
              - - ">="
         
     | 
| 
       158 
172 
     | 
    
         
             
                - !ruby/object:Gem::Version
         
     | 
| 
       159 
173 
     | 
    
         
             
                  version: '0'
         
     | 
| 
       160 
174 
     | 
    
         
             
            requirements: []
         
     | 
| 
       161 
175 
     | 
    
         
             
            rubyforge_project: schema_validations
         
     | 
| 
       162 
     | 
    
         
            -
            rubygems_version: 2. 
     | 
| 
      
 176 
     | 
    
         
            +
            rubygems_version: 2.2.2
         
     | 
| 
       163 
177 
     | 
    
         
             
            signing_key: 
         
     | 
| 
       164 
178 
     | 
    
         
             
            specification_version: 4
         
     | 
| 
       165 
179 
     | 
    
         
             
            summary: Automatically creates validations basing on the database schema.
         
     | 
| 
       166 
180 
     | 
    
         
             
            test_files:
         
     | 
| 
       167 
     | 
    
         
            -
            - spec/connection.rb
         
     | 
| 
       168 
181 
     | 
    
         
             
            - spec/spec_helper.rb
         
     | 
| 
       169 
182 
     | 
    
         
             
            - spec/support/active_model.rb
         
     | 
| 
       170 
183 
     | 
    
         
             
            - spec/validations_spec.rb
         
     | 
    
        data/gemfiles/Gemfile.rails-3.2
    DELETED
    
    
    
        data/gemfiles/Gemfile.rails-4.0
    DELETED
    
    
    
        data/runspecs
    DELETED
    
    | 
         @@ -1,107 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            #!/usr/bin/env ruby
         
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
     | 
    
         
            -
            require 'optparse'
         
     | 
| 
       4 
     | 
    
         
            -
            require 'ostruct'
         
     | 
| 
       5 
     | 
    
         
            -
            require 'shellwords'
         
     | 
| 
       6 
     | 
    
         
            -
            require 'tempfile'
         
     | 
| 
       7 
     | 
    
         
            -
             
     | 
| 
       8 
     | 
    
         
            -
            RUBY_VERSIONS = %W[1.9.3 2.0.0]
         
     | 
| 
       9 
     | 
    
         
            -
            RAILS_VERSIONS = %W[3.2 4.0]
         
     | 
| 
       10 
     | 
    
         
            -
             
     | 
| 
       11 
     | 
    
         
            -
            o = OpenStruct.new
         
     | 
| 
       12 
     | 
    
         
            -
            o.ruby_versions = RUBY_VERSIONS
         
     | 
| 
       13 
     | 
    
         
            -
            o.rails_versions = RAILS_VERSIONS
         
     | 
| 
       14 
     | 
    
         
            -
             
     | 
| 
       15 
     | 
    
         
            -
            OptionParser.new do |opts|
         
     | 
| 
       16 
     | 
    
         
            -
                opts.banner = "Usage: #{$0} [options]"
         
     | 
| 
       17 
     | 
    
         
            -
             
     | 
| 
       18 
     | 
    
         
            -
                opts.on("-n", "--dry-run", "Do a dry run without executing actions") do |v|
         
     | 
| 
       19 
     | 
    
         
            -
                    o.dry_run = true
         
     | 
| 
       20 
     | 
    
         
            -
                end
         
     | 
| 
       21 
     | 
    
         
            -
             
     | 
| 
       22 
     | 
    
         
            -
                opts.on("--update", "Update gem dependencies") do |v|
         
     | 
| 
       23 
     | 
    
         
            -
                    o.update = v
         
     | 
| 
       24 
     | 
    
         
            -
                end
         
     | 
| 
       25 
     | 
    
         
            -
             
     | 
| 
       26 
     | 
    
         
            -
                opts.on("--install", "Install gem dependencies") do |v|
         
     | 
| 
       27 
     | 
    
         
            -
                    o.install = v
         
     | 
| 
       28 
     | 
    
         
            -
                end
         
     | 
| 
       29 
     | 
    
         
            -
             
     | 
| 
       30 
     | 
    
         
            -
                opts.on("--ruby version", String, "Choose which version(s) of ruby to run.  Default is: #{o.ruby_versions.join(' ')}") do |ruby|
         
     | 
| 
       31 
     | 
    
         
            -
                    o.ruby_versions = ruby.split(' ')
         
     | 
| 
       32 
     | 
    
         
            -
                end
         
     | 
| 
       33 
     | 
    
         
            -
             
     | 
| 
       34 
     | 
    
         
            -
                opts.on("--rails version", String, "Choose which version(s) of rails to run.  Default is: #{o.rails_versions.join(' ')}") do |rails|
         
     | 
| 
       35 
     | 
    
         
            -
                    o.rails_versions = rails.split(' ')
         
     | 
| 
       36 
     | 
    
         
            -
                end
         
     | 
| 
       37 
     | 
    
         
            -
             
     | 
| 
       38 
     | 
    
         
            -
                opts.on("--quick", "quick run ruby #{RUBY_VERSIONS.last} and rails #{RAILS_VERSIONS.last}") do
         
     | 
| 
       39 
     | 
    
         
            -
                  o.ruby_versions  = [RUBY_VERSIONS.last]
         
     | 
| 
       40 
     | 
    
         
            -
                  o.rails_versions = [RAILS_VERSIONS.last]
         
     | 
| 
       41 
     | 
    
         
            -
                end
         
     | 
| 
       42 
     | 
    
         
            -
             
     | 
| 
       43 
     | 
    
         
            -
                opts.on("--rspec", "run rspec rather than rake") do |v|
         
     | 
| 
       44 
     | 
    
         
            -
                    o.rspec = v
         
     | 
| 
       45 
     | 
    
         
            -
                end
         
     | 
| 
       46 
     | 
    
         
            -
             
     | 
| 
       47 
     | 
    
         
            -
            end.parse!
         
     | 
| 
       48 
     | 
    
         
            -
             
     | 
| 
       49 
     | 
    
         
            -
             
     | 
| 
       50 
     | 
    
         
            -
            Combo = Struct.new(:ruby, :rails)
         
     | 
| 
       51 
     | 
    
         
            -
             
     | 
| 
       52 
     | 
    
         
            -
            combos = o.ruby_versions.product(o.rails_versions).map{|product| Combo.new(*product)}.select {|combo|
         
     | 
| 
       53 
     | 
    
         
            -
                case
         
     | 
| 
       54 
     | 
    
         
            -
                when combo.rails >= "3.2" && combo.ruby <= "1.8.7" then false  # no longer happens, just keeping it as an example
         
     | 
| 
       55 
     | 
    
         
            -
                else true
         
     | 
| 
       56 
     | 
    
         
            -
                end
         
     | 
| 
       57 
     | 
    
         
            -
            }
         
     | 
| 
       58 
     | 
    
         
            -
             
     | 
| 
       59 
     | 
    
         
            -
            if system("which -s rvm")
         
     | 
| 
       60 
     | 
    
         
            -
                # using rvm
         
     | 
| 
       61 
     | 
    
         
            -
                def ruby_version_selector(ruby)
         
     | 
| 
       62 
     | 
    
         
            -
                    "rvm #{ruby} do"
         
     | 
| 
       63 
     | 
    
         
            -
                end
         
     | 
| 
       64 
     | 
    
         
            -
            else
         
     | 
| 
       65 
     | 
    
         
            -
                # using rbenv.  remove current version from path and current gem path
         
     | 
| 
       66 
     | 
    
         
            -
                # so that forked shell will respect RBENV_VERSION variable
         
     | 
| 
       67 
     | 
    
         
            -
                ENV['PATH'] = ENV['PATH'].split(':').reject{|dir| dir =~ %r{/rbenv/versions/}}.join(':')
         
     | 
| 
       68 
     | 
    
         
            -
                ENV['GEM_PATH'] = nil
         
     | 
| 
       69 
     | 
    
         
            -
             
     | 
| 
       70 
     | 
    
         
            -
                def ruby_version_selector(ruby)
         
     | 
| 
       71 
     | 
    
         
            -
                    @versions ||= `rbenv versions --bare`.split
         
     | 
| 
       72 
     | 
    
         
            -
                    version = @versions.select{|v| v.start_with? ruby}.last || abort("no ruby version '#{ruby}' installed in rbenv")
         
     | 
| 
       73 
     | 
    
         
            -
                    "RBENV_VERSION=#{version}"
         
     | 
| 
       74 
     | 
    
         
            -
                end
         
     | 
| 
       75 
     | 
    
         
            -
            end
         
     | 
| 
       76 
     | 
    
         
            -
             
     | 
| 
       77 
     | 
    
         
            -
            GEMFILES_DIR = File.expand_path('../gemfiles', __FILE__)
         
     | 
| 
       78 
     | 
    
         
            -
            errs = []
         
     | 
| 
       79 
     | 
    
         
            -
            combos.each_with_index do |combo, n|
         
     | 
| 
       80 
     | 
    
         
            -
                ruby = combo.ruby
         
     | 
| 
       81 
     | 
    
         
            -
                rails = combo.rails
         
     | 
| 
       82 
     | 
    
         
            -
             
     | 
| 
       83 
     | 
    
         
            -
                cmd = case
         
     | 
| 
       84 
     | 
    
         
            -
                      when o.update
         
     | 
| 
       85 
     | 
    
         
            -
                          "bundle update"
         
     | 
| 
       86 
     | 
    
         
            -
                      when o.install
         
     | 
| 
       87 
     | 
    
         
            -
                          "bundle install"
         
     | 
| 
       88 
     | 
    
         
            -
                      when o.rspec
         
     | 
| 
       89 
     | 
    
         
            -
                          "bundle exec rspec"
         
     | 
| 
       90 
     | 
    
         
            -
                      else
         
     | 
| 
       91 
     | 
    
         
            -
                          "bundle exec rake spec"
         
     | 
| 
       92 
     | 
    
         
            -
                      end
         
     | 
| 
       93 
     | 
    
         
            -
             
     | 
| 
       94 
     | 
    
         
            -
                command = %Q{BUNDLE_GEMFILE="#{File.join(GEMFILES_DIR, "Gemfile.rails-#{rails}")}" #{ruby_version_selector(ruby)} #{cmd} #{Shellwords.join(ARGV)}}
         
     | 
| 
       95 
     | 
    
         
            -
             
     | 
| 
       96 
     | 
    
         
            -
                puts "\n\n*** ruby version #{ruby} - rails version #{rails}  [#{n+1} of #{combos.size}]\n\n#{command}"
         
     | 
| 
       97 
     | 
    
         
            -
             
     | 
| 
       98 
     | 
    
         
            -
                    next if o.dry_run
         
     | 
| 
       99 
     | 
    
         
            -
             
     | 
| 
       100 
     | 
    
         
            -
                Tempfile.open('runspecs') do |file|
         
     | 
| 
       101 
     | 
    
         
            -
                    system("(#{command}) 2>&1 | tee #{file.path}")
         
     | 
| 
       102 
     | 
    
         
            -
                    file.rewind
         
     | 
| 
       103 
     | 
    
         
            -
                    errs << "ruby #{ruby}, rails #{rails}" if file.readlines.grep(/^Failed examples/).any?
         
     | 
| 
       104 
     | 
    
         
            -
                end
         
     | 
| 
       105 
     | 
    
         
            -
            end
         
     | 
| 
       106 
     | 
    
         
            -
            puts errs.any? ?  "\n*** #{errs.size} failures:\n\t#{errs.join("\n\t")}" : "\n*** #{combos.size > 1 ? 'all versions' : 'spec'} succeeded ***" unless o.dry_run
         
     | 
| 
       107 
     | 
    
         
            -
            exit !errs.any?
         
     | 
    
        data/spec/connection.rb
    DELETED
    
    | 
         @@ -1,14 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            require 'logger'
         
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
     | 
    
         
            -
            ActiveRecord::Base.logger = Logger.new(File.open("sqlite3.log", "w"))
         
     | 
| 
       4 
     | 
    
         
            -
             
     | 
| 
       5 
     | 
    
         
            -
            ActiveRecord::Base.configurations = {
         
     | 
| 
       6 
     | 
    
         
            -
              'schema_validations' => {
         
     | 
| 
       7 
     | 
    
         
            -
                :adapter => 'sqlite3',
         
     | 
| 
       8 
     | 
    
         
            -
                :database => File.expand_path('schema_validations.sqlite3', File.dirname(__FILE__)),
         
     | 
| 
       9 
     | 
    
         
            -
              }
         
     | 
| 
       10 
     | 
    
         
            -
             
     | 
| 
       11 
     | 
    
         
            -
            }
         
     | 
| 
       12 
     | 
    
         
            -
             
     | 
| 
       13 
     | 
    
         
            -
            ActiveRecord::Base.establish_connection 'schema_validations'
         
     | 
| 
       14 
     | 
    
         
            -
            ActiveRecord::Base.connection.execute "PRAGMA synchronous = OFF"
         
     |