arel_extensions 1.3.7 → 1.3.8
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/.github/workflows/ruby.yml +16 -0
 - data/README.md +12 -0
 - data/Rakefile +7 -0
 - data/dev/compose.yaml +29 -0
 - data/gemfiles/rails7_1.gemfile +22 -0
 - data/lib/arel_extensions/helpers.rb +11 -5
 - data/lib/arel_extensions/nodes/concat.rb +1 -1
 - data/lib/arel_extensions/nodes/json.rb +6 -2
 - data/lib/arel_extensions/version.rb +1 -1
 - data/lib/arel_extensions/visitors/to_sql.rb +7 -1
 - data/lib/arel_extensions.rb +7 -0
 - data/test/arelx_test_helper.rb +0 -4
 - data/test/with_ar/all_agnostic_test.rb +9 -2
 - data/version_v1.rb +1 -1
 - data/version_v2.rb +1 -1
 - metadata +4 -2
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA256:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: db1001f3712bc329382b77345bde00ff5c1a074a6ea757841b40fcaa230f9c08
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: de6cb9e86796ac091ae148f80888a4093ecbe0df9312ad5cbbcd16f7efc6b8f4
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: f225335f190b18b56c88e64cea0eef39771f6e937bebd57d814a6c4562c96236e2708f905eef4ec80801c9d6c475aebc717b99c265c2cbccbda46b30e0798786
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: e89e25e2336dee7d1f617f05ceb30df609dfdca52ff65e73e86fc2baaff91c1ae8d51e8d50510ba0981cc8bac9d62327164204957afbf18a1cf1c43728a3bf5d
         
     | 
    
        data/.github/workflows/ruby.yml
    CHANGED
    
    | 
         @@ -13,12 +13,16 @@ jobs: 
     | 
|
| 
       13 
13 
     | 
    
         
             
                  fail-fast: false
         
     | 
| 
       14 
14 
     | 
    
         
             
                  matrix:
         
     | 
| 
       15 
15 
     | 
    
         
             
                    versions: [
         
     | 
| 
      
 16 
     | 
    
         
            +
                      {ruby: '3.2',     rails: 7_1, arelx: 2},
         
     | 
| 
       16 
17 
     | 
    
         
             
                      {ruby: '3.2',     rails: 7,   arelx: 2},
         
     | 
| 
       17 
18 
     | 
    
         
             
                      {ruby: '3.2',     rails: 6_1, arelx: 2},
         
     | 
| 
      
 19 
     | 
    
         
            +
                      {ruby: '3.1',     rails: 7_1, arelx: 2},
         
     | 
| 
       18 
20 
     | 
    
         
             
                      {ruby: '3.1',     rails: 7,   arelx: 2},
         
     | 
| 
       19 
21 
     | 
    
         
             
                      {ruby: '3.1',     rails: 6_1, arelx: 2},
         
     | 
| 
      
 22 
     | 
    
         
            +
                      {ruby: '3.0',     rails: 7_1, arelx: 2},
         
     | 
| 
       20 
23 
     | 
    
         
             
                      {ruby: '3.0',     rails: 7,   arelx: 2},
         
     | 
| 
       21 
24 
     | 
    
         
             
                      {ruby: '3.0',     rails: 6_1, arelx: 2},
         
     | 
| 
      
 25 
     | 
    
         
            +
                      {ruby: '2.7',     rails: 7_1, arelx: 2},
         
     | 
| 
       22 
26 
     | 
    
         
             
                      {ruby: '2.7',     rails: 7,   arelx: 2},
         
     | 
| 
       23 
27 
     | 
    
         
             
                      {ruby: '2.7',     rails: 6_1, arelx: 2},
         
     | 
| 
       24 
28 
     | 
    
         
             
                      {ruby: '2.7',     rails: 6,   arelx: 2},
         
     | 
| 
         @@ -68,12 +72,16 @@ jobs: 
     | 
|
| 
       68 
72 
     | 
    
         
             
                  fail-fast: false
         
     | 
| 
       69 
73 
     | 
    
         
             
                  matrix:
         
     | 
| 
       70 
74 
     | 
    
         
             
                    versions: [
         
     | 
| 
      
 75 
     | 
    
         
            +
                      {ruby: '3.2',     rails: 7_1, arelx: 2},
         
     | 
| 
       71 
76 
     | 
    
         
             
                      {ruby: '3.2',     rails: 7,   arelx: 2},
         
     | 
| 
       72 
77 
     | 
    
         
             
                      {ruby: '3.2',     rails: 6_1, arelx: 2},
         
     | 
| 
      
 78 
     | 
    
         
            +
                      {ruby: '3.1',     rails: 7_1, arelx: 2},
         
     | 
| 
       73 
79 
     | 
    
         
             
                      {ruby: '3.1',     rails: 7,   arelx: 2},
         
     | 
| 
       74 
80 
     | 
    
         
             
                      {ruby: '3.1',     rails: 6_1, arelx: 2},
         
     | 
| 
      
 81 
     | 
    
         
            +
                      {ruby: '3.0',     rails: 7_1, arelx: 2},
         
     | 
| 
       75 
82 
     | 
    
         
             
                      {ruby: '3.0',     rails: 7,   arelx: 2},
         
     | 
| 
       76 
83 
     | 
    
         
             
                      {ruby: '3.0',     rails: 6_1, arelx: 2},
         
     | 
| 
      
 84 
     | 
    
         
            +
                      {ruby: '2.7',     rails: 7_1, arelx: 2},
         
     | 
| 
       77 
85 
     | 
    
         
             
                      {ruby: '2.7',     rails: 7,   arelx: 2},
         
     | 
| 
       78 
86 
     | 
    
         
             
                      {ruby: '2.7',     rails: 6_1, arelx: 2},
         
     | 
| 
       79 
87 
     | 
    
         
             
                      {ruby: '2.7',     rails: 6,   arelx: 2},
         
     | 
| 
         @@ -124,12 +132,16 @@ jobs: 
     | 
|
| 
       124 
132 
     | 
    
         
             
                  fail-fast: false
         
     | 
| 
       125 
133 
     | 
    
         
             
                  matrix:
         
     | 
| 
       126 
134 
     | 
    
         
             
                    versions: [
         
     | 
| 
      
 135 
     | 
    
         
            +
                      {ruby: '3.2',     rails: 7_1, arelx: 2},
         
     | 
| 
       127 
136 
     | 
    
         
             
                      {ruby: '3.2',     rails: 7,   arelx: 2},
         
     | 
| 
       128 
137 
     | 
    
         
             
                      {ruby: '3.2',     rails: 6_1, arelx: 2},
         
     | 
| 
      
 138 
     | 
    
         
            +
                      {ruby: '3.1',     rails: 7_1, arelx: 2},
         
     | 
| 
       129 
139 
     | 
    
         
             
                      {ruby: '3.1',     rails: 7,   arelx: 2},
         
     | 
| 
       130 
140 
     | 
    
         
             
                      {ruby: '3.1',     rails: 6_1, arelx: 2},
         
     | 
| 
      
 141 
     | 
    
         
            +
                      {ruby: '3.0',     rails: 7_1, arelx: 2},
         
     | 
| 
       131 
142 
     | 
    
         
             
                      {ruby: '3.0',     rails: 7,   arelx: 2},
         
     | 
| 
       132 
143 
     | 
    
         
             
                      {ruby: '3.0',     rails: 6_1, arelx: 2},
         
     | 
| 
      
 144 
     | 
    
         
            +
                      {ruby: '2.7',     rails: 7_1, arelx: 2},
         
     | 
| 
       133 
145 
     | 
    
         
             
                      {ruby: '2.7',     rails: 7,   arelx: 2},
         
     | 
| 
       134 
146 
     | 
    
         
             
                      {ruby: '2.7',     rails: 6_1, arelx: 2},
         
     | 
| 
       135 
147 
     | 
    
         
             
                      {ruby: '2.7',     rails: 6,   arelx: 2},
         
     | 
| 
         @@ -205,12 +217,16 @@ jobs: 
     | 
|
| 
       205 
217 
     | 
    
         
             
                  fail-fast: false
         
     | 
| 
       206 
218 
     | 
    
         
             
                  matrix:
         
     | 
| 
       207 
219 
     | 
    
         
             
                    versions: [
         
     | 
| 
      
 220 
     | 
    
         
            +
                      {ruby: '3.2',     rails: 7_1, arelx: 2},
         
     | 
| 
       208 
221 
     | 
    
         
             
                      {ruby: '3.2',     rails: 7,   arelx: 2},
         
     | 
| 
       209 
222 
     | 
    
         
             
                      {ruby: '3.2',     rails: 6_1, arelx: 2},
         
     | 
| 
      
 223 
     | 
    
         
            +
                      {ruby: '3.1',     rails: 7_1, arelx: 2},
         
     | 
| 
       210 
224 
     | 
    
         
             
                      {ruby: '3.1',     rails: 7,   arelx: 2},
         
     | 
| 
       211 
225 
     | 
    
         
             
                      {ruby: '3.1',     rails: 6_1, arelx: 2},
         
     | 
| 
      
 226 
     | 
    
         
            +
                      {ruby: '3.0',     rails: 7_1, arelx: 2},
         
     | 
| 
       212 
227 
     | 
    
         
             
                      {ruby: '3.0',     rails: 7,   arelx: 2},
         
     | 
| 
       213 
228 
     | 
    
         
             
                      {ruby: '3.0',     rails: 6_1, arelx: 2},
         
     | 
| 
      
 229 
     | 
    
         
            +
                      {ruby: '2.7',     rails: 7_1, arelx: 2},
         
     | 
| 
       214 
230 
     | 
    
         
             
                      {ruby: '2.7',     rails: 7,   arelx: 2},
         
     | 
| 
       215 
231 
     | 
    
         
             
                      {ruby: '2.7',     rails: 6_1, arelx: 2},
         
     | 
| 
       216 
232 
     | 
    
         
             
                      {ruby: '2.7',     rails: 6,   arelx: 2},
         
     | 
    
        data/README.md
    CHANGED
    
    | 
         @@ -771,3 +771,15 @@ bundle exec rake test:to_sql 
     | 
|
| 
       771 
771 
     | 
    
         | 
| 
       772 
772 
     | 
    
         
             
            Refer to the [Version Compatibility](#version-compatibility) section to correctly
         
     | 
| 
       773 
773 
     | 
    
         
             
            set your gemfile.
         
     | 
| 
      
 774 
     | 
    
         
            +
             
     | 
| 
      
 775 
     | 
    
         
            +
            ### MariaDB and Postgres
         
     | 
| 
      
 776 
     | 
    
         
            +
             
     | 
| 
      
 777 
     | 
    
         
            +
            We provide a `docker compose` to set up some databases for testing:
         
     | 
| 
      
 778 
     | 
    
         
            +
             
     | 
| 
      
 779 
     | 
    
         
            +
            ```bash
         
     | 
| 
      
 780 
     | 
    
         
            +
            docker-compose -f dev/compose.yaml up
         
     | 
| 
      
 781 
     | 
    
         
            +
            ```
         
     | 
| 
      
 782 
     | 
    
         
            +
             
     | 
| 
      
 783 
     | 
    
         
            +
            ⚠️ Note: localization tests will fail for postgresql because the image is made
         
     | 
| 
      
 784 
     | 
    
         
            +
            for `en_US.UTF`. We should fix it later, but for the time being the CI works
         
     | 
| 
      
 785 
     | 
    
         
            +
            correctly for these tests, so you can safely ignore them for the time being.
         
     | 
    
        data/Rakefile
    CHANGED
    
    | 
         @@ -48,3 +48,10 @@ end 
     | 
|
| 
       48 
48 
     | 
    
         
             
              # Make sure the adapter test evaluates the env setting task
         
     | 
| 
       49 
49 
     | 
    
         
             
              task "test_#{adapter}" => ["#{adapter}:env", "test:#{adapter}"]
         
     | 
| 
       50 
50 
     | 
    
         
             
            end
         
     | 
| 
      
 51 
     | 
    
         
            +
             
     | 
| 
      
 52 
     | 
    
         
            +
            # Useful shorthands.
         
     | 
| 
      
 53 
     | 
    
         
            +
            namespace :test do
         
     | 
| 
      
 54 
     | 
    
         
            +
              task :sql => :to_sql
         
     | 
| 
      
 55 
     | 
    
         
            +
              task :pg => :postgresql
         
     | 
| 
      
 56 
     | 
    
         
            +
              task :postgres => :postgresql
         
     | 
| 
      
 57 
     | 
    
         
            +
            end
         
     | 
    
        data/dev/compose.yaml
    ADDED
    
    | 
         @@ -0,0 +1,29 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            name: arelx-dbs
         
     | 
| 
      
 2 
     | 
    
         
            +
            services:
         
     | 
| 
      
 3 
     | 
    
         
            +
              mariadb:
         
     | 
| 
      
 4 
     | 
    
         
            +
                image: mariadb:11.0
         
     | 
| 
      
 5 
     | 
    
         
            +
                container_name: mariadb
         
     | 
| 
      
 6 
     | 
    
         
            +
                environment:
         
     | 
| 
      
 7 
     | 
    
         
            +
                  MARIADB_DATABASE: arelx_test
         
     | 
| 
      
 8 
     | 
    
         
            +
                  MARIADB_ALLOW_EMPTY_ROOT_PASSWORD: true
         
     | 
| 
      
 9 
     | 
    
         
            +
                ports:
         
     | 
| 
      
 10 
     | 
    
         
            +
                  - "3306:3306"
         
     | 
| 
      
 11 
     | 
    
         
            +
                healthcheck:
         
     | 
| 
      
 12 
     | 
    
         
            +
                  test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"]
         
     | 
| 
      
 13 
     | 
    
         
            +
                  interval: 10s
         
     | 
| 
      
 14 
     | 
    
         
            +
                  timeout: 5s
         
     | 
| 
      
 15 
     | 
    
         
            +
                  retries: 3
         
     | 
| 
      
 16 
     | 
    
         
            +
              postgres:
         
     | 
| 
      
 17 
     | 
    
         
            +
                image: postgres:15
         
     | 
| 
      
 18 
     | 
    
         
            +
                container_name: postgres
         
     | 
| 
      
 19 
     | 
    
         
            +
                environment:
         
     | 
| 
      
 20 
     | 
    
         
            +
                  POSTGRES_USER: postgres
         
     | 
| 
      
 21 
     | 
    
         
            +
                  POSTGRES_PASSWORD: secret
         
     | 
| 
      
 22 
     | 
    
         
            +
                  POSTGRES_DB: arelx_test
         
     | 
| 
      
 23 
     | 
    
         
            +
                ports:
         
     | 
| 
      
 24 
     | 
    
         
            +
                  - "5432:5432"
         
     | 
| 
      
 25 
     | 
    
         
            +
                healthcheck:
         
     | 
| 
      
 26 
     | 
    
         
            +
                  test: ["CMD-SHELL", "pg_isready -d $${POSTGRES_DB} -U $${POSTGRES_USER}"]
         
     | 
| 
      
 27 
     | 
    
         
            +
                  interval: 10s
         
     | 
| 
      
 28 
     | 
    
         
            +
                  timeout: 5s
         
     | 
| 
      
 29 
     | 
    
         
            +
                  retries: 3
         
     | 
| 
         @@ -0,0 +1,22 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            source 'https://rubygems.org'
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            gem 'rails', '~> 7.1'
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            group :development, :test do
         
     | 
| 
      
 6 
     | 
    
         
            +
              gem 'activesupport', '~> 7.1'
         
     | 
| 
      
 7 
     | 
    
         
            +
              gem 'activemodel', '~> 7.1'
         
     | 
| 
      
 8 
     | 
    
         
            +
              gem 'activerecord', '~> 7.1'
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
              gem 'sqlite3', '~> 1.6', platforms: [:mri]
         
     | 
| 
      
 11 
     | 
    
         
            +
              gem 'mysql2', '~>0.5', platforms: [:mri]
         
     | 
| 
      
 12 
     | 
    
         
            +
              gem 'pg', '~> 1.5', platforms: [:mri]
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
              gem 'tiny_tds', platforms: %i[mri mingw x64_mingw mswin]
         
     | 
| 
      
 15 
     | 
    
         
            +
              gem 'activerecord-sqlserver-adapter', '~> 7.1.0.beta1', platforms: %i[mri mingw x64_mingw mswin]
         
     | 
| 
      
 16 
     | 
    
         
            +
              gem 'tzinfo-data', platforms: %i[mingw mswin x64_mingw]
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
              gem 'ruby-oci8', platforms: %i[mri mswin mingw] if ENV.has_key? 'ORACLE_HOME'
         
     | 
| 
      
 19 
     | 
    
         
            +
              gem 'activerecord-oracle_enhanced-adapter', '~> 7.0.0' if ENV.has_key? 'ORACLE_HOME'
         
     | 
| 
      
 20 
     | 
    
         
            +
            end
         
     | 
| 
      
 21 
     | 
    
         
            +
             
     | 
| 
      
 22 
     | 
    
         
            +
            gemspec path: Dir.pwd
         
     | 
| 
         @@ -20,7 +20,8 @@ module ArelExtensions 
     | 
|
| 
       20 
20 
     | 
    
         
             
              rescue NoMethodError
         
     | 
| 
       21 
21 
     | 
    
         
             
                nil
         
     | 
| 
       22 
22 
     | 
    
         
             
              rescue => e
         
     | 
| 
       23 
     | 
    
         
            -
                warn("Warning: Unexpected exception caught while fetching column name for #{table_name}.#{column_name} in `column_of_via_arel_table`\n#{e.class} 
     | 
| 
      
 23 
     | 
    
         
            +
                warn("Warning: Unexpected exception caught while fetching column name for #{table_name}.#{column_name} in `column_of_via_arel_table`\n#{e.class}")
         
     | 
| 
      
 24 
     | 
    
         
            +
                warn(e.backtrace)
         
     | 
| 
       24 
25 
     | 
    
         
             
                nil
         
     | 
| 
       25 
26 
     | 
    
         
             
              end
         
     | 
| 
       26 
27 
     | 
    
         | 
| 
         @@ -33,10 +34,14 @@ module ArelExtensions 
     | 
|
| 
       33 
34 
     | 
    
         
             
                  column_of_via_arel_table(table_name, column_name)
         
     | 
| 
       34 
35 
     | 
    
         
             
                else
         
     | 
| 
       35 
36 
     | 
    
         
             
                  if pool.respond_to?(:pool_config)
         
     | 
| 
       36 
     | 
    
         
            -
                    pool.pool_config. 
     | 
| 
       37 
     | 
    
         
            -
             
     | 
| 
      
 37 
     | 
    
         
            +
                    if pool.pool_config.respond_to?(:schema_reflection) # activerecord >= 7.1
         
     | 
| 
      
 38 
     | 
    
         
            +
                      pool.pool_config.schema_reflection.columns_hash(ActiveRecord::Base.connection, table_name)[column_name]
         
     | 
| 
      
 39 
     | 
    
         
            +
                    else # activerecord < 7.1
         
     | 
| 
      
 40 
     | 
    
         
            +
                      pool.pool_config.schema_cache.columns_hash(table_name)[column_name]
         
     | 
| 
      
 41 
     | 
    
         
            +
                    end
         
     | 
| 
      
 42 
     | 
    
         
            +
                  elsif pool.respond_to?(:schema_cache) # activerecord < 6.1
         
     | 
| 
       38 
43 
     | 
    
         
             
                    pool.schema_cache.columns_hash(table_name)[column_name]
         
     | 
| 
       39 
     | 
    
         
            -
                  else
         
     | 
| 
      
 44 
     | 
    
         
            +
                  else # activerecord < 5.0
         
     | 
| 
       40 
45 
     | 
    
         
             
                    column_of_via_arel_table(table_name, column_name)
         
     | 
| 
       41 
46 
     | 
    
         
             
                  end
         
     | 
| 
       42 
47 
     | 
    
         
             
                end
         
     | 
| 
         @@ -45,7 +50,8 @@ module ArelExtensions 
     | 
|
| 
       45 
50 
     | 
    
         
             
              rescue ActiveRecord::StatementInvalid
         
     | 
| 
       46 
51 
     | 
    
         
             
                nil
         
     | 
| 
       47 
52 
     | 
    
         
             
              rescue => e
         
     | 
| 
       48 
     | 
    
         
            -
                warn("Warning: Unexpected exception caught while fetching column name for #{table_name}.#{column_name} in `column_of`\n#{e.class} 
     | 
| 
      
 53 
     | 
    
         
            +
                warn("Warning: Unexpected exception caught while fetching column name for #{table_name}.#{column_name} in `column_of`\n#{e.class}")
         
     | 
| 
      
 54 
     | 
    
         
            +
                warn(e.backtrace)
         
     | 
| 
       49 
55 
     | 
    
         
             
                nil
         
     | 
| 
       50 
56 
     | 
    
         
             
              end
         
     | 
| 
       51 
57 
     | 
    
         
             
            end
         
     | 
| 
         @@ -16,7 +16,7 @@ module ArelExtensions::Nodes 
     | 
|
| 
       16 
16 
     | 
    
         
             
                    if b.is_a?(Arel::Nodes::Quoted) && b.expr == ''
         
     | 
| 
       17 
17 
     | 
    
         
             
                      res
         
     | 
| 
       18 
18 
     | 
    
         
             
                    elsif res.last && res.last.is_a?(Arel::Nodes::Quoted) && b.is_a?(Arel::Nodes::Quoted)
         
     | 
| 
       19 
     | 
    
         
            -
                      res[-1] = Arel.quoted(res.last.expr + b.expr)
         
     | 
| 
      
 19 
     | 
    
         
            +
                      res[-1] = Arel.quoted(res.last.expr.to_s + b.expr.to_s)
         
     | 
| 
       20 
20 
     | 
    
         
             
                    else
         
     | 
| 
       21 
21 
     | 
    
         
             
                      res << b
         
     | 
| 
       22 
22 
     | 
    
         
             
                    end
         
     | 
| 
         @@ -18,8 +18,12 @@ module ArelExtensions 
     | 
|
| 
       18 
18 
     | 
    
         
             
                    JsonSet.new(self, key, value)
         
     | 
| 
       19 
19 
     | 
    
         
             
                  end
         
     | 
| 
       20 
20 
     | 
    
         | 
| 
       21 
     | 
    
         
            -
                  def group as_array = true, orders = nil
         
     | 
| 
       22 
     | 
    
         
            -
                     
     | 
| 
      
 21 
     | 
    
         
            +
                  def group as_array = true, orders = nil, distinct: false
         
     | 
| 
      
 22 
     | 
    
         
            +
                    if distinct
         
     | 
| 
      
 23 
     | 
    
         
            +
                      JsonGroup.new(Arel::Nodes::NamedFunction.new('DISTINCT', [self]), as_array, orders)
         
     | 
| 
      
 24 
     | 
    
         
            +
                    else
         
     | 
| 
      
 25 
     | 
    
         
            +
                      JsonGroup.new(self, as_array, orders)
         
     | 
| 
      
 26 
     | 
    
         
            +
                    end
         
     | 
| 
       23 
27 
     | 
    
         
             
                  end
         
     | 
| 
       24 
28 
     | 
    
         | 
| 
       25 
29 
     | 
    
         
             
                  def hash
         
     | 
| 
         @@ -9,7 +9,13 @@ module ArelExtensions 
     | 
|
| 
       9 
9 
     | 
    
         
             
                    Arel.quoted('"') \
         
     | 
| 
       10 
10 
     | 
    
         
             
                    + expr
         
     | 
| 
       11 
11 
     | 
    
         
             
                        .coalesce('')
         
     | 
| 
       12 
     | 
    
         
            -
                        .replace('\\', '\\\\') 
     | 
| 
      
 12 
     | 
    
         
            +
                        .replace('\\', '\\\\')
         
     | 
| 
      
 13 
     | 
    
         
            +
                        .replace('"', '\"')
         
     | 
| 
      
 14 
     | 
    
         
            +
                        .replace("\b", '\b')
         
     | 
| 
      
 15 
     | 
    
         
            +
                        .replace("\f", '\f')
         
     | 
| 
      
 16 
     | 
    
         
            +
                        .replace("\n", '\n')
         
     | 
| 
      
 17 
     | 
    
         
            +
                        .replace("\r", '\r')
         
     | 
| 
      
 18 
     | 
    
         
            +
                        .replace("\t", '\t') \
         
     | 
| 
       13 
19 
     | 
    
         
             
                    + '"'
         
     | 
| 
       14 
20 
     | 
    
         
             
                  end
         
     | 
| 
       15 
21 
     | 
    
         | 
    
        data/lib/arel_extensions.rb
    CHANGED
    
    | 
         @@ -256,6 +256,13 @@ end 
     | 
|
| 
       256 
256 
     | 
    
         | 
| 
       257 
257 
     | 
    
         
             
            class Arel::Table
         
     | 
| 
       258 
258 
     | 
    
         
             
              alias_method(:old_alias, :alias) rescue nil
         
     | 
| 
      
 259 
     | 
    
         
            +
             
     | 
| 
      
 260 
     | 
    
         
            +
              # activerecord 7.1 removed the alias. We might need to remove our dependency
         
     | 
| 
      
 261 
     | 
    
         
            +
              # on the alias if it proves problematic.
         
     | 
| 
      
 262 
     | 
    
         
            +
              if !self.respond_to?(:table_name)
         
     | 
| 
      
 263 
     | 
    
         
            +
                alias :table_name :name
         
     | 
| 
      
 264 
     | 
    
         
            +
              end
         
     | 
| 
      
 265 
     | 
    
         
            +
             
     | 
| 
       259 
266 
     | 
    
         
             
              def alias(name = "#{self.name}_2")
         
     | 
| 
       260 
267 
     | 
    
         
             
                if name.present?
         
     | 
| 
       261 
268 
     | 
    
         
             
                  Arel::Nodes::TableAlias.new(self, name)
         
     | 
    
        data/test/arelx_test_helper.rb
    CHANGED
    
    
| 
         @@ -675,15 +675,22 @@ module ArelExtensions 
     | 
|
| 
       675 
675 
     | 
    
         
             
                  end
         
     | 
| 
       676 
676 
     | 
    
         | 
| 
       677 
677 
     | 
    
         
             
                  def test_date_duration
         
     | 
| 
      
 678 
     | 
    
         
            +
                    # When user `nilly` is created, with an explicit `created_at: nil`,
         
     | 
| 
      
 679 
     | 
    
         
            +
                    # activerecord will give it the current date.
         
     | 
| 
      
 680 
     | 
    
         
            +
                    #
         
     | 
| 
      
 681 
     | 
    
         
            +
                    # So depending on the month when we run this test, we will get different
         
     | 
| 
      
 682 
     | 
    
         
            +
                    # results for `User.where(@created_at.month.eq('05'))`.
         
     | 
| 
      
 683 
     | 
    
         
            +
                    count_for_may = Time.now.month == 5 ? 10 : 9
         
     | 
| 
      
 684 
     | 
    
         
            +
             
     | 
| 
       678 
685 
     | 
    
         
             
                    # Year
         
     | 
| 
       679 
686 
     | 
    
         
             
                    assert_equal 2016, t(@lucas, @created_at.year).to_i
         
     | 
| 
       680 
687 
     | 
    
         
             
                    assert_equal 0, User.where(@created_at.year.eq('2012')).count
         
     | 
| 
       681 
688 
     | 
    
         
             
                    # Month
         
     | 
| 
       682 
689 
     | 
    
         
             
                    assert_equal 5, t(@camille, @created_at.month).to_i
         
     | 
| 
       683 
     | 
    
         
            -
                    assert_equal  
     | 
| 
      
 690 
     | 
    
         
            +
                    assert_equal count_for_may, User.where(@created_at.month.eq('05')).count
         
     | 
| 
       684 
691 
     | 
    
         
             
                    # Week
         
     | 
| 
       685 
692 
     | 
    
         
             
                    assert_equal(@env_db == 'mssql' ? 22 : 21, t(@arthur, @created_at.week).to_i)
         
     | 
| 
       686 
     | 
    
         
            -
                    assert_equal  
     | 
| 
      
 693 
     | 
    
         
            +
                    assert_equal count_for_may, User.where(@created_at.month.eq('05')).count
         
     | 
| 
       687 
694 
     | 
    
         
             
                    # Day
         
     | 
| 
       688 
695 
     | 
    
         
             
                    assert_equal 23, t(@laure, @created_at.day).to_i
         
     | 
| 
       689 
696 
     | 
    
         
             
                    assert_equal 0, User.where(@created_at.day.eq('05')).count
         
     | 
    
        data/version_v1.rb
    CHANGED
    
    
    
        data/version_v2.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: arel_extensions
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 1.3. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 1.3.8
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Yann Azoury
         
     | 
| 
         @@ -10,7 +10,7 @@ authors: 
     | 
|
| 
       10 
10 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       11 
11 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       12 
12 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       13 
     | 
    
         
            -
            date: 2023- 
     | 
| 
      
 13 
     | 
    
         
            +
            date: 2023-11-14 00:00:00.000000000 Z
         
     | 
| 
       14 
14 
     | 
    
         
             
            dependencies:
         
     | 
| 
       15 
15 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       16 
16 
     | 
    
         
             
              name: arel
         
     | 
| 
         @@ -79,6 +79,7 @@ files: 
     | 
|
| 
       79 
79 
     | 
    
         
             
            - TODO
         
     | 
| 
       80 
80 
     | 
    
         
             
            - appveyor.yml
         
     | 
| 
       81 
81 
     | 
    
         
             
            - arel_extensions.gemspec
         
     | 
| 
      
 82 
     | 
    
         
            +
            - dev/compose.yaml
         
     | 
| 
       82 
83 
     | 
    
         
             
            - functions.html
         
     | 
| 
       83 
84 
     | 
    
         
             
            - gemfiles/rails3.gemfile
         
     | 
| 
       84 
85 
     | 
    
         
             
            - gemfiles/rails4_2.gemfile
         
     | 
| 
         @@ -88,6 +89,7 @@ files: 
     | 
|
| 
       88 
89 
     | 
    
         
             
            - gemfiles/rails6.gemfile
         
     | 
| 
       89 
90 
     | 
    
         
             
            - gemfiles/rails6_1.gemfile
         
     | 
| 
       90 
91 
     | 
    
         
             
            - gemfiles/rails7.gemfile
         
     | 
| 
      
 92 
     | 
    
         
            +
            - gemfiles/rails7_1.gemfile
         
     | 
| 
       91 
93 
     | 
    
         
             
            - gemspecs/arel_extensions-v1.gemspec
         
     | 
| 
       92 
94 
     | 
    
         
             
            - gemspecs/arel_extensions-v2.gemspec
         
     | 
| 
       93 
95 
     | 
    
         
             
            - generate_gems.sh
         
     |