arel_extensions 2.3.3 → 2.4.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.
Files changed (48) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ruby.yml +92 -43
  3. data/.rubocop.yml +4 -4
  4. data/Makefile +18 -0
  5. data/NEWS.md +7 -0
  6. data/README.md +21 -3
  7. data/dev/arelx.dockerfile +13 -16
  8. data/dev/compose.yaml +26 -28
  9. data/gemfiles/rails8.gemfile +40 -0
  10. data/gemfiles/rails8_1.gemfile +41 -0
  11. data/lib/arel_extensions/constants.rb +13 -0
  12. data/lib/arel_extensions/helpers.rb +3 -4
  13. data/lib/arel_extensions/math_functions.rb +1 -1
  14. data/lib/arel_extensions/nodes/byte_size.rb +11 -0
  15. data/lib/arel_extensions/nodes/case.rb +1 -1
  16. data/lib/arel_extensions/nodes/char_length.rb +11 -0
  17. data/lib/arel_extensions/nodes/function.rb +1 -3
  18. data/lib/arel_extensions/nodes/matches.rb +2 -2
  19. data/lib/arel_extensions/predications.rb +1 -1
  20. data/lib/arel_extensions/string_functions.rb +11 -1
  21. data/lib/arel_extensions/version.rb +1 -1
  22. data/lib/arel_extensions/visitors/mssql.rb +23 -8
  23. data/lib/arel_extensions/visitors/mysql.rb +14 -0
  24. data/lib/arel_extensions/visitors/oracle.rb +15 -1
  25. data/lib/arel_extensions/visitors/postgresql.rb +14 -0
  26. data/lib/arel_extensions/visitors/sqlite.rb +17 -1
  27. data/lib/arel_extensions/visitors/to_sql.rb +1 -1
  28. data/lib/arel_extensions/visitors.rb +1 -1
  29. data/lib/arel_extensions.rb +15 -6
  30. data/test/arelx_test_helper.rb +8 -6
  31. data/test/config_loader.rb +9 -0
  32. data/test/database.yml +8 -6
  33. data/test/real_db_test.rb +2 -2
  34. data/test/support/fake_record.rb +3 -1
  35. data/test/visitors/test_bulk_insert_oracle.rb +2 -2
  36. data/test/visitors/test_bulk_insert_sqlite.rb +2 -2
  37. data/test/with_ar/all_agnostic_test.rb +65 -17
  38. data/test/with_ar/insert_agnostic_test.rb +2 -2
  39. data/test/with_ar/test_bulk_sqlite.rb +2 -2
  40. data/test/with_ar/test_math_sqlite.rb +2 -2
  41. data/test/with_ar/test_string_mysql.rb +2 -2
  42. data/test/with_ar/test_string_sqlite.rb +2 -2
  43. data/version_v1.rb +1 -1
  44. data/version_v2.rb +1 -1
  45. metadata +9 -5
  46. data/bin/compose +0 -6
  47. data/gemfiles/rails3.gemfile +0 -20
  48. data/gemfiles/rails4_2.gemfile +0 -38
@@ -5,7 +5,7 @@ module ArelExtensions
5
5
  module WithAr
6
6
  class InsertManagerTest < Minitest::Test
7
7
  def connect_db
8
- ActiveRecord::Base.configurations = YAML.load_file('test/database.yml')
8
+ ActiveRecord::Base.configurations = ConfigLoader.load('test/database.yml')
9
9
  if ENV['DB'] == 'oracle' && ((defined?(RUBY_ENGINE) && RUBY_ENGINE == 'rbx') || (RUBY_PLATFORM == 'java')) # not supported
10
10
  @env_db = (RUBY_PLATFORM == 'java' ? 'jdbc-sqlite' : 'sqlite')
11
11
  skip "Platform not supported (DB: #{ENV['DB']}, RUBY_ENGINE: #{RUBY_ENGINE}, RUBY_PLATFORM: #{RUBY_PLATFORM})"
@@ -13,7 +13,7 @@ module ArelExtensions
13
13
  @env_db = ENV['DB']
14
14
  end
15
15
  ActiveRecord::Base.establish_connection(@env_db.try(:to_sym) || (RUBY_PLATFORM == 'java' ? :"jdbc-sqlite" : :sqlite))
16
- if ActiveRecord::VERSION::MAJOR >= 7
16
+ if ACTIVE_RECORD_VERSION >= V7_0
17
17
  ActiveRecord.default_timezone = :utc
18
18
  else
19
19
  ActiveRecord::Base.default_timezone = :utc
@@ -4,9 +4,9 @@ module ArelExtensions
4
4
  module WithAr
5
5
  describe 'the sqlite visitor' do
6
6
  before do
7
- ActiveRecord::Base.configurations = YAML.load_file('test/database.yml')
7
+ ActiveRecord::Base.configurations = ConfigLoader.load('test/database.yml')
8
8
  ActiveRecord::Base.establish_connection(ENV['DB'] || (RUBY_PLATFORM == 'java' ? :"jdbc-sqlite" : :sqlite))
9
- if ActiveRecord::VERSION::MAJOR >= 7
9
+ if ACTIVE_RECORD_VERSION >= V7_0
10
10
  ActiveRecord.default_timezone = :utc
11
11
  else
12
12
  ActiveRecord::Base.default_timezone = :utc
@@ -4,9 +4,9 @@ module ArelExtensions
4
4
  module WithAr
5
5
  describe 'the sqlite visitor can do maths' do
6
6
  before do
7
- ActiveRecord::Base.configurations = YAML.load_file('test/database.yml')
7
+ ActiveRecord::Base.configurations = ConfigLoader.load('test/database.yml')
8
8
  ActiveRecord::Base.establish_connection(ENV['DB'] || (RUBY_PLATFORM == 'java' ? :"jdbc-sqlite" : :sqlite))
9
- if ActiveRecord::VERSION::MAJOR >= 7
9
+ if ACTIVE_RECORD_VERSION >= V7_0
10
10
  ActiveRecord.default_timezone = :utc
11
11
  else
12
12
  ActiveRecord::Base.default_timezone = :utc
@@ -5,9 +5,9 @@ module ArelExtensions
5
5
  module WithAr
6
6
  describe 'the mysql visitor can do string operations' do
7
7
  before do
8
- ActiveRecord::Base.configurations = YAML.load_file('test/database.yml')
8
+ ActiveRecord::Base.configurations = ConfigLoader.load('test/database.yml')
9
9
  ActiveRecord::Base.establish_connection(ENV['DB'] || (RUBY_PLATFORM == 'java' ? :"jdbc-mysql" : :mysql))
10
- if ActiveRecord::VERSION::MAJOR >= 7
10
+ if ACTIVE_RECORD_VERSION >= V7_0
11
11
  ActiveRecord.default_timezone = :utc
12
12
  else
13
13
  ActiveRecord::Base.default_timezone = :utc
@@ -5,9 +5,9 @@ module ArelExtensions
5
5
  module WithAr
6
6
  describe 'the sqlite visitor can do string operations' do
7
7
  before do
8
- ActiveRecord::Base.configurations = YAML.load_file('test/database.yml')
8
+ ActiveRecord::Base.configurations = ConfigLoader.load('test/database.yml')
9
9
  ActiveRecord::Base.establish_connection(ENV['DB'] || (RUBY_PLATFORM == 'java' ? :"jdbc-sqlite" : :sqlite))
10
- if ActiveRecord::VERSION::MAJOR >= 7
10
+ if ACTIVE_RECORD_VERSION >= V7_0
11
11
  ActiveRecord.default_timezone = :utc
12
12
  else
13
13
  ActiveRecord::Base.default_timezone = :utc
data/version_v1.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module ArelExtensions
2
- VERSION = '1.5.3'.freeze
2
+ VERSION = '1.6.0'.freeze
3
3
  end
data/version_v2.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module ArelExtensions
2
- VERSION = '2.3.3'.freeze
2
+ VERSION = '2.4.0'.freeze
3
3
  end
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: 2.3.3
4
+ version: 2.4.0
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: 2025-02-11 00:00:00.000000000 Z
13
+ date: 2025-12-23 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: activerecord
@@ -75,6 +75,7 @@ files:
75
75
  - CONTRIBUTING.md
76
76
  - Gemfile
77
77
  - MIT-LICENSE.txt
78
+ - Makefile
78
79
  - NEWS.md
79
80
  - README.md
80
81
  - Rakefile
@@ -83,15 +84,12 @@ files:
83
84
  - appveyor.yml
84
85
  - arel_extensions.gemspec
85
86
  - bin/build
86
- - bin/compose
87
87
  - bin/publish
88
88
  - dev/arelx.dockerfile
89
89
  - dev/compose.yaml
90
90
  - dev/postgres.dockerfile
91
91
  - dev/rbenv
92
92
  - functions.html
93
- - gemfiles/rails3.gemfile
94
- - gemfiles/rails4_2.gemfile
95
93
  - gemfiles/rails5.gemfile
96
94
  - gemfiles/rails5_1_4.gemfile
97
95
  - gemfiles/rails5_2.gemfile
@@ -100,6 +98,8 @@ files:
100
98
  - gemfiles/rails7.gemfile
101
99
  - gemfiles/rails7_1.gemfile
102
100
  - gemfiles/rails7_2.gemfile
101
+ - gemfiles/rails8.gemfile
102
+ - gemfiles/rails8_1.gemfile
103
103
  - gemspecs/arel_extensions-v1.gemspec
104
104
  - gemspecs/arel_extensions-v2.gemspec
105
105
  - generate_gems.sh
@@ -114,6 +114,7 @@ files:
114
114
  - lib/arel_extensions/boolean_functions.rb
115
115
  - lib/arel_extensions/common_sql_functions.rb
116
116
  - lib/arel_extensions/comparators.rb
117
+ - lib/arel_extensions/constants.rb
117
118
  - lib/arel_extensions/date_duration.rb
118
119
  - lib/arel_extensions/helpers.rb
119
120
  - lib/arel_extensions/insert_manager.rb
@@ -123,10 +124,12 @@ files:
123
124
  - lib/arel_extensions/nodes/abs.rb
124
125
  - lib/arel_extensions/nodes/aggregate_function.rb
125
126
  - lib/arel_extensions/nodes/blank.rb
127
+ - lib/arel_extensions/nodes/byte_size.rb
126
128
  - lib/arel_extensions/nodes/case.rb
127
129
  - lib/arel_extensions/nodes/cast.rb
128
130
  - lib/arel_extensions/nodes/ceil.rb
129
131
  - lib/arel_extensions/nodes/change_case.rb
132
+ - lib/arel_extensions/nodes/char_length.rb
130
133
  - lib/arel_extensions/nodes/coalesce.rb
131
134
  - lib/arel_extensions/nodes/collate.rb
132
135
  - lib/arel_extensions/nodes/concat.rb
@@ -181,6 +184,7 @@ files:
181
184
  - lib/arel_extensions/visitors/to_sql.rb
182
185
  - lib/arel_extensions/warning.rb
183
186
  - test/arelx_test_helper.rb
187
+ - test/config_loader.rb
184
188
  - test/database.yml
185
189
  - test/real_db_test.rb
186
190
  - test/support/alter_system_user_password.sql
data/bin/compose DELETED
@@ -1,6 +0,0 @@
1
- #!/usr/bin/env bash
2
-
3
- IFS=$'\n\t'
4
- set -euo pipefail
5
-
6
- docker compose -f dev/compose.yaml up --exit-code-from arelx
@@ -1,20 +0,0 @@
1
- source 'https://rubygems.org'
2
-
3
- gem 'arel', '~> 3.0' # too old...
4
-
5
- group :development, :test do
6
- gem 'sqlite3', '<= 1.3.13', platform: %i[ruby mswin mingw]
7
- gem 'mysql2', '0.4.10', platform: %i[ruby mswin mingw]
8
- gem 'activerecord-mysql2-adapter', platform: %i[ruby mswin mingw]
9
- gem 'pg', platform: %i[ruby mswin mingw]
10
- # for JRuby
11
- gem 'jdbc-sqlite3', platform: :jruby
12
- gem 'activerecord-jdbcsqlite3-adapter', platform: :jruby
13
- gem 'activerecord-jdbcmysql-adapter', platform: :jruby
14
- gem 'activerecord-jdbcpostgresql-adapter', platform: :jruby
15
- gem 'activesupport', '~> 3.2'
16
- gem 'activemodel', '~> 3.2'
17
- gem 'activerecord', '~> 3.2'
18
- end
19
-
20
- gemspec path: Dir.pwd
@@ -1,38 +0,0 @@
1
- source 'https://rubygems.org'
2
-
3
- gem 'arel', '~> 6.0'
4
-
5
- group :development, :test do
6
- # We need to explicitly include bigdecimal for ruby 2.7 .
7
- # See https://github.com/ruby/bigdecimal for details.
8
- rb_version = Gem::Version.new(RUBY_VERSION)
9
- if Gem::Version.new('2.7') <= rb_version && rb_version < Gem::Version.new('2.8')
10
- gem 'bigdecimal', '~> 1.3.5', platforms: %i[mri mingw x64_mingw mswin]
11
- end
12
-
13
- gem 'activesupport', '~> 4.0'
14
- gem 'activemodel', '~> 4.0'
15
- gem 'activerecord', '~> 4.0'
16
-
17
- gem 'sqlite3', '<= 1.3.13', platforms: %i[mri mswin mingw]
18
- gem 'mysql2', '0.4.10', platforms: %i[mri mswin mingw]
19
- gem 'pg', '< 1.0.0', platforms: %i[mri mingw]
20
-
21
- gem 'tiny_tds', platforms: %i[mri mingw x64_mingw mswin]
22
- gem 'activerecord-sqlserver-adapter', '~> 4.2.0', platforms: %i[mri mingw x64_mingw mswin]
23
-
24
- gem 'ruby-oci8', platforms: %i[mri mswin mingw] if ENV.has_key? 'ORACLE_HOME'
25
- gem 'activerecord-oracle_enhanced-adapter', '~> 1.6.0' if ENV.has_key? 'ORACLE_HOME'
26
-
27
- # for JRuby
28
- gem 'activerecord-jdbc-adapter', '~> 1.3', platforms: :jruby
29
- gem 'jdbc-sqlite3', '~> 3.28', platforms: :jruby
30
- gem 'jdbc-postgres', '~> 42.2', platforms: :jruby
31
- gem 'jdbc-mysql', '~> 5.1', platforms: :jruby
32
- gem 'activerecord-jdbcsqlite3-adapter', platforms: :jruby
33
- gem 'activerecord-jdbcmysql-adapter', platforms: :jruby
34
- gem 'activerecord-jdbcpostgresql-adapter', platforms: :jruby
35
- gem 'activerecord-jdbcmssql-adapter', platforms: :jruby
36
- end
37
-
38
- gemspec path: Dir.pwd