acts-as-taggable-on 7.0.0 → 9.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/spec.yml +76 -0
- data/Appraisals +13 -13
- data/CHANGELOG.md +27 -2
- data/Gemfile +1 -0
- data/README.md +32 -7
- data/acts-as-taggable-on.gemspec +2 -2
- data/db/migrate/1_acts_as_taggable_on_migration.rb +5 -8
- data/db/migrate/2_add_missing_unique_indices.rb +6 -8
- data/db/migrate/3_add_taggings_counter_cache_to_tags.rb +3 -6
- data/db/migrate/4_add_missing_taggable_index.rb +5 -7
- data/db/migrate/5_change_collation_for_tag_names.rb +4 -6
- data/db/migrate/6_add_missing_indexes_on_taggings.rb +15 -13
- data/db/migrate/7_add_tenant_to_taggings.rb +13 -0
- data/docker-compose.yml +15 -0
- data/gemfiles/activerecord_6.0.gemfile +5 -8
- data/gemfiles/activerecord_6.1.gemfile +3 -8
- data/gemfiles/{activerecord_5.2.gemfile → activerecord_7.0.gemfile} +6 -9
- data/lib/acts_as_taggable_on/default_parser.rb +8 -10
- data/lib/acts_as_taggable_on/engine.rb +2 -0
- data/lib/acts_as_taggable_on/generic_parser.rb +2 -0
- data/lib/acts_as_taggable_on/tag.rb +33 -27
- data/lib/acts_as_taggable_on/tag_list.rb +8 -11
- data/lib/acts_as_taggable_on/taggable/cache.rb +64 -62
- data/lib/acts_as_taggable_on/taggable/collection.rb +178 -142
- data/lib/acts_as_taggable_on/taggable/core.rb +250 -236
- data/lib/acts_as_taggable_on/taggable/ownership.rb +110 -98
- data/lib/acts_as_taggable_on/taggable/related.rb +60 -47
- data/lib/acts_as_taggable_on/taggable/tag_list_type.rb +6 -2
- data/lib/acts_as_taggable_on/taggable/tagged_with_query/all_tags_query.rb +110 -106
- data/lib/acts_as_taggable_on/taggable/tagged_with_query/any_tags_query.rb +57 -53
- data/lib/acts_as_taggable_on/taggable/tagged_with_query/exclude_tags_query.rb +63 -60
- data/lib/acts_as_taggable_on/taggable/tagged_with_query/query_base.rb +54 -46
- data/lib/acts_as_taggable_on/taggable/tagged_with_query.rb +14 -8
- data/lib/acts_as_taggable_on/taggable.rb +30 -12
- data/lib/acts_as_taggable_on/tagger.rb +9 -5
- data/lib/acts_as_taggable_on/tagging.rb +8 -4
- data/lib/acts_as_taggable_on/tags_helper.rb +3 -1
- data/lib/acts_as_taggable_on/utils.rb +4 -2
- data/lib/acts_as_taggable_on/version.rb +3 -1
- data/spec/acts_as_taggable_on/tag_spec.rb +16 -1
- data/spec/acts_as_taggable_on/taggable_spec.rb +6 -2
- data/spec/acts_as_taggable_on/tagging_spec.rb +26 -0
- data/spec/internal/app/models/taggable_model.rb +2 -0
- data/spec/internal/config/database.yml.sample +4 -8
- data/spec/internal/db/schema.rb +3 -0
- data/spec/support/database.rb +36 -26
- metadata +13 -22
- data/.travis.yml +0 -49
- data/UPGRADING.md +0 -8
- data/gemfiles/activerecord_5.0.gemfile +0 -21
- data/gemfiles/activerecord_5.1.gemfile +0 -21
@@ -49,6 +49,22 @@ describe ActsAsTaggableOn::Tagging do
|
|
49
49
|
ActsAsTaggableOn.remove_unused_tags = previous_setting
|
50
50
|
end
|
51
51
|
|
52
|
+
it 'should destroy unused tags after tagging destroyed when not using tags_counter' do
|
53
|
+
remove_unused_tags_previous_setting = ActsAsTaggableOn.remove_unused_tags
|
54
|
+
tags_counter_previous_setting = ActsAsTaggableOn.tags_counter
|
55
|
+
ActsAsTaggableOn.remove_unused_tags = true
|
56
|
+
ActsAsTaggableOn.tags_counter = false
|
57
|
+
|
58
|
+
ActsAsTaggableOn::Tag.destroy_all
|
59
|
+
@taggable = TaggableModel.create(name: 'Bob Jones')
|
60
|
+
@taggable.update_attribute :tag_list, 'aaa,bbb,ccc'
|
61
|
+
@taggable.update_attribute :tag_list, ''
|
62
|
+
expect(ActsAsTaggableOn::Tag.count).to eql(0)
|
63
|
+
|
64
|
+
ActsAsTaggableOn.remove_unused_tags = remove_unused_tags_previous_setting
|
65
|
+
ActsAsTaggableOn.tags_counter = tags_counter_previous_setting
|
66
|
+
end
|
67
|
+
|
52
68
|
describe 'context scopes' do
|
53
69
|
before do
|
54
70
|
@tagging_2 = ActsAsTaggableOn::Tagging.new
|
@@ -61,12 +77,14 @@ describe ActsAsTaggableOn::Tagging do
|
|
61
77
|
@tagging.tag = ActsAsTaggableOn::Tag.create(name: "Physics")
|
62
78
|
@tagging.tagger = @tagger
|
63
79
|
@tagging.context = 'Science'
|
80
|
+
@tagging.tenant = 'account1'
|
64
81
|
@tagging.save
|
65
82
|
|
66
83
|
@tagging_2.taggable = TaggableModel.create(name: "Satellites")
|
67
84
|
@tagging_2.tag = ActsAsTaggableOn::Tag.create(name: "Technology")
|
68
85
|
@tagging_2.tagger = @tagger_2
|
69
86
|
@tagging_2.context = 'Science'
|
87
|
+
@tagging_2.tenant = 'account1'
|
70
88
|
@tagging_2.save
|
71
89
|
|
72
90
|
@tagging_3.taggable = TaggableModel.create(name: "Satellites")
|
@@ -98,6 +116,14 @@ describe ActsAsTaggableOn::Tagging do
|
|
98
116
|
end
|
99
117
|
end
|
100
118
|
|
119
|
+
describe '.by_tenant' do
|
120
|
+
it "should find taggings by tenant" do
|
121
|
+
expect(ActsAsTaggableOn::Tagging.by_tenant('account1').length).to eq(2);
|
122
|
+
expect(ActsAsTaggableOn::Tagging.by_tenant('account1').first).to eq(@tagging);
|
123
|
+
expect(ActsAsTaggableOn::Tagging.by_tenant('account1').second).to eq(@tagging_2);
|
124
|
+
end
|
125
|
+
end
|
126
|
+
|
101
127
|
describe '.not_owned' do
|
102
128
|
before do
|
103
129
|
@tagging_4 = ActsAsTaggableOn::Tagging.new
|
@@ -4,16 +4,12 @@ sqlite3:
|
|
4
4
|
|
5
5
|
mysql:
|
6
6
|
adapter: mysql2
|
7
|
-
host:
|
7
|
+
host: 127.0.0.1
|
8
8
|
username: root
|
9
9
|
password:
|
10
10
|
database: acts_as_taggable_on
|
11
|
-
|
11
|
+
encoding: utf8
|
12
12
|
|
13
13
|
postgresql:
|
14
|
-
|
15
|
-
|
16
|
-
username: postgres
|
17
|
-
password:
|
18
|
-
database: acts_as_taggable_on
|
19
|
-
encoding: utf8
|
14
|
+
# Needs to be given as a URL to force connection via TCP
|
15
|
+
url: postgresql://postgres:postgres@127.0.0.1:5432/acts_as_taggable_on?encoding=utf8
|
data/spec/internal/db/schema.rb
CHANGED
@@ -21,6 +21,8 @@ ActiveRecord::Schema.define version: 0 do
|
|
21
21
|
# length for MyISAM table type: http://bit.ly/vgW2Ql
|
22
22
|
t.string :context, limit: 128
|
23
23
|
|
24
|
+
t.string :tenant , limit: 128
|
25
|
+
|
24
26
|
t.datetime :created_at
|
25
27
|
end
|
26
28
|
add_index ActsAsTaggableOn.taggings_table,
|
@@ -34,6 +36,7 @@ ActiveRecord::Schema.define version: 0 do
|
|
34
36
|
create_table :taggable_models, force: true do |t|
|
35
37
|
t.column :name, :string
|
36
38
|
t.column :type, :string
|
39
|
+
t.column :tenant_id, :integer
|
37
40
|
end
|
38
41
|
|
39
42
|
create_table :columns_override_models, force: true do |t|
|
data/spec/support/database.rb
CHANGED
@@ -1,36 +1,46 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
# set adapter to use, default is sqlite3
|
2
4
|
# to use an alternative adapter run => rake spec DB='postgresql'
|
3
5
|
db_name = ENV['DB'] || 'sqlite3'
|
4
|
-
database_yml = File.expand_path('
|
6
|
+
database_yml = File.expand_path('../internal/config/database.yml', __dir__)
|
5
7
|
|
6
|
-
|
8
|
+
unless File.exist?(database_yml)
|
9
|
+
raise "Please create #{database_yml} first to configure your database. Take a look at: #{database_yml}.sample"
|
10
|
+
end
|
7
11
|
|
8
|
-
|
12
|
+
ActiveRecord::Base.configurations = YAML.load_file(database_yml)
|
13
|
+
ActiveRecord::Base.logger = Logger.new(File.join(File.dirname(__FILE__), '../debug.log'))
|
14
|
+
ActiveRecord::Base.logger.level = ENV['CI'] ? ::Logger::ERROR : ::Logger::DEBUG
|
15
|
+
ActiveRecord::Migration.verbose = false
|
16
|
+
if ActiveRecord.version >= Gem::Version.new('7.0.0.alpha2')
|
17
|
+
ActiveRecord.default_timezone = :utc
|
18
|
+
else
|
9
19
|
ActiveRecord::Base.default_timezone = :utc
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
ActiveRecord::Base.establish_connection(db_name.to_sym)
|
17
|
-
ActiveRecord::Base.connection
|
18
|
-
rescue
|
19
|
-
case db_name
|
20
|
-
when /mysql/
|
21
|
-
ActiveRecord::Base.establish_connection(config.merge('database' => nil))
|
22
|
-
ActiveRecord::Base.connection.create_database(config['database'], {charset: 'utf8', collation: 'utf8_unicode_ci'})
|
23
|
-
when 'postgresql'
|
24
|
-
ActiveRecord::Base.establish_connection(config.merge('database' => 'postgres', 'schema_search_path' => 'public'))
|
25
|
-
ActiveRecord::Base.connection.create_database(config['database'], config.merge('encoding' => 'utf8'))
|
26
|
-
end
|
20
|
+
end
|
21
|
+
config = if ActiveRecord.version >= Gem::Version.new('6.1.0')
|
22
|
+
ActiveRecord::Base.configurations.configs_for(env_name: db_name)
|
23
|
+
else
|
24
|
+
ActiveSupport::HashWithIndifferentAccess.new(ActiveRecord::Base.configurations[db_name])
|
25
|
+
end
|
27
26
|
|
28
|
-
|
27
|
+
begin
|
28
|
+
ActiveRecord::Base.establish_connection(db_name.to_sym)
|
29
|
+
ActiveRecord::Base.connection
|
30
|
+
rescue StandardError
|
31
|
+
case db_name
|
32
|
+
when /mysql/
|
33
|
+
ActiveRecord::Base.establish_connection(config.merge('database' => nil))
|
34
|
+
ActiveRecord::Base.connection.create_database(config['database'],
|
35
|
+
{ charset: 'utf8', collation: 'utf8_unicode_ci' })
|
36
|
+
when 'postgresql'
|
37
|
+
ActiveRecord::Base.establish_connection(config.merge('database' => 'postgres',
|
38
|
+
'schema_search_path' => 'public'))
|
39
|
+
ActiveRecord::Base.connection.create_database(config['database'], config.merge('encoding' => 'utf8'))
|
29
40
|
end
|
30
41
|
|
31
|
-
|
32
|
-
Dir[File.dirname(__dir__) + '/internal/app/models/*.rb'].each { |f| require f }
|
33
|
-
|
34
|
-
else
|
35
|
-
fail "Please create #{database_yml} first to configure your database. Take a look at: #{database_yml}.sample"
|
42
|
+
ActiveRecord::Base.establish_connection(config)
|
36
43
|
end
|
44
|
+
|
45
|
+
require "#{File.dirname(__FILE__)}/../internal/db/schema.rb"
|
46
|
+
Dir["#{File.dirname(__dir__)}/internal/app/models/*.rb"].each { |f| require f }
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: acts-as-taggable-on
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 9.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Michael Bleigh
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2022-01-07 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: activerecord
|
@@ -17,20 +17,20 @@ dependencies:
|
|
17
17
|
requirements:
|
18
18
|
- - ">="
|
19
19
|
- !ruby/object:Gem::Version
|
20
|
-
version: '
|
20
|
+
version: '6.0'
|
21
21
|
- - "<"
|
22
22
|
- !ruby/object:Gem::Version
|
23
|
-
version: '
|
23
|
+
version: '7.1'
|
24
24
|
type: :runtime
|
25
25
|
prerelease: false
|
26
26
|
version_requirements: !ruby/object:Gem::Requirement
|
27
27
|
requirements:
|
28
28
|
- - ">="
|
29
29
|
- !ruby/object:Gem::Version
|
30
|
-
version: '
|
30
|
+
version: '6.0'
|
31
31
|
- - "<"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
33
|
+
version: '7.1'
|
34
34
|
- !ruby/object:Gem::Dependency
|
35
35
|
name: rspec-rails
|
36
36
|
requirement: !ruby/object:Gem::Requirement
|
@@ -110,9 +110,9 @@ executables: []
|
|
110
110
|
extensions: []
|
111
111
|
extra_rdoc_files: []
|
112
112
|
files:
|
113
|
+
- ".github/workflows/spec.yml"
|
113
114
|
- ".gitignore"
|
114
115
|
- ".rspec"
|
115
|
-
- ".travis.yml"
|
116
116
|
- Appraisals
|
117
117
|
- CHANGELOG.md
|
118
118
|
- CONTRIBUTING.md
|
@@ -121,7 +121,6 @@ files:
|
|
121
121
|
- LICENSE.md
|
122
122
|
- README.md
|
123
123
|
- Rakefile
|
124
|
-
- UPGRADING.md
|
125
124
|
- acts-as-taggable-on.gemspec
|
126
125
|
- db/migrate/1_acts_as_taggable_on_migration.rb
|
127
126
|
- db/migrate/2_add_missing_unique_indices.rb
|
@@ -129,11 +128,11 @@ files:
|
|
129
128
|
- db/migrate/4_add_missing_taggable_index.rb
|
130
129
|
- db/migrate/5_change_collation_for_tag_names.rb
|
131
130
|
- db/migrate/6_add_missing_indexes_on_taggings.rb
|
132
|
-
-
|
133
|
-
-
|
134
|
-
- gemfiles/activerecord_5.2.gemfile
|
131
|
+
- db/migrate/7_add_tenant_to_taggings.rb
|
132
|
+
- docker-compose.yml
|
135
133
|
- gemfiles/activerecord_6.0.gemfile
|
136
134
|
- gemfiles/activerecord_6.1.gemfile
|
135
|
+
- gemfiles/activerecord_7.0.gemfile
|
137
136
|
- lib/acts-as-taggable-on.rb
|
138
137
|
- lib/acts_as_taggable_on.rb
|
139
138
|
- lib/acts_as_taggable_on/default_parser.rb
|
@@ -200,15 +199,7 @@ homepage: https://github.com/mbleigh/acts-as-taggable-on
|
|
200
199
|
licenses:
|
201
200
|
- MIT
|
202
201
|
metadata: {}
|
203
|
-
post_install_message:
|
204
|
-
When upgrading
|
205
|
-
|
206
|
-
Re-run the migrations generator
|
207
|
-
|
208
|
-
rake acts_as_taggable_on_engine:install:migrations
|
209
|
-
|
210
|
-
This will create any new migrations and skip existing ones
|
211
|
-
Version 3.5.0 has a migration for mysql adapter
|
202
|
+
post_install_message:
|
212
203
|
rdoc_options: []
|
213
204
|
require_paths:
|
214
205
|
- lib
|
@@ -216,14 +207,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
216
207
|
requirements:
|
217
208
|
- - ">="
|
218
209
|
- !ruby/object:Gem::Version
|
219
|
-
version: 2.
|
210
|
+
version: 2.5.0
|
220
211
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
221
212
|
requirements:
|
222
213
|
- - ">="
|
223
214
|
- !ruby/object:Gem::Version
|
224
215
|
version: '0'
|
225
216
|
requirements: []
|
226
|
-
rubygems_version: 3.
|
217
|
+
rubygems_version: 3.2.22
|
227
218
|
signing_key:
|
228
219
|
specification_version: 4
|
229
220
|
summary: Advanced tagging for Rails.
|
data/.travis.yml
DELETED
@@ -1,49 +0,0 @@
|
|
1
|
-
language: ruby
|
2
|
-
cache: bundler
|
3
|
-
|
4
|
-
addons:
|
5
|
-
postgresql: '10'
|
6
|
-
|
7
|
-
services:
|
8
|
-
- mysql
|
9
|
-
- postgresql
|
10
|
-
|
11
|
-
rvm:
|
12
|
-
- 2.7.0
|
13
|
-
- 2.6.5
|
14
|
-
- 2.5.5
|
15
|
-
- 2.4.6
|
16
|
-
- 2.3.7
|
17
|
-
|
18
|
-
env:
|
19
|
-
- DB=sqlite3
|
20
|
-
- DB=mysql
|
21
|
-
- DB=postgresql
|
22
|
-
|
23
|
-
gemfile:
|
24
|
-
- gemfiles/activerecord_5.2.gemfile
|
25
|
-
- gemfiles/activerecord_5.1.gemfile
|
26
|
-
- gemfiles/activerecord_5.0.gemfile
|
27
|
-
- gemfiles/activerecord_6.0.gemfile
|
28
|
-
- gemfiles/activerecord_6.1.gemfile
|
29
|
-
|
30
|
-
bundler_args: '--without local_development --jobs 3 --retry 3'
|
31
|
-
|
32
|
-
before_install:
|
33
|
-
- gem install bundler
|
34
|
-
|
35
|
-
script: bundle exec rake
|
36
|
-
|
37
|
-
matrix:
|
38
|
-
allow_failures:
|
39
|
-
- rvm: ruby-head
|
40
|
-
fast_finish: true
|
41
|
-
exclude:
|
42
|
-
- rvm: 2.3.7
|
43
|
-
gemfile: gemfiles/activerecord_6.0.gemfile
|
44
|
-
- rvm: 2.4.6
|
45
|
-
gemfile: gemfiles/activerecord_6.0.gemfile
|
46
|
-
- rvm: 2.3.7
|
47
|
-
gemfile: gemfiles/activerecord_6.1.gemfile
|
48
|
-
- rvm: 2.4.6
|
49
|
-
gemfile: gemfiles/activerecord_6.1.gemfile
|
data/UPGRADING.md
DELETED
@@ -1,21 +0,0 @@
|
|
1
|
-
source "https://rubygems.org"
|
2
|
-
|
3
|
-
gem "activerecord", "~> 5.0.3"
|
4
|
-
case ENV["DB"]
|
5
|
-
when "postgresql"
|
6
|
-
gem 'pg'
|
7
|
-
when "mysql"
|
8
|
-
gem 'mysql2', '~> 0.3'
|
9
|
-
else
|
10
|
-
gem "sqlite3", "~> 1.3", "< 1.4"
|
11
|
-
end
|
12
|
-
|
13
|
-
group :local_development do
|
14
|
-
gem "guard"
|
15
|
-
gem "guard-rspec"
|
16
|
-
gem "appraisal"
|
17
|
-
gem "rake"
|
18
|
-
gem "byebug", platforms: [:mri]
|
19
|
-
end
|
20
|
-
|
21
|
-
gemspec path: "../"
|
@@ -1,21 +0,0 @@
|
|
1
|
-
source "https://rubygems.org"
|
2
|
-
|
3
|
-
gem "activerecord", "~> 5.1.1"
|
4
|
-
case ENV["DB"]
|
5
|
-
when "postgresql"
|
6
|
-
gem 'pg'
|
7
|
-
when "mysql"
|
8
|
-
gem 'mysql2', '~> 0.3'
|
9
|
-
else
|
10
|
-
gem "sqlite3", "~> 1.3", "< 1.4"
|
11
|
-
end
|
12
|
-
|
13
|
-
group :local_development do
|
14
|
-
gem "guard"
|
15
|
-
gem "guard-rspec"
|
16
|
-
gem "appraisal"
|
17
|
-
gem "rake"
|
18
|
-
gem "byebug", platforms: [:mri]
|
19
|
-
end
|
20
|
-
|
21
|
-
gemspec path: "../"
|