validates_lengths_from_database 0.4.0 → 0.5.0
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/Appraisals +0 -4
- data/{CHANGELOG → CHANGELOG.rdoc} +0 -0
- data/Gemfile.lock +5 -2
- data/README.rdoc +4 -1
- data/lib/validates_lengths_from_database.rb +18 -12
- data/lib/validates_lengths_from_database/version.rb +1 -1
- data/spec/db/test.sqlite3 +0 -0
- data/spec/validates_lengths_from_database_spec.rb +63 -0
- data/validates_lengths_from_database-0.4.0.gem +0 -0
- data/validates_lengths_from_database.gemspec +37 -0
- metadata +6 -4
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 11cac7bb47bda407a7ef1ed3c928d7a364c9522c
         | 
| 4 | 
            +
              data.tar.gz: eb71d89711455e1c869155f98694fc1029a9f68c
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: e4ebd4890711a54a80410beccff3ac20e7e20ee9ca8626c46c40b553d6b0f9e028d0b6a227f28f763ca6f3c8c1f6eb5b09d83d0a5d70c956c233ed336e533be7
         | 
| 7 | 
            +
              data.tar.gz: 2c82869d46cea0bcbdc51485b8b7f2e0c579a3060580eff52c82538d294849110d5bceaa726512a95ac9e11a90b5bfa8b37da87e9ac6519bec4d6c676b31f2aa
         | 
    
        data/Appraisals
    CHANGED
    
    
| 
            File without changes
         | 
    
        data/Gemfile.lock
    CHANGED
    
    | @@ -31,7 +31,7 @@ GEM | |
| 31 31 | 
             
                diff-lcs (1.1.2)
         | 
| 32 32 | 
             
                i18n (0.7.0)
         | 
| 33 33 | 
             
                iconv (1.0.4)
         | 
| 34 | 
            -
                json (1. | 
| 34 | 
            +
                json (1.8.3)
         | 
| 35 35 | 
             
                minitest (4.7.5)
         | 
| 36 36 | 
             
                multi_json (1.10.1)
         | 
| 37 37 | 
             
                pg (0.17.1)
         | 
| @@ -46,7 +46,7 @@ GEM | |
| 46 46 | 
             
                rspec-expectations (2.5.0)
         | 
| 47 47 | 
             
                  diff-lcs (~> 1.1.2)
         | 
| 48 48 | 
             
                rspec-mocks (2.5.0)
         | 
| 49 | 
            -
                sqlite3 (1.3. | 
| 49 | 
            +
                sqlite3 (1.3.11)
         | 
| 50 50 | 
             
                thor (0.19.1)
         | 
| 51 51 | 
             
                thread_safe (0.3.4)
         | 
| 52 52 | 
             
                tzinfo (0.3.42)
         | 
| @@ -65,3 +65,6 @@ DEPENDENCIES | |
| 65 65 | 
             
              rspec (~> 2.0)
         | 
| 66 66 | 
             
              sqlite3 (~> 1.3.4)
         | 
| 67 67 | 
             
              validates_lengths_from_database!
         | 
| 68 | 
            +
             | 
| 69 | 
            +
            BUNDLED WITH
         | 
| 70 | 
            +
               1.10.6
         | 
    
        data/README.rdoc
    CHANGED
    
    | @@ -9,6 +9,8 @@ This gem introspects your table schema for maximum lengths on string and text fi | |
| 9 9 |  | 
| 10 10 | 
             
            == Requirements
         | 
| 11 11 |  | 
| 12 | 
            +
            As of v0.5.0, validates_lengths_from_database lazily loads column information and requires Rails 3+. If you are using Rails 2, please use the v0.4.0 release.
         | 
| 13 | 
            +
             | 
| 12 14 | 
             
            Due to issues maintaining backwards compatibility, as of v0.4.0 validates_lengths_from_database requires ruby 1.9.3 or higher. 
         | 
| 13 15 | 
             
            If you are still using 1.8.7 or 1.9.2, please use the v0.3.0 release.
         | 
| 14 16 |  | 
| @@ -58,5 +60,6 @@ This gem uses appraisal to test with different versions of the dependencies. See | |
| 58 60 | 
             
              $ rake test
         | 
| 59 61 |  | 
| 60 62 | 
             
              # All of the Appraisals:
         | 
| 61 | 
            -
              $  | 
| 63 | 
            +
              $ appraisal install
         | 
| 64 | 
            +
              $ appraisal rake test
         | 
| 62 65 |  | 
| @@ -11,7 +11,6 @@ module ValidatesLengthsFromDatabase | |
| 11 11 | 
             
                def validates_lengths_from_database(options = {})
         | 
| 12 12 | 
             
                  options.symbolize_keys!
         | 
| 13 13 |  | 
| 14 | 
            -
                  return false unless self.table_exists?
         | 
| 15 14 | 
             
                  options[:only]    = Array[options[:only]]   if options[:only] && !options[:only].is_a?(Array)
         | 
| 16 15 | 
             
                  options[:except]  = Array[options[:except]] if options[:except] && !options[:except].is_a?(Array)
         | 
| 17 16 | 
             
                  options[:limit] ||= {}
         | 
| @@ -19,16 +18,31 @@ module ValidatesLengthsFromDatabase | |
| 19 18 | 
             
                  if options[:limit] and !options[:limit].is_a?(Hash)
         | 
| 20 19 | 
             
                    options[:limit] = {:string => options[:limit], :text => options[:limit]}
         | 
| 21 20 | 
             
                  end
         | 
| 21 | 
            +
                  @@validate_lengths_from_database_options = options
         | 
| 22 | 
            +
             | 
| 23 | 
            +
                  validate :validate_lengths_from_database
         | 
| 24 | 
            +
             | 
| 25 | 
            +
                  nil
         | 
| 26 | 
            +
                end
         | 
| 27 | 
            +
             | 
| 28 | 
            +
                def validate_lengths_from_database_options
         | 
| 29 | 
            +
                  @@validate_lengths_from_database_options
         | 
| 30 | 
            +
                end
         | 
| 31 | 
            +
              end
         | 
| 32 | 
            +
             | 
| 33 | 
            +
              module InstanceMethods
         | 
| 34 | 
            +
                def validate_lengths_from_database
         | 
| 35 | 
            +
                  options = self.class.validate_lengths_from_database_options
         | 
| 22 36 |  | 
| 23 37 | 
             
                  if options[:only]
         | 
| 24 38 | 
             
                    columns_to_validate = options[:only].map(&:to_s)
         | 
| 25 39 | 
             
                  else
         | 
| 26 | 
            -
                    columns_to_validate = column_names.map(&:to_s)
         | 
| 40 | 
            +
                    columns_to_validate = self.class.column_names.map(&:to_s)
         | 
| 27 41 | 
             
                    columns_to_validate -= options[:except].map(&:to_s) if options[:except]
         | 
| 28 42 | 
             
                  end
         | 
| 29 43 |  | 
| 30 44 | 
             
                  columns_to_validate.each do |column|
         | 
| 31 | 
            -
                    column_schema = columns.find {|c| c.name == column }
         | 
| 45 | 
            +
                    column_schema = self.class.columns.find {|c| c.name == column }
         | 
| 32 46 | 
             
                    next if column_schema.nil?
         | 
| 33 47 | 
             
                    next if ![:string, :text].include?(column_schema.type)
         | 
| 34 48 | 
             
                    next if column_schema.respond_to?(:array) && column_schema.array
         | 
| @@ -36,17 +50,9 @@ module ValidatesLengthsFromDatabase | |
| 36 50 | 
             
                    column_limit = options[:limit][column_schema.type] || column_schema.limit
         | 
| 37 51 | 
             
                    next unless column_limit
         | 
| 38 52 |  | 
| 39 | 
            -
                     | 
| 40 | 
            -
                      validates_length_of column, :maximum => column_limit, :allow_blank => true
         | 
| 41 | 
            -
                    end
         | 
| 53 | 
            +
                    ActiveModel::Validations::LengthValidator.new(:maximum => column_limit, :allow_blank => true, :attributes => [column]).validate(self)
         | 
| 42 54 | 
             
                  end
         | 
| 43 | 
            -
             | 
| 44 | 
            -
                  nil
         | 
| 45 55 | 
             
                end
         | 
| 46 | 
            -
             | 
| 47 | 
            -
              end
         | 
| 48 | 
            -
             | 
| 49 | 
            -
              module InstanceMethods
         | 
| 50 56 | 
             
              end
         | 
| 51 57 | 
             
            end
         | 
| 52 58 |  | 
    
        data/spec/db/test.sqlite3
    CHANGED
    
    | Binary file | 
| @@ -33,6 +33,69 @@ describe ValidatesLengthsFromDatabase do | |
| 33 33 | 
             
                end
         | 
| 34 34 | 
             
              end
         | 
| 35 35 |  | 
| 36 | 
            +
              context "Model without a table yet" do
         | 
| 37 | 
            +
                before do
         | 
| 38 | 
            +
                  class LazyTableArticle < ActiveRecord::Base
         | 
| 39 | 
            +
                    self.table_name = "articles_lazy"
         | 
| 40 | 
            +
                    validates_lengths_from_database
         | 
| 41 | 
            +
                  end
         | 
| 42 | 
            +
                end
         | 
| 43 | 
            +
             | 
| 44 | 
            +
                context "before the table is created" do
         | 
| 45 | 
            +
                  specify "should fail to create records" do
         | 
| 46 | 
            +
                    lambda { LazyTableArticle.new }.should raise_error
         | 
| 47 | 
            +
                  end
         | 
| 48 | 
            +
                end
         | 
| 49 | 
            +
             | 
| 50 | 
            +
                context "after the table is created" do
         | 
| 51 | 
            +
                  before do
         | 
| 52 | 
            +
                    ActiveRecord::Schema.define do
         | 
| 53 | 
            +
                      create_table :articles_lazy, :force => false do |t|
         | 
| 54 | 
            +
                        t.string :string_1, :limit => 5
         | 
| 55 | 
            +
                      end
         | 
| 56 | 
            +
                    end
         | 
| 57 | 
            +
                  end
         | 
| 58 | 
            +
             | 
| 59 | 
            +
                  after do
         | 
| 60 | 
            +
                    ActiveRecord::Schema.define do
         | 
| 61 | 
            +
                      drop_table :articles_lazy
         | 
| 62 | 
            +
                    end
         | 
| 63 | 
            +
                  end
         | 
| 64 | 
            +
             | 
| 65 | 
            +
                  context "an article with long attributes" do
         | 
| 66 | 
            +
                    before { @article = LazyTableArticle.new(LONG_ATTRIBUTES.slice(:string_1)); @article.valid? }
         | 
| 67 | 
            +
             | 
| 68 | 
            +
                    specify "should not be valid" do
         | 
| 69 | 
            +
                      @article.should_not be_valid
         | 
| 70 | 
            +
                    end
         | 
| 71 | 
            +
                  end
         | 
| 72 | 
            +
             | 
| 73 | 
            +
                  context "an article with short attributes" do
         | 
| 74 | 
            +
                    before { @article = LazyTableArticle.new(SHORT_ATTRIBUTES.slice(:string_1)); @article.valid? }
         | 
| 75 | 
            +
             | 
| 76 | 
            +
                    specify "should be valid" do
         | 
| 77 | 
            +
                      @article.should be_valid
         | 
| 78 | 
            +
                    end
         | 
| 79 | 
            +
                  end
         | 
| 80 | 
            +
                end
         | 
| 81 | 
            +
              end
         | 
| 82 | 
            +
             | 
| 83 | 
            +
              context "Model without validates_lengths_from_database" do
         | 
| 84 | 
            +
                before do
         | 
| 85 | 
            +
                  class ArticleValidateAll < ActiveRecord::Base
         | 
| 86 | 
            +
                    self.table_name = "articles"
         | 
| 87 | 
            +
                  end
         | 
| 88 | 
            +
                end
         | 
| 89 | 
            +
             | 
| 90 | 
            +
                context "an article with overloaded attributes" do
         | 
| 91 | 
            +
                  before { @article = ArticleValidateAll.new(LONG_ATTRIBUTES); @article.valid? }
         | 
| 92 | 
            +
             | 
| 93 | 
            +
                  it "should be valid" do
         | 
| 94 | 
            +
                    @article.should be_valid
         | 
| 95 | 
            +
                  end
         | 
| 96 | 
            +
                end
         | 
| 97 | 
            +
              end
         | 
| 98 | 
            +
             | 
| 36 99 | 
             
              context "Model with validates_lengths_from_database" do
         | 
| 37 100 | 
             
                before do
         | 
| 38 101 | 
             
                  class ArticleValidateAll < ActiveRecord::Base
         | 
| Binary file | 
| @@ -0,0 +1,37 @@ | |
| 1 | 
            +
            # -*- encoding: utf-8 -*-
         | 
| 2 | 
            +
            $:.push File.expand_path("../lib", __FILE__)
         | 
| 3 | 
            +
            require "validates_lengths_from_database/version"
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            Gem::Specification.new do |s|
         | 
| 6 | 
            +
              s.name        = "validates_lengths_from_database"
         | 
| 7 | 
            +
              s.version     = ValidatesLengthsFromDatabase::VERSION
         | 
| 8 | 
            +
              s.author      = "Ben Hughes"
         | 
| 9 | 
            +
              s.email       = "ben@railsgarden.com"
         | 
| 10 | 
            +
              s.homepage    = "http://github.com/rubiety/validates_lengths_from_database"
         | 
| 11 | 
            +
              s.summary     = "Automatic maximum-length validations."
         | 
| 12 | 
            +
              s.description = "Introspects your database string field maximum lengths and automatically defines length validations."
         | 
| 13 | 
            +
             | 
| 14 | 
            +
              s.files        = Dir["{lib,spec,rails}/**/*", "[A-Z]*", "init.rb"]
         | 
| 15 | 
            +
              s.require_path = "lib"
         | 
| 16 | 
            +
             | 
| 17 | 
            +
              s.rubyforge_project = s.name
         | 
| 18 | 
            +
              s.required_rubygems_version = ">= 1.3.4"
         | 
| 19 | 
            +
              s.required_ruby_version = ">= 1.9.3"
         | 
| 20 | 
            +
             | 
| 21 | 
            +
              s.add_dependency("activerecord", [">= 2.3.2"])
         | 
| 22 | 
            +
              s.add_development_dependency("activesupport", [">= 2.3.2"])
         | 
| 23 | 
            +
              s.add_development_dependency("rspec", ["~> 2.0"])
         | 
| 24 | 
            +
              s.add_development_dependency("sqlite3", ["~> 1.3.4"])
         | 
| 25 | 
            +
              s.add_development_dependency("appraisal", ["~> 1.0.2"])
         | 
| 26 | 
            +
              s.add_development_dependency("pg", ["~> 0.17.1"])
         | 
| 27 | 
            +
              s.add_development_dependency("rdoc", ["~> 3.12"])
         | 
| 28 | 
            +
              s.add_development_dependency "rake"
         | 
| 29 | 
            +
             | 
| 30 | 
            +
              # I'm not sure why this isn't installed along with activesupport,
         | 
| 31 | 
            +
              # but for whatever reason running `bundle install` doesn't install
         | 
| 32 | 
            +
              # i18n so I'm adding it here for now.
         | 
| 33 | 
            +
              # https://github.com/rails/rails/blob/master/activesupport/activesupport.gemspec#L19 ?
         | 
| 34 | 
            +
              s.add_development_dependency("i18n")
         | 
| 35 | 
            +
              s.add_development_dependency("iconv", "~> 1.0.4")
         | 
| 36 | 
            +
            end
         | 
| 37 | 
            +
             | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: validates_lengths_from_database
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0. | 
| 4 | 
            +
              version: 0.5.0
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Ben Hughes
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date:  | 
| 11 | 
            +
            date: 2016-01-29 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: activerecord
         | 
| @@ -158,7 +158,7 @@ extensions: [] | |
| 158 158 | 
             
            extra_rdoc_files: []
         | 
| 159 159 | 
             
            files:
         | 
| 160 160 | 
             
            - Appraisals
         | 
| 161 | 
            -
            - CHANGELOG
         | 
| 161 | 
            +
            - CHANGELOG.rdoc
         | 
| 162 162 | 
             
            - Gemfile
         | 
| 163 163 | 
             
            - Gemfile.lock
         | 
| 164 164 | 
             
            - LICENSE
         | 
| @@ -174,6 +174,8 @@ files: | |
| 174 174 | 
             
            - spec/db/test.sqlite3
         | 
| 175 175 | 
             
            - spec/spec_helper.rb
         | 
| 176 176 | 
             
            - spec/validates_lengths_from_database_spec.rb
         | 
| 177 | 
            +
            - validates_lengths_from_database-0.4.0.gem
         | 
| 178 | 
            +
            - validates_lengths_from_database.gemspec
         | 
| 177 179 | 
             
            homepage: http://github.com/rubiety/validates_lengths_from_database
         | 
| 178 180 | 
             
            licenses: []
         | 
| 179 181 | 
             
            metadata: {}
         | 
| @@ -193,7 +195,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement | |
| 193 195 | 
             
                  version: 1.3.4
         | 
| 194 196 | 
             
            requirements: []
         | 
| 195 197 | 
             
            rubyforge_project: validates_lengths_from_database
         | 
| 196 | 
            -
            rubygems_version: 2. | 
| 198 | 
            +
            rubygems_version: 2.4.8
         | 
| 197 199 | 
             
            signing_key: 
         | 
| 198 200 | 
             
            specification_version: 4
         | 
| 199 201 | 
             
            summary: Automatic maximum-length validations.
         |