arel_extensions 2.3.3 → 2.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.
Files changed (104) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ruby.yml +92 -43
  3. data/.gitignore +2 -1
  4. data/.rubocop.yml +131 -5
  5. data/Makefile +48 -0
  6. data/NEWS.md +22 -0
  7. data/README.md +32 -5
  8. data/Rakefile +5 -3
  9. data/arel_extensions.gemspec +3 -5
  10. data/dev/arelx.dockerfile +13 -16
  11. data/dev/compose.yaml +26 -28
  12. data/gemfiles/rails5.gemfile +15 -8
  13. data/gemfiles/rails5_1_4.gemfile +11 -9
  14. data/gemfiles/rails5_2.gemfile +16 -9
  15. data/gemfiles/rails6.gemfile +13 -7
  16. data/gemfiles/rails6_1.gemfile +13 -7
  17. data/gemfiles/rails7.gemfile +15 -9
  18. data/gemfiles/rails7_1.gemfile +15 -8
  19. data/gemfiles/rails7_2.gemfile +12 -6
  20. data/gemfiles/rails8.gemfile +40 -0
  21. data/gemfiles/rails8_1.gemfile +41 -0
  22. data/gemspecs/arel_extensions-v1.gemspec +3 -5
  23. data/gemspecs/arel_extensions-v2.gemspec +3 -5
  24. data/lib/arel_extensions/aliases.rb +3 -3
  25. data/lib/arel_extensions/attributes.rb +2 -0
  26. data/lib/arel_extensions/boolean_functions.rb +9 -7
  27. data/lib/arel_extensions/common_sql_functions.rb +5 -3
  28. data/lib/arel_extensions/comparators.rb +6 -4
  29. data/lib/arel_extensions/constants.rb +13 -0
  30. data/lib/arel_extensions/date_duration.rb +2 -0
  31. data/lib/arel_extensions/helpers.rb +18 -19
  32. data/lib/arel_extensions/insert_manager.rb +5 -1
  33. data/lib/arel_extensions/math.rb +40 -44
  34. data/lib/arel_extensions/math_functions.rb +29 -31
  35. data/lib/arel_extensions/nodes/aggregate_function.rb +4 -4
  36. data/lib/arel_extensions/nodes/blank.rb +6 -4
  37. data/lib/arel_extensions/nodes/byte_size.rb +11 -0
  38. data/lib/arel_extensions/nodes/case.rb +16 -13
  39. data/lib/arel_extensions/nodes/cast.rb +3 -5
  40. data/lib/arel_extensions/nodes/char_length.rb +11 -0
  41. data/lib/arel_extensions/nodes/coalesce.rb +1 -1
  42. data/lib/arel_extensions/nodes/collate.rb +1 -1
  43. data/lib/arel_extensions/nodes/concat.rb +6 -6
  44. data/lib/arel_extensions/nodes/date_diff.rb +40 -49
  45. data/lib/arel_extensions/nodes/duration.rb +2 -2
  46. data/lib/arel_extensions/nodes/format.rb +2 -2
  47. data/lib/arel_extensions/nodes/formatted_date.rb +2 -2
  48. data/lib/arel_extensions/nodes/formatted_number.rb +2 -2
  49. data/lib/arel_extensions/nodes/function.rb +7 -7
  50. data/lib/arel_extensions/nodes/is_null.rb +2 -0
  51. data/lib/arel_extensions/nodes/json.rb +27 -15
  52. data/lib/arel_extensions/nodes/levenshtein_distance.rb +2 -2
  53. data/lib/arel_extensions/nodes/locate.rb +1 -1
  54. data/lib/arel_extensions/nodes/matches.rb +2 -2
  55. data/lib/arel_extensions/nodes/power.rb +2 -2
  56. data/lib/arel_extensions/nodes/rand.rb +2 -2
  57. data/lib/arel_extensions/nodes/repeat.rb +2 -2
  58. data/lib/arel_extensions/nodes/replace.rb +3 -3
  59. data/lib/arel_extensions/nodes/rollup.rb +4 -4
  60. data/lib/arel_extensions/nodes/round.rb +3 -3
  61. data/lib/arel_extensions/nodes/select.rb +1 -1
  62. data/lib/arel_extensions/nodes/std.rb +4 -4
  63. data/lib/arel_extensions/nodes/substring.rb +52 -2
  64. data/lib/arel_extensions/nodes/then.rb +1 -1
  65. data/lib/arel_extensions/nodes/trim.rb +2 -2
  66. data/lib/arel_extensions/nodes/union.rb +3 -3
  67. data/lib/arel_extensions/nodes/union_all.rb +3 -3
  68. data/lib/arel_extensions/nodes/wday.rb +2 -2
  69. data/lib/arel_extensions/null_functions.rb +5 -7
  70. data/lib/arel_extensions/predications.rb +23 -19
  71. data/lib/arel_extensions/string_functions.rb +37 -28
  72. data/lib/arel_extensions/version.rb +3 -1
  73. data/lib/arel_extensions/visitors/convert_format.rb +2 -2
  74. data/lib/arel_extensions/visitors/ibm_db.rb +5 -5
  75. data/lib/arel_extensions/visitors/mssql.rb +111 -97
  76. data/lib/arel_extensions/visitors/mysql.rb +101 -67
  77. data/lib/arel_extensions/visitors/oracle.rb +113 -103
  78. data/lib/arel_extensions/visitors/oracle12.rb +5 -6
  79. data/lib/arel_extensions/visitors/postgresql.rb +119 -92
  80. data/lib/arel_extensions/visitors/sqlite.rb +72 -64
  81. data/lib/arel_extensions/visitors/to_sql.rb +85 -75
  82. data/lib/arel_extensions/visitors.rb +7 -7
  83. data/lib/arel_extensions/warning.rb +5 -5
  84. data/lib/arel_extensions.rb +47 -31
  85. data/test/arelx_test_helper.rb +8 -6
  86. data/test/config_loader.rb +9 -0
  87. data/test/database.yml +8 -6
  88. data/test/real_db_test.rb +33 -33
  89. data/test/support/fake_record.rb +3 -1
  90. data/test/visitors/test_bulk_insert_oracle.rb +2 -2
  91. data/test/visitors/test_bulk_insert_sqlite.rb +2 -2
  92. data/test/visitors/test_to_sql.rb +2 -2
  93. data/test/with_ar/all_agnostic_test.rb +214 -32
  94. data/test/with_ar/insert_agnostic_test.rb +2 -2
  95. data/test/with_ar/test_bulk_sqlite.rb +2 -2
  96. data/test/with_ar/test_math_sqlite.rb +2 -2
  97. data/test/with_ar/test_string_mysql.rb +2 -2
  98. data/test/with_ar/test_string_sqlite.rb +2 -2
  99. data/version_v1.rb +3 -1
  100. data/version_v2.rb +3 -1
  101. metadata +9 -33
  102. data/bin/compose +0 -6
  103. data/gemfiles/rails3.gemfile +0 -20
  104. data/gemfiles/rails4_2.gemfile +0 -38
data/dev/arelx.dockerfile CHANGED
@@ -1,27 +1,26 @@
1
1
  FROM ubuntu:22.04
2
2
 
3
- ENV RBENV_ROOT=/opt/rbenv
4
- ENV PATH=${RBENV_ROOT}/shims:${RBENV_ROOT}/bin:${PATH}
5
3
  ENV APP_HOME=/app
6
- # I know there's a more reliable way, but this is simpler.
7
- ENV IN_DOCKER=true
8
4
  ENV DEBIAN_FRONTEND=noninteractive
9
5
 
10
6
  RUN mkdir -p $APP_HOME
11
7
 
8
+ # Install OS dependencies
12
9
  RUN apt-get update -q && apt-get install -y \
13
10
  curl bundler build-essential git gnupg locales \
14
11
  libbz2-dev libffi-dev liblzma-dev lsb-release libsqlite3-dev libyaml-dev \
15
- make openjdk-17-jdk-headless ruby-dev ruby-full tzdata zlib1g-dev \
12
+ make neovim ncurses-term openjdk-17-jdk-headless tzdata zlib1g-dev \
16
13
  && ln -fs /usr/share/zoneinfo/UTC /etc/localtime \
17
14
  && dpkg-reconfigure --frontend noninteractive tzdata
18
15
 
16
+ # Add DB Repo Keys
19
17
  RUN curl -fsSL https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg --dearmor -o /etc/apt/trusted.gpg.d/postgresql.gpg \
20
18
  && echo "deb http://apt.postgresql.org/pub/repos/apt/ `lsb_release -cs`-pgdg main" | tee /etc/apt/sources.list.d/pgdg.list \
21
19
  && curl https://packages.microsoft.com/keys/microsoft.asc | tee /etc/apt/trusted.gpg.d/microsoft.asc \
22
20
  && curl https://packages.microsoft.com/config/ubuntu/22.04/prod.list | tee /etc/apt/sources.list.d/mssql-release.list \
23
21
  && apt-get update -q
24
22
 
23
+ # Install DB Clients
25
24
  RUN ACCEPT_EULA=y DEBIAN_FRONTEND=noninteractive apt-get install -y \
26
25
  freetds-dev libmysqlclient-dev mysql-client msodbcsql18 mssql-tools18 unixodbc-dev libpq-dev \
27
26
  && echo 'export PATH="$PATH:/opt/mssql-tools18/bin"' >> ~/.bashrc \
@@ -29,16 +28,14 @@ RUN ACCEPT_EULA=y DEBIAN_FRONTEND=noninteractive apt-get install -y \
29
28
  && rm -rf /var/lib/apt/lists/* \
30
29
  && locale-gen en_US.UTF-8
31
30
 
32
- RUN /bin/bash -c "source ~/.bashrc"
31
+ WORKDIR $APP_HOME
33
32
 
34
- RUN mkdir -p ${RBENV_ROOT} \
35
- && git clone https://github.com/rbenv/rbenv.git ${RBENV_ROOT} \
36
- && git clone --depth 1 https://github.com/rbenv/ruby-build.git ${RBENV_ROOT}/plugins/ruby-build \
37
- && rbenv init - \
38
- && rbenv global system
33
+ # Install Ruby via Mise
34
+ ENV MISE_DATA_DIR="/mise"
35
+ ENV MISE_CONFIG_DIR="/mise"
36
+ ENV MISE_CACHE_DIR="/mise/cache"
37
+ ENV MISE_INSTALL_PATH="/usr/local/bin/mise"
38
+ ENV PATH="/mise/shims:$PATH"
39
39
 
40
- WORKDIR $APP_HOME
41
- COPY ./dev/rbenv ./dev/rbenv
42
- COPY ./.github/workflows/ruby.yml ./.github/workflows/ruby.yml
43
- RUN /usr/bin/gem install colorize psych toml-rb
44
- RUN ./dev/rbenv install && rm ./dev/rbenv ./.github/workflows/ruby.yml
40
+ RUN curl https://mise.run | sh
41
+ RUN mise install ruby
data/dev/compose.yaml CHANGED
@@ -7,29 +7,34 @@ services:
7
7
  dockerfile: dev/arelx.dockerfile
8
8
  volumes:
9
9
  - ../:/app
10
- entrypoint: ["/usr/bin/ruby", "dev/rbenv", "test"]
11
- network_mode: "host"
10
+ - gem_cache:/mise/installs/ruby
11
+ command: tail -f /dev/null
12
12
  depends_on:
13
13
  mariadb:
14
14
  condition: service_healthy
15
15
  postgres:
16
16
  condition: service_healthy
17
- mssql:
18
- condition: service_healthy
17
+ # TODO: Fix, it's not healthy apparently
18
+ # mssql:
19
+ # condition: service_healthy
20
+ environment:
21
+ # Map ENV vars for database.yml
22
+ MYSQL_HOST: mariadb
23
+ POSTGRES_HOST: postgres
24
+ MSSQL_HOST: mssql
25
+
19
26
  mariadb:
20
27
  image: mariadb:11.0
21
28
  container_name: mariadb
22
29
  environment:
23
30
  MARIADB_DATABASE: arelx_test
24
31
  MARIADB_ALLOW_EMPTY_ROOT_PASSWORD: true
25
- ports:
26
- - "3306:3306"
27
- network_mode: "host"
28
32
  healthcheck:
29
33
  test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"]
30
- interval: 10s
34
+ interval: 5s
31
35
  timeout: 5s
32
- retries: 3
36
+ retries: 5
37
+
33
38
  postgres:
34
39
  build:
35
40
  context: ..
@@ -39,33 +44,26 @@ services:
39
44
  POSTGRES_USER: postgres
40
45
  POSTGRES_PASSWORD: secret
41
46
  POSTGRES_DB: arelx_test
42
- ports:
43
- - "5432:5432"
44
- network_mode: "host"
45
47
  healthcheck:
46
48
  test: ["CMD-SHELL", "pg_isready -d $${POSTGRES_DB} -U $${POSTGRES_USER}"]
47
- interval: 10s
49
+ interval: 5s
48
50
  timeout: 5s
49
- retries: 3
51
+ retries: 5
52
+
50
53
  mssql:
51
54
  image: mcr.microsoft.com/mssql/server:2019-latest
52
55
  container_name: mssql
56
+ platform: linux/amd64
53
57
  environment:
54
- MSSQL_SA_PASSWORD: Password12!
55
58
  ACCEPT_EULA: Y
56
- ports:
57
- - "1433:1433"
58
- network_mode: "host"
59
+ # MSSQL_COLLATION: Latin1_General_100_CI_AS_SC_UTF8
60
+ MSSQL_SA_PASSWORD: Password12!
59
61
  healthcheck:
60
- test:
61
- [
62
- "CMD-SHELL",
63
- "/opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P $${MSSQL_SA_PASSWORD} -Q 'SELECT 1'",
64
- ]
65
- interval: 30s
66
- retries: 5
62
+ test: ["CMD-SHELL", "/opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P $${MSSQL_SA_PASSWORD} -Q 'SELECT 1'"]
63
+ interval: 10s
64
+ retries: 20
65
+ start_period: 30s
67
66
  timeout: 10s
68
67
 
69
- networks:
70
- default:
71
- name: arelx-network
68
+ volumes:
69
+ gem_cache:
@@ -1,29 +1,36 @@
1
+ # frozen_string_literal: true
2
+
1
3
  source 'https://rubygems.org'
2
4
 
3
5
  gem 'arel', '~> 7.0'
4
6
 
5
7
  group :development, :test do
6
- gem 'activesupport', '~> 5.0'
8
+ gem 'minitest', '~> 5.9'
9
+ gem 'rake', '~> 12.3.3'
10
+ gem 'rubocop'
11
+ gem 'rubocop-performance'
12
+
7
13
  gem 'activemodel', '~> 5.0'
8
14
  gem 'activerecord', '5.0.6'
15
+ gem 'activesupport', '~> 5.0'
9
16
 
10
- gem 'sqlite3', '<= 1.3.13', platforms: %i[mri mswin mingw]
11
17
  gem 'mysql2', '0.4.10', platforms: %i[mri mswin mingw]
12
18
  gem 'pg', '< 1.0.0', platforms: %i[mri mingw]
19
+ gem 'sqlite3', '<= 1.3.13', platforms: %i[mri mswin mingw]
13
20
 
14
- gem 'tiny_tds', platforms: %i[mri mingw] if RUBY_PLATFORM.match?(/windows/)
21
+ gem 'tiny_tds', platforms: %i[mri mingw] if RUBY_PLATFORM.include?('windows')
15
22
  # gem "activerecord-sqlserver-adapter", platforms: [:mri, :mingw]
16
23
 
17
- gem 'ruby-oci8', platforms: %i[mri mswin mingw] if ENV.has_key? 'ORACLE_HOME'
18
- gem 'activerecord-oracle_enhanced-adapter', '~> 1.7' if ENV.has_key? 'ORACLE_HOME'
24
+ gem 'activerecord-oracle_enhanced-adapter', '~> 1.7' if ENV.key? 'ORACLE_HOME'
25
+ gem 'ruby-oci8', platforms: %i[mri mswin mingw] if ENV.key? 'ORACLE_HOME'
19
26
 
20
27
  # for JRuby
21
28
  gem 'activerecord-jdbc-adapter', github: 'jruby/activerecord-jdbc-adapter', tag: 'v50.0', platforms: :jruby
22
- gem 'jdbc-sqlite3', platforms: :jruby
23
- gem 'activerecord-jdbcsqlite3-adapter', platforms: :jruby
29
+ gem 'activerecord-jdbcmssql-adapter', platforms: :jruby
24
30
  gem 'activerecord-jdbcmysql-adapter', platforms: :jruby
25
31
  gem 'activerecord-jdbcpostgresql-adapter', platforms: :jruby
26
- gem 'activerecord-jdbcmssql-adapter', platforms: :jruby
32
+ gem 'activerecord-jdbcsqlite3-adapter', platforms: :jruby
33
+ gem 'jdbc-sqlite3', platforms: :jruby
27
34
  end
28
35
 
29
36
  gemspec path: Dir.pwd
@@ -1,30 +1,32 @@
1
+ # frozen_string_literal: true
2
+
1
3
  source 'https://rubygems.org'
2
4
 
3
- gem 'rails', '5.1.4'
4
5
  gem 'arel', '~> 8'
6
+ gem 'rails', '5.1.4'
5
7
 
6
8
  group :development, :test do
7
- gem 'activesupport', '5.1.4'
8
9
  gem 'activemodel', '5.1.4'
9
10
  gem 'activerecord', '5.1.4'
11
+ gem 'activesupport', '5.1.4'
10
12
 
11
- gem 'sqlite3', '<= 1.3.13', platforms: %i[mri mswin mingw]
12
13
  gem 'mysql2', '0.4.10', platforms: %i[mri mswin mingw]
13
14
  gem 'pg', '< 1.0.0', platforms: %i[mri mingw]
15
+ gem 'sqlite3', '<= 1.3.13', platforms: %i[mri mswin mingw]
14
16
 
15
- gem 'tiny_tds', platforms: %i[mri mingw] if RUBY_PLATFORM.match?(/windows/)
17
+ gem 'tiny_tds', platforms: %i[mri mingw] if RUBY_PLATFORM.include?('windows')
16
18
  # gem "activerecord-sqlserver-adapter", platforms: [:mri, :mingw]
17
19
 
18
- gem 'ruby-oci8', platforms: %i[mri mswin mingw] if ENV.has_key? 'ORACLE_HOME'
19
- gem 'activerecord-oracle_enhanced-adapter', '~> 1.8' if ENV.has_key? 'ORACLE_HOME'
20
+ gem 'activerecord-oracle_enhanced-adapter', '~> 1.8' if ENV.key? 'ORACLE_HOME'
21
+ gem 'ruby-oci8', platforms: %i[mri mswin mingw] if ENV.key? 'ORACLE_HOME'
20
22
 
21
23
  # for JRuby
22
24
  gem 'activerecord-jdbc-adapter', github: 'jruby/activerecord-jdbc-adapter', tag: 'v51.0', platforms: :jruby
23
- gem 'jdbc-sqlite3', platforms: :jruby
24
- gem 'activerecord-jdbcsqlite3-adapter', platforms: :jruby
25
+ gem 'activerecord-jdbcmssql-adapter', platforms: :jruby
25
26
  gem 'activerecord-jdbcmysql-adapter', platforms: :jruby
26
27
  gem 'activerecord-jdbcpostgresql-adapter', platforms: :jruby
27
- gem 'activerecord-jdbcmssql-adapter', platforms: :jruby
28
+ gem 'activerecord-jdbcsqlite3-adapter', platforms: :jruby
29
+ gem 'jdbc-sqlite3', platforms: :jruby
28
30
  end
29
31
 
30
32
  gemspec path: Dir.pwd
@@ -1,32 +1,39 @@
1
+ # frozen_string_literal: true
2
+
1
3
  source 'https://rubygems.org'
2
4
 
3
- gem 'rails', '~> 5.2.0'
4
5
  gem 'arel', '~> 9'
6
+ gem 'rails', '~> 5.2.0'
5
7
 
6
8
  group :development, :test do
7
- gem 'bigdecimal', '1.3.5', platforms: %i[mri mingw x64_mingw mswin]
8
- gem 'activesupport', '~> 5.2.0'
9
+ gem 'minitest', '~> 5.9'
10
+ gem 'rake', '~> 12.3.3'
11
+ gem 'rubocop'
12
+ gem 'rubocop-performance'
13
+
9
14
  gem 'activemodel', '~> 5.2.0'
10
15
  gem 'activerecord', '~> 5.2.0'
16
+ gem 'activesupport', '~> 5.2.0'
17
+ gem 'bigdecimal', '1.3.5', platforms: %i[mri mingw x64_mingw mswin]
11
18
 
12
- gem 'sqlite3', '<= 1.3.13', platforms: [:mri]
13
19
  gem 'mysql2', '0.4.10', platforms: [:mri]
14
20
  gem 'pg', '< 1.0.0', platforms: [:mri]
21
+ gem 'sqlite3', '<= 1.3.13', platforms: [:mri]
15
22
 
16
- gem 'tiny_tds', platforms: %i[mri mingw x64_mingw mswin]
17
23
  gem 'activerecord-sqlserver-adapter', '~> 5.2', platforms: %i[mri mingw x64_mingw mswin]
24
+ gem 'tiny_tds', platforms: %i[mri mingw x64_mingw mswin]
18
25
  gem 'tzinfo-data', platforms: %i[mingw mswin x64_mingw]
19
26
 
20
- gem 'ruby-oci8', platforms: %i[mri mswin mingw] if ENV.has_key? 'ORACLE_HOME'
21
- gem 'activerecord-oracle_enhanced-adapter', '~> 5.2.0' if ENV.has_key? 'ORACLE_HOME'
27
+ gem 'activerecord-oracle_enhanced-adapter', '~> 5.2.0' if ENV.key? 'ORACLE_HOME'
28
+ gem 'ruby-oci8', platforms: %i[mri mswin mingw] if ENV.key? 'ORACLE_HOME'
22
29
 
23
30
  # for JRuby
24
31
  gem 'activerecord-jdbc-adapter', github: 'jruby/activerecord-jdbc-adapter', tag: 'v52.7', platforms: :jruby
25
- gem 'jdbc-sqlite3', platforms: :jruby
26
- gem 'activerecord-jdbcsqlite3-adapter', platforms: :jruby
27
32
  gem 'activerecord-jdbcmysql-adapter', platforms: :jruby
28
33
  gem 'activerecord-jdbcpostgresql-adapter', platforms: :jruby
34
+ gem 'activerecord-jdbcsqlite3-adapter', platforms: :jruby
29
35
  gem 'activerecord-jdbcsqlserver-adapter', '~> 52.0', platforms: :jruby
36
+ gem 'jdbc-sqlite3', platforms: :jruby
30
37
  end
31
38
 
32
39
  gemspec path: Dir.pwd
@@ -1,26 +1,32 @@
1
+ # frozen_string_literal: true
2
+
1
3
  source 'https://rubygems.org'
2
4
 
3
5
  gem 'rails', '~> 6.0.0'
4
6
 
5
7
  group :development, :test do
6
- gem 'ruby-lsp', platforms: %i[mri]
7
- gem 'debug', platforms: %i[mri]
8
8
  gem 'concurrent-ruby', '1.3.4' # Need to pin b/c of a known issue https://github.com/rails/rails/issues/54260
9
+ gem 'debug', platforms: %i[mri]
10
+ gem 'minitest', '~> 5.9'
11
+ gem 'rake', '~> 12.3.3'
12
+ gem 'rubocop'
13
+ gem 'rubocop-performance'
14
+ gem 'ruby-lsp', platforms: %i[mri]
9
15
 
10
- gem 'activesupport', '~> 6.0.0'
11
16
  gem 'activemodel', '~> 6.0.0'
12
17
  gem 'activerecord', '~> 6.0.0'
18
+ gem 'activesupport', '~> 6.0.0'
13
19
 
14
- gem 'sqlite3', '~> 1.4', platforms: [:mri]
15
20
  gem 'mysql2', '0.5.2', platforms: [:mri]
16
21
  gem 'pg', '< 1.0.0', platforms: [:mri]
22
+ gem 'sqlite3', '~> 1.4', platforms: [:mri]
17
23
 
18
- gem 'tiny_tds', platforms: %i[mri mingw x64_mingw mswin]
19
24
  gem 'activerecord-sqlserver-adapter', '~> 6.0', platforms: %i[mri mingw x64_mingw mswin]
25
+ gem 'tiny_tds', platforms: %i[mri mingw x64_mingw mswin]
20
26
  gem 'tzinfo-data', platforms: %i[mingw mswin x64_mingw]
21
27
 
22
- gem 'ruby-oci8', platforms: %i[mri mswin mingw] if ENV.has_key? 'ORACLE_HOME'
23
- gem 'activerecord-oracle_enhanced-adapter', '~> 6.0.0' if ENV.has_key? 'ORACLE_HOME'
28
+ gem 'activerecord-oracle_enhanced-adapter', '~> 6.0.0' if ENV.key? 'ORACLE_HOME'
29
+ gem 'ruby-oci8', platforms: %i[mri mswin mingw] if ENV.key? 'ORACLE_HOME'
24
30
 
25
31
  # for JRuby
26
32
  gem 'activerecord-jdbc-alt-adapter', '~> 60.0', platform: :jruby, require: true
@@ -1,26 +1,32 @@
1
+ # frozen_string_literal: true
2
+
1
3
  source 'https://rubygems.org'
2
4
 
3
5
  gem 'rails', '~> 6.1.0'
4
6
 
5
7
  group :development, :test do
6
- gem 'ruby-lsp', platforms: %i[mri]
7
- gem 'debug', platforms: %i[mri]
8
8
  gem 'concurrent-ruby', '1.3.4' # Need to pin b/c of a known issue https://github.com/rails/rails/issues/54260
9
+ gem 'debug', platforms: %i[mri]
10
+ gem 'minitest', '~> 5.9'
11
+ gem 'rake', '~> 12.3.3'
12
+ gem 'rubocop'
13
+ gem 'rubocop-performance'
14
+ gem 'ruby-lsp', platforms: %i[mri]
9
15
 
10
- gem 'activesupport', '~> 6.1.0'
11
16
  gem 'activemodel', '~> 6.1.0'
12
17
  gem 'activerecord', '~> 6.1.0'
18
+ gem 'activesupport', '~> 6.1.0'
13
19
 
14
- gem 'sqlite3', '~> 1.4', platforms: [:mri]
15
20
  gem 'mysql2', '~>0.5', platforms: [:mri]
16
21
  gem 'pg', '~> 1.1', platforms: [:mri]
22
+ gem 'sqlite3', '~> 1.4', platforms: [:mri]
17
23
 
18
- gem 'tiny_tds', platforms: %i[mri mingw x64_mingw mswin]
19
24
  gem 'activerecord-sqlserver-adapter', '~> 6.1.0', platforms: %i[mri mingw x64_mingw mswin]
25
+ gem 'tiny_tds', platforms: %i[mri mingw x64_mingw mswin]
20
26
  gem 'tzinfo-data', platforms: %i[mingw mswin x64_mingw]
21
27
 
22
- gem 'ruby-oci8', platforms: %i[mri mswin mingw] if ENV.has_key? 'ORACLE_HOME'
23
- gem 'activerecord-oracle_enhanced-adapter', '~> 6.0.0' if ENV.has_key? 'ORACLE_HOME'
28
+ gem 'activerecord-oracle_enhanced-adapter', '~> 6.0.0' if ENV.key? 'ORACLE_HOME'
29
+ gem 'ruby-oci8', platforms: %i[mri mswin mingw] if ENV.key? 'ORACLE_HOME'
24
30
 
25
31
  # for JRuby
26
32
  gem 'activerecord-jdbc-alt-adapter', '~> 61.0', platform: :jruby, require: true
@@ -1,34 +1,40 @@
1
+ # frozen_string_literal: true
2
+
1
3
  source 'https://rubygems.org'
2
4
 
3
5
  gem 'rails', '~> 7.0.1'
4
6
 
5
7
  group :development, :test do
6
- gem 'ruby-lsp', platforms: %i[mri]
7
- gem 'debug', platforms: %i[mri]
8
8
  gem 'concurrent-ruby', '1.3.4' # Need to pin b/c of a known issue https://github.com/rails/rails/issues/54260
9
+ gem 'debug', platforms: %i[mri]
10
+ gem 'minitest', '~> 5.9'
11
+ gem 'rake', '~> 12.3.3'
12
+ gem 'rubocop'
13
+ gem 'rubocop-performance'
14
+ gem 'ruby-lsp', platforms: %i[mri]
9
15
 
10
- gem 'activesupport', '~> 7.0.1'
11
16
  gem 'activemodel', '~> 7.0.1'
12
17
  gem 'activerecord', '~> 7.0.1'
18
+ gem 'activesupport', '~> 7.0.1'
13
19
 
14
- gem 'sqlite3', '~> 1.4', platforms: [:mri]
15
20
  gem 'mysql2', '~>0.5', platforms: [:mri]
16
21
  gem 'pg', '~> 1.1', platforms: [:mri]
22
+ gem 'sqlite3', '~> 1.4', platforms: [:mri]
17
23
 
18
- gem 'tiny_tds', platforms: %i[mri mingw x64_mingw mswin]
19
24
  gem 'activerecord-sqlserver-adapter', '~> 7.0.7', platforms: %i[mri mingw x64_mingw mswin]
25
+ gem 'tiny_tds', platforms: %i[mri mingw x64_mingw mswin]
20
26
  gem 'tzinfo-data', platforms: %i[mingw mswin x64_mingw]
21
27
 
22
- gem 'ruby-oci8', platforms: %i[mri mswin mingw] if ENV.has_key? 'ORACLE_HOME'
23
- gem 'activerecord-oracle_enhanced-adapter', '~> 6.0.0' if ENV.has_key? 'ORACLE_HOME'
28
+ gem 'activerecord-oracle_enhanced-adapter', '~> 6.0.0' if ENV.key? 'ORACLE_HOME'
29
+ gem 'ruby-oci8', platforms: %i[mri mswin mingw] if ENV.key? 'ORACLE_HOME'
24
30
 
25
31
  # for JRuby
26
- gem 'jdbc-mssql', platforms: :jruby, require: true
27
- gem 'jdbc-sqlite3', platform: :jruby
28
32
  gem 'activerecord-jdbc-alt-adapter', '~> 70.0', platform: :jruby, require: true
29
33
  gem 'activerecord-jdbcmysql-adapter', platforms: :jruby
30
34
  gem 'activerecord-jdbcpostgresql-adapter', platforms: :jruby
31
35
  gem 'activerecord-jdbcsqlite3-adapter', platforms: :jruby
36
+ gem 'jdbc-mssql', platforms: :jruby, require: true
37
+ gem 'jdbc-sqlite3', platform: :jruby
32
38
 
33
39
  # Ruby 3.4+ removes the following gems from the standard distribution.
34
40
  # Warnings are emitted from 3.3 .
@@ -1,33 +1,40 @@
1
+ # frozen_string_literal: true
2
+
1
3
  source 'https://rubygems.org'
2
4
 
3
5
  gem 'rails', '~> 7.1'
4
6
 
5
7
  group :development, :test do
6
- gem 'ruby-lsp', platforms: %i[mri]
7
8
  gem 'debug', platforms: %i[mri]
9
+ gem 'minitest', '~> 5.9'
10
+ gem 'rake', '~> 12.3.3'
11
+ gem 'rubocop'
12
+ gem 'rubocop-performance'
13
+ gem 'ruby-lsp', platforms: %i[mri]
8
14
 
9
- gem 'activesupport', '~> 7.1'
10
15
  gem 'activemodel', '~> 7.1'
11
16
  gem 'activerecord', '~> 7.1'
17
+ gem 'activesupport', '~> 7.1'
12
18
 
13
- gem 'sqlite3', '~> 1.6', platforms: [:mri]
14
19
  gem 'mysql2', '~>0.5', platforms: [:mri]
15
20
  gem 'pg', '~> 1.5', platforms: [:mri]
21
+ gem 'sqlite3', '~> 1.6', platforms: [:mri]
16
22
 
23
+ gem 'activerecord-sqlserver-adapter', '~> 7.1.0', platforms: %i[mri mingw x64_mingw mswin]
17
24
  gem 'tiny_tds', platforms: %i[mri mingw x64_mingw mswin]
18
- gem 'activerecord-sqlserver-adapter', '~> 7.1.0.beta1', platforms: %i[mri mingw x64_mingw mswin]
19
25
  gem 'tzinfo-data', platforms: %i[mingw mswin x64_mingw]
20
26
 
21
- gem 'ruby-oci8', platforms: %i[mri mswin mingw] if ENV.has_key? 'ORACLE_HOME'
22
- gem 'activerecord-oracle_enhanced-adapter', '~> 7.0.0' if ENV.has_key? 'ORACLE_HOME'
27
+ gem 'activerecord-oracle_enhanced-adapter', '~> 7.0.0' if ENV.key? 'ORACLE_HOME'
28
+ gem 'ruby-oci8', platforms: %i[mri mswin mingw] if ENV.key? 'ORACLE_HOME'
23
29
 
24
30
  # for JRuby
25
- gem 'jdbc-mssql', platforms: :jruby, require: true
26
- gem 'jdbc-sqlite3', platform: :jruby
27
31
  gem 'activerecord-jdbc-alt-adapter', '~> 71.0.0.alpha1', platform: :jruby, require: true
28
32
  gem 'activerecord-jdbcmysql-adapter', platforms: :jruby
29
33
  gem 'activerecord-jdbcpostgresql-adapter', platforms: :jruby
30
34
  gem 'activerecord-jdbcsqlite3-adapter', platforms: :jruby
35
+ gem 'jar-dependencies', '0.4.1', platforms: :jruby
36
+ gem 'jdbc-mssql', platforms: :jruby, require: true
37
+ gem 'jdbc-sqlite3', platform: :jruby
31
38
 
32
39
  # Ruby 3.4+ removes the following gems from the standard distribution.
33
40
  # Warnings are emitted from 3.3 .
@@ -1,25 +1,31 @@
1
+ # frozen_string_literal: true
2
+
1
3
  source 'https://rubygems.org'
2
4
 
3
5
  gem 'rails', '~> 7.2'
4
6
 
5
7
  group :development, :test do
6
- gem 'ruby-lsp', platforms: %i[mri]
7
8
  gem 'debug', platforms: %i[mri]
9
+ gem 'minitest', '~> 5.9'
10
+ gem 'rake', '~> 12.3.3'
11
+ gem 'rubocop'
12
+ gem 'rubocop-performance'
13
+ gem 'ruby-lsp', platforms: %i[mri]
8
14
 
9
- gem 'activesupport', '~> 7.2'
10
15
  gem 'activemodel', '~> 7.2'
11
16
  gem 'activerecord', '~> 7.2'
17
+ gem 'activesupport', '~> 7.2'
12
18
 
13
- gem 'sqlite3', '~> 1.6', platforms: [:mri]
14
19
  gem 'mysql2', '~>0.5', platforms: [:mri]
15
20
  gem 'pg', '~> 1.5', platforms: [:mri]
21
+ gem 'sqlite3', '~> 1.6', platforms: [:mri]
16
22
 
17
- gem 'tiny_tds', platforms: %i[mri mingw x64_mingw mswin]
18
23
  gem 'activerecord-sqlserver-adapter', '~> 7.2', platforms: %i[mri mingw x64_mingw mswin]
24
+ gem 'tiny_tds', platforms: %i[mri mingw x64_mingw mswin]
19
25
  gem 'tzinfo-data', platforms: %i[mingw mswin x64_mingw]
20
26
 
21
- gem 'ruby-oci8', platforms: %i[mri mswin mingw] if ENV.has_key? 'ORACLE_HOME'
22
- gem 'activerecord-oracle_enhanced-adapter', '~> 7.0.0' if ENV.has_key? 'ORACLE_HOME'
27
+ gem 'activerecord-oracle_enhanced-adapter', '~> 7.0.0' if ENV.key? 'ORACLE_HOME'
28
+ gem 'ruby-oci8', platforms: %i[mri mswin mingw] if ENV.key? 'ORACLE_HOME'
23
29
 
24
30
  # for JRuby
25
31
  gem 'jdbc-mssql', platforms: :jruby, require: true
@@ -0,0 +1,40 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gem 'rails', '~> 8.0'
4
+
5
+ group :development, :test do
6
+ gem 'debug', platforms: %i[mri]
7
+ gem 'ruby-lsp', platforms: %i[mri]
8
+
9
+ gem 'activemodel', '~> 8.0'
10
+ gem 'activerecord', '~> 8.0'
11
+ gem 'activesupport', '~> 8.0'
12
+
13
+ gem 'mysql2', '~>0.5', platforms: [:mri]
14
+ gem 'pg', '~> 1.5', platforms: [:mri]
15
+ gem 'sqlite3', '~> 2.1', platforms: [:mri]
16
+
17
+ gem 'activerecord-sqlserver-adapter', '~> 8.0', platforms: %i[mri mingw x64_mingw mswin]
18
+ gem 'tiny_tds', platforms: %i[mri mingw x64_mingw mswin]
19
+ gem 'tzinfo-data', platforms: %i[mingw mswin x64_mingw]
20
+
21
+ gem 'activerecord-oracle_enhanced-adapter', '~> 8.0' if ENV.has_key? 'ORACLE_HOME'
22
+ gem 'ruby-oci8', platforms: %i[mri mswin mingw] if ENV.has_key? 'ORACLE_HOME'
23
+
24
+ # for JRuby
25
+ gem 'activerecord-jdbcmysql-adapter', platforms: :jruby
26
+ gem 'activerecord-jdbcpostgresql-adapter', platforms: :jruby
27
+ gem 'activerecord-jdbcsqlite3-adapter', platforms: :jruby
28
+ gem 'jdbc-mssql', platforms: :jruby, require: true
29
+ gem 'jdbc-sqlite3', platform: :jruby
30
+
31
+ # Ruby 3.4+ removes the following gems from the standard distribution.
32
+ # Warnings are emitted from 3.3.
33
+ if Gem::Version.create(RUBY_VERSION) >= Gem::Version.create('3.3.0')
34
+ gem 'base64'
35
+ gem 'bigdecimal'
36
+ gem 'mutex_m'
37
+ end
38
+ end
39
+
40
+ gemspec path: Dir.pwd
@@ -0,0 +1,41 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gem 'rails', '~> 8.1'
4
+
5
+ group :development, :test do
6
+ gem 'debug', platforms: %i[mri]
7
+ gem 'ruby-lsp', platforms: %i[mri]
8
+
9
+ gem 'activemodel', '~> 8.1'
10
+ gem 'activerecord', '~> 8.1'
11
+ gem 'activesupport', '~> 8.1'
12
+
13
+ gem 'mysql2', '~>0.5', platforms: [:mri]
14
+ gem 'pg', '~> 1.5', platforms: [:mri]
15
+ gem 'sqlite3', '~> 2.1', platforms: [:mri]
16
+
17
+ gem 'activerecord-sqlserver-adapter', '~> 8.1', platforms: %i[mri mingw x64_mingw mswin]
18
+ gem 'tiny_tds', platforms: %i[mri mingw x64_mingw mswin]
19
+ gem 'tzinfo-data', platforms: %i[mingw mswin x64_mingw]
20
+
21
+ gem 'ruby-oci8', platforms: %i[mri mswin mingw] if ENV.has_key? 'ORACLE_HOME'
22
+ # gem 'activerecord-oracle_enhanced-adapter', '~> 8.1.0' if ENV.has_key? 'ORACLE_HOME'
23
+
24
+ # for JRuby
25
+ gem 'jdbc-mssql', platforms: :jruby, require: true
26
+ gem 'jdbc-sqlite3', platform: :jruby
27
+ # gem 'activerecord-jdbc-alt-adapter', '~> 71.0.0.alpha1', platform: :jruby, require: true
28
+ gem 'activerecord-jdbcmysql-adapter', platforms: :jruby
29
+ gem 'activerecord-jdbcpostgresql-adapter', platforms: :jruby
30
+ gem 'activerecord-jdbcsqlite3-adapter', platforms: :jruby
31
+
32
+ # Ruby 3.4+ removes the following gems from the standard distribution.
33
+ # Warnings are emitted from 3.3.
34
+ if Gem::Version.create(RUBY_VERSION) >= Gem::Version.create('3.3.0')
35
+ gem 'base64'
36
+ gem 'bigdecimal'
37
+ gem 'mutex_m'
38
+ end
39
+ end
40
+
41
+ gemspec path: Dir.pwd
@@ -1,4 +1,6 @@
1
- $:.push File.expand_path('../lib', __FILE__)
1
+ # frozen_string_literal: true
2
+
3
+ $LOAD_PATH.push File.expand_path('lib', __dir__)
2
4
  require 'arel_extensions/version'
3
5
 
4
6
  Gem::Specification.new do |s|
@@ -17,11 +19,7 @@ Gem::Specification.new do |s|
17
19
 
18
20
  # Manifest
19
21
  s.files = `git ls-files`.split("\n")
20
- s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
21
22
  s.require_paths = ['lib']
22
23
 
23
24
  s.add_dependency('arel', '>= 6.0')
24
-
25
- s.add_development_dependency('minitest', '~> 5.9')
26
- s.add_development_dependency('rake', '~> 12.3.3')
27
25
  end
@@ -1,4 +1,6 @@
1
- $:.push File.expand_path('../lib', __FILE__)
1
+ # frozen_string_literal: true
2
+
3
+ $LOAD_PATH.push File.expand_path('lib', __dir__)
2
4
  require 'arel_extensions/version'
3
5
 
4
6
  Gem::Specification.new do |s|
@@ -17,11 +19,7 @@ Gem::Specification.new do |s|
17
19
 
18
20
  # Manifest
19
21
  s.files = `git ls-files`.split("\n")
20
- s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
21
22
  s.require_paths = ['lib']
22
23
 
23
24
  s.add_dependency('activerecord', '>= 6.0')
24
-
25
- s.add_development_dependency('minitest', '~> 5.9')
26
- s.add_development_dependency('rake', '~> 12.3.3')
27
25
  end
@@ -1,14 +1,14 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module ArelExtensions
2
4
  module Aliases
3
-
4
5
  # Install an alias, if present.
5
- def xas other
6
+ def xas(other)
6
7
  if other.present?
7
8
  Arel::Nodes::As.new(self, Arel.sql(other))
8
9
  else
9
10
  self
10
11
  end
11
12
  end
12
-
13
13
  end
14
14
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'arel_extensions/aliases'
2
4
  require 'arel_extensions/math'
3
5
  require 'arel_extensions/comparators'