jsonb_accessor 1.3.0 → 1.3.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 +5 -5
- data/.rubocop.yml +17 -18
- data/.ruby-version +1 -1
- data/.travis.yml +0 -3
- data/Dockerfile +12 -0
- data/README.md +33 -20
- data/Rakefile +6 -3
- data/bin/console +3 -3
- data/db/config.yml +1 -1
- data/db/migrate/20150407031737_set_up_testing_db.rb +2 -0
- data/db/schema.rb +8 -8
- data/docker-compose.yml +26 -0
- data/jsonb_accessor.gemspec +3 -4
- data/lib/jsonb_accessor.rb +2 -2
- data/lib/jsonb_accessor/macro.rb +2 -2
- data/lib/jsonb_accessor/query_builder.rb +1 -3
- data/lib/jsonb_accessor/query_helper.rb +2 -6
- data/lib/jsonb_accessor/version.rb +1 -1
- metadata +16 -15
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 | 
            -
             | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 2 | 
            +
            SHA256:
         | 
| 3 | 
            +
              metadata.gz: e0206aa16a6170326c1c5683a894715d6466cce4fb4b53f0bbd4326619608aed
         | 
| 4 | 
            +
              data.tar.gz: e806fe994b60d0e9a4f8d46bda8df39a44266292010f2b4706bd2be3dfe46d44
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 443182674b5fd917ea91c8a7813756e43b85678343833845db054a4814ccbb9e20598794c2ee44ad44715258a5e957a1fe2cbcdbf2758b2a01200adf266c7381
         | 
| 7 | 
            +
              data.tar.gz: 7f604bebd874c410c78e554c4e724f18d0c816fe035ebc1d8e470cede3d8d3497f9443a4a25a4d611f0395eb5215063e211aada8ef9d8df8e4ee7502b352eb81
         | 
    
        data/.rubocop.yml
    CHANGED
    
    | @@ -1,11 +1,16 @@ | |
| 1 1 | 
             
            AllCops:
         | 
| 2 | 
            -
               | 
| 3 | 
            -
             | 
| 2 | 
            +
              NewCops: enable
         | 
| 3 | 
            +
              TargetRubyVersion: 2.7.2
         | 
| 4 | 
            +
              SuggestExtensions: false
         | 
| 4 5 | 
             
              Exclude:
         | 
| 5 | 
            -
                - db/**/*
         | 
| 6 | 
            -
                - gemfiles/**/*
         | 
| 7 | 
            -
                - vendor/**/*
         | 
| 8 | 
            -
             | 
| 6 | 
            +
                - "db/**/*"
         | 
| 7 | 
            +
                - "gemfiles/**/*"
         | 
| 8 | 
            +
                - "vendor/**/*"
         | 
| 9 | 
            +
            Layout/SpaceBeforeFirstArg:
         | 
| 10 | 
            +
              Enabled: false
         | 
| 11 | 
            +
            Layout/LineLength:
         | 
| 12 | 
            +
              Enabled: false
         | 
| 13 | 
            +
            Layout/SpaceAroundEqualsInParameterDefault:
         | 
| 9 14 | 
             
              Enabled: false
         | 
| 10 15 | 
             
            Lint/UnusedBlockArgument:
         | 
| 11 16 | 
             
              Enabled: false
         | 
| @@ -17,8 +22,6 @@ Metrics/ClassLength: | |
| 17 22 | 
             
              Enabled: false
         | 
| 18 23 | 
             
            Metrics/CyclomaticComplexity:
         | 
| 19 24 | 
             
              Enabled: false
         | 
| 20 | 
            -
            Metrics/LineLength:
         | 
| 21 | 
            -
              Enabled: false
         | 
| 22 25 | 
             
            Metrics/MethodLength:
         | 
| 23 26 | 
             
              Enabled: false
         | 
| 24 27 | 
             
            Metrics/ModuleLength:
         | 
| @@ -29,8 +32,6 @@ Metrics/BlockLength: | |
| 29 32 | 
             
              Enabled: false
         | 
| 30 33 | 
             
            Security/YAMLLoad:
         | 
| 31 34 | 
             
              Enabled: false
         | 
| 32 | 
            -
            Style/AlignParameters:
         | 
| 33 | 
            -
              Enabled: false
         | 
| 34 35 | 
             
            Style/ClassAndModuleChildren:
         | 
| 35 36 | 
             
              Enabled: false
         | 
| 36 37 | 
             
            Style/ClassVars:
         | 
| @@ -39,25 +40,23 @@ Style/Documentation: | |
| 39 40 | 
             
              Enabled: false
         | 
| 40 41 | 
             
            Style/DoubleNegation:
         | 
| 41 42 | 
             
              Enabled: false
         | 
| 42 | 
            -
             | 
| 43 | 
            +
            Naming/FileName:
         | 
| 43 44 | 
             
              Enabled: false
         | 
| 44 45 | 
             
            Style/GuardClause:
         | 
| 45 46 | 
             
              Enabled: false
         | 
| 46 | 
            -
            Style/IndentHash:
         | 
| 47 | 
            -
              Enabled: false
         | 
| 48 47 | 
             
            Style/NilComparison:
         | 
| 49 48 | 
             
              Enabled: false
         | 
| 50 | 
            -
            Style/OpMethod:
         | 
| 51 | 
            -
              Enabled: false
         | 
| 52 49 | 
             
            Style/RescueModifier:
         | 
| 53 50 | 
             
              Enabled: false
         | 
| 54 51 | 
             
            Style/SignalException:
         | 
| 55 52 | 
             
              Enabled: false
         | 
| 56 53 | 
             
            Style/SingleLineMethods:
         | 
| 57 54 | 
             
              Enabled: false
         | 
| 58 | 
            -
            Style/SpaceAroundEqualsInParameterDefault:
         | 
| 59 | 
            -
              Enabled: false
         | 
| 60 55 | 
             
            Style/StringLiterals:
         | 
| 61 56 | 
             
              EnforcedStyle: double_quotes
         | 
| 62 | 
            -
             | 
| 57 | 
            +
            Naming/BinaryOperatorParameterName:
         | 
| 58 | 
            +
              Enabled: false
         | 
| 59 | 
            +
            Naming/VariableNumber:
         | 
| 60 | 
            +
              Enabled: false
         | 
| 61 | 
            +
            Gemspec/RequiredRubyVersion:
         | 
| 63 62 | 
             
              Enabled: false
         | 
    
        data/.ruby-version
    CHANGED
    
    | @@ -1 +1 @@ | |
| 1 | 
            -
            2. | 
| 1 | 
            +
            2.7.2
         | 
    
        data/.travis.yml
    CHANGED
    
    | @@ -1,6 +1,5 @@ | |
| 1 1 | 
             
            language: ruby
         | 
| 2 2 | 
             
            rvm:
         | 
| 3 | 
            -
              - 2.3.8
         | 
| 4 3 | 
             
              - 2.4.5
         | 
| 5 4 | 
             
              - 2.5.3
         | 
| 6 5 | 
             
              - 2.6.1
         | 
| @@ -23,8 +22,6 @@ gemfile: | |
| 23 22 | 
             
              - gemfiles/activerecord_6.1.0.gemfile
         | 
| 24 23 | 
             
            jobs:
         | 
| 25 24 | 
             
              exclude:
         | 
| 26 | 
            -
                - rvm: 2.3.8
         | 
| 27 | 
            -
                  gemfile: gemfiles/activerecord_6.1.0.gemfile
         | 
| 28 25 | 
             
                - rvm: 2.4.5
         | 
| 29 26 | 
             
                  gemfile: gemfiles/activerecord_6.1.0.gemfile
         | 
| 30 27 | 
             
                - rvm: 3.0.0
         | 
    
        data/Dockerfile
    ADDED
    
    
    
        data/README.md
    CHANGED
    
    | @@ -10,15 +10,15 @@ It also adds generic scopes for querying `jsonb` columns. | |
| 10 10 |  | 
| 11 11 | 
             
            ## Table of Contents
         | 
| 12 12 |  | 
| 13 | 
            -
             | 
| 14 | 
            -
             | 
| 15 | 
            -
             | 
| 16 | 
            -
             | 
| 17 | 
            -
             | 
| 18 | 
            -
             | 
| 19 | 
            -
             | 
| 20 | 
            -
             | 
| 21 | 
            -
             | 
| 13 | 
            +
            - [Installation](#installation)
         | 
| 14 | 
            +
            - [Usage](#usage)
         | 
| 15 | 
            +
            - [Scopes](#scopes)
         | 
| 16 | 
            +
            - [Single-Table Inheritance](#single-table-inheritance)
         | 
| 17 | 
            +
            - [Dependencies](#dependencies)
         | 
| 18 | 
            +
            - [Validations](#validations)
         | 
| 19 | 
            +
            - [Upgrading](#upgrading)
         | 
| 20 | 
            +
            - [Development](#development)
         | 
| 21 | 
            +
            - [Contributing](#contributing)
         | 
| 22 22 |  | 
| 23 23 | 
             
            ## Installation
         | 
| 24 24 |  | 
| @@ -158,6 +158,7 @@ Product.all.jsonb_where(:data, reviewed_at: { before: Time.current }, p: { great | |
| 158 158 |  | 
| 159 159 | 
             
            Product.all.data_where(reviewed_at: { before: Time.current }, price: { greater_than: 5 })
         | 
| 160 160 | 
             
            ```
         | 
| 161 | 
            +
             | 
| 161 162 | 
             
            This scope makes use of the `jsonb_contains`, `jsonb_number_where`, and `jsonb_time_where` `scope`s.
         | 
| 162 163 |  | 
| 163 164 | 
             
            ### `jsonb_where_not`
         | 
| @@ -219,14 +220,14 @@ Product.all.jsonb_number_where(:data, :price_in_cents, :greater_than, 300) | |
| 219 220 |  | 
| 220 221 | 
             
            It supports:
         | 
| 221 222 |  | 
| 222 | 
            -
             | 
| 223 | 
            -
             | 
| 224 | 
            -
             | 
| 225 | 
            -
             | 
| 226 | 
            -
             | 
| 227 | 
            -
             | 
| 228 | 
            -
             | 
| 229 | 
            -
             | 
| 223 | 
            +
            - `>`
         | 
| 224 | 
            +
            - `>=`
         | 
| 225 | 
            +
            - `greater_than`
         | 
| 226 | 
            +
            - `greater_than_or_equal_to`
         | 
| 227 | 
            +
            - `<`
         | 
| 228 | 
            +
            - `<=`
         | 
| 229 | 
            +
            - `less_than`
         | 
| 230 | 
            +
            - `less_than_or_equal_to`
         | 
| 230 231 |  | 
| 231 232 | 
             
            and it is indifferent to strings/symbols.
         | 
| 232 233 |  | 
| @@ -259,9 +260,9 @@ Product.all.jsonb_time_where_not(:data, :reviewed_at, :before, 2.days.ago) | |
| 259 260 | 
             
            ## Single-Table Inheritance
         | 
| 260 261 |  | 
| 261 262 | 
             
            One of the big issues with `ActiveRecord` single-table inheritance (STI)
         | 
| 262 | 
            -
            is sparse columns. | 
| 263 | 
            +
            is sparse columns. Essentially, as sub-types of the original table
         | 
| 263 264 | 
             
            diverge further from their parent more columns are left empty in a given
         | 
| 264 | 
            -
            table. | 
| 265 | 
            +
            table. Postgres' `jsonb` type provides part of the solution in that
         | 
| 265 266 | 
             
            the values in an `jsonb` column does not impose a structure - different
         | 
| 266 267 | 
             
            rows can have different values.
         | 
| 267 268 |  | 
| @@ -305,7 +306,7 @@ end | |
| 305 306 | 
             
            ```
         | 
| 306 307 |  | 
| 307 308 | 
             
            From here any attributes specific to any sub-class can be stored in the
         | 
| 308 | 
            -
            `jsonb` column avoiding sparse data. | 
| 309 | 
            +
            `jsonb` column avoiding sparse data. Indices can also be created on
         | 
| 309 310 | 
             
            individual fields in an `jsonb` column.
         | 
| 310 311 |  | 
| 311 312 | 
             
            This approach was originally conceived by Joe Hirn in [this blog
         | 
| @@ -326,12 +327,24 @@ See the [upgrade guide](UPGRADE_GUIDE.md). | |
| 326 327 |  | 
| 327 328 | 
             
            ## Development
         | 
| 328 329 |  | 
| 330 | 
            +
            ### On your local machine
         | 
| 331 | 
            +
             | 
| 329 332 | 
             
            After checking out the repo, run `bin/setup` to install dependencies (make sure postgres is running first).
         | 
| 330 333 |  | 
| 331 334 | 
             
            Run `bin/console` for an interactive prompt that will allow you to experiment.
         | 
| 332 335 |  | 
| 333 336 | 
             
            `rake` will run Rubocop and the specs.
         | 
| 334 337 |  | 
| 338 | 
            +
            ### With Docker
         | 
| 339 | 
            +
             | 
| 340 | 
            +
            ```
         | 
| 341 | 
            +
            # setup
         | 
| 342 | 
            +
            docker-compose build
         | 
| 343 | 
            +
            docker-compose run ruby rake db:migrate
         | 
| 344 | 
            +
            # run test suite
         | 
| 345 | 
            +
            docker-compose run ruby rake spec
         | 
| 346 | 
            +
            ```
         | 
| 347 | 
            +
             | 
| 335 348 | 
             
            ## Contributing
         | 
| 336 349 |  | 
| 337 350 | 
             
            1. [Fork it](https://github.com/madeintandem/jsonb_accessor/fork)
         | 
    
        data/Rakefile
    CHANGED
    
    | @@ -5,18 +5,21 @@ require "bundler/setup" | |
| 5 5 | 
             
            require "bundler/gem_tasks"
         | 
| 6 6 | 
             
            require "rspec/core/rake_task"
         | 
| 7 7 | 
             
            require "rubocop/rake_task"
         | 
| 8 | 
            +
            require "active_record"
         | 
| 9 | 
            +
            require "erb"
         | 
| 8 10 |  | 
| 9 11 | 
             
            RSpec::Core::RakeTask.new
         | 
| 10 12 | 
             
            RuboCop::RakeTask.new
         | 
| 11 13 |  | 
| 12 | 
            -
             | 
| 14 | 
            +
            # rubocop:disable Style/MixinUsage
         | 
| 13 15 | 
             
            include ActiveRecord::Tasks
         | 
| 16 | 
            +
            # rubocop:enable Style/MixinUsage
         | 
| 14 17 |  | 
| 15 | 
            -
            root = File.expand_path  | 
| 18 | 
            +
            root = File.expand_path __dir__
         | 
| 16 19 | 
             
            db_dir = File.join(root, "db")
         | 
| 17 20 | 
             
            DatabaseTasks.root = root
         | 
| 18 21 | 
             
            DatabaseTasks.db_dir = db_dir
         | 
| 19 | 
            -
            DatabaseTasks.database_configuration = YAML.load(File.read(File.join(db_dir, "config.yml")))
         | 
| 22 | 
            +
            DatabaseTasks.database_configuration = YAML.load(ERB.new(File.read(File.join(db_dir, "config.yml"))).result)
         | 
| 20 23 | 
             
            DatabaseTasks.migrations_paths = [File.join(db_dir, "migrate")]
         | 
| 21 24 | 
             
            DatabaseTasks.env = "test"
         | 
| 22 25 |  | 
    
        data/bin/console
    CHANGED
    
    | @@ -1,16 +1,16 @@ | |
| 1 1 | 
             
            #!/usr/bin/env ruby
         | 
| 2 2 | 
             
            # frozen_string_literal: true
         | 
| 3 3 |  | 
| 4 | 
            -
            # rubocop:disable Lint/UselessAssignment
         | 
| 5 | 
            -
             | 
| 6 4 | 
             
            require "bundler/setup"
         | 
| 7 5 | 
             
            require "jsonb_accessor"
         | 
| 8 6 | 
             
            require "rspec"
         | 
| 9 | 
            -
            require File.expand_path(" | 
| 7 | 
            +
            require File.expand_path("../spec/spec_helper.rb", __dir__)
         | 
| 10 8 |  | 
| 11 9 | 
             
            dbconfig = YAML.load(File.open("db/config.yml"))
         | 
| 12 10 | 
             
            ActiveRecord::Base.establish_connection(dbconfig["development"])
         | 
| 13 11 |  | 
| 12 | 
            +
            # rubocop:disable Lint/UselessAssignment
         | 
| 14 13 | 
             
            x = Product.new
         | 
| 14 | 
            +
            # rubocop:enable Lint/UselessAssignment
         | 
| 15 15 |  | 
| 16 16 | 
             
            Pry.start
         | 
    
        data/db/config.yml
    CHANGED
    
    
    
        data/db/schema.rb
    CHANGED
    
    | @@ -1,17 +1,18 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 1 3 | 
             
            # This file is auto-generated from the current state of the database. Instead
         | 
| 2 4 | 
             
            # of editing this file, please use the migrations feature of Active Record to
         | 
| 3 5 | 
             
            # incrementally modify your database, and then regenerate this schema definition.
         | 
| 4 6 | 
             
            #
         | 
| 5 | 
            -
            #  | 
| 6 | 
            -
            #  | 
| 7 | 
            -
            #  | 
| 8 | 
            -
            #  | 
| 9 | 
            -
            #  | 
| 7 | 
            +
            # Note that this schema.rb definition is the authoritative source for your
         | 
| 8 | 
            +
            # database schema. If you need to create the application database on another
         | 
| 9 | 
            +
            # system, you should be using db:schema:load, not running all the migrations
         | 
| 10 | 
            +
            # from scratch. The latter is a flawed and unsustainable approach (the more migrations
         | 
| 11 | 
            +
            # you'll amass, the slower it'll run and the greater likelihood for issues).
         | 
| 10 12 | 
             
            #
         | 
| 11 13 | 
             
            # It's strongly recommended that you check this file into your version control system.
         | 
| 12 14 |  | 
| 13 | 
            -
            ActiveRecord::Schema.define(version:  | 
| 14 | 
            -
             | 
| 15 | 
            +
            ActiveRecord::Schema.define(version: 20_150_407_031_737) do
         | 
| 15 16 | 
             
              # These are extensions that must be enabled in order to support this database
         | 
| 16 17 | 
             
              enable_extension "plpgsql"
         | 
| 17 18 |  | 
| @@ -32,5 +33,4 @@ ActiveRecord::Schema.define(version: 2015_04_07_031737) do | |
| 32 33 | 
             
                t.datetime "datetime_type"
         | 
| 33 34 | 
             
                t.decimal "decimal_type"
         | 
| 34 35 | 
             
              end
         | 
| 35 | 
            -
             | 
| 36 36 | 
             
            end
         | 
    
        data/docker-compose.yml
    ADDED
    
    | @@ -0,0 +1,26 @@ | |
| 1 | 
            +
            version: '3'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            services:
         | 
| 4 | 
            +
              ruby:
         | 
| 5 | 
            +
                environment:
         | 
| 6 | 
            +
                  - DATABASE_HOST=postgres
         | 
| 7 | 
            +
                build:
         | 
| 8 | 
            +
                  args:
         | 
| 9 | 
            +
                    - RUBY_VERSION=${RUBY_VERSION:-2.7.2}
         | 
| 10 | 
            +
                  context: .
         | 
| 11 | 
            +
                volumes:
         | 
| 12 | 
            +
                  - '.:/usr/src/app'
         | 
| 13 | 
            +
                depends_on:
         | 
| 14 | 
            +
                  - postgres
         | 
| 15 | 
            +
             | 
| 16 | 
            +
              postgres:
         | 
| 17 | 
            +
                image: postgres:12
         | 
| 18 | 
            +
                environment:
         | 
| 19 | 
            +
                  - POSTGRES_HOST_AUTH_METHOD=trust
         | 
| 20 | 
            +
                  - POSTGRES_DB=jsonb_accessor
         | 
| 21 | 
            +
                  - PGDATA=/var/lib/postgresql/data/pgdata
         | 
| 22 | 
            +
                volumes:                                                                                    
         | 
| 23 | 
            +
                  - pg_data:/var/lib/postgresql/data/pgdata
         | 
| 24 | 
            +
             | 
| 25 | 
            +
            volumes:                                                                                        
         | 
| 26 | 
            +
              pg_data:
         | 
    
        data/jsonb_accessor.gemspec
    CHANGED
    
    | @@ -1,7 +1,6 @@ | |
| 1 | 
            -
            # coding: utf-8
         | 
| 2 1 | 
             
            # frozen_string_literal: true
         | 
| 3 2 |  | 
| 4 | 
            -
            lib = File.expand_path(" | 
| 3 | 
            +
            lib = File.expand_path("lib", __dir__)
         | 
| 5 4 | 
             
            $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
         | 
| 6 5 | 
             
            require "jsonb_accessor/version"
         | 
| 7 6 |  | 
| @@ -27,12 +26,12 @@ Gem::Specification.new do |spec| | |
| 27 26 | 
             
              spec.add_dependency "pg", ">= 0.18.1"
         | 
| 28 27 |  | 
| 29 28 | 
             
              spec.add_development_dependency "appraisal", "~> 2.2.0"
         | 
| 30 | 
            -
              spec.add_development_dependency "database_cleaner", "~> 1.6.0"
         | 
| 31 29 | 
             
              spec.add_development_dependency "awesome_print"
         | 
| 30 | 
            +
              spec.add_development_dependency "database_cleaner", "~> 1.6.0"
         | 
| 32 31 | 
             
              spec.add_development_dependency "pry"
         | 
| 33 32 | 
             
              spec.add_development_dependency "pry-doc"
         | 
| 34 33 | 
             
              spec.add_development_dependency "pry-nav"
         | 
| 35 34 | 
             
              spec.add_development_dependency "rake", ">= 12.3.3"
         | 
| 36 35 | 
             
              spec.add_development_dependency "rspec", "~> 3.6.0"
         | 
| 37 | 
            -
              spec.add_development_dependency "rubocop", "~>  | 
| 36 | 
            +
              spec.add_development_dependency "rubocop", "~> 1"
         | 
| 38 37 | 
             
            end
         | 
    
        data/lib/jsonb_accessor.rb
    CHANGED
    
    | @@ -15,6 +15,6 @@ module JsonbAccessor | |
| 15 15 | 
             
            end
         | 
| 16 16 |  | 
| 17 17 | 
             
            ActiveSupport.on_load(:active_record) do
         | 
| 18 | 
            -
              ActiveRecord::Base. | 
| 19 | 
            -
              ActiveRecord::Base. | 
| 18 | 
            +
              ActiveRecord::Base.include JsonbAccessor
         | 
| 19 | 
            +
              ActiveRecord::Base.include JsonbAccessor::QueryBuilder
         | 
| 20 20 | 
             
            end
         | 
    
        data/lib/jsonb_accessor/macro.rb
    CHANGED
    
    | @@ -55,7 +55,7 @@ module JsonbAccessor | |
| 55 55 | 
             
                    # each time it is evaluated.
         | 
| 56 56 | 
             
                    all_defaults_mapping_proc =
         | 
| 57 57 | 
             
                      if all_defaults_mapping.present?
         | 
| 58 | 
            -
                        -> { all_defaults_mapping. | 
| 58 | 
            +
                        -> { all_defaults_mapping.transform_values { |value| value.respond_to?(:call) ? value.call : value }.to_h.compact }
         | 
| 59 59 | 
             
                      end
         | 
| 60 60 | 
             
                    attribute jsonb_attribute, :jsonb, default: all_defaults_mapping_proc if all_defaults_mapping_proc.present?
         | 
| 61 61 |  | 
| @@ -79,7 +79,7 @@ module JsonbAccessor | |
| 79 79 | 
             
                        empty_named_attributes = names_to_store_keys.keys.each_with_object({}) { |name, defaults| defaults[name] = nil }
         | 
| 80 80 |  | 
| 81 81 | 
             
                        store_key_attributes = ::JsonbAccessor::QueryHelper.convert_keys_to_store_keys(value, names_to_store_keys)
         | 
| 82 | 
            -
                        write_attribute(jsonb_attribute, empty_store_key_attributes.merge(store_key_attributes))
         | 
| 82 | 
            +
                        write_attribute(jsonb_attribute, empty_store_key_attributes.merge(store_key_attributes).compact)
         | 
| 83 83 |  | 
| 84 84 | 
             
                        empty_named_attributes.merge(value).each { |name, attribute_value| write_attribute(name, attribute_value) }
         | 
| 85 85 | 
             
                      end
         | 
| @@ -61,9 +61,7 @@ module JsonbAccessor | |
| 61 61 | 
             
                    excludes_attributes = {}
         | 
| 62 62 |  | 
| 63 63 | 
             
                    attributes.each do |name, value|
         | 
| 64 | 
            -
                      if value.is_a?(Range)
         | 
| 65 | 
            -
                        raise JsonbAccessor::QueryHelper::NotSupported, "`jsonb_where_not` scope does not accept ranges as arguments. Given `#{value}` for `#{name}` field"
         | 
| 66 | 
            -
                      end
         | 
| 64 | 
            +
                      raise JsonbAccessor::QueryHelper::NotSupported, "`jsonb_where_not` scope does not accept ranges as arguments. Given `#{value}` for `#{name}` field" if value.is_a?(Range)
         | 
| 67 65 |  | 
| 68 66 | 
             
                      if JsonbAccessor::QueryHelper.number_query_arguments?(value)
         | 
| 69 67 | 
             
                        value.each { |operator, query_value| query = query.jsonb_number_where_not(column_name, name, operator, query_value) }
         | 
| @@ -42,9 +42,7 @@ module JsonbAccessor | |
| 42 42 |  | 
| 43 43 | 
             
                class << self
         | 
| 44 44 | 
             
                  def validate_column_name!(query, column_name)
         | 
| 45 | 
            -
                    if query.model.columns.none? { |column| column.name == column_name.to_s }
         | 
| 46 | 
            -
                      raise InvalidColumnName, "a column named `#{column_name}` does not exist on the `#{query.model.table_name}` table"
         | 
| 47 | 
            -
                    end
         | 
| 45 | 
            +
                    raise InvalidColumnName, "a column named `#{column_name}` does not exist on the `#{query.model.table_name}` table" if query.model.columns.none? { |column| column.name == column_name.to_s }
         | 
| 48 46 | 
             
                  end
         | 
| 49 47 |  | 
| 50 48 | 
             
                  def validate_field_name!(query, column_name, field_name)
         | 
| @@ -56,9 +54,7 @@ module JsonbAccessor | |
| 56 54 | 
             
                  end
         | 
| 57 55 |  | 
| 58 56 | 
             
                  def validate_direction!(option)
         | 
| 59 | 
            -
                    if ORDER_DIRECTIONS.exclude?(option)
         | 
| 60 | 
            -
                      raise InvalidDirection, "`#{option}` is not a valid direction for ordering, only `asc` and `desc` are accepted"
         | 
| 61 | 
            -
                    end
         | 
| 57 | 
            +
                    raise InvalidDirection, "`#{option}` is not a valid direction for ordering, only `asc` and `desc` are accepted" if ORDER_DIRECTIONS.exclude?(option)
         | 
| 62 58 | 
             
                  end
         | 
| 63 59 |  | 
| 64 60 | 
             
                  def convert_keys_to_store_keys(attributes, store_key_mapping)
         | 
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: jsonb_accessor
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 1.3. | 
| 4 | 
            +
              version: 1.3.1
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Michael Crismali
         | 
| @@ -69,33 +69,33 @@ dependencies: | |
| 69 69 | 
             
                  - !ruby/object:Gem::Version
         | 
| 70 70 | 
             
                    version: 2.2.0
         | 
| 71 71 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 72 | 
            -
              name:  | 
| 72 | 
            +
              name: awesome_print
         | 
| 73 73 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 74 74 | 
             
                requirements:
         | 
| 75 | 
            -
                - - " | 
| 75 | 
            +
                - - ">="
         | 
| 76 76 | 
             
                  - !ruby/object:Gem::Version
         | 
| 77 | 
            -
                    version:  | 
| 77 | 
            +
                    version: '0'
         | 
| 78 78 | 
             
              type: :development
         | 
| 79 79 | 
             
              prerelease: false
         | 
| 80 80 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 81 81 | 
             
                requirements:
         | 
| 82 | 
            -
                - - " | 
| 82 | 
            +
                - - ">="
         | 
| 83 83 | 
             
                  - !ruby/object:Gem::Version
         | 
| 84 | 
            -
                    version:  | 
| 84 | 
            +
                    version: '0'
         | 
| 85 85 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 86 | 
            -
              name:  | 
| 86 | 
            +
              name: database_cleaner
         | 
| 87 87 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 88 88 | 
             
                requirements:
         | 
| 89 | 
            -
                - - " | 
| 89 | 
            +
                - - "~>"
         | 
| 90 90 | 
             
                  - !ruby/object:Gem::Version
         | 
| 91 | 
            -
                    version:  | 
| 91 | 
            +
                    version: 1.6.0
         | 
| 92 92 | 
             
              type: :development
         | 
| 93 93 | 
             
              prerelease: false
         | 
| 94 94 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 95 95 | 
             
                requirements:
         | 
| 96 | 
            -
                - - " | 
| 96 | 
            +
                - - "~>"
         | 
| 97 97 | 
             
                  - !ruby/object:Gem::Version
         | 
| 98 | 
            -
                    version:  | 
| 98 | 
            +
                    version: 1.6.0
         | 
| 99 99 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 100 100 | 
             
              name: pry
         | 
| 101 101 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| @@ -172,14 +172,14 @@ dependencies: | |
| 172 172 | 
             
                requirements:
         | 
| 173 173 | 
             
                - - "~>"
         | 
| 174 174 | 
             
                  - !ruby/object:Gem::Version
         | 
| 175 | 
            -
                    version:  | 
| 175 | 
            +
                    version: '1'
         | 
| 176 176 | 
             
              type: :development
         | 
| 177 177 | 
             
              prerelease: false
         | 
| 178 178 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 179 179 | 
             
                requirements:
         | 
| 180 180 | 
             
                - - "~>"
         | 
| 181 181 | 
             
                  - !ruby/object:Gem::Version
         | 
| 182 | 
            -
                    version:  | 
| 182 | 
            +
                    version: '1'
         | 
| 183 183 | 
             
            description: Adds typed jsonb backed fields to your ActiveRecord models.
         | 
| 184 184 | 
             
            email:
         | 
| 185 185 | 
             
            - michael@crismali.com
         | 
| @@ -196,6 +196,7 @@ files: | |
| 196 196 | 
             
            - ".travis.yml"
         | 
| 197 197 | 
             
            - Appraisals
         | 
| 198 198 | 
             
            - CODE_OF_CONDUCT.md
         | 
| 199 | 
            +
            - Dockerfile
         | 
| 199 200 | 
             
            - Gemfile
         | 
| 200 201 | 
             
            - LICENSE.txt
         | 
| 201 202 | 
             
            - README.md
         | 
| @@ -206,6 +207,7 @@ files: | |
| 206 207 | 
             
            - db/config.yml
         | 
| 207 208 | 
             
            - db/migrate/20150407031737_set_up_testing_db.rb
         | 
| 208 209 | 
             
            - db/schema.rb
         | 
| 210 | 
            +
            - docker-compose.yml
         | 
| 209 211 | 
             
            - gemfiles/activerecord_5.0.0.gemfile
         | 
| 210 212 | 
             
            - gemfiles/activerecord_5.1.0.gemfile
         | 
| 211 213 | 
             
            - gemfiles/activerecord_6.1.0.gemfile
         | 
| @@ -234,8 +236,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement | |
| 234 236 | 
             
                - !ruby/object:Gem::Version
         | 
| 235 237 | 
             
                  version: '0'
         | 
| 236 238 | 
             
            requirements: []
         | 
| 237 | 
            -
             | 
| 238 | 
            -
            rubygems_version: 2.6.11
         | 
| 239 | 
            +
            rubygems_version: 3.1.4
         | 
| 239 240 | 
             
            signing_key:
         | 
| 240 241 | 
             
            specification_version: 4
         | 
| 241 242 | 
             
            summary: Adds typed jsonb backed fields to your ActiveRecord models.
         |