acts_as_list 0.7.4 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
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