arel_extensions 2.0.21 → 2.2.2

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 (138) hide show
  1. checksums.yaml +4 -4
  2. data/.codeclimate.yml +1 -2
  3. data/.github/workflows/publish.yml +29 -0
  4. data/.github/workflows/release.yml +30 -0
  5. data/.github/workflows/ruby.yml +377 -80
  6. data/.gitignore +7 -6
  7. data/.rubocop.yml +62 -1
  8. data/CONTRIBUTING.md +102 -0
  9. data/Gemfile +2 -23
  10. data/NEWS.md +89 -0
  11. data/README.md +228 -84
  12. data/Rakefile +11 -4
  13. data/TODO +0 -1
  14. data/appveyor.yml +60 -22
  15. data/arel_extensions.gemspec +11 -12
  16. data/bin/build +15 -0
  17. data/bin/compose +6 -0
  18. data/bin/publish +8 -0
  19. data/dev/arelx.dockerfile +44 -0
  20. data/dev/compose.yaml +71 -0
  21. data/dev/postgres.dockerfile +5 -0
  22. data/dev/rbenv +189 -0
  23. data/gemfiles/rails3.gemfile +10 -10
  24. data/gemfiles/rails4_2.gemfile +38 -0
  25. data/gemfiles/rails5.gemfile +29 -0
  26. data/gemfiles/rails5_1_4.gemfile +13 -13
  27. data/gemfiles/rails5_2.gemfile +16 -14
  28. data/gemfiles/rails6.gemfile +18 -15
  29. data/gemfiles/rails6_1.gemfile +18 -15
  30. data/gemfiles/rails7.gemfile +33 -0
  31. data/gemfiles/rails7_1.gemfile +33 -0
  32. data/gemfiles/rails7_2.gemfile +33 -0
  33. data/gemspecs/arel_extensions-v1.gemspec +12 -13
  34. data/gemspecs/arel_extensions-v2.gemspec +11 -12
  35. data/init/mssql.sql +0 -0
  36. data/init/mysql.sql +0 -0
  37. data/init/oracle.sql +0 -0
  38. data/init/postgresql.sql +0 -0
  39. data/init/sqlite.sql +0 -0
  40. data/lib/arel_extensions/aliases.rb +14 -0
  41. data/lib/arel_extensions/attributes.rb +10 -2
  42. data/lib/arel_extensions/boolean_functions.rb +2 -4
  43. data/lib/arel_extensions/common_sql_functions.rb +12 -12
  44. data/lib/arel_extensions/comparators.rb +14 -14
  45. data/lib/arel_extensions/date_duration.rb +14 -9
  46. data/lib/arel_extensions/helpers.rb +62 -0
  47. data/lib/arel_extensions/insert_manager.rb +19 -17
  48. data/lib/arel_extensions/math.rb +48 -45
  49. data/lib/arel_extensions/math_functions.rb +18 -18
  50. data/lib/arel_extensions/nodes/abs.rb +0 -0
  51. data/lib/arel_extensions/nodes/aggregate_function.rb +0 -0
  52. data/lib/arel_extensions/nodes/blank.rb +1 -1
  53. data/lib/arel_extensions/nodes/case.rb +10 -12
  54. data/lib/arel_extensions/nodes/cast.rb +6 -6
  55. data/lib/arel_extensions/nodes/ceil.rb +0 -0
  56. data/lib/arel_extensions/nodes/change_case.rb +0 -0
  57. data/lib/arel_extensions/nodes/coalesce.rb +1 -1
  58. data/lib/arel_extensions/nodes/collate.rb +9 -9
  59. data/lib/arel_extensions/nodes/concat.rb +2 -2
  60. data/lib/arel_extensions/nodes/date_diff.rb +33 -14
  61. data/lib/arel_extensions/nodes/duration.rb +0 -0
  62. data/lib/arel_extensions/nodes/find_in_set.rb +0 -0
  63. data/lib/arel_extensions/nodes/floor.rb +0 -0
  64. data/lib/arel_extensions/nodes/format.rb +3 -2
  65. data/lib/arel_extensions/nodes/formatted_date.rb +42 -0
  66. data/lib/arel_extensions/nodes/formatted_number.rb +2 -2
  67. data/lib/arel_extensions/nodes/function.rb +22 -26
  68. data/lib/arel_extensions/nodes/is_null.rb +0 -0
  69. data/lib/arel_extensions/nodes/json.rb +15 -9
  70. data/lib/arel_extensions/nodes/length.rb +6 -0
  71. data/lib/arel_extensions/nodes/levenshtein_distance.rb +1 -1
  72. data/lib/arel_extensions/nodes/locate.rb +1 -1
  73. data/lib/arel_extensions/nodes/log10.rb +0 -0
  74. data/lib/arel_extensions/nodes/matches.rb +1 -1
  75. data/lib/arel_extensions/nodes/md5.rb +0 -0
  76. data/lib/arel_extensions/nodes/power.rb +0 -0
  77. data/lib/arel_extensions/nodes/rand.rb +0 -0
  78. data/lib/arel_extensions/nodes/repeat.rb +2 -2
  79. data/lib/arel_extensions/nodes/replace.rb +2 -10
  80. data/lib/arel_extensions/nodes/rollup.rb +36 -0
  81. data/lib/arel_extensions/nodes/round.rb +0 -0
  82. data/lib/arel_extensions/nodes/select.rb +10 -0
  83. data/lib/arel_extensions/nodes/soundex.rb +2 -2
  84. data/lib/arel_extensions/nodes/std.rb +0 -0
  85. data/lib/arel_extensions/nodes/substring.rb +1 -1
  86. data/lib/arel_extensions/nodes/sum.rb +0 -0
  87. data/lib/arel_extensions/nodes/then.rb +1 -1
  88. data/lib/arel_extensions/nodes/trim.rb +2 -2
  89. data/lib/arel_extensions/nodes/union.rb +5 -5
  90. data/lib/arel_extensions/nodes/union_all.rb +4 -4
  91. data/lib/arel_extensions/nodes/wday.rb +0 -0
  92. data/lib/arel_extensions/nodes.rb +0 -0
  93. data/lib/arel_extensions/null_functions.rb +16 -0
  94. data/lib/arel_extensions/predications.rb +10 -10
  95. data/lib/arel_extensions/railtie.rb +1 -1
  96. data/lib/arel_extensions/set_functions.rb +3 -3
  97. data/lib/arel_extensions/string_functions.rb +19 -10
  98. data/lib/arel_extensions/tasks.rb +2 -2
  99. data/lib/arel_extensions/version.rb +1 -1
  100. data/lib/arel_extensions/visitors/convert_format.rb +0 -0
  101. data/lib/arel_extensions/visitors/ibm_db.rb +20 -20
  102. data/lib/arel_extensions/visitors/mssql.rb +394 -169
  103. data/lib/arel_extensions/visitors/mysql.rb +238 -151
  104. data/lib/arel_extensions/visitors/oracle.rb +170 -131
  105. data/lib/arel_extensions/visitors/oracle12.rb +16 -16
  106. data/lib/arel_extensions/visitors/postgresql.rb +170 -140
  107. data/lib/arel_extensions/visitors/sqlite.rb +88 -87
  108. data/lib/arel_extensions/visitors/to_sql.rb +185 -156
  109. data/lib/arel_extensions/visitors.rb +73 -60
  110. data/lib/arel_extensions.rb +173 -36
  111. data/test/arelx_test_helper.rb +49 -1
  112. data/test/database.yml +13 -7
  113. data/test/real_db_test.rb +101 -83
  114. data/test/support/fake_record.rb +8 -2
  115. data/test/test_comparators.rb +5 -5
  116. data/test/visitors/test_bulk_insert_oracle.rb +5 -5
  117. data/test/visitors/test_bulk_insert_sqlite.rb +5 -5
  118. data/test/visitors/test_bulk_insert_to_sql.rb +5 -5
  119. data/test/visitors/test_oracle.rb +14 -14
  120. data/test/visitors/test_to_sql.rb +121 -93
  121. data/test/with_ar/all_agnostic_test.rb +630 -320
  122. data/test/with_ar/insert_agnostic_test.rb +25 -18
  123. data/test/with_ar/test_bulk_sqlite.rb +11 -7
  124. data/test/with_ar/test_math_sqlite.rb +18 -14
  125. data/test/with_ar/test_string_mysql.rb +26 -22
  126. data/test/with_ar/test_string_sqlite.rb +26 -22
  127. data/version_v1.rb +1 -1
  128. data/version_v2.rb +1 -1
  129. metadata +24 -26
  130. data/.travis/oracle/download.js +0 -152
  131. data/.travis/oracle/download.sh +0 -30
  132. data/.travis/oracle/download_ojdbc.js +0 -116
  133. data/.travis/oracle/install.sh +0 -34
  134. data/.travis/setup_accounts.sh +0 -9
  135. data/.travis/sqlite3/extension-functions.sh +0 -6
  136. data/.travis.yml +0 -193
  137. data/gemfiles/rails4.gemfile +0 -29
  138. data/gemfiles/rails5_0.gemfile +0 -29
data/bin/build ADDED
@@ -0,0 +1,15 @@
1
+ #! /usr/bin/env sh
2
+ set -e
3
+
4
+ # VERSION ~> 1
5
+ echo "Packaging v1"
6
+ cp ./version_v1.rb lib/arel_extensions/version.rb
7
+ cp ./gemspecs/arel_extensions-v1.gemspec ./arel_extensions.gemspec
8
+ gem build ./arel_extensions.gemspec
9
+
10
+ # VERSION ~> 2
11
+ echo "Packaging v2"
12
+ cp ./version_v2.rb lib/arel_extensions/version.rb
13
+ cp ./gemspecs/arel_extensions-v2.gemspec ./arel_extensions.gemspec
14
+ gem build ./arel_extensions.gemspec
15
+
data/bin/compose ADDED
@@ -0,0 +1,6 @@
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
data/bin/publish ADDED
@@ -0,0 +1,8 @@
1
+ #! /usr/bin/env sh
2
+ set -e
3
+
4
+ find . -name "arel_extensions*.gem" | while read packaged_gem ; do
5
+ echo "Publishing $packaged_gem"
6
+ gem push "$packaged_gem"
7
+ done
8
+
@@ -0,0 +1,44 @@
1
+ FROM ubuntu:22.04
2
+
3
+ ENV RBENV_ROOT=/opt/rbenv
4
+ ENV PATH=${RBENV_ROOT}/shims:${RBENV_ROOT}/bin:${PATH}
5
+ ENV APP_HOME=/app
6
+ # I know there's a more reliable way, but this is simpler.
7
+ ENV IN_DOCKER=true
8
+ ENV DEBIAN_FRONTEND=noninteractive
9
+
10
+ RUN mkdir -p $APP_HOME
11
+
12
+ RUN apt-get update -q && apt-get install -y \
13
+ curl bundler build-essential git gnupg locales \
14
+ 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 \
16
+ && ln -fs /usr/share/zoneinfo/UTC /etc/localtime \
17
+ && dpkg-reconfigure --frontend noninteractive tzdata
18
+
19
+ RUN curl -fsSL https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg --dearmor -o /etc/apt/trusted.gpg.d/postgresql.gpg \
20
+ && echo "deb http://apt.postgresql.org/pub/repos/apt/ `lsb_release -cs`-pgdg main" | tee /etc/apt/sources.list.d/pgdg.list \
21
+ && curl https://packages.microsoft.com/keys/microsoft.asc | tee /etc/apt/trusted.gpg.d/microsoft.asc \
22
+ && curl https://packages.microsoft.com/config/ubuntu/22.04/prod.list | tee /etc/apt/sources.list.d/mssql-release.list \
23
+ && apt-get update -q
24
+
25
+ RUN ACCEPT_EULA=y DEBIAN_FRONTEND=noninteractive apt-get install -y \
26
+ freetds-dev libmysqlclient-dev mysql-client msodbcsql18 mssql-tools18 unixodbc-dev libpq-dev \
27
+ && echo 'export PATH="$PATH:/opt/mssql-tools18/bin"' >> ~/.bashrc \
28
+ && apt-get clean \
29
+ && rm -rf /var/lib/apt/lists/* \
30
+ && locale-gen en_US.UTF-8
31
+
32
+ RUN /bin/bash -c "source ~/.bashrc"
33
+
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
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
data/dev/compose.yaml ADDED
@@ -0,0 +1,71 @@
1
+ name: arelx
2
+ services:
3
+ arelx:
4
+ container_name: arelx-build
5
+ build:
6
+ context: ..
7
+ dockerfile: dev/arelx.dockerfile
8
+ volumes:
9
+ - ../:/app
10
+ entrypoint: ["/usr/bin/ruby", "dev/rbenv", "test"]
11
+ network_mode: "host"
12
+ depends_on:
13
+ mariadb:
14
+ condition: service_healthy
15
+ postgres:
16
+ condition: service_healthy
17
+ mssql:
18
+ condition: service_healthy
19
+ mariadb:
20
+ image: mariadb:11.0
21
+ container_name: mariadb
22
+ environment:
23
+ MARIADB_DATABASE: arelx_test
24
+ MARIADB_ALLOW_EMPTY_ROOT_PASSWORD: true
25
+ ports:
26
+ - "3306:3306"
27
+ network_mode: "host"
28
+ healthcheck:
29
+ test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"]
30
+ interval: 10s
31
+ timeout: 5s
32
+ retries: 3
33
+ postgres:
34
+ build:
35
+ context: ..
36
+ dockerfile: dev/postgres.dockerfile
37
+ container_name: postgres
38
+ environment:
39
+ POSTGRES_USER: postgres
40
+ POSTGRES_PASSWORD: secret
41
+ POSTGRES_DB: arelx_test
42
+ ports:
43
+ - "5432:5432"
44
+ network_mode: "host"
45
+ healthcheck:
46
+ test: ["CMD-SHELL", "pg_isready -d $${POSTGRES_DB} -U $${POSTGRES_USER}"]
47
+ interval: 10s
48
+ timeout: 5s
49
+ retries: 3
50
+ mssql:
51
+ image: mcr.microsoft.com/mssql/server:2019-latest
52
+ container_name: mssql
53
+ environment:
54
+ MSSQL_SA_PASSWORD: Password12!
55
+ ACCEPT_EULA: Y
56
+ ports:
57
+ - "1433:1433"
58
+ network_mode: "host"
59
+ 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
67
+ timeout: 10s
68
+
69
+ networks:
70
+ default:
71
+ name: arelx-network
@@ -0,0 +1,5 @@
1
+ FROM postgres:16
2
+
3
+ RUN locale-gen fr_FR.utf8 && update-locale
4
+ RUN localedef -i fr_FR -c -f UTF-8 -A /usr/share/locale/locale.alias fr_FR.UTF-8
5
+ # ENV LANG fr_FR.utf8
data/dev/rbenv ADDED
@@ -0,0 +1,189 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ require 'colorize'
5
+ require 'etc'
6
+ require 'open3'
7
+ require 'pathname'
8
+ require 'stringio'
9
+ require 'toml-rb'
10
+ require 'psych'
11
+
12
+ workflow = Pathname('.github/workflows/ruby.yml').read.gsub!(/rails: (\d(_\d)?)/, 'rails: "\1"')
13
+ jobs = Psych.load(workflow, symbolize_names: true)[:jobs]
14
+ data = {}
15
+ jobs.each do |name, details|
16
+ details[:strategy][:matrix][:versions].each do |entry|
17
+ db = name.to_s.gsub(/\Ajob_test_/, '').to_sym
18
+ ruby = entry[:ruby]
19
+ rails = entry[:rails]
20
+ arelx = entry[:arelx]
21
+ gemspec = :"arel_extensions-v#{arelx}"
22
+ gemfile = :"rails#{rails}"
23
+
24
+ data[db] ||= {}
25
+ data[db][gemspec] ||= {}
26
+ data[db][gemspec][gemfile] ||= []
27
+ data[db][gemspec][gemfile] << ruby
28
+ data[db][gemspec][gemfile].sort!
29
+ end
30
+ end
31
+
32
+ MATRIX = data.freeze
33
+
34
+ def sh(command, exit_on_fail: true, stealth: false)
35
+ cmd, args = command.split(' ', 2)
36
+ puts "#{'$'.green.bold} #{cmd.blue} #{args&.yellow}"
37
+ Open3.popen3(command) do |stdin, stdout, stderr, wait_thr|
38
+ stdin.close
39
+ out, err =
40
+ if stealth
41
+ [StringIO.new, StringIO.new]
42
+ else
43
+ [$stdout, $stderr]
44
+ end
45
+ th_out = Thread.new do
46
+ stdout.each_line { |line| out.puts line }
47
+ end
48
+ th_err = Thread.new do
49
+ stderr.each_line { |line| err.puts line }
50
+ end
51
+
52
+ th_out.join
53
+ th_err.join
54
+ wait_thr.join
55
+ exit_status = wait_thr.value.exitstatus
56
+ if exit_status.nonzero?
57
+ warn "'#{command}' failed with exit status #{exit_status}. Aborting …".red
58
+ warn stderr if !stealth
59
+ exit exit_status if exit_on_fail
60
+ end
61
+
62
+ if stealth
63
+ [out.string, err.string, (exit_status if !exit_on_fail)].compact
64
+ end
65
+ end
66
+ end
67
+
68
+ module RBEnv
69
+ RBENV_ROOT =
70
+ if (root = ENV['RBENV_ROOT']) && root && !root.strip.empty?
71
+ Pathname(root)
72
+ else
73
+ Pathname(Dir.home).join('.rbenv')
74
+ end.freeze
75
+ RBENV_BUILD = RBENV_ROOT.join('plugins').join('ruby-build').freeze
76
+ SHELL = Pathname(Etc.getpwuid.shell).basename.to_s.downcase.to_sym
77
+
78
+ def self.available_versions
79
+ out, _ = sh "rbenv versions --bare", stealth: true
80
+ res = out.lines.map(&:strip)
81
+ warn res
82
+ res
83
+ end
84
+
85
+ def self.ensure(ruby_version)
86
+ version = RBEnv.resolve_to_latest(ruby_version)
87
+ if self.installed?(version)
88
+ puts "#{version.yellow} already installed. Skipping …"
89
+ else
90
+ puts "Installing #{version.yellow}"
91
+ sh "rbenv install #{version}"
92
+ end
93
+ version
94
+ end
95
+
96
+ def self.install
97
+ if RBENV_ROOT.exist?
98
+ puts "#{RBENV_ROOT} exists. Skipping …"
99
+ else
100
+ sh "git clone --depth 1 https://github.com/rbenv/rbenv.git #{RBENV_ROOT}"
101
+ puts "Setup your shell to recognize rbenv. Check github.com/rbenv/rbenv."
102
+ end
103
+
104
+ if RBENV_BUILD.exist?
105
+ puts "#{RBENV_BUILD} exists. Skipping …"
106
+ else
107
+ sh "git clone --depth 1 https://github.com/rbenv/ruby-build.git #{RBENV_BUILD}"
108
+ end
109
+ end
110
+
111
+ def self.installed?(version)
112
+ installed = available_versions
113
+ puts "installed? = #{installed}"
114
+ installed && !installed.empty? && installed.include?(version)
115
+ end
116
+
117
+ def self.resolve_to_latest(version)
118
+ out, _ = sh "rbenv install --list-all", stealth: true
119
+ out
120
+ .lines
121
+ .map(&:strip)
122
+ .select { |v| v.match(/^#{Regexp.escape(version)}\.\d+/) }
123
+ .max_by { |v| v.split('.').map(&:to_i) }
124
+ end
125
+
126
+ def self.set(version)
127
+ sh "rbenv local #{version}"
128
+ end
129
+ end
130
+
131
+ module CI
132
+ def self.help(*_args)
133
+ puts "Usage:"
134
+ puts " #{$0} [#{CI.singleton_class.instance_methods(false).sort.join(' | ')}]"
135
+ puts
136
+ puts "You can ask for many commands."
137
+ end
138
+
139
+ def self.install(*_args)
140
+ RBEnv.install
141
+ MATRIX
142
+ .flat_map { |_, db|
143
+ db.flat_map { |_, arelx|
144
+ arelx.flat_map { |rails, rubies|
145
+ rails.start_with?("rails") ? rubies : []
146
+ }
147
+ }
148
+ }
149
+ .uniq
150
+ .sort
151
+ .each do |version|
152
+ RBEnv.ensure(version)
153
+ end
154
+ end
155
+
156
+ # @param args [Array<String>] a list of databases to test
157
+ def self.test(*args)
158
+ puts "Requested DBs: #{args.inspect}"
159
+ MATRIX.each do |db, arelx|
160
+ puts "db = #{db}; #{!args.empty? && args.include?(db)}"
161
+ if args.empty? || args.include?(db)
162
+ puts "Testing #{db}"
163
+ else
164
+ puts "Skipping #{db}"
165
+ next
166
+ end
167
+ arelx.each do |arelx_version, rails|
168
+ sh "cp ./gemspecs/#{arelx_version}.gemspec ./arel_extensions.gemspec"
169
+ rails.each do |rails_version, ruby|
170
+ sh "cp ./gemfiles/#{rails_version}.gemfile ./Gemfile"
171
+ ruby.each do |ruby_version|
172
+ full_version = RBEnv.ensure(ruby_version)
173
+ RBEnv.set(full_version)
174
+ sh "ruby --version"
175
+ sh "which ruby"
176
+ sh "rm -rf Gemfile.lock vendor"
177
+ sh "bundle config set --local path vendor"
178
+ sh "bundle install"
179
+ sh "bundle exec rake test:#{db}"
180
+ end
181
+ end
182
+ end
183
+ end
184
+ end
185
+ end
186
+
187
+ # main
188
+ command = ARGV.size.nonzero? ? ARGV : %w[help]
189
+ CI.send(command[0], *command[1..])
@@ -1,20 +1,20 @@
1
- source "https://rubygems.org"
1
+ source 'https://rubygems.org'
2
2
 
3
3
  gem 'arel', '~> 3.0' # too old...
4
4
 
5
5
  group :development, :test do
6
- gem "sqlite3", '<= 1.3.13', platform: [:ruby, :mswin, :mingw]
7
- gem "mysql2", '0.4.10', platform: [:ruby, :mswin, :mingw]
8
- gem "activerecord-mysql2-adapter", platform: [:ruby, :mswin, :mingw]
9
- gem "pg", platform: [:ruby, :mswin, :mingw]
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
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
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
15
  gem 'activesupport', '~> 3.2'
16
16
  gem 'activemodel', '~> 3.2'
17
17
  gem 'activerecord', '~> 3.2'
18
18
  end
19
19
 
20
- gemspec path: "../"
20
+ gemspec path: Dir.pwd
@@ -0,0 +1,38 @@
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
@@ -0,0 +1,29 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gem 'arel', '~> 7.0'
4
+
5
+ group :development, :test do
6
+ gem 'activesupport', '~> 5.0'
7
+ gem 'activemodel', '~> 5.0'
8
+ gem 'activerecord', '5.0.6'
9
+
10
+ gem 'sqlite3', '<= 1.3.13', platforms: %i[mri mswin mingw]
11
+ gem 'mysql2', '0.4.10', platforms: %i[mri mswin mingw]
12
+ gem 'pg', '< 1.0.0', platforms: %i[mri mingw]
13
+
14
+ gem 'tiny_tds', platforms: %i[mri mingw] if RUBY_PLATFORM.match?(/windows/)
15
+ # gem "activerecord-sqlserver-adapter", platforms: [:mri, :mingw]
16
+
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'
19
+
20
+ # for JRuby
21
+ 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
24
+ gem 'activerecord-jdbcmysql-adapter', platforms: :jruby
25
+ gem 'activerecord-jdbcpostgresql-adapter', platforms: :jruby
26
+ gem 'activerecord-jdbcmssql-adapter', platforms: :jruby
27
+ end
28
+
29
+ gemspec path: Dir.pwd
@@ -1,4 +1,4 @@
1
- source "https://rubygems.org"
1
+ source 'https://rubygems.org'
2
2
 
3
3
  gem 'rails', '5.1.4'
4
4
  gem 'arel', '~> 8'
@@ -8,23 +8,23 @@ group :development, :test do
8
8
  gem 'activemodel', '5.1.4'
9
9
  gem 'activerecord', '5.1.4'
10
10
 
11
- gem "sqlite3", '<= 1.3.13', platforms: [:mri, :mswin, :mingw]
12
- gem "mysql2", '0.4.10', platforms: [:mri, :mswin, :mingw]
13
- gem "pg",'< 1.0.0', platforms: [:mri, :mingw]
11
+ gem 'sqlite3', '<= 1.3.13', platforms: %i[mri mswin mingw]
12
+ gem 'mysql2', '0.4.10', platforms: %i[mri mswin mingw]
13
+ gem 'pg', '< 1.0.0', platforms: %i[mri mingw]
14
14
 
15
- gem "tiny_tds", platforms: [:mri, :mingw] if RUBY_PLATFORM =~ /windows/
16
- # gem "activerecord-sqlserver-adapter", :platforms => [:mri, :mingw]
15
+ gem 'tiny_tds', platforms: %i[mri mingw] if RUBY_PLATFORM.match?(/windows/)
16
+ # gem "activerecord-sqlserver-adapter", platforms: [:mri, :mingw]
17
17
 
18
- gem 'ruby-oci8', platforms: [:mri, :mswin, :mingw] if ENV.has_key? 'ORACLE_HOME'
18
+ gem 'ruby-oci8', platforms: %i[mri mswin mingw] if ENV.has_key? 'ORACLE_HOME'
19
19
  gem 'activerecord-oracle_enhanced-adapter', '~> 1.8' if ENV.has_key? 'ORACLE_HOME'
20
20
 
21
21
  # for JRuby
22
22
  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-jdbcmysql-adapter", platforms: :jruby
26
- gem "activerecord-jdbcpostgresql-adapter", platforms: :jruby
27
- gem "activerecord-jdbcmssql-adapter", platforms: :jruby
23
+ gem 'jdbc-sqlite3', platforms: :jruby
24
+ gem 'activerecord-jdbcsqlite3-adapter', platforms: :jruby
25
+ gem 'activerecord-jdbcmysql-adapter', platforms: :jruby
26
+ gem 'activerecord-jdbcpostgresql-adapter', platforms: :jruby
27
+ gem 'activerecord-jdbcmssql-adapter', platforms: :jruby
28
28
  end
29
29
 
30
- gemspec path: "../"
30
+ gemspec path: Dir.pwd
@@ -1,30 +1,32 @@
1
- source "https://rubygems.org"
1
+ source 'https://rubygems.org'
2
2
 
3
3
  gem 'rails', '~> 5.2.0'
4
4
  gem 'arel', '~> 9'
5
5
 
6
6
  group :development, :test do
7
+ gem 'bigdecimal', '1.3.5', platforms: %i[mri mingw x64_mingw mswin]
7
8
  gem 'activesupport', '~> 5.2.0'
8
9
  gem 'activemodel', '~> 5.2.0'
9
10
  gem 'activerecord', '~> 5.2.0'
10
11
 
11
- gem "sqlite3", '<= 1.3.13', platforms: [:mri, :mswin, :mingw]
12
- gem "mysql2", '0.4.10', platforms: [:mri, :mswin, :mingw]
13
- gem "pg",'< 1.0.0', platforms: [:mri, :mingw]
12
+ gem 'sqlite3', '<= 1.3.13', platforms: [:mri]
13
+ gem 'mysql2', '0.4.10', platforms: [:mri]
14
+ gem 'pg', '< 1.0.0', platforms: [:mri]
14
15
 
15
- gem "tiny_tds", platforms: [:mri, :mingw] if RUBY_PLATFORM =~ /windows/
16
- # gem "activerecord-sqlserver-adapter", :platforms => [:mri, :mingw]
16
+ gem 'tiny_tds', platforms: %i[mri mingw x64_mingw mswin]
17
+ gem 'activerecord-sqlserver-adapter', '~> 5.2', platforms: %i[mri mingw x64_mingw mswin]
18
+ gem 'tzinfo-data', platforms: %i[mingw mswin x64_mingw]
17
19
 
18
- gem 'ruby-oci8', platforms: [:mri, :mswin, :mingw] if ENV.has_key? 'ORACLE_HOME'
20
+ gem 'ruby-oci8', platforms: %i[mri mswin mingw] if ENV.has_key? 'ORACLE_HOME'
19
21
  gem 'activerecord-oracle_enhanced-adapter', '~> 5.2.0' if ENV.has_key? 'ORACLE_HOME'
20
22
 
21
23
  # for JRuby
22
- gem 'activerecord-jdbc-adapter', github: 'jruby/activerecord-jdbc-adapter', tag: 'v52.0', platforms: :jruby
23
- gem "jdbc-sqlite3", platforms: :jruby
24
- gem "activerecord-jdbcsqlite3-adapter", platforms: :jruby
25
- gem "activerecord-jdbcmysql-adapter", platforms: :jruby
26
- gem "activerecord-jdbcpostgresql-adapter", platforms: :jruby
27
- gem "activerecord-jdbcmssql-adapter", platforms: :jruby
24
+ 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
+ gem 'activerecord-jdbcmysql-adapter', platforms: :jruby
28
+ gem 'activerecord-jdbcpostgresql-adapter', platforms: :jruby
29
+ gem 'activerecord-jdbcsqlserver-adapter', '~> 52.0', platforms: :jruby
28
30
  end
29
31
 
30
- gemspec path: "../"
32
+ gemspec path: Dir.pwd
@@ -1,30 +1,33 @@
1
- source "https://rubygems.org"
1
+ source 'https://rubygems.org'
2
2
 
3
3
  gem 'rails', '~> 6.0.0'
4
4
 
5
-
6
5
  group :development, :test do
6
+ gem 'ruby-lsp', platforms: %i[mri]
7
+ gem 'debug', platforms: %i[mri]
8
+
7
9
  gem 'activesupport', '~> 6.0.0'
8
10
  gem 'activemodel', '~> 6.0.0'
9
11
  gem 'activerecord', '~> 6.0.0'
10
12
 
11
- gem "sqlite3", '~> 1.4', platforms: [:mri, :mswin, :mingw]
12
- gem "mysql2", '0.5.2', platforms: [:mri, :mswin, :mingw]
13
- gem "pg",'< 1.0.0', platforms: [:mri, :mingw]
13
+ gem 'sqlite3', '~> 1.4', platforms: [:mri]
14
+ gem 'mysql2', '0.5.2', platforms: [:mri]
15
+ gem 'pg', '< 1.0.0', platforms: [:mri]
14
16
 
15
- #gem "tiny_tds", platforms: [:mri, :mingw] if RUBY_PLATFORM =~ /windows/
16
- #gem "activerecord-sqlserver-adapter", platforms: [:mri, :mingw]
17
+ gem 'tiny_tds', platforms: %i[mri mingw x64_mingw mswin]
18
+ gem 'activerecord-sqlserver-adapter', '~> 6.0', platforms: %i[mri mingw x64_mingw mswin]
19
+ gem 'tzinfo-data', platforms: %i[mingw mswin x64_mingw]
17
20
 
18
- gem 'ruby-oci8', platforms: [:mri, :mswin, :mingw] if ENV.has_key? 'ORACLE_HOME'
21
+ gem 'ruby-oci8', platforms: %i[mri mswin mingw] if ENV.has_key? 'ORACLE_HOME'
19
22
  gem 'activerecord-oracle_enhanced-adapter', '~> 6.0.0' if ENV.has_key? 'ORACLE_HOME'
20
23
 
21
24
  # for JRuby
22
- gem 'activerecord-jdbc-adapter', platforms: :jruby
23
- gem "jdbc-sqlite3", platforms: :jruby
24
- gem "activerecord-jdbcsqlite3-adapter", platforms: :jruby
25
- gem "activerecord-jdbcmysql-adapter", platforms: :jruby
26
- gem "activerecord-jdbcpostgresql-adapter", platforms: :jruby
27
- gem "activerecord-jdbcmssql-adapter", platforms: :jruby
25
+ gem 'activerecord-jdbc-alt-adapter', '~> 60.0', platform: :jruby, require: true
26
+ gem 'activerecord-jdbcmysql-adapter', platforms: :jruby
27
+ gem 'activerecord-jdbcpostgresql-adapter', platforms: :jruby
28
+ gem 'activerecord-jdbcsqlite3-adapter', platforms: :jruby
29
+ gem 'jdbc-mssql', platforms: :jruby, require: true
30
+ gem 'jdbc-sqlite3', platforms: :jruby
28
31
  end
29
32
 
30
- gemspec path: "../"
33
+ gemspec path: Dir.pwd
@@ -1,30 +1,33 @@
1
- source "https://rubygems.org"
1
+ source 'https://rubygems.org'
2
2
 
3
3
  gem 'rails', '~> 6.1.0'
4
4
 
5
-
6
5
  group :development, :test do
6
+ gem 'ruby-lsp', platforms: %i[mri]
7
+ gem 'debug', platforms: %i[mri]
8
+
7
9
  gem 'activesupport', '~> 6.1.0'
8
10
  gem 'activemodel', '~> 6.1.0'
9
11
  gem 'activerecord', '~> 6.1.0'
10
12
 
11
- gem "sqlite3", '~> 1.4', platforms: [:mri, :mswin, :mingw]
12
- gem "mysql2", '0.5.2', platforms: [:mri, :mswin, :mingw]
13
- gem "pg",'~> 1.1', platforms: [:mri, :mingw]
13
+ gem 'sqlite3', '~> 1.4', platforms: [:mri]
14
+ gem 'mysql2', '~>0.5', platforms: [:mri]
15
+ gem 'pg', '~> 1.1', platforms: [:mri]
14
16
 
15
- #gem "tiny_tds", platforms: [:mri, :mingw] if RUBY_PLATFORM =~ /windows/
16
- #gem "activerecord-sqlserver-adapter", platforms: [:mri, :mingw]
17
+ gem 'tiny_tds', platforms: %i[mri mingw x64_mingw mswin]
18
+ gem 'activerecord-sqlserver-adapter', '~> 6.1.0', platforms: %i[mri mingw x64_mingw mswin]
19
+ gem 'tzinfo-data', platforms: %i[mingw mswin x64_mingw]
17
20
 
18
- gem 'ruby-oci8', platforms: [:mri, :mswin, :mingw] if ENV.has_key? 'ORACLE_HOME'
21
+ gem 'ruby-oci8', platforms: %i[mri mswin mingw] if ENV.has_key? 'ORACLE_HOME'
19
22
  gem 'activerecord-oracle_enhanced-adapter', '~> 6.0.0' if ENV.has_key? 'ORACLE_HOME'
20
23
 
21
24
  # for JRuby
22
- gem 'activerecord-jdbc-adapter', platforms: :jruby
23
- gem "jdbc-sqlite3", platforms: :jruby
24
- gem "activerecord-jdbcsqlite3-adapter", platforms: :jruby
25
- gem "activerecord-jdbcmysql-adapter", platforms: :jruby
26
- gem "activerecord-jdbcpostgresql-adapter", platforms: :jruby
27
- gem "activerecord-jdbcmssql-adapter", platforms: :jruby
25
+ gem 'activerecord-jdbc-alt-adapter', '~> 61.0', platform: :jruby, require: true
26
+ gem 'activerecord-jdbcmysql-adapter', platforms: :jruby
27
+ gem 'activerecord-jdbcpostgresql-adapter', platforms: :jruby
28
+ gem 'activerecord-jdbcsqlite3-adapter', platforms: :jruby
29
+ gem 'jdbc-mssql', platforms: :jruby, require: true
30
+ gem 'jdbc-sqlite3', platforms: :jruby
28
31
  end
29
32
 
30
- gemspec path: "../"
33
+ gemspec path: Dir.pwd