acts_as_list 0.7.4 → 1.1.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 (52) hide show
  1. checksums.yaml +5 -13
  2. data/.github/FUNDING.yml +3 -0
  3. data/.github/dependabot.yml +6 -0
  4. data/.github/workflows/ci.yml +123 -0
  5. data/.gitignore +1 -0
  6. data/.travis.yml +50 -12
  7. data/Appraisals +39 -6
  8. data/CHANGELOG.md +565 -148
  9. data/Gemfile +19 -14
  10. data/README.md +206 -19
  11. data/Rakefile +4 -4
  12. data/acts_as_list.gemspec +16 -11
  13. data/gemfiles/rails_4_2.gemfile +18 -9
  14. data/gemfiles/rails_5_0.gemfile +31 -0
  15. data/gemfiles/rails_5_1.gemfile +31 -0
  16. data/gemfiles/rails_5_2.gemfile +31 -0
  17. data/gemfiles/rails_6_0.gemfile +31 -0
  18. data/gemfiles/rails_6_1.gemfile +31 -0
  19. data/gemfiles/rails_7_0.gemfile +31 -0
  20. data/init.rb +2 -0
  21. data/lib/acts_as_list/active_record/acts/active_record.rb +5 -0
  22. data/lib/acts_as_list/active_record/acts/add_new_at_method_definer.rb +11 -0
  23. data/lib/acts_as_list/active_record/acts/aux_method_definer.rb +11 -0
  24. data/lib/acts_as_list/active_record/acts/callback_definer.rb +19 -0
  25. data/lib/acts_as_list/active_record/acts/list.rb +299 -306
  26. data/lib/acts_as_list/active_record/acts/no_update.rb +125 -0
  27. data/lib/acts_as_list/active_record/acts/position_column_method_definer.rb +101 -0
  28. data/lib/acts_as_list/active_record/acts/scope_method_definer.rb +77 -0
  29. data/lib/acts_as_list/active_record/acts/sequential_updates_method_definer.rb +28 -0
  30. data/lib/acts_as_list/active_record/acts/top_of_list_method_definer.rb +15 -0
  31. data/lib/acts_as_list/version.rb +3 -1
  32. data/lib/acts_as_list.rb +11 -14
  33. data/test/database.yml +18 -0
  34. data/test/helper.rb +50 -2
  35. data/test/shared.rb +3 -0
  36. data/test/shared_array_scope_list.rb +21 -4
  37. data/test/shared_list.rb +86 -12
  38. data/test/shared_list_sub.rb +63 -2
  39. data/test/shared_no_addition.rb +50 -2
  40. data/test/shared_quoting.rb +23 -0
  41. data/test/shared_top_addition.rb +36 -13
  42. data/test/shared_zero_based.rb +13 -0
  43. data/test/test_default_scope_with_select.rb +33 -0
  44. data/test/test_joined_list.rb +61 -0
  45. data/test/test_list.rb +601 -84
  46. data/test/test_no_update_for_extra_classes.rb +131 -0
  47. data/test/test_no_update_for_scope_destruction.rb +69 -0
  48. data/test/test_no_update_for_subclasses.rb +56 -0
  49. data/test/test_scope_with_user_defined_foreign_key.rb +42 -0
  50. metadata +56 -22
  51. data/gemfiles/rails_3_2.gemfile +0 -24
  52. data/gemfiles/rails_4_1.gemfile +0 -24
checksums.yaml CHANGED
@@ -1,15 +1,7 @@
1
1
  ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: !binary |-
4
- ODI0OTU2NzgzMmY0MmI3YjMyMDk2ZDg5YWJjNjkxZDE4ZjViODliYQ==
5
- data.tar.gz: !binary |-
6
- OThlMWNiYjU3MGRmMGQzNjA5NzQ1MDk1MzdiYTg1MGFjODJlNDJmYQ==
2
+ SHA256:
3
+ metadata.gz: ece77b4a7a9c6c50d1d7a188c91c6dedd4c1dba4c8ece714c2922b339c3b5490
4
+ data.tar.gz: e7d925c76332e504d6a3db3706c4362b962d5bef2f9c882023bef99a0763e2d1
7
5
  SHA512:
8
- metadata.gz: !binary |-
9
- ZDMzOWRkNzQ2ZjNmZGRlM2QxYzJkN2VjYzM2MGY1Yzk4MjE1MmZiOWQyZjY1
10
- NmY4Y2FjY2U4YjczNjliZjFmYzYwYmMzYTNlNTA2MjU4NmVlODFmMzg1NGY0
11
- OWNkN2Y4MGU2ZTM4YjM2YjY0MTZkNjcwMjk0NmQ1YzBkMmNjYjE=
12
- data.tar.gz: !binary |-
13
- Mzg4NGQwNmY2NjdjN2MxZWIzYWE4MWNiOTlkMTc5NGM5NTRiMzRmY2MwNDVh
14
- ODI2YTVhZmUwMzE1OTAwNzA1OWZjMjc3ZGNhZmI1Y2ZmNmU4NmYzNGQ3ZTc1
15
- OGUyZDE0NjZkZTVjNmQxZTJhOWUyNjdhOWIwMjJiMTg2YzA2NWI=
6
+ metadata.gz: 8ca617673d046ef18baab0a51d4e481ac10e7b044c569a9efb201c894be702aec66eb72cbc5364bb85b6374c144990fcc3c367b01cc62e0f431d87b6e41e0f4f
7
+ data.tar.gz: c1ce411f1aa503b28a837b714db52a4bcb42ae78542183f6641aa0d0f483c9c98b3521a4557554e9de539b12effeee6f901632636d61408e423c55d67287f47b
@@ -0,0 +1,3 @@
1
+ # These are supported funding model platforms
2
+
3
+ github: [brendon]
@@ -0,0 +1,6 @@
1
+ version: 2
2
+ updates:
3
+ - package-ecosystem: "github-actions"
4
+ directory: "/"
5
+ schedule:
6
+ interval: "weekly"
@@ -0,0 +1,123 @@
1
+ ---
2
+ name: CI
3
+ on: [push, pull_request]
4
+
5
+ jobs:
6
+ tests:
7
+ name: Ruby ${{ matrix.ruby }}, ${{ matrix.gemfile }}, DB ${{ matrix.db }}
8
+ runs-on: ${{ matrix.os }}
9
+ strategy:
10
+ fail-fast: false
11
+ matrix:
12
+ ruby:
13
+ - 2.4
14
+ - 2.5
15
+ - 2.6
16
+ - 2.7
17
+ - '3.0'
18
+ - 3.1
19
+ - 3.2
20
+ gemfile:
21
+ - gemfiles/rails_4_2.gemfile
22
+ - gemfiles/rails_5_0.gemfile
23
+ - gemfiles/rails_5_1.gemfile
24
+ - gemfiles/rails_5_2.gemfile
25
+ - gemfiles/rails_6_0.gemfile
26
+ - gemfiles/rails_6_1.gemfile
27
+ - gemfiles/rails_7_0.gemfile
28
+ db:
29
+ - sqlite
30
+ - mysql
31
+ - postgresql
32
+ exclude:
33
+ - ruby: 2.4
34
+ gemfile: gemfiles/rails_6_0.gemfile
35
+ - ruby: 2.4
36
+ gemfile: gemfiles/rails_6_1.gemfile
37
+ - ruby: 2.4
38
+ gemfile: gemfiles/rails_7_0.gemfile
39
+ - ruby: 2.5
40
+ gemfile: gemfiles/rails_7_0.gemfile
41
+ - ruby: 2.6
42
+ gemfile: gemfiles/rails_7_0.gemfile
43
+ - ruby: 2.7
44
+ gemfile: gemfiles/rails_4_2.gemfile
45
+ - ruby: 2.7
46
+ gemfile: gemfiles/rails_5_0.gemfile
47
+ db: sqlite
48
+ - ruby: '3.0'
49
+ gemfile: gemfiles/rails_4_2.gemfile
50
+ - ruby: '3.0'
51
+ gemfile: gemfiles/rails_5_0.gemfile
52
+ - ruby: '3.0'
53
+ gemfile: gemfiles/rails_5_1.gemfile
54
+ - ruby: '3.0'
55
+ gemfile: gemfiles/rails_5_2.gemfile
56
+ - ruby: 3.1
57
+ gemfile: gemfiles/rails_4_2.gemfile
58
+ - ruby: 3.1
59
+ gemfile: gemfiles/rails_5_0.gemfile
60
+ - ruby: 3.1
61
+ gemfile: gemfiles/rails_5_1.gemfile
62
+ - ruby: 3.1
63
+ gemfile: gemfiles/rails_5_2.gemfile
64
+ - ruby: 3.1
65
+ gemfile: gemfiles/rails_6_0.gemfile
66
+ - ruby: 3.2
67
+ gemfile: gemfiles/rails_4_2.gemfile
68
+ - ruby: 3.2
69
+ gemfile: gemfiles/rails_5_0.gemfile
70
+ - ruby: 3.2
71
+ gemfile: gemfiles/rails_5_1.gemfile
72
+ - ruby: 3.2
73
+ gemfile: gemfiles/rails_5_2.gemfile
74
+ - ruby: 3.2
75
+ gemfile: gemfiles/rails_6_0.gemfile
76
+ - ruby: 3.2
77
+ gemfile: gemfiles/rails_6_1.gemfile
78
+ os:
79
+ - ubuntu-latest
80
+ services:
81
+ mysql:
82
+ image: mysql:5.7
83
+ env:
84
+ MYSQL_ALLOW_EMPTY_PASSWORD: yes
85
+ ports:
86
+ - 3306:3306
87
+ options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3
88
+
89
+ postgres:
90
+ # Docker Hub image
91
+ image: postgres
92
+ # Provide the password for postgres
93
+ env:
94
+ POSTGRES_USER: postgres
95
+ POSTGRES_HOST_AUTH_METHOD: trust
96
+ ports:
97
+ - 5432:5432
98
+ # Set health checks to wait until postgres has started
99
+ options: >-
100
+ --health-cmd pg_isready
101
+ --health-interval 10s
102
+ --health-timeout 5s
103
+ --health-retries 5
104
+ env:
105
+ BUNDLE_GEMFILE: ${{ matrix.gemfile }}
106
+ DB: ${{ matrix.db }}
107
+ steps:
108
+ - uses: actions/checkout@v3
109
+ - name: Set up Ruby
110
+ uses: ruby/setup-ruby@v1
111
+ with:
112
+ ruby-version: ${{ matrix.ruby }}
113
+ bundler-cache: true
114
+ - name: "Create MySQL database"
115
+ if: ${{ env.DB == 'mysql' }}
116
+ run: |
117
+ mysql -h 127.0.0.1 -u root -e 'create database acts_as_list;'
118
+ - name: "Create PostgreSQL database"
119
+ if: ${{ env.DB == 'postgresql' }}
120
+ run: |
121
+ psql -c 'create database acts_as_list;' -h localhost -U postgres
122
+ - name: Run tests
123
+ run: bundle exec rake
data/.gitignore CHANGED
@@ -9,3 +9,4 @@ pkg/*
9
9
  .ruby-version
10
10
  # Appraisal generated lockfiles
11
11
  *.gemfile.lock
12
+ .DS_Store
data/.travis.yml CHANGED
@@ -1,17 +1,55 @@
1
1
  language: ruby
2
- # Explicit usage of containerized builds, should provide faster feedback
3
- # see https://docs.travis-ci.com/user/workers/container-based-infrastructure/
4
- # and https://docs.travis-ci.com/user/ci-environment/#Virtualization-environments
2
+ cache: bundler
5
3
  sudo: false
6
- before_install:
7
- - gem update bundler
4
+ before_script:
5
+ - gem uninstall -v '>= 2' -i $(rvm gemdir)@global -ax bundler || true
6
+ - gem install bundler -v '< 2'
7
+ - mysql -e 'create database acts_as_list;'
8
+ - psql -c 'create database acts_as_list;' -U postgres
8
9
  rvm:
9
- - 1.9.3
10
- - 2.0.0
11
- - 2.1.0
12
- - jruby-19mode
13
- - rbx-2
10
+ - 2.4
11
+ - 2.5
12
+ - 2.6
13
+ - 2.7
14
+ - 3.0
15
+ services:
16
+ - mysql
17
+ - postgresql
18
+ env:
19
+ - DB=sqlite
20
+ - DB=mysql
21
+ - DB=postgresql
14
22
  gemfile:
15
- - gemfiles/rails_3_2.gemfile
16
- - gemfiles/rails_4_1.gemfile
17
23
  - gemfiles/rails_4_2.gemfile
24
+ - gemfiles/rails_5_0.gemfile
25
+ - gemfiles/rails_5_1.gemfile
26
+ - gemfiles/rails_5_2.gemfile
27
+ - gemfiles/rails_6_0.gemfile
28
+ - gemfiles/rails_6_1.gemfile
29
+ matrix:
30
+ exclude:
31
+ - rvm: 2.4
32
+ gemfile: gemfiles/rails_6_0.gemfile
33
+ - rvm: 2.4
34
+ gemfile: gemfiles/rails_6_1.gemfile
35
+ # Ruby 2.7 uses a `bigdecimal` version that doesn't support BigDecimal.new
36
+ # that Rails 4.2 uses. See also:
37
+ # https://github.com/ruby/bigdecimal#which-version-should-you-select
38
+ - rvm: 2.7
39
+ gemfile: gemfiles/rails_4_2.gemfile
40
+ # Ruby 2.7 warning `sqlite3-1.3.13/lib/sqlite3/statement.rb:108: warning: rb_tainted_str_new is deprecated`
41
+ # and job wil exceed the maximum log length
42
+ # see also: https://github.com/sparklemotion/sqlite3-ruby/issues/276
43
+ - rvm: 2.7
44
+ gemfile: gemfiles/rails_5_0.gemfile
45
+ env: DB=sqlite
46
+ # Rails <6 does not support Ruby 3, see:
47
+ # https://github.com/rails/rails/issues/40938#issuecomment-751898275
48
+ - rvm: 3.0
49
+ gemfile: gemfiles/rails_4_2.gemfile
50
+ - rvm: 3.0
51
+ gemfile: gemfiles/rails_5_0.gemfile
52
+ - rvm: 3.0
53
+ gemfile: gemfiles/rails_5_1.gemfile
54
+ - rvm: 3.0
55
+ gemfile: gemfiles/rails_5_2.gemfile
data/Appraisals CHANGED
@@ -1,11 +1,44 @@
1
- appraise "rails-3-2" do
2
- gem "activerecord", "~> 3.2.21"
1
+ appraise "rails-4-2" do
2
+ group :mysql do
3
+ gem "mysql2", "~> 0.4.0"
4
+ end
5
+ group :postgresql do
6
+ gem "pg", "~> 0.18.4"
7
+ end
8
+ group :test do
9
+ gem "test_after_commit", "~> 0.4.2"
10
+ end
11
+ group :sqlite do
12
+ gem "sqlite3", "~> 1.3.13"
13
+ end
14
+
15
+ gem "activerecord", "~> 4.2.0"
16
+ end
17
+
18
+ appraise "rails-5-0" do
19
+ group :sqlite do
20
+ gem "sqlite3", "~> 1.3.13"
21
+ end
22
+
23
+ gem "activerecord", "~> 5.0.0"
3
24
  end
4
25
 
5
- appraise "rails-4-1" do
6
- gem "activerecord", "~> 4.1.10"
26
+ appraise "rails-5-1" do
27
+ gem "activerecord", "~> 5.1.0"
7
28
  end
8
29
 
9
- appraise "rails-4-2" do
10
- gem "activerecord", "~> 4.2.1"
30
+ appraise "rails-5-2" do
31
+ gem "activerecord", "~> 5.2.0"
32
+ end
33
+
34
+ appraise "rails-6-0" do
35
+ gem "activerecord", "~> 6.0.0"
36
+ end
37
+
38
+ appraise "rails-6-1" do
39
+ gem "activerecord", "~> 6.1.0"
40
+ end
41
+
42
+ appraise "rails-7-0" do
43
+ gem "activerecord", "~> 7.0.0"
11
44
  end