acts-as-taggable-on 4.0.0 → 8.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (71) hide show
  1. checksums.yaml +5 -5
  2. data/.github/workflows/spec.yml +95 -0
  3. data/.gitignore +1 -1
  4. data/Appraisals +12 -10
  5. data/CHANGELOG.md +206 -71
  6. data/CONTRIBUTING.md +13 -0
  7. data/Gemfile +1 -1
  8. data/README.md +79 -13
  9. data/acts-as-taggable-on.gemspec +2 -6
  10. data/db/migrate/1_acts_as_taggable_on_migration.rb +14 -8
  11. data/db/migrate/2_add_missing_unique_indices.rb +14 -9
  12. data/db/migrate/3_add_taggings_counter_cache_to_tags.rb +9 -4
  13. data/db/migrate/4_add_missing_taggable_index.rb +8 -3
  14. data/db/migrate/5_change_collation_for_tag_names.rb +7 -2
  15. data/db/migrate/6_add_missing_indexes_on_taggings.rb +22 -0
  16. data/db/migrate/7_add_tenant_to_taggings.rb +16 -0
  17. data/gemfiles/activerecord_5.0.gemfile +11 -5
  18. data/gemfiles/activerecord_5.1.gemfile +21 -0
  19. data/gemfiles/activerecord_5.2.gemfile +21 -0
  20. data/gemfiles/activerecord_6.0.gemfile +21 -0
  21. data/gemfiles/activerecord_6.1.gemfile +23 -0
  22. data/lib/acts-as-taggable-on.rb +6 -2
  23. data/lib/acts_as_taggable_on/tag.rb +23 -23
  24. data/lib/acts_as_taggable_on/tag_list.rb +1 -0
  25. data/lib/acts_as_taggable_on/taggable.rb +18 -1
  26. data/lib/acts_as_taggable_on/taggable/cache.rb +38 -34
  27. data/lib/acts_as_taggable_on/taggable/collection.rb +9 -7
  28. data/lib/acts_as_taggable_on/taggable/core.rb +49 -179
  29. data/lib/acts_as_taggable_on/taggable/ownership.rb +16 -5
  30. data/lib/acts_as_taggable_on/taggable/related.rb +1 -1
  31. data/lib/acts_as_taggable_on/taggable/tag_list_type.rb +4 -0
  32. data/lib/acts_as_taggable_on/taggable/tagged_with_query.rb +16 -0
  33. data/lib/acts_as_taggable_on/taggable/tagged_with_query/all_tags_query.rb +111 -0
  34. data/lib/acts_as_taggable_on/taggable/tagged_with_query/any_tags_query.rb +70 -0
  35. data/lib/acts_as_taggable_on/taggable/tagged_with_query/exclude_tags_query.rb +82 -0
  36. data/lib/acts_as_taggable_on/taggable/tagged_with_query/query_base.rb +61 -0
  37. data/lib/acts_as_taggable_on/tagger.rb +3 -3
  38. data/lib/acts_as_taggable_on/tagging.rb +9 -4
  39. data/lib/acts_as_taggable_on/utils.rb +4 -4
  40. data/lib/acts_as_taggable_on/version.rb +1 -2
  41. data/spec/acts_as_taggable_on/acts_as_taggable_on_spec.rb +4 -12
  42. data/spec/acts_as_taggable_on/caching_spec.rb +34 -10
  43. data/spec/acts_as_taggable_on/{taggable/dirty_spec.rb → dirty_spec.rb} +28 -13
  44. data/spec/acts_as_taggable_on/single_table_inheritance_spec.rb +28 -8
  45. data/spec/acts_as_taggable_on/tag_spec.rb +16 -1
  46. data/spec/acts_as_taggable_on/taggable_spec.rb +22 -15
  47. data/spec/acts_as_taggable_on/tagger_spec.rb +2 -2
  48. data/spec/acts_as_taggable_on/tagging_spec.rb +26 -0
  49. data/spec/internal/app/models/altered_inheriting_taggable_model.rb +2 -0
  50. data/spec/internal/app/models/cached_model_with_array.rb +6 -0
  51. data/spec/internal/app/models/columns_override_model.rb +5 -0
  52. data/spec/internal/app/models/company.rb +1 -1
  53. data/spec/internal/app/models/inheriting_taggable_model.rb +2 -0
  54. data/spec/internal/app/models/market.rb +1 -1
  55. data/spec/internal/app/models/non_standard_id_taggable_model.rb +1 -1
  56. data/spec/internal/app/models/student.rb +2 -0
  57. data/spec/internal/app/models/taggable_model.rb +3 -0
  58. data/spec/internal/app/models/user.rb +1 -1
  59. data/spec/internal/config/database.yml.sample +4 -8
  60. data/spec/internal/db/schema.rb +17 -5
  61. data/spec/spec_helper.rb +0 -1
  62. data/spec/support/database.rb +4 -4
  63. metadata +29 -68
  64. data/.travis.yml +0 -36
  65. data/UPGRADING.md +0 -8
  66. data/db/migrate/6_add_missing_indexes.rb +0 -12
  67. data/gemfiles/activerecord_4.0.gemfile +0 -16
  68. data/gemfiles/activerecord_4.1.gemfile +0 -16
  69. data/gemfiles/activerecord_4.2.gemfile +0 -15
  70. data/lib/acts_as_taggable_on/taggable/dirty.rb +0 -36
  71. data/spec/internal/app/models/models.rb +0 -90
data/.travis.yml DELETED
@@ -1,36 +0,0 @@
1
- language: ruby
2
- cache: bundler
3
-
4
- rvm:
5
- - 2.3.1
6
- - 2.2.5
7
- - 2.1
8
- - 2.0.0
9
-
10
- env:
11
- - DB=sqlite3
12
- - DB=mysql
13
- - DB=postgresql
14
-
15
- gemfile:
16
- - gemfiles/activerecord_5.0.gemfile
17
- - gemfiles/activerecord_4.2.gemfile
18
- - gemfiles/activerecord_4.1.gemfile
19
- - gemfiles/activerecord_4.0.gemfile
20
-
21
- sudo: false
22
-
23
- bundler_args: '--without local_development --jobs 3 --retry 3'
24
-
25
- before_install:
26
- - gem install bundler
27
-
28
- script: bundle exec rake
29
-
30
- matrix:
31
- exclude:
32
- - rvm: 2.0.0
33
- gemfile: gemfiles/activerecord_5.0.gemfile
34
- - rvm: 2.1
35
- gemfile: gemfiles/activerecord_5.0.gemfile
36
- fast_finish: true
data/UPGRADING.md DELETED
@@ -1,8 +0,0 @@
1
- When upgrading
2
-
3
- Re-run the migrations generator
4
-
5
- rake acts_as_taggable_on_engine:install:migrations
6
-
7
- This will create any new migrations and skip existing ones
8
- Version 3.5.0 has a migration for mysql adapter
@@ -1,12 +0,0 @@
1
- class AddMissingIndexes < ActiveRecord::Migration
2
- def change
3
- add_index :taggings, :tag_id
4
- add_index :taggings, :taggable_id
5
- add_index :taggings, :taggable_type
6
- add_index :taggings, :tagger_id
7
- add_index :taggings, :context
8
-
9
- add_index :taggings, [:tagger_id, :tagger_type]
10
- add_index :taggings, [:taggable_id, :taggable_type, :tagger_id, :context], name: 'taggings_idy'
11
- end
12
- end
@@ -1,16 +0,0 @@
1
- # This file was generated by Appraisal
2
-
3
- source "https://rubygems.org"
4
-
5
- gem "activerecord", "~> 4.0.0"
6
- gem "mysql2", "~> 0.3.21"
7
-
8
- group :local_development do
9
- gem "guard"
10
- gem "guard-rspec"
11
- gem "appraisal"
12
- gem "rake"
13
- gem "byebug", :platforms => [:mri_21, :mri_22, :mri_23]
14
- end
15
-
16
- gemspec :path => "../"
@@ -1,16 +0,0 @@
1
- # This file was generated by Appraisal
2
-
3
- source "https://rubygems.org"
4
-
5
- gem "activerecord", "~> 4.1.0"
6
- gem "mysql2", "~> 0.3.21"
7
-
8
- group :local_development do
9
- gem "guard"
10
- gem "guard-rspec"
11
- gem "appraisal"
12
- gem "rake"
13
- gem "byebug", :platforms => [:mri_21, :mri_22, :mri_23]
14
- end
15
-
16
- gemspec :path => "../"
@@ -1,15 +0,0 @@
1
- # This file was generated by Appraisal
2
-
3
- source "https://rubygems.org"
4
-
5
- gem "activerecord", "~> 4.2.0"
6
-
7
- group :local_development do
8
- gem "guard"
9
- gem "guard-rspec"
10
- gem "appraisal"
11
- gem "rake"
12
- gem "byebug", :platforms => [:mri_21, :mri_22, :mri_23]
13
- end
14
-
15
- gemspec :path => "../"
@@ -1,36 +0,0 @@
1
- module ActsAsTaggableOn::Taggable
2
- module Dirty
3
- def self.included(base)
4
- base.extend ActsAsTaggableOn::Taggable::Dirty::ClassMethods
5
-
6
- base.initialize_acts_as_taggable_on_dirty
7
- end
8
-
9
- module ClassMethods
10
- def initialize_acts_as_taggable_on_dirty
11
- tag_types.map(&:to_s).each do |tags_type|
12
- tag_type = tags_type.to_s.singularize
13
-
14
- class_eval <<-RUBY, __FILE__, __LINE__ + 1
15
- def #{tag_type}_list_changed?
16
- changed_attributes.include?("#{tag_type}_list")
17
- end
18
-
19
- def #{tag_type}_list_was
20
- changed_attributes.include?("#{tag_type}_list") ? changed_attributes["#{tag_type}_list"] : __send__("#{tag_type}_list")
21
- end
22
-
23
- def #{tag_type}_list_change
24
- [changed_attributes['#{tag_type}_list'], __send__('#{tag_type}_list')] if changed_attributes.include?("#{tag_type}_list")
25
- end
26
-
27
- def #{tag_type}_list_changes
28
- [changed_attributes['#{tag_type}_list'], __send__('#{tag_type}_list')] if changed_attributes.include?("#{tag_type}_list")
29
- end
30
- RUBY
31
-
32
- end
33
- end
34
- end
35
- end
36
- end
@@ -1,90 +0,0 @@
1
- class TaggableModel < ActiveRecord::Base
2
- acts_as_taggable
3
- acts_as_taggable_on :languages
4
- acts_as_taggable_on :skills
5
- acts_as_taggable_on :needs, :offerings
6
- has_many :untaggable_models
7
-
8
- attr_reader :tag_list_submethod_called
9
-
10
- def tag_list=(v)
11
- @tag_list_submethod_called = true
12
- super
13
- end
14
- end
15
-
16
- class CachedModel < ActiveRecord::Base
17
- acts_as_taggable
18
- end
19
-
20
- class OtherCachedModel < ActiveRecord::Base
21
- acts_as_taggable_on :languages, :statuses, :glasses
22
- end
23
-
24
- class OtherTaggableModel < ActiveRecord::Base
25
- acts_as_taggable_on :tags, :languages
26
- acts_as_taggable_on :needs, :offerings
27
- end
28
-
29
- class InheritingTaggableModel < TaggableModel
30
- end
31
-
32
- class AlteredInheritingTaggableModel < TaggableModel
33
- acts_as_taggable_on :parts
34
- end
35
-
36
- class Market < ActsAsTaggableOn::Tag
37
- end
38
-
39
- class Company < ActiveRecord::Base
40
- acts_as_taggable_on :locations, :markets
41
-
42
- has_many :markets, :through => :market_taggings, :source => :tag
43
-
44
- private
45
-
46
- def find_or_create_tags_from_list_with_context(tag_list, context)
47
- if context.to_sym == :markets
48
- Market.find_or_create_all_with_like_by_name(tag_list)
49
- else
50
- super
51
- end
52
- end
53
- end
54
-
55
- class User < ActiveRecord::Base
56
- acts_as_tagger
57
- end
58
-
59
- class Student < User
60
- end
61
-
62
- class UntaggableModel < ActiveRecord::Base
63
- belongs_to :taggable_model
64
- end
65
-
66
- class NonStandardIdTaggableModel < ActiveRecord::Base
67
- self.primary_key = :an_id
68
- acts_as_taggable
69
- acts_as_taggable_on :languages
70
- acts_as_taggable_on :skills
71
- acts_as_taggable_on :needs, :offerings
72
- has_many :untaggable_models
73
- end
74
-
75
- class OrderedTaggableModel < ActiveRecord::Base
76
- acts_as_ordered_taggable
77
- acts_as_ordered_taggable_on :colours
78
- end
79
-
80
- if using_postgresql?
81
- class CachedModelWithArray < ActiveRecord::Base
82
- acts_as_taggable
83
- end
84
- if postgresql_support_json?
85
- class TaggableModelWithJson < ActiveRecord::Base
86
- acts_as_taggable
87
- acts_as_taggable_on :skills
88
- end
89
- end
90
- end