acts-as-taggable-on 4.0.0 → 8.0.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.
- checksums.yaml +5 -5
- data/.github/workflows/spec.yml +95 -0
- data/.gitignore +1 -1
- data/Appraisals +12 -10
- data/CHANGELOG.md +206 -71
- data/CONTRIBUTING.md +13 -0
- data/Gemfile +1 -1
- data/README.md +79 -13
- data/acts-as-taggable-on.gemspec +2 -6
- data/db/migrate/1_acts_as_taggable_on_migration.rb +14 -8
- data/db/migrate/2_add_missing_unique_indices.rb +14 -9
- data/db/migrate/3_add_taggings_counter_cache_to_tags.rb +9 -4
- data/db/migrate/4_add_missing_taggable_index.rb +8 -3
- data/db/migrate/5_change_collation_for_tag_names.rb +7 -2
- data/db/migrate/6_add_missing_indexes_on_taggings.rb +22 -0
- data/db/migrate/7_add_tenant_to_taggings.rb +16 -0
- data/gemfiles/activerecord_5.0.gemfile +11 -5
- data/gemfiles/activerecord_5.1.gemfile +21 -0
- data/gemfiles/activerecord_5.2.gemfile +21 -0
- data/gemfiles/activerecord_6.0.gemfile +21 -0
- data/gemfiles/activerecord_6.1.gemfile +23 -0
- data/lib/acts-as-taggable-on.rb +6 -2
- data/lib/acts_as_taggable_on/tag.rb +23 -23
- data/lib/acts_as_taggable_on/tag_list.rb +1 -0
- data/lib/acts_as_taggable_on/taggable.rb +18 -1
- data/lib/acts_as_taggable_on/taggable/cache.rb +38 -34
- data/lib/acts_as_taggable_on/taggable/collection.rb +9 -7
- data/lib/acts_as_taggable_on/taggable/core.rb +49 -179
- data/lib/acts_as_taggable_on/taggable/ownership.rb +16 -5
- data/lib/acts_as_taggable_on/taggable/related.rb +1 -1
- data/lib/acts_as_taggable_on/taggable/tag_list_type.rb +4 -0
- data/lib/acts_as_taggable_on/taggable/tagged_with_query.rb +16 -0
- data/lib/acts_as_taggable_on/taggable/tagged_with_query/all_tags_query.rb +111 -0
- data/lib/acts_as_taggable_on/taggable/tagged_with_query/any_tags_query.rb +70 -0
- data/lib/acts_as_taggable_on/taggable/tagged_with_query/exclude_tags_query.rb +82 -0
- data/lib/acts_as_taggable_on/taggable/tagged_with_query/query_base.rb +61 -0
- data/lib/acts_as_taggable_on/tagger.rb +3 -3
- data/lib/acts_as_taggable_on/tagging.rb +9 -4
- data/lib/acts_as_taggable_on/utils.rb +4 -4
- data/lib/acts_as_taggable_on/version.rb +1 -2
- data/spec/acts_as_taggable_on/acts_as_taggable_on_spec.rb +4 -12
- data/spec/acts_as_taggable_on/caching_spec.rb +34 -10
- data/spec/acts_as_taggable_on/{taggable/dirty_spec.rb → dirty_spec.rb} +28 -13
- data/spec/acts_as_taggable_on/single_table_inheritance_spec.rb +28 -8
- data/spec/acts_as_taggable_on/tag_spec.rb +16 -1
- data/spec/acts_as_taggable_on/taggable_spec.rb +22 -15
- data/spec/acts_as_taggable_on/tagger_spec.rb +2 -2
- data/spec/acts_as_taggable_on/tagging_spec.rb +26 -0
- data/spec/internal/app/models/altered_inheriting_taggable_model.rb +2 -0
- data/spec/internal/app/models/cached_model_with_array.rb +6 -0
- data/spec/internal/app/models/columns_override_model.rb +5 -0
- data/spec/internal/app/models/company.rb +1 -1
- data/spec/internal/app/models/inheriting_taggable_model.rb +2 -0
- data/spec/internal/app/models/market.rb +1 -1
- data/spec/internal/app/models/non_standard_id_taggable_model.rb +1 -1
- data/spec/internal/app/models/student.rb +2 -0
- data/spec/internal/app/models/taggable_model.rb +3 -0
- data/spec/internal/app/models/user.rb +1 -1
- data/spec/internal/config/database.yml.sample +4 -8
- data/spec/internal/db/schema.rb +17 -5
- data/spec/spec_helper.rb +0 -1
- data/spec/support/database.rb +4 -4
- metadata +29 -68
- data/.travis.yml +0 -36
- data/UPGRADING.md +0 -8
- data/db/migrate/6_add_missing_indexes.rb +0 -12
- data/gemfiles/activerecord_4.0.gemfile +0 -16
- data/gemfiles/activerecord_4.1.gemfile +0 -16
- data/gemfiles/activerecord_4.2.gemfile +0 -15
- data/lib/acts_as_taggable_on/taggable/dirty.rb +0 -36
- 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,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
|