make_taggable 0.6.3 → 0.7.1
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 +4 -4
- data/.github/workflows/mysql_tests.yml +56 -0
- data/.github/workflows/pg_tests.yml +56 -0
- data/.github/workflows/{ci.yml → sqlite_tests.yml} +10 -10
- data/.github/workflows/standardrb-check.yml +37 -0
- data/.gitignore +3 -0
- data/Appraisals +4 -0
- data/README.md +77 -33
- data/Rakefile +4 -0
- data/UPGRADING.md +5 -0
- data/db/migrate/3_change_tag_name_collation_mysql.rb +7 -0
- data/db/migrate/{3_add_index_to_tags.rb → 4_add_index_to_tags.rb} +0 -0
- data/db/migrate/{4_add_index_to_taggings.rb → 5_add_index_to_taggings.rb} +0 -0
- data/lib/make_taggable.rb +3 -3
- data/lib/make_taggable/taggable/tagged_with_query/query_base.rb +4 -4
- data/lib/make_taggable/tagger.rb +1 -1
- data/lib/make_taggable/tagging.rb +1 -1
- data/lib/make_taggable/version.rb +1 -2
- data/lib/tasks/setup_test_db.rake +6 -0
- data/make_taggable.gemspec +22 -8
- data/spec/dummy/README.md +0 -24
- data/spec/dummy/app/models/cached_model_with_array.rb +0 -6
- data/spec/dummy/app/models/taggable_model_with_json.rb +6 -0
- data/spec/dummy/config/application.rb +2 -8
- data/spec/dummy/config/database.yml +1 -19
- data/spec/dummy/config/mysql_database.yml.ci +8 -0
- data/spec/dummy/config/pg_database.yml.ci +8 -0
- data/spec/dummy/db/migrate/{20201119220853_create_taggable_models.rb → 020201119220853_create_taggable_models.rb} +0 -0
- data/spec/dummy/db/migrate/{20201119221037_create_columns_override_models.rb → 020201119221037_create_columns_override_models.rb} +0 -0
- data/spec/dummy/db/migrate/{20201119221121_create_non_standard_id_taggable_models.rb → 020201119221121_create_non_standard_id_taggable_models.rb} +0 -0
- data/spec/dummy/db/migrate/{20201119221228_create_untaggable_models.rb → 020201119221228_create_untaggable_models.rb} +0 -0
- data/spec/dummy/db/migrate/{20201119221247_create_cached_models.rb → 020201119221247_create_cached_models.rb} +0 -0
- data/spec/dummy/db/migrate/{20201119221314_create_other_cached_models.rb → 020201119221314_create_other_cached_models.rb} +0 -0
- data/spec/dummy/db/migrate/{20201119221343_create_companies.rb → 020201119221343_create_companies.rb} +0 -0
- data/spec/dummy/db/migrate/{20201119221416_create_users.rb → 020201119221416_create_users.rb} +0 -0
- data/spec/dummy/db/migrate/{20201119221434_create_other_taggable_models.rb → 020201119221434_create_other_taggable_models.rb} +0 -0
- data/spec/dummy/db/migrate/{20201119221507_create_ordered_taggable_models.rb → 020201119221507_create_ordered_taggable_models.rb} +0 -0
- data/spec/dummy/db/migrate/{20201119221530_create_cache_methods_injected_models.rb → 020201119221530_create_cache_methods_injected_models.rb} +0 -0
- data/spec/dummy/db/migrate/{20201119221629_create_other_cached_with_array_models.rb → 020201119221629_create_other_cached_with_array_models.rb} +0 -0
- data/spec/dummy/db/migrate/{20201119221746_create_taggable_model_with_jsons.rb → 020201119221746_create_taggable_model_with_jsons.rb} +0 -0
- data/spec/make_taggable/tag_spec.rb +88 -250
- data/spec/make_taggable/taggable_spec.rb +1 -1
- data/spec/spec_helper.rb +0 -2
- metadata +116 -80
- data/.travis.yml +0 -36
- data/gemfiles/rails_5.gemfile +0 -9
- data/gemfiles/rails_6.gemfile +0 -9
- data/gemfiles/rails_master.gemfile +0 -9
- data/spec/dummy/db/migrate/20201119222429_create_make_taggable_tags.make_taggable_engine.rb +0 -11
- data/spec/dummy/db/migrate/20201119222430_create_make_taggable_taggings.make_taggable_engine.rb +0 -13
- data/spec/dummy/db/migrate/20201119222431_add_index_to_tags.make_taggable_engine.rb +0 -6
- data/spec/dummy/db/migrate/20201119222432_add_index_to_taggings.make_taggable_engine.rb +0 -13
- data/spec/dummy/db/schema.rb +0 -117
- data/spec/dummy/db/seeds.rb +0 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 656b91c8e3413eb256819e637338927cd744e9502e9208ab2ee983344eeb0dc0
|
4
|
+
data.tar.gz: fc1d7f0e41f254536af79d94a0d42d40afb1f8db2e6a7fc1ff92f7536efe8b39
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ebac450ac5fdc36410898fa78e1a8d93453967ffdc4a9326c3438348d462ccff566bb65282ee50b1bf7c3af32a48764f18139bc566635253401f936497670319
|
7
|
+
data.tar.gz: 0662c53dc1f42ef1fd87b3d9ee1d26ab8af286e2f85105ffe9cf6af4fa41eb0b189ecc34fa1e752615107acc3bcaa27186deb19ad7b5cf5978436d4e66965e03
|
@@ -0,0 +1,56 @@
|
|
1
|
+
---
|
2
|
+
name: MySQL Tests
|
3
|
+
|
4
|
+
on:
|
5
|
+
pull_request:
|
6
|
+
branches:
|
7
|
+
- '*'
|
8
|
+
push:
|
9
|
+
branches:
|
10
|
+
- master
|
11
|
+
jobs:
|
12
|
+
mysql:
|
13
|
+
runs-on: ubuntu-latest
|
14
|
+
strategy:
|
15
|
+
matrix:
|
16
|
+
ruby: ['2.5', '2.6', '2.7']
|
17
|
+
|
18
|
+
services:
|
19
|
+
mysql:
|
20
|
+
image: mysql:8
|
21
|
+
env:
|
22
|
+
MYSQL_ROOT_PASSWORD: password
|
23
|
+
MSQL_DATABASE: my_sql_test_db
|
24
|
+
ports: ['3306:3306']
|
25
|
+
options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3
|
26
|
+
|
27
|
+
steps:
|
28
|
+
- uses: actions/checkout@master
|
29
|
+
|
30
|
+
- name: Set up Ruby ${{ matrix.ruby }}
|
31
|
+
uses: ruby/setup-ruby@v1
|
32
|
+
with:
|
33
|
+
ruby-version: ${{ matrix.ruby }}
|
34
|
+
|
35
|
+
- name: Cache gems
|
36
|
+
uses: actions/cache@v2
|
37
|
+
with:
|
38
|
+
path: vendor/bundle
|
39
|
+
key: ${{ runner.os }}-${{ matrix.ruby }}-gem-${{ hashFiles('**/Gemfile.lock') }}
|
40
|
+
restore-keys: |
|
41
|
+
${{ runner.os }}-${{ matrix.ruby }}-gem-
|
42
|
+
|
43
|
+
- name: Install dependencies
|
44
|
+
run: |
|
45
|
+
gem install bundler
|
46
|
+
bundle install --jobs 4 --retry 3
|
47
|
+
bundle exec appraisal install
|
48
|
+
|
49
|
+
- name: Run tests
|
50
|
+
env:
|
51
|
+
DATABASE_URL: mysql2://root:password@127.0.0.1:3306/my_sql_test_db
|
52
|
+
RAILS_ENV: test
|
53
|
+
run: |
|
54
|
+
cp spec/dummy/config/mysql_database.yml.ci spec/dummy/config/database.yml
|
55
|
+
bundle exec rake test_app
|
56
|
+
bundle exec appraisal rake
|
@@ -0,0 +1,56 @@
|
|
1
|
+
---
|
2
|
+
name: Postgres Tests
|
3
|
+
|
4
|
+
on:
|
5
|
+
pull_request:
|
6
|
+
branches:
|
7
|
+
- '*'
|
8
|
+
push:
|
9
|
+
branches:
|
10
|
+
- master
|
11
|
+
jobs:
|
12
|
+
postgres:
|
13
|
+
runs-on: ubuntu-latest
|
14
|
+
strategy:
|
15
|
+
matrix:
|
16
|
+
ruby: ['2.5', '2.6', '2.7']
|
17
|
+
|
18
|
+
services:
|
19
|
+
postgres:
|
20
|
+
image: postgres:12
|
21
|
+
env:
|
22
|
+
POSTGRES_USER: postgres
|
23
|
+
POSTGRES_PASSWORD: password
|
24
|
+
POSTGRES_DB: pg_test
|
25
|
+
ports: ['5432:5432']
|
26
|
+
|
27
|
+
steps:
|
28
|
+
- uses: actions/checkout@master
|
29
|
+
|
30
|
+
- name: Set up Ruby ${{ matrix.ruby }}
|
31
|
+
uses: ruby/setup-ruby@v1
|
32
|
+
with:
|
33
|
+
ruby-version: ${{ matrix.ruby }}
|
34
|
+
|
35
|
+
- name: Cache gems
|
36
|
+
uses: actions/cache@v2
|
37
|
+
with:
|
38
|
+
path: vendor/bundle
|
39
|
+
key: ${{ runner.os }}-${{ matrix.ruby }}-gem-${{ hashFiles('**/Gemfile.lock') }}
|
40
|
+
restore-keys: |
|
41
|
+
${{ runner.os }}-${{ matrix.ruby }}-gem-
|
42
|
+
|
43
|
+
- name: Install dependencies
|
44
|
+
run: |
|
45
|
+
gem install bundler
|
46
|
+
bundle install --jobs 4 --retry 3
|
47
|
+
bundle exec appraisal install
|
48
|
+
|
49
|
+
- name: Run tests
|
50
|
+
env:
|
51
|
+
DATABASE_URL: postgres://postgres:password@localhost:5432/pg_test
|
52
|
+
RAILS_ENV: test
|
53
|
+
run: |
|
54
|
+
cp spec/dummy/config/pg_database.yml.ci spec/dummy/config/database.yml
|
55
|
+
bundle exec rake test_app
|
56
|
+
bundle exec appraisal rake
|
@@ -1,4 +1,5 @@
|
|
1
|
-
|
1
|
+
---
|
2
|
+
name: SQLite Tests
|
2
3
|
|
3
4
|
on:
|
4
5
|
pull_request:
|
@@ -8,26 +9,27 @@ on:
|
|
8
9
|
branches:
|
9
10
|
- master
|
10
11
|
jobs:
|
11
|
-
|
12
|
+
sqlite:
|
12
13
|
runs-on: ubuntu-latest
|
13
14
|
strategy:
|
14
15
|
matrix:
|
15
|
-
ruby: [
|
16
|
+
ruby: ['2.5', '2.6', '2.7']
|
16
17
|
steps:
|
17
18
|
- uses: actions/checkout@master
|
18
19
|
|
19
|
-
- name: Set up Ruby
|
20
|
+
- name: Set up Ruby ${{ matrix.ruby }}
|
20
21
|
uses: ruby/setup-ruby@v1
|
21
22
|
with:
|
22
23
|
ruby-version: ${{ matrix.ruby }}
|
23
24
|
|
24
25
|
- name: Cache gems
|
25
|
-
uses: actions/cache@
|
26
|
+
uses: actions/cache@v2
|
26
27
|
with:
|
27
28
|
path: vendor/bundle
|
28
|
-
key: ${{ runner.os }}-gem-${{ hashFiles('**/Gemfile.lock') }}
|
29
|
+
key: ${{ runner.os }}-${{ matrix.ruby }}-gem-${{ hashFiles('**/Gemfile.lock') }}
|
29
30
|
restore-keys: |
|
30
|
-
${{ runner.os }}-gem-
|
31
|
+
${{ runner.os }}-${{ matrix.ruby }}-gem-
|
32
|
+
|
31
33
|
- name: Install dependencies
|
32
34
|
run: |
|
33
35
|
sudo apt-get update
|
@@ -37,11 +39,9 @@ jobs:
|
|
37
39
|
bundle install --jobs 4 --retry 3
|
38
40
|
bundle exec appraisal install
|
39
41
|
|
40
|
-
- name: StandardRb check
|
41
|
-
run: bundle exec standardrb
|
42
|
-
|
43
42
|
- name: Run tests
|
44
43
|
env:
|
45
44
|
RAILS_ENV: test
|
46
45
|
run: |
|
46
|
+
bundle exec rake test_app
|
47
47
|
bundle exec appraisal rake
|
@@ -0,0 +1,37 @@
|
|
1
|
+
name: Standard Rb
|
2
|
+
|
3
|
+
on:
|
4
|
+
pull_request:
|
5
|
+
branches:
|
6
|
+
- '*'
|
7
|
+
push:
|
8
|
+
branches:
|
9
|
+
- master
|
10
|
+
|
11
|
+
jobs:
|
12
|
+
standard:
|
13
|
+
name: StandardRB Check Action
|
14
|
+
runs-on: ubuntu-latest
|
15
|
+
steps:
|
16
|
+
- uses: actions/checkout@master
|
17
|
+
|
18
|
+
- name: Set up Ruby 2.7
|
19
|
+
uses: actions/setup-ruby@v1
|
20
|
+
with:
|
21
|
+
ruby-version: 2.7.x
|
22
|
+
|
23
|
+
- uses: actions/cache@v1
|
24
|
+
with:
|
25
|
+
path: vendor/bundle
|
26
|
+
key: ${{ runner.os }}-gems-${{ hashFiles('**/Gemfile.lock') }}
|
27
|
+
restore-keys: |
|
28
|
+
${{ runner.os }}-gems-
|
29
|
+
|
30
|
+
- name: Bundle install
|
31
|
+
run: |
|
32
|
+
gem install bundler
|
33
|
+
bundle config path vendor/bundle
|
34
|
+
bundle install --jobs 4 --retry 3
|
35
|
+
|
36
|
+
- name: Run StandardRB
|
37
|
+
run: bundle exec standardrb --format progress
|
data/.gitignore
CHANGED
data/Appraisals
CHANGED
data/README.md
CHANGED
@@ -1,26 +1,20 @@
|
|
1
1
|
# MakeTaggable
|
2
2
|
[](https://badge.fury.io/rb/make_taggable)
|
3
|
-
|
4
|
-
|
3
|
+

|
4
|
+

|
5
|
+

|
6
|
+

|
5
7
|
|
6
|
-
MakeTaggable is a fork of
|
8
|
+
MakeTaggable is a fork of Acts-As-Taggable-On with code updates, fresh migrations that work on MySQL, and tested against a dummy Rails app.
|
7
9
|
|
8
|
-
|
9
|
-
|
10
|
-
For the PostgreSQL users, this is not an issue, but if you have an app or gem that used acts-as-taggable-on, you can no longer test against MySQL, so it seems a fresh start would be useful to clear out any legacy issues and move forward.
|
10
|
+
All credit goes to those who contributed to Acts-As-Taggable-On: Michael Bleigh & Joost Baaij.
|
11
11
|
|
12
12
|
## Installation
|
13
13
|
|
14
|
-
To use
|
15
|
-
|
16
|
-
```ruby
|
17
|
-
gem "make_taggable", "~> 0.6.0"
|
18
|
-
```
|
19
|
-
|
20
|
-
and bundle:
|
14
|
+
To use make_taggable, run the followng from the root of your application:
|
21
15
|
|
22
16
|
```shell
|
23
|
-
bundle
|
17
|
+
bundle add make_taggable
|
24
18
|
```
|
25
19
|
|
26
20
|
#### Post Installation
|
@@ -28,15 +22,30 @@ bundle
|
|
28
22
|
Install migrations
|
29
23
|
|
30
24
|
```shell
|
31
|
-
# For the latest versions :
|
32
25
|
rails make_taggable_engine:install:migrations
|
33
26
|
```
|
34
27
|
|
35
|
-
Review the generated migrations then migrate
|
28
|
+
Review the generated migrations then migrate:
|
36
29
|
```shell
|
37
30
|
rails db:migrate
|
38
31
|
```
|
39
32
|
|
33
|
+
#### For MySql users
|
34
|
+
To make MySQL play nice with spÉcial characters you can setting the following line in an initializer file:
|
35
|
+
|
36
|
+
```ruby
|
37
|
+
MakeTaggable.force_binary_collation = true
|
38
|
+
```
|
39
|
+
|
40
|
+
Or by run this rake task:
|
41
|
+
|
42
|
+
```shell
|
43
|
+
rails make_taggable_engine:tag_names:collate_bin
|
44
|
+
```
|
45
|
+
|
46
|
+
See the Configuration section for more details.
|
47
|
+
|
48
|
+
|
40
49
|
## Usage
|
41
50
|
|
42
51
|
Setup
|
@@ -167,7 +176,7 @@ MakeTaggable::Tag.least_used(10)
|
|
167
176
|
|
168
177
|
### Finding Tagged Objects
|
169
178
|
|
170
|
-
|
179
|
+
MakeTaggable uses scopes to create an association for tags.
|
171
180
|
This way you can mix and match to filter down your results.
|
172
181
|
|
173
182
|
```ruby
|
@@ -396,6 +405,7 @@ CSS:
|
|
396
405
|
.css4 { font-size: 1.6em; }
|
397
406
|
```
|
398
407
|
|
408
|
+
|
399
409
|
## Configuration
|
400
410
|
|
401
411
|
If you would like to remove unused tag objects after removing taggings, add:
|
@@ -444,35 +454,69 @@ MakeTaggable.delimiter = ','
|
|
444
454
|
*NOTE 1: SQLite by default can't upcase or downcase multibyte characters, resulting in unwanted behavior. Load the SQLite ICU extension for proper handle of such characters. [See docs](http://www.sqlite.org/src/artifact?ci=trunk&filename=ext/icu/README.txt)*
|
445
455
|
|
446
456
|
|
447
|
-
|
448
|
-
|
449
|
-
see [UPGRADING](UPGRADING.md)
|
457
|
+
## Upgrading
|
450
458
|
|
451
|
-
|
459
|
+
Install new migrations by running:
|
452
460
|
|
453
|
-
|
461
|
+
```shell
|
462
|
+
rails make_taggable_engine:install:migrations
|
463
|
+
```
|
454
464
|
|
455
465
|
## Compatibility
|
456
466
|
|
457
|
-
|
467
|
+
Version 0.7.x is compatible with Ruby 2.5 > and Rails 5.2 >
|
458
468
|
|
459
469
|
|
460
|
-
## TODO
|
461
|
-
- Review migrations indexes they seem excessive looking at the schema.
|
462
|
-
- See if the newer version of ActiveRecord or arel can be used instead of the MySQL workarounds.
|
463
|
-
|
464
470
|
## Testing
|
465
471
|
|
466
|
-
|
467
|
-
|
472
|
+
MakeTaggable uses RSpec for its test coverage. Inside the gem directory, you can run the specs by following the steps below:
|
473
|
+
|
474
|
+
Install the rquired gems:
|
475
|
+
|
476
|
+
```shell
|
477
|
+
bundle install
|
478
|
+
```
|
479
|
+
|
480
|
+
Setup the dummy test app:
|
481
|
+
|
482
|
+
```shell
|
483
|
+
bundle exec rake test_app
|
484
|
+
```
|
485
|
+
|
486
|
+
Run the spec tests against SQLite use the followiong command.
|
487
|
+
|
488
|
+
```shell
|
489
|
+
bundle exec rake
|
490
|
+
```
|
491
|
+
|
492
|
+
You can also run all the tests across all the Rails versions by running:
|
493
|
+
|
494
|
+
```shell
|
495
|
+
bundle exec appraisal install
|
496
|
+
|
497
|
+
bundle exec appraisal rake
|
498
|
+
```
|
499
|
+
|
500
|
+
## Contributing
|
501
|
+
|
502
|
+
Please use the following Standard Rb commands to format your code before creating a pull request:
|
503
|
+
|
504
|
+
Check for code errors:
|
505
|
+
|
506
|
+
```shell
|
507
|
+
bundle exec standardrb
|
508
|
+
```
|
509
|
+
|
510
|
+
Fix code errors:
|
468
511
|
|
469
512
|
```shell
|
470
|
-
bundle
|
471
|
-
rake spec
|
513
|
+
bundle exec standardrb --fix
|
472
514
|
```
|
515
|
+
For more information please review the [Contributing](https://github.com/MatthewKennedy/make_taggable/blob/master/CONTRIBUTING.md) section.
|
473
516
|
|
474
|
-
|
517
|
+
#### Contributors
|
518
|
+
List of valued contributors From Acts-As-Taggable-On: [Check them all](https://github.com/mbleigh/acts-as-taggable-on/contributors)
|
475
519
|
|
476
520
|
|
477
521
|
## License
|
478
|
-
MIT
|
522
|
+
This gem is available as open source under the terms of the [MIT License](https://github.com/MatthewKennedy/make_taggable/blob/master/LICENSE.txt).
|
data/Rakefile
CHANGED
@@ -1,7 +1,11 @@
|
|
1
1
|
require "bundler/gem_tasks"
|
2
2
|
|
3
|
+
import "./lib/tasks/tags_collate_utf8.rake"
|
4
|
+
|
3
5
|
APP_RAKEFILE = File.expand_path("spec/dummy/Rakefile", __dir__)
|
4
6
|
|
5
7
|
require "rspec/core/rake_task"
|
6
8
|
RSpec::Core::RakeTask.new(:spec)
|
7
9
|
task default: :spec
|
10
|
+
|
11
|
+
load "lib/tasks/setup_test_db.rake"
|
data/UPGRADING.md
ADDED
File without changes
|
File without changes
|
data/lib/make_taggable.rb
CHANGED
@@ -111,10 +111,10 @@ module MakeTaggable
|
|
111
111
|
|
112
112
|
def self.apply_binary_collation(bincoll)
|
113
113
|
if Utils.using_mysql?
|
114
|
-
coll = "
|
115
|
-
coll = "
|
114
|
+
coll = "utf8mb4_general_ci"
|
115
|
+
coll = "utf8mb4_bin" if bincoll
|
116
116
|
begin
|
117
|
-
ActiveRecord::Migration.execute("ALTER TABLE #{Tag.table_name} MODIFY name varchar(255) CHARACTER SET
|
117
|
+
ActiveRecord::Migration.execute("ALTER TABLE #{Tag.table_name} MODIFY name varchar(255) CHARACTER SET utf8mb4 COLLATE #{coll};")
|
118
118
|
rescue => e
|
119
119
|
puts "Trapping #{e.class}: collation parameter ignored while migrating for the first time."
|
120
120
|
end
|