ajax-datatables-rails 1.3.1 → 1.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (41) hide show
  1. checksums.yaml +4 -4
  2. data/.codeclimate.yml +5 -23
  3. data/.github/workflows/ci.yml +16 -8
  4. data/.gitignore +6 -3
  5. data/.rubocop.yml +1 -1
  6. data/Appraisals +18 -25
  7. data/CHANGELOG.md +10 -0
  8. data/Gemfile +2 -0
  9. data/ajax-datatables-rails.gemspec +5 -2
  10. data/appraisal.yml +56 -0
  11. data/bin/rackup +27 -0
  12. data/config.ru +7 -0
  13. data/gemfiles/rails_5.2.8.gemfile +21 -0
  14. data/gemfiles/rails_6.0.6.gemfile +21 -0
  15. data/gemfiles/rails_6.1.7.gemfile +21 -0
  16. data/gemfiles/rails_7.0.4.gemfile +21 -0
  17. data/lib/ajax-datatables-rails/base.rb +21 -1
  18. data/lib/ajax-datatables-rails/datatable/column/search.rb +2 -6
  19. data/lib/ajax-datatables-rails/datatable/column.rb +10 -9
  20. data/lib/ajax-datatables-rails/version.rb +2 -2
  21. data/spec/ajax-datatables-rails/datatable/datatable_spec.rb +2 -2
  22. data/spec/ajax-datatables-rails/datatable/simple_order_spec.rb +1 -1
  23. data/spec/ajax-datatables-rails/orm/active_record_filter_records_spec.rb +48 -26
  24. data/spec/ajax-datatables-rails/orm/active_record_paginate_records_spec.rb +2 -2
  25. data/spec/ajax-datatables-rails/orm/active_record_sort_records_spec.rb +2 -2
  26. data/spec/dummy/app/assets/config/manifest.js +0 -0
  27. data/spec/dummy/config/database.yml +25 -0
  28. data/spec/dummy/config/routes.rb +5 -0
  29. data/spec/dummy/config/storage.yml +3 -0
  30. data/spec/{support → dummy/db}/schema.rb +0 -3
  31. data/spec/dummy/log/.gitignore +1 -0
  32. data/spec/dummy/public/favicon.ico +0 -0
  33. data/spec/spec_helper.rb +20 -23
  34. data/spec/support/datatables/complex_datatable.rb +2 -0
  35. data/spec/support/datatables/datatable_custom_column.rb +17 -0
  36. data/spec/support/helpers/params.rb +7 -1
  37. data/spec/support/models/user.rb +3 -0
  38. metadata +64 -11
  39. data/gemfiles/rails_5.2.4.gemfile +0 -11
  40. data/gemfiles/rails_6.0.3.gemfile +0 -11
  41. data/gemfiles/rails_6.1.0.gemfile +0 -11
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c458882fe0c2ff86e0b262ccdc9e37af67c348941f902e29bee7a9ec7b1ad9f0
4
- data.tar.gz: 9fe38de08324f1f281f5a7c24d3e0c782c71bc741a23ae301952c0ef7bfcbb09
3
+ metadata.gz: a8603311c92aa4db99c7b94103de8ed606a61ffafaf630724517d479cd478331
4
+ data.tar.gz: 2baccc608a73493ecb7c28570075a9dda5919c91010db322e98a9c8d7032b4be
5
5
  SHA512:
6
- metadata.gz: 943655268357523c6594845e708f41fbe515284736b1c96d6150514b6c39478d563719c4051c0c3568942e138c1166ab2193cec5585742c1640242a7adbdd381
7
- data.tar.gz: 6507a0827be528e61dfb07f905b4016d0d65543b19b3becf8d557884890fa88dbdefd815441f0b6f4cc4c784b24ebb58924f0b69357576295138af67cdf7ca78
6
+ metadata.gz: e2097c47d5af467755b87bd09abe9551b1eeb6334476358508bc4615657b66c0ae2b38b7a4416475e3783f3e88f99d35be984c6c9a9e55e6ded40ee382f2ffbe
7
+ data.tar.gz: 4fbbaf7373f5acb5548ff354e5d191e195598302756e6051bd37a2876fee4e4f8450d3b535c7e98fd5654923740286d6c67b29d4570868d816200e7568cf2ecc
data/.codeclimate.yml CHANGED
@@ -1,26 +1,8 @@
1
1
  ---
2
- engines:
3
- duplication:
4
- enabled: true
5
- config:
6
- languages:
7
- - ruby
8
- - javascript
9
- - python
10
- - php
11
- fixme:
12
- enabled: true
2
+ plugins:
13
3
  rubocop:
14
4
  enabled: true
15
- ratings:
16
- paths:
17
- - "**.inc"
18
- - "**.js"
19
- - "**.jsx"
20
- - "**.module"
21
- - "**.php"
22
- - "**.py"
23
- - "**.rb"
24
- exclude_paths:
25
- - spec/
26
- - lib/generators/rails/templates/
5
+ channel: rubocop-1-31-0
6
+ exclude_patterns:
7
+ - spec/
8
+ - lib/generators/rails/templates/
@@ -2,8 +2,14 @@
2
2
  name: CI
3
3
 
4
4
  on:
5
- - push
6
- - pull_request
5
+ push:
6
+ branches:
7
+ - '**'
8
+ pull_request:
9
+ branches:
10
+ - '**'
11
+ schedule:
12
+ - cron: '0 4 1 * *'
7
13
 
8
14
  jobs:
9
15
  rspec:
@@ -46,14 +52,14 @@ jobs:
46
52
  fail-fast: false
47
53
  matrix:
48
54
  ruby:
55
+ - '3.1'
49
56
  - '3.0'
50
57
  - '2.7'
51
- - '2.6'
52
- - '2.5'
53
58
  rails:
54
- - rails_5.2.4
55
- - rails_6.0.3
56
- - rails_6.1.0
59
+ - rails_5.2.8
60
+ - rails_6.0.6
61
+ - rails_6.1.7
62
+ - rails_7.0.4
57
63
  adapter:
58
64
  - sqlite3
59
65
  - postgresql
@@ -61,7 +67,9 @@ jobs:
61
67
  - oracle_enhanced
62
68
  exclude:
63
69
  - ruby: '3.0'
64
- rails: rails_5.2.4
70
+ rails: rails_5.2.8
71
+ - ruby: '3.1'
72
+ rails: rails_5.2.8
65
73
 
66
74
  steps:
67
75
  - name: Checkout
data/.gitignore CHANGED
@@ -10,11 +10,14 @@
10
10
  /coverage
11
11
  /tmp
12
12
 
13
- # Ignore sqlite db file
14
- /ajax_datatables_rails
15
-
16
13
  # RVM files
17
14
  /.ruby-version
18
15
 
19
16
  # Gem files
20
17
  /*.gem
18
+
19
+ # Ignore dummy app files
20
+ spec/dummy/db/*.sqlite3
21
+ spec/dummy/db/*.sqlite3-journal
22
+ spec/dummy/log/*.log
23
+ spec/dummy/tmp/
data/.rubocop.yml CHANGED
@@ -1,7 +1,7 @@
1
1
  AllCops:
2
2
  NewCops: enable
3
3
  SuggestExtensions: false
4
- TargetRubyVersion: 2.5
4
+ TargetRubyVersion: 2.7
5
5
  Exclude:
6
6
  - bin/*
7
7
  - lib/generators/**/*.rb
data/Appraisals CHANGED
@@ -1,34 +1,27 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- RAILS_VERSIONS = {
4
- '5.2.4' => {
5
- 'activerecord-oracle_enhanced-adapter' => '~> 5.2.0',
6
- 'sqlite3' => '~> 1.3.0',
7
- 'mysql2' => '',
8
- 'ruby-oci8' => '',
9
- },
10
- '6.0.3' => {
11
- 'activerecord-oracle_enhanced-adapter' => '~> 6.0.0',
12
- 'sqlite3' => '~> 1.4.0',
13
- 'mysql2' => '',
14
- 'ruby-oci8' => '',
15
- },
16
- '6.1.0' => {
17
- 'activerecord-oracle_enhanced-adapter' => '~> 6.1.0',
18
- 'sqlite3' => '~> 1.4.0',
19
- 'mysql2' => '',
20
- 'ruby-oci8' => '',
21
- },
22
- }.freeze
3
+ require 'yaml'
23
4
 
24
- RAILS_VERSIONS.each do |version, gems|
5
+ rails_versions = YAML.load(File.read('appraisal.yml'))
6
+
7
+ rails_versions.each do |version, gems|
25
8
  appraise "rails_#{version}" do
26
9
  gem 'rails', version
27
- gems.each do |name, gem_version|
28
- if gem_version.empty?
29
- gem name
10
+ gems.each do |name, opts|
11
+ if opts['install_if']
12
+ install_if opts['install_if'] do
13
+ if opts['version'].empty?
14
+ gem name
15
+ else
16
+ gem name, opts['version']
17
+ end
18
+ end
30
19
  else
31
- gem name, gem_version
20
+ if opts['version'].empty?
21
+ gem name
22
+ else
23
+ gem name, opts['version']
24
+ end
32
25
  end
33
26
  end
34
27
  end
data/CHANGELOG.md CHANGED
@@ -1,5 +1,15 @@
1
1
  # CHANGELOG
2
2
 
3
+ ## 1.4.0 (2022-12-18)
4
+
5
+ * Improve tests
6
+ * Add tests on custom_field feature
7
+ * Drop support of Ruby 2.5
8
+ * Drop support of Ruby 2.6
9
+ * Add support of Ruby 3.1
10
+ * Add support of Rails 7
11
+ * Fix: prevent establishing ActiveRecord connection on startup
12
+
3
13
  ## 1.3.1 (2021-02-09)
4
14
 
5
15
  * Fix rare case error `uninitialized constant AjaxDatatablesRails::ActiveRecord::Base` (merge: [#379](https://github.com/jbox-web/ajax-datatables-rails/pull/379))
data/Gemfile CHANGED
@@ -3,3 +3,5 @@
3
3
  source 'https://rubygems.org'
4
4
 
5
5
  gemspec
6
+
7
+ gem 'appraisal', git: 'https://github.com/n-rodriguez/appraisal.git', branch: 'wip/combustion'
@@ -19,14 +19,16 @@ Gem::Specification.new do |s|
19
19
  'bug_tracker_uri' => 'https://github.com/jbox-web/ajax-datatables-rails/issues',
20
20
  }
21
21
 
22
- s.required_ruby_version = '>= 2.5.0'
22
+ s.required_ruby_version = '>= 2.7.0'
23
23
 
24
24
  s.files = `git ls-files`.split("\n")
25
25
 
26
+ s.add_runtime_dependency 'rails', '>= 5.2'
26
27
  s.add_runtime_dependency 'zeitwerk'
27
28
 
28
29
  s.add_development_dependency 'activerecord-oracle_enhanced-adapter'
29
30
  s.add_development_dependency 'appraisal'
31
+ s.add_development_dependency 'combustion', '~> 1.3'
30
32
  s.add_development_dependency 'database_cleaner'
31
33
  s.add_development_dependency 'factory_bot'
32
34
  s.add_development_dependency 'faker'
@@ -34,10 +36,11 @@ Gem::Specification.new do |s|
34
36
  s.add_development_dependency 'guard-rspec'
35
37
  s.add_development_dependency 'pg'
36
38
  s.add_development_dependency 'pry'
37
- s.add_development_dependency 'rails', '>= 5.2'
39
+ s.add_development_dependency 'puma'
38
40
  s.add_development_dependency 'rake'
39
41
  s.add_development_dependency 'rspec'
40
42
  s.add_development_dependency 'rspec-retry'
41
43
  s.add_development_dependency 'rubocop'
42
44
  s.add_development_dependency 'simplecov'
45
+ s.add_development_dependency 'sqlite3', '~> 1.4.0'
43
46
  end
data/appraisal.yml ADDED
@@ -0,0 +1,56 @@
1
+ ---
2
+ 5.2.8:
3
+ sqlite3:
4
+ version: ~> 1.3.0
5
+ install_if: '-> { ENV["DB_ADAPTER"] == "sqlite3" }'
6
+ mysql2:
7
+ version: ''
8
+ install_if: '-> { ENV["DB_ADAPTER"] == "mysql2" }'
9
+ activerecord-oracle_enhanced-adapter:
10
+ version: ~> 5.2.0
11
+ install_if: '-> { ENV["DB_ADAPTER"] == "oracle_enhanced" }'
12
+ ruby-oci8:
13
+ version: ''
14
+ install_if: '-> { ENV["DB_ADAPTER"] == "oracle_enhanced" }'
15
+
16
+ 6.0.6:
17
+ sqlite3:
18
+ version: ~> 1.4.0
19
+ install_if: '-> { ENV["DB_ADAPTER"] == "sqlite3" }'
20
+ mysql2:
21
+ version: ''
22
+ install_if: '-> { ENV["DB_ADAPTER"] == "mysql2" }'
23
+ activerecord-oracle_enhanced-adapter:
24
+ version: ~> 6.0.0
25
+ install_if: '-> { ENV["DB_ADAPTER"] == "oracle_enhanced" }'
26
+ ruby-oci8:
27
+ version: ''
28
+ install_if: '-> { ENV["DB_ADAPTER"] == "oracle_enhanced" }'
29
+
30
+ 6.1.7:
31
+ sqlite3:
32
+ version: ~> 1.4.0
33
+ install_if: '-> { ENV["DB_ADAPTER"] == "sqlite3" }'
34
+ mysql2:
35
+ version: ''
36
+ install_if: '-> { ENV["DB_ADAPTER"] == "mysql2" }'
37
+ activerecord-oracle_enhanced-adapter:
38
+ version: ~> 6.1.0
39
+ install_if: '-> { ENV["DB_ADAPTER"] == "oracle_enhanced" }'
40
+ ruby-oci8:
41
+ version: ''
42
+ install_if: '-> { ENV["DB_ADAPTER"] == "oracle_enhanced" }'
43
+
44
+ 7.0.4:
45
+ sqlite3:
46
+ version: ~> 1.4.0
47
+ install_if: '-> { ENV["DB_ADAPTER"] == "sqlite3" }'
48
+ mysql2:
49
+ version: ''
50
+ install_if: '-> { ENV["DB_ADAPTER"] == "mysql2" }'
51
+ activerecord-oracle_enhanced-adapter:
52
+ version: ~> 7.0.0
53
+ install_if: '-> { ENV["DB_ADAPTER"] == "oracle_enhanced" }'
54
+ ruby-oci8:
55
+ version: ''
56
+ install_if: '-> { ENV["DB_ADAPTER"] == "oracle_enhanced" }'
data/bin/rackup ADDED
@@ -0,0 +1,27 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ #
5
+ # This file was generated by Bundler.
6
+ #
7
+ # The application 'rackup' is installed as part of a gem, and
8
+ # this file is here to facilitate running it.
9
+ #
10
+
11
+ ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../Gemfile", __dir__)
12
+
13
+ bundle_binstub = File.expand_path("bundle", __dir__)
14
+
15
+ if File.file?(bundle_binstub)
16
+ if File.read(bundle_binstub, 300) =~ /This file was generated by Bundler/
17
+ load(bundle_binstub)
18
+ else
19
+ abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run.
20
+ Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.")
21
+ end
22
+ end
23
+
24
+ require "rubygems"
25
+ require "bundler/setup"
26
+
27
+ load Gem.bin_path("rack", "rackup")
data/config.ru ADDED
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ Bundler.require :default, :development
4
+
5
+ Combustion.path = 'spec/dummy'
6
+ Combustion.initialize! :all
7
+ run Combustion::Application
@@ -0,0 +1,21 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "appraisal", git: "https://github.com/n-rodriguez/appraisal.git", branch: "wip/combustion"
6
+ gem "rails", "5.2.8"
7
+
8
+ install_if -> { ENV["DB_ADAPTER"] == "sqlite3" } do
9
+ gem "sqlite3", "~> 1.3.0"
10
+ end
11
+
12
+ install_if -> { ENV["DB_ADAPTER"] == "mysql2" } do
13
+ gem "mysql2"
14
+ end
15
+
16
+ install_if -> { ENV["DB_ADAPTER"] == "oracle_enhanced" } do
17
+ gem "activerecord-oracle_enhanced-adapter", "~> 5.2.0"
18
+ gem "ruby-oci8"
19
+ end
20
+
21
+ gemspec path: "../"
@@ -0,0 +1,21 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "appraisal", git: "https://github.com/n-rodriguez/appraisal.git", branch: "wip/combustion"
6
+ gem "rails", "6.0.6"
7
+
8
+ install_if -> { ENV["DB_ADAPTER"] == "sqlite3" } do
9
+ gem "sqlite3", "~> 1.4.0"
10
+ end
11
+
12
+ install_if -> { ENV["DB_ADAPTER"] == "mysql2" } do
13
+ gem "mysql2"
14
+ end
15
+
16
+ install_if -> { ENV["DB_ADAPTER"] == "oracle_enhanced" } do
17
+ gem "activerecord-oracle_enhanced-adapter", "~> 6.0.0"
18
+ gem "ruby-oci8"
19
+ end
20
+
21
+ gemspec path: "../"
@@ -0,0 +1,21 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "appraisal", git: "https://github.com/n-rodriguez/appraisal.git", branch: "wip/combustion"
6
+ gem "rails", "6.1.7"
7
+
8
+ install_if -> { ENV["DB_ADAPTER"] == "sqlite3" } do
9
+ gem "sqlite3", "~> 1.4.0"
10
+ end
11
+
12
+ install_if -> { ENV["DB_ADAPTER"] == "mysql2" } do
13
+ gem "mysql2"
14
+ end
15
+
16
+ install_if -> { ENV["DB_ADAPTER"] == "oracle_enhanced" } do
17
+ gem "activerecord-oracle_enhanced-adapter", "~> 6.1.0"
18
+ gem "ruby-oci8"
19
+ end
20
+
21
+ gemspec path: "../"
@@ -0,0 +1,21 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "appraisal", git: "https://github.com/n-rodriguez/appraisal.git", branch: "wip/combustion"
6
+ gem "rails", "7.0.4"
7
+
8
+ install_if -> { ENV["DB_ADAPTER"] == "sqlite3" } do
9
+ gem "sqlite3", "~> 1.4.0"
10
+ end
11
+
12
+ install_if -> { ENV["DB_ADAPTER"] == "mysql2" } do
13
+ gem "mysql2"
14
+ end
15
+
16
+ install_if -> { ENV["DB_ADAPTER"] == "oracle_enhanced" } do
17
+ gem "activerecord-oracle_enhanced-adapter", "~> 7.0.0"
18
+ gem "ruby-oci8"
19
+ end
20
+
21
+ gemspec path: "../"
@@ -3,7 +3,27 @@
3
3
  module AjaxDatatablesRails
4
4
  class Base
5
5
 
6
- class_attribute :db_adapter, default: ::ActiveRecord::Base.connection.adapter_name.downcase.to_sym
6
+ class << self
7
+ def rails_52?
8
+ Rails.gem_version >= Gem::Version.new('5.2') && Rails.gem_version <= Gem::Version.new('6.0')
9
+ end
10
+
11
+ def rails_60?
12
+ Rails.gem_version >= Gem::Version.new('6.0') && Rails.gem_version <= Gem::Version.new('6.1')
13
+ end
14
+
15
+ def default_db_adapter
16
+ if rails_52?
17
+ ::ActiveRecord::Base.configurations.dig(Rails.env, 'adapter').downcase.to_sym
18
+ elsif rails_60?
19
+ ::ActiveRecord::Base.configurations.configs_for(env_name: Rails.env).first.config['adapter'].downcase.to_sym
20
+ else
21
+ ::ActiveRecord::Base.configurations.configs_for(env_name: Rails.env).first.adapter.downcase.to_sym
22
+ end
23
+ end
24
+ end
25
+
26
+ class_attribute :db_adapter, default: default_db_adapter
7
27
  class_attribute :nulls_last, default: false
8
28
 
9
29
  attr_reader :params, :options, :datatable
@@ -88,15 +88,11 @@ module AjaxDatatablesRails
88
88
  end
89
89
 
90
90
  def raw_search(cond)
91
- if custom_field?
92
- ::Arel::Nodes::SqlLiteral.new(field).eq(formatted_value)
93
- else
94
- table[field].send(cond, formatted_value)
95
- end
91
+ table[field].send(cond, formatted_value) unless custom_field?
96
92
  end
97
93
 
98
94
  def text_search(value)
99
- casted_column.matches(value)
95
+ casted_column.matches(value) unless custom_field?
100
96
  end
101
97
 
102
98
  def empty_search
@@ -36,11 +36,11 @@ module AjaxDatatablesRails
36
36
  end
37
37
 
38
38
  def model
39
- @model ||= source.split('.').first.constantize
39
+ @model ||= custom_field? ? source : source.split('.').first.constantize
40
40
  end
41
41
 
42
42
  def field
43
- @field ||= source.split('.').last.to_sym
43
+ @field ||= custom_field? ? source : source.split('.').last.to_sym
44
44
  end
45
45
 
46
46
  def custom_field?
@@ -66,13 +66,14 @@ module AjaxDatatablesRails
66
66
  TYPE_CAST_SQLSERVER = 'VARCHAR(4000)'
67
67
 
68
68
  DB_ADAPTER_TYPE_CAST = {
69
- mysql: TYPE_CAST_MYSQL,
70
- mysql2: TYPE_CAST_MYSQL,
71
- sqlite: TYPE_CAST_SQLITE,
72
- sqlite3: TYPE_CAST_SQLITE,
73
- oracle: TYPE_CAST_ORACLE,
74
- oracleenhanced: TYPE_CAST_ORACLE,
75
- sqlserver: TYPE_CAST_SQLSERVER,
69
+ mysql: TYPE_CAST_MYSQL,
70
+ mysql2: TYPE_CAST_MYSQL,
71
+ sqlite: TYPE_CAST_SQLITE,
72
+ sqlite3: TYPE_CAST_SQLITE,
73
+ oracle: TYPE_CAST_ORACLE,
74
+ oracleenhanced: TYPE_CAST_ORACLE,
75
+ oracle_enhanced: TYPE_CAST_ORACLE,
76
+ sqlserver: TYPE_CAST_SQLSERVER,
76
77
  }.freeze
77
78
 
78
79
  private_constant :TYPE_CAST_DEFAULT
@@ -8,8 +8,8 @@ module AjaxDatatablesRails
8
8
 
9
9
  module VERSION
10
10
  MAJOR = 1
11
- MINOR = 3
12
- TINY = 1
11
+ MINOR = 4
12
+ TINY = 0
13
13
  PRE = nil
14
14
 
15
15
  STRING = [MAJOR, MINOR, TINY, PRE].compact.join('.')
@@ -40,8 +40,8 @@ RSpec.describe AjaxDatatablesRails::Datatable::Datatable do
40
40
  end
41
41
 
42
42
  shared_examples 'columns methods' do
43
- it 'has 4 columns' do
44
- expect(datatable.columns.count).to eq(6)
43
+ it 'has 7 columns' do
44
+ expect(datatable.columns.count).to eq(7)
45
45
  end
46
46
 
47
47
  it 'child class' do
@@ -21,7 +21,7 @@ RSpec.describe AjaxDatatablesRails::Datatable::SimpleOrder do
21
21
  after { parent.nulls_last = false }
22
22
 
23
23
  it 'sql query' do
24
- skip('unsupported database adapter') if ENV['DB_ADAPTER'] == 'oracle_enhanced'
24
+ skip('unsupported database adapter') if RunningSpec.oracle?
25
25
 
26
26
  expect(simple_order.query('email')).to eq(
27
27
  "email DESC #{nulls_last_sql(parent)}"
@@ -168,7 +168,7 @@ RSpec.describe AjaxDatatablesRails::ORM::ActiveRecord do
168
168
  expect(result).to be_a(Arel::Nodes::And)
169
169
  end
170
170
 
171
- if ENV['DB_ADAPTER'] == 'postgresql'
171
+ if RunningSpec.postgresql?
172
172
  context 'when db_adapter is postgresql' do
173
173
  it 'can call #to_sql on returned object' do
174
174
  result = datatable.build_conditions_for_selected_columns
@@ -180,7 +180,7 @@ RSpec.describe AjaxDatatablesRails::ORM::ActiveRecord do
180
180
  end
181
181
  end
182
182
 
183
- if ENV['DB_ADAPTER'] == 'oracle_enhanced'
183
+ if RunningSpec.oracle?
184
184
  context 'when db_adapter is oracle' do
185
185
  it 'can call #to_sql on returned object' do
186
186
  result = datatable.build_conditions_for_selected_columns
@@ -192,7 +192,7 @@ RSpec.describe AjaxDatatablesRails::ORM::ActiveRecord do
192
192
  end
193
193
  end
194
194
 
195
- if ENV['DB_ADAPTER'] == 'mysql2'
195
+ if RunningSpec.mysql?
196
196
  context 'when db_adapter is mysql2' do
197
197
  it 'can call #to_sql on returned object' do
198
198
  result = datatable.build_conditions_for_selected_columns
@@ -236,7 +236,7 @@ RSpec.describe AjaxDatatablesRails::ORM::ActiveRecord do
236
236
 
237
237
  context 'when range is empty' do
238
238
  it 'does not filter records' do
239
- datatable.params[:columns]['5'][:search][:value] = '-'
239
+ datatable.params[:columns]['6'][:search][:value] = '-'
240
240
  expect(datatable.data.size).to eq 2
241
241
  item = datatable.data.first
242
242
  expect(item[:last_name]).to eq 'Doe'
@@ -245,21 +245,21 @@ RSpec.describe AjaxDatatablesRails::ORM::ActiveRecord do
245
245
 
246
246
  context 'when start date is filled' do
247
247
  it 'filters records created after this date' do
248
- datatable.params[:columns]['5'][:search][:value] = '31/12/1999-'
248
+ datatable.params[:columns]['6'][:search][:value] = '31/12/1999-'
249
249
  expect(datatable.data.size).to eq 2
250
250
  end
251
251
  end
252
252
 
253
253
  context 'when end date is filled' do
254
254
  it 'filters records created before this date' do
255
- datatable.params[:columns]['5'][:search][:value] = '-31/12/1999'
255
+ datatable.params[:columns]['6'][:search][:value] = '-31/12/1999'
256
256
  expect(datatable.data.size).to eq 0
257
257
  end
258
258
  end
259
259
 
260
260
  context 'when both date are filled' do
261
261
  it 'filters records created between the range' do
262
- datatable.params[:columns]['5'][:search][:value] = '01/12/1999-15/01/2000'
262
+ datatable.params[:columns]['6'][:search][:value] = '01/12/1999-15/01/2000'
263
263
  expect(datatable.data.size).to eq 1
264
264
  end
265
265
  end
@@ -268,7 +268,7 @@ RSpec.describe AjaxDatatablesRails::ORM::ActiveRecord do
268
268
  context 'when range is empty' do
269
269
  it 'filters records' do
270
270
  datatable.params[:columns]['0'][:search][:value] = 'doe'
271
- datatable.params[:columns]['5'][:search][:value] = '-'
271
+ datatable.params[:columns]['6'][:search][:value] = '-'
272
272
  expect(datatable.data.size).to eq 1
273
273
  item = datatable.data.first
274
274
  expect(item[:last_name]).to eq 'Doe'
@@ -278,7 +278,7 @@ RSpec.describe AjaxDatatablesRails::ORM::ActiveRecord do
278
278
  context 'when start date is filled' do
279
279
  it 'filters records' do
280
280
  datatable.params[:columns]['0'][:search][:value] = 'doe'
281
- datatable.params[:columns]['5'][:search][:value] = '01/12/1999-'
281
+ datatable.params[:columns]['6'][:search][:value] = '01/12/1999-'
282
282
  expect(datatable.data.size).to eq 1
283
283
  item = datatable.data.first
284
284
  expect(item[:last_name]).to eq 'Doe'
@@ -288,7 +288,7 @@ RSpec.describe AjaxDatatablesRails::ORM::ActiveRecord do
288
288
  context 'when end date is filled' do
289
289
  it 'filters records' do
290
290
  datatable.params[:columns]['0'][:search][:value] = 'doe'
291
- datatable.params[:columns]['5'][:search][:value] = '-15/01/2000'
291
+ datatable.params[:columns]['6'][:search][:value] = '-15/01/2000'
292
292
  expect(datatable.data.size).to eq 1
293
293
  item = datatable.data.first
294
294
  expect(item[:last_name]).to eq 'Doe'
@@ -298,7 +298,7 @@ RSpec.describe AjaxDatatablesRails::ORM::ActiveRecord do
298
298
  context 'when both date are filled' do
299
299
  it 'filters records' do
300
300
  datatable.params[:columns]['0'][:search][:value] = 'doe'
301
- datatable.params[:columns]['5'][:search][:value] = '01/12/1999-15/01/2000'
301
+ datatable.params[:columns]['6'][:search][:value] = '01/12/1999-15/01/2000'
302
302
  expect(datatable.data.size).to eq 1
303
303
  item = datatable.data.first
304
304
  expect(item[:last_name]).to eq 'Doe'
@@ -318,7 +318,7 @@ RSpec.describe AjaxDatatablesRails::ORM::ActiveRecord do
318
318
  let(:datatable) { DatatableCondEq.new(sample_params) }
319
319
 
320
320
  it 'filters records matching' do
321
- datatable.params[:columns]['4'][:search][:value] = 1
321
+ datatable.params[:columns]['5'][:search][:value] = 1
322
322
  expect(datatable.data.size).to eq 1
323
323
  item = datatable.data.first
324
324
  expect(item[:first_name]).to eq 'john'
@@ -329,7 +329,7 @@ RSpec.describe AjaxDatatablesRails::ORM::ActiveRecord do
329
329
  let(:datatable) { DatatableCondNotEq.new(sample_params) }
330
330
 
331
331
  it 'filters records matching' do
332
- datatable.params[:columns]['4'][:search][:value] = 1
332
+ datatable.params[:columns]['5'][:search][:value] = 1
333
333
  expect(datatable.data.size).to eq 1
334
334
  item = datatable.data.first
335
335
  expect(item[:first_name]).to eq 'mary'
@@ -340,7 +340,7 @@ RSpec.describe AjaxDatatablesRails::ORM::ActiveRecord do
340
340
  let(:datatable) { DatatableCondLt.new(sample_params) }
341
341
 
342
342
  it 'filters records matching' do
343
- datatable.params[:columns]['4'][:search][:value] = 2
343
+ datatable.params[:columns]['5'][:search][:value] = 2
344
344
  expect(datatable.data.size).to eq 1
345
345
  item = datatable.data.first
346
346
  expect(item[:first_name]).to eq 'john'
@@ -351,7 +351,7 @@ RSpec.describe AjaxDatatablesRails::ORM::ActiveRecord do
351
351
  let(:datatable) { DatatableCondGt.new(sample_params) }
352
352
 
353
353
  it 'filters records matching' do
354
- datatable.params[:columns]['4'][:search][:value] = 1
354
+ datatable.params[:columns]['5'][:search][:value] = 1
355
355
  expect(datatable.data.size).to eq 1
356
356
  item = datatable.data.first
357
357
  expect(item[:first_name]).to eq 'mary'
@@ -362,7 +362,7 @@ RSpec.describe AjaxDatatablesRails::ORM::ActiveRecord do
362
362
  let(:datatable) { DatatableCondLteq.new(sample_params) }
363
363
 
364
364
  it 'filters records matching' do
365
- datatable.params[:columns]['4'][:search][:value] = 2
365
+ datatable.params[:columns]['5'][:search][:value] = 2
366
366
  expect(datatable.data.size).to eq 2
367
367
  end
368
368
  end
@@ -371,7 +371,7 @@ RSpec.describe AjaxDatatablesRails::ORM::ActiveRecord do
371
371
  let(:datatable) { DatatableCondGteq.new(sample_params) }
372
372
 
373
373
  it 'filters records matching' do
374
- datatable.params[:columns]['4'][:search][:value] = 1
374
+ datatable.params[:columns]['5'][:search][:value] = 1
375
375
  expect(datatable.data.size).to eq 2
376
376
  end
377
377
  end
@@ -380,7 +380,7 @@ RSpec.describe AjaxDatatablesRails::ORM::ActiveRecord do
380
380
  let(:datatable) { DatatableCondIn.new(sample_params) }
381
381
 
382
382
  it 'filters records matching' do
383
- datatable.params[:columns]['4'][:search][:value] = [1]
383
+ datatable.params[:columns]['5'][:search][:value] = [1]
384
384
  expect(datatable.data.size).to eq 1
385
385
  item = datatable.data.first
386
386
  expect(item[:first_name]).to eq 'john'
@@ -391,8 +391,8 @@ RSpec.describe AjaxDatatablesRails::ORM::ActiveRecord do
391
391
  let(:datatable) { DatatableCondInWithRegex.new(sample_params) }
392
392
 
393
393
  it 'filters records matching' do
394
- datatable.params[:columns]['4'][:search][:value] = '1|2'
395
- datatable.params[:order]['0'] = { column: '4', dir: 'asc' }
394
+ datatable.params[:columns]['5'][:search][:value] = '1|2'
395
+ datatable.params[:order]['0'] = { column: '5', dir: 'asc' }
396
396
  expect(datatable.data.size).to eq 2
397
397
  item = datatable.data.first
398
398
  expect(item[:first_name]).to eq 'john'
@@ -410,18 +410,18 @@ RSpec.describe AjaxDatatablesRails::ORM::ActiveRecord do
410
410
  create(:user, first_name: 'phil', post_id: largest_postgresql_integer_value)
411
411
  end
412
412
 
413
- it 'Returns an empty result if input value is too large' do
414
- datatable.params[:columns]['4'][:search][:value] = largest_postgresql_integer_value + 1
413
+ it 'returns an empty result if input value is too large' do
414
+ datatable.params[:columns]['5'][:search][:value] = largest_postgresql_integer_value + 1
415
415
  expect(datatable.data.size).to eq 0
416
416
  end
417
417
 
418
- it 'Returns an empty result if input value is too small' do
419
- datatable.params[:columns]['4'][:search][:value] = smallest_postgresql_integer_value - 1
418
+ it 'returns an empty result if input value is too small' do
419
+ datatable.params[:columns]['5'][:search][:value] = smallest_postgresql_integer_value - 1
420
420
  expect(datatable.data.size).to eq 0
421
421
  end
422
422
 
423
423
  it 'returns the matching user' do
424
- datatable.params[:columns]['4'][:search][:value] = largest_postgresql_integer_value
424
+ datatable.params[:columns]['5'][:search][:value] = largest_postgresql_integer_value
425
425
  expect(datatable.data.size).to eq 1
426
426
  end
427
427
  end
@@ -471,7 +471,7 @@ RSpec.describe AjaxDatatablesRails::ORM::ActiveRecord do
471
471
  create(:user, last_name: 'MARY')
472
472
  end
473
473
 
474
- if ENV['DB_ADAPTER'] == 'oracle_enhanced'
474
+ if RunningSpec.oracle?
475
475
  context 'when db_adapter is oracleenhanced' do
476
476
  it 'filters records matching' do
477
477
  datatable.params[:columns]['3'][:search][:value] = 'RY'
@@ -597,6 +597,28 @@ RSpec.describe AjaxDatatablesRails::ORM::ActiveRecord do
597
597
  }.to raise_error(AjaxDatatablesRails::Error::InvalidSearchCondition).with_message('foo')
598
598
  end
599
599
  end
600
+
601
+ context 'custom column' do
602
+ describe 'it can filter records with custom column' do
603
+ let(:datatable) { DatatableCustomColumn.new(sample_params) }
604
+
605
+ before do
606
+ create(:user, username: 'msmith', email: 'mary.smith@example.com', first_name: 'Mary', last_name: 'Smith')
607
+ create(:user, username: 'jsmith', email: 'john.smith@example.com', first_name: 'John', last_name: 'Smith')
608
+ create(:user, username: 'johndoe', email: 'johndoe@example.com', first_name: 'John', last_name: 'Doe')
609
+ end
610
+
611
+ it 'filters records' do
612
+ skip('unsupported database adapter') if RunningSpec.oracle? || RunningSpec.sqlite?
613
+
614
+ datatable.params[:columns]['4'][:search][:value] = 'John'
615
+ datatable.params[:order]['0'][:column] = '4'
616
+ expect(datatable.data.size).to eq 2
617
+ item = datatable.data.first
618
+ expect(item[:full_name]).to eq 'John Doe'
619
+ end
620
+ end
621
+ end
600
622
  end
601
623
 
602
624
  describe 'formatter option' do
@@ -18,7 +18,7 @@ RSpec.describe AjaxDatatablesRails::ORM::ActiveRecord do
18
18
  end
19
19
 
20
20
  it 'paginates records properly' do
21
- if ENV['DB_ADAPTER'] == 'oracle_enhanced'
21
+ if RunningSpec.oracle?
22
22
  if Rails.version.in? %w[4.2.11]
23
23
  expect(datatable.paginate_records(records).to_sql).to include(
24
24
  'rownum <= 10'
@@ -36,7 +36,7 @@ RSpec.describe AjaxDatatablesRails::ORM::ActiveRecord do
36
36
 
37
37
  datatable.params[:start] = '26'
38
38
  datatable.params[:length] = '25'
39
- if ENV['DB_ADAPTER'] == 'oracle_enhanced'
39
+ if RunningSpec.oracle?
40
40
  if Rails.version.in? %w[4.2.11]
41
41
  expect(datatable.paginate_records(records).to_sql).to include(
42
42
  'rownum <= 51'
@@ -51,7 +51,7 @@ RSpec.describe AjaxDatatablesRails::ORM::ActiveRecord do
51
51
  after { datatable.nulls_last = false }
52
52
 
53
53
  it 'can handle multiple sorting columns' do
54
- skip('unsupported database adapter') if ENV['DB_ADAPTER'] == 'oracle_enhanced'
54
+ skip('unsupported database adapter') if RunningSpec.oracle?
55
55
 
56
56
  # set to order by Users username in ascending order, and
57
57
  # by Users email in descending order
@@ -65,7 +65,7 @@ RSpec.describe AjaxDatatablesRails::ORM::ActiveRecord do
65
65
 
66
66
  describe '#sort_records with nulls last using column config' do
67
67
  it 'can handle multiple sorting columns' do
68
- skip('unsupported database adapter') if ENV['DB_ADAPTER'] == 'oracle_enhanced'
68
+ skip('unsupported database adapter') if RunningSpec.oracle?
69
69
 
70
70
  # set to order by Users username in ascending order, and
71
71
  # by Users email in descending order
File without changes
@@ -0,0 +1,25 @@
1
+ <% adapter = ENV.fetch('DB_ADAPTER', 'postgresql') %>
2
+ test:
3
+ adapter: <%= adapter %>
4
+ database: ajax_datatables_rails
5
+ encoding: utf8
6
+
7
+ <% if adapter == 'postgresql' %>
8
+ host: '127.0.0.1'
9
+ port: 5432
10
+ username: 'postgres'
11
+ password: 'postgres'
12
+ <% elsif adapter == 'mysql2' %>
13
+ host: '127.0.0.1'
14
+ port: 3306
15
+ username: 'root'
16
+ password: 'root'
17
+ <% elsif adapter == 'oracle_enhanced' %>
18
+ host: '127.0.0.1/xe'
19
+ username: <%= ENV.fetch('USER') %>
20
+ password: <%= ENV.fetch('USER') %>
21
+ database: 'xe'
22
+ <% elsif adapter == 'sqlite3' %>
23
+ # database: ':memory:'
24
+ database: db/ajax_datatables_rails.sqlite3
25
+ <% end %>
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ Rails.application.routes.draw do
4
+ # Add your own routes here, or remove this file if you don't have need for it.
5
+ end
@@ -0,0 +1,3 @@
1
+ test:
2
+ service: Disk
3
+ root: /tmp/ajax-datatables-rails/tmp/storage
@@ -1,8 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  ActiveRecord::Schema.define do
4
- self.verbose = false
5
-
6
4
  create_table :users, force: true do |t|
7
5
  t.string :username
8
6
  t.string :email
@@ -12,5 +10,4 @@ ActiveRecord::Schema.define do
12
10
 
13
11
  t.timestamps null: false
14
12
  end
15
-
16
13
  end
@@ -0,0 +1 @@
1
+ *.log
File without changes
data/spec/spec_helper.rb CHANGED
@@ -1,5 +1,10 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'combustion'
4
+
5
+ Combustion.path = 'spec/dummy'
6
+ Combustion.initialize! :active_record, :action_controller
7
+
3
8
  require 'simplecov'
4
9
  require 'rspec'
5
10
  require 'rspec/retry'
@@ -7,9 +12,6 @@ require 'database_cleaner'
7
12
  require 'factory_bot'
8
13
  require 'faker'
9
14
  require 'pry'
10
- require 'rails'
11
- require 'active_record'
12
- require 'action_controller'
13
15
 
14
16
  # Start Simplecov
15
17
  SimpleCov.start do
@@ -61,28 +63,23 @@ RSpec.configure do |config|
61
63
  end
62
64
  end
63
65
 
64
- # Configure ActiveRecord
65
- adapter = ENV.fetch('DB_ADAPTER', 'postgresql')
66
-
67
- options = {
68
- adapter: adapter,
69
- database: 'ajax_datatables_rails',
70
- encoding: 'utf8',
71
- }
72
-
73
- options =
74
- case adapter
75
- when 'postgresql'
76
- options.merge(host: '127.0.0.1', port: 5432, username: 'postgres', password: 'postgres')
77
- when 'mysql2'
78
- options.merge(host: '127.0.0.1', port: 3306, username: 'root', password: 'root')
79
- when 'oracle_enhanced'
80
- options.merge(host: '127.0.0.1/xe', username: ENV['USER'], password: ENV['USER'], database: 'xe')
81
- when 'sqlite3'
82
- options.merge(database: ':memory:')
66
+ class RunningSpec
67
+ def self.sqlite?
68
+ ENV['DB_ADAPTER'] == 'sqlite3'
69
+ end
70
+
71
+ def self.oracle?
72
+ ENV['DB_ADAPTER'] == 'oracle_enhanced'
83
73
  end
84
74
 
85
- ActiveRecord::Base.establish_connection(options)
75
+ def self.mysql?
76
+ ENV['DB_ADAPTER'] == 'mysql2'
77
+ end
78
+
79
+ def self.postgresql?
80
+ ENV['DB_ADAPTER'] == 'postgresql'
81
+ end
82
+ end
86
83
 
87
84
  # Require our gem
88
85
  require 'ajax-datatables-rails'
@@ -7,6 +7,7 @@ class ComplexDatatable < AjaxDatatablesRails::ActiveRecord
7
7
  email: { source: 'User.email' },
8
8
  first_name: { source: 'User.first_name' },
9
9
  last_name: { source: 'User.last_name' },
10
+ full_name: { source: 'full_name' },
10
11
  post_id: { source: 'User.post_id', orderable: false },
11
12
  created_at: { source: 'User.created_at' },
12
13
  }
@@ -19,6 +20,7 @@ class ComplexDatatable < AjaxDatatablesRails::ActiveRecord
19
20
  email: record.email,
20
21
  first_name: record.first_name,
21
22
  last_name: record.last_name,
23
+ full_name: record.full_name,
22
24
  post_id: record.post_id,
23
25
  created_at: record.created_at,
24
26
  }
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ class DatatableCustomColumn < ComplexDatatable
4
+ def view_columns
5
+ super.deep_merge(full_name: { cond: filter_full_name })
6
+ end
7
+
8
+ def get_raw_records
9
+ User.select("*, CONCAT(first_name, ' ', last_name) as full_name")
10
+ end
11
+
12
+ private
13
+
14
+ def filter_full_name
15
+ ->(_column, value) { ::Arel::Nodes::SqlLiteral.new("CONCAT(first_name, ' ', last_name)").matches("#{value}%") }
16
+ end
17
+ end
@@ -31,12 +31,18 @@ def sample_params
31
31
  }
32
32
  },
33
33
  '4' => {
34
- 'data' => 'post_id', 'name' => '', 'searchable' => 'true', 'orderable' => 'true',
34
+ 'data' => 'full_name', 'name' => '', 'searchable' => 'true', 'orderable' => 'true',
35
35
  'search' => {
36
36
  'value' => '', 'regex' => 'false'
37
37
  }
38
38
  },
39
39
  '5' => {
40
+ 'data' => 'post_id', 'name' => '', 'searchable' => 'true', 'orderable' => 'true',
41
+ 'search' => {
42
+ 'value' => '', 'regex' => 'false'
43
+ }
44
+ },
45
+ '6' => {
40
46
  'data' => 'created_at', 'name' => '', 'searchable' => 'true', 'orderable' => 'true',
41
47
  'search' => {
42
48
  'value' => '', 'regex' => 'false'
@@ -1,4 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class User < ActiveRecord::Base
4
+ def full_name
5
+ "#{first_name} #{last_name}"
6
+ end
4
7
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ajax-datatables-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.1
4
+ version: 1.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Joel Quenneville
@@ -9,8 +9,22 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2021-02-09 00:00:00.000000000 Z
12
+ date: 2022-12-18 00:00:00.000000000 Z
13
13
  dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: rails
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - ">="
19
+ - !ruby/object:Gem::Version
20
+ version: '5.2'
21
+ type: :runtime
22
+ prerelease: false
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - ">="
26
+ - !ruby/object:Gem::Version
27
+ version: '5.2'
14
28
  - !ruby/object:Gem::Dependency
15
29
  name: zeitwerk
16
30
  requirement: !ruby/object:Gem::Requirement
@@ -53,6 +67,20 @@ dependencies:
53
67
  - - ">="
54
68
  - !ruby/object:Gem::Version
55
69
  version: '0'
70
+ - !ruby/object:Gem::Dependency
71
+ name: combustion
72
+ requirement: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - "~>"
75
+ - !ruby/object:Gem::Version
76
+ version: '1.3'
77
+ type: :development
78
+ prerelease: false
79
+ version_requirements: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - "~>"
82
+ - !ruby/object:Gem::Version
83
+ version: '1.3'
56
84
  - !ruby/object:Gem::Dependency
57
85
  name: database_cleaner
58
86
  requirement: !ruby/object:Gem::Requirement
@@ -152,19 +180,19 @@ dependencies:
152
180
  - !ruby/object:Gem::Version
153
181
  version: '0'
154
182
  - !ruby/object:Gem::Dependency
155
- name: rails
183
+ name: puma
156
184
  requirement: !ruby/object:Gem::Requirement
157
185
  requirements:
158
186
  - - ">="
159
187
  - !ruby/object:Gem::Version
160
- version: '5.2'
188
+ version: '0'
161
189
  type: :development
162
190
  prerelease: false
163
191
  version_requirements: !ruby/object:Gem::Requirement
164
192
  requirements:
165
193
  - - ">="
166
194
  - !ruby/object:Gem::Version
167
- version: '5.2'
195
+ version: '0'
168
196
  - !ruby/object:Gem::Dependency
169
197
  name: rake
170
198
  requirement: !ruby/object:Gem::Requirement
@@ -235,6 +263,20 @@ dependencies:
235
263
  - - ">="
236
264
  - !ruby/object:Gem::Version
237
265
  version: '0'
266
+ - !ruby/object:Gem::Dependency
267
+ name: sqlite3
268
+ requirement: !ruby/object:Gem::Requirement
269
+ requirements:
270
+ - - "~>"
271
+ - !ruby/object:Gem::Version
272
+ version: 1.4.0
273
+ type: :development
274
+ prerelease: false
275
+ version_requirements: !ruby/object:Gem::Requirement
276
+ requirements:
277
+ - - "~>"
278
+ - !ruby/object:Gem::Version
279
+ version: 1.4.0
238
280
  description: A wrapper around datatable's ajax methods that allow synchronization
239
281
  with server-side pagination in a rails app
240
282
  email:
@@ -257,18 +299,22 @@ files:
257
299
  - README.md
258
300
  - Rakefile
259
301
  - ajax-datatables-rails.gemspec
302
+ - appraisal.yml
260
303
  - bin/_guard-core
261
304
  - bin/appraisal
262
305
  - bin/bundle
263
306
  - bin/guard
307
+ - bin/rackup
264
308
  - bin/rake
265
309
  - bin/rspec
266
310
  - bin/rubocop
311
+ - config.ru
267
312
  - doc/migrate.md
268
313
  - doc/webpack.md
269
- - gemfiles/rails_5.2.4.gemfile
270
- - gemfiles/rails_6.0.3.gemfile
271
- - gemfiles/rails_6.1.0.gemfile
314
+ - gemfiles/rails_5.2.8.gemfile
315
+ - gemfiles/rails_6.0.6.gemfile
316
+ - gemfiles/rails_6.1.7.gemfile
317
+ - gemfiles/rails_7.0.4.gemfile
272
318
  - lib/ajax-datatables-rails.rb
273
319
  - lib/ajax-datatables-rails/active_record.rb
274
320
  - lib/ajax-datatables-rails/base.rb
@@ -294,6 +340,13 @@ files:
294
340
  - spec/ajax-datatables-rails/orm/active_record_filter_records_spec.rb
295
341
  - spec/ajax-datatables-rails/orm/active_record_paginate_records_spec.rb
296
342
  - spec/ajax-datatables-rails/orm/active_record_sort_records_spec.rb
343
+ - spec/dummy/app/assets/config/manifest.js
344
+ - spec/dummy/config/database.yml
345
+ - spec/dummy/config/routes.rb
346
+ - spec/dummy/config/storage.yml
347
+ - spec/dummy/db/schema.rb
348
+ - spec/dummy/log/.gitignore
349
+ - spec/dummy/public/favicon.ico
297
350
  - spec/factories/user.rb
298
351
  - spec/install_oracle.sh
299
352
  - spec/spec_helper.rb
@@ -304,10 +357,10 @@ files:
304
357
  - spec/support/datatables/datatable_cond_proc.rb
305
358
  - spec/support/datatables/datatable_cond_string.rb
306
359
  - spec/support/datatables/datatable_cond_unknown.rb
360
+ - spec/support/datatables/datatable_custom_column.rb
307
361
  - spec/support/datatables/datatable_order_nulls_last.rb
308
362
  - spec/support/helpers/params.rb
309
363
  - spec/support/models/user.rb
310
- - spec/support/schema.rb
311
364
  homepage: https://github.com/jbox-web/ajax-datatables-rails
312
365
  licenses:
313
366
  - MIT
@@ -324,14 +377,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
324
377
  requirements:
325
378
  - - ">="
326
379
  - !ruby/object:Gem::Version
327
- version: 2.5.0
380
+ version: 2.7.0
328
381
  required_rubygems_version: !ruby/object:Gem::Requirement
329
382
  requirements:
330
383
  - - ">="
331
384
  - !ruby/object:Gem::Version
332
385
  version: '0'
333
386
  requirements: []
334
- rubygems_version: 3.2.7
387
+ rubygems_version: 3.3.26
335
388
  signing_key:
336
389
  specification_version: 4
337
390
  summary: A gem that simplifies using datatables and hundreds of records via ajax
@@ -1,11 +0,0 @@
1
- # This file was generated by Appraisal
2
-
3
- source "https://rubygems.org"
4
-
5
- gem "rails", "5.2.4"
6
- gem "activerecord-oracle_enhanced-adapter", "~> 5.2.0"
7
- gem "sqlite3", "~> 1.3.0"
8
- gem "mysql2"
9
- gem "ruby-oci8" if ENV["DB_ADAPTER"] == "oracle_enhanced"
10
-
11
- gemspec path: "../"
@@ -1,11 +0,0 @@
1
- # This file was generated by Appraisal
2
-
3
- source "https://rubygems.org"
4
-
5
- gem "rails", "6.0.3"
6
- gem "activerecord-oracle_enhanced-adapter", "~> 6.0.0"
7
- gem "sqlite3", "~> 1.4.0"
8
- gem "mysql2"
9
- gem "ruby-oci8" if ENV["DB_ADAPTER"] == "oracle_enhanced"
10
-
11
- gemspec path: "../"
@@ -1,11 +0,0 @@
1
- # This file was generated by Appraisal
2
-
3
- source "https://rubygems.org"
4
-
5
- gem "rails", "6.1.0"
6
- gem "activerecord-oracle_enhanced-adapter", "~> 6.1.0"
7
- gem "sqlite3", "~> 1.4.0"
8
- gem "mysql2"
9
- gem "ruby-oci8" if ENV["DB_ADAPTER"] == "oracle_enhanced"
10
-
11
- gemspec path: "../"