friendly_id 5.2.5 → 5.3.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 +4 -4
- data/.travis.yml +50 -11
- data/Changelog.md +15 -0
- data/README.md +2 -2
- data/friendly_id.gemspec +0 -1
- data/gemfiles/Gemfile.rails-6.0.rb +27 -0
- data/lib/friendly_id/finders.rb +1 -1
- data/lib/friendly_id/history.rb +10 -1
- data/lib/friendly_id/version.rb +1 -1
- data/test/history_test.rb +27 -0
- metadata +4 -4
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 8fb8d2b37002508059b4480fe303a2ff277e4ee1264cd4dd3de6261a127aaa8d
|
|
4
|
+
data.tar.gz: 8cc571f9b42192a2ff254ed5f134817b6b3d0d7c37bb5cd82df1493055e21830
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 7549da1a767fefcf3cd05913fc59801d4ffe9fe1bac77429d39ad42e544dcd1a03942c74515c5eee47207269c0a7e34a48a728e1d66b2e8d4a86cb7dabe9a84b
|
|
7
|
+
data.tar.gz: 181750c6dc3a12cb6e0948504aa2888fbd95823ee3282d2c18938eb3805cc3c86b9ddaabefd18e1d2bcaec3ea8d3e8546260caed38cf9504af768e8fa905c02d
|
data/.travis.yml
CHANGED
|
@@ -1,16 +1,26 @@
|
|
|
1
1
|
language: ruby
|
|
2
2
|
cache: bundler
|
|
3
|
-
|
|
3
|
+
services:
|
|
4
|
+
- postgresql
|
|
5
|
+
- mysql
|
|
6
|
+
dist: trusty
|
|
7
|
+
addons:
|
|
8
|
+
postgresql: "9.6"
|
|
4
9
|
rvm:
|
|
5
|
-
- 2.
|
|
6
|
-
- 2.
|
|
10
|
+
- 2.6.3
|
|
11
|
+
- 2.5.5
|
|
12
|
+
- 2.4.6
|
|
13
|
+
- 2.3.8
|
|
7
14
|
- 2.2.0
|
|
8
15
|
- 2.1.0
|
|
9
16
|
- jruby-9.1.13.0
|
|
10
17
|
|
|
11
18
|
env:
|
|
12
|
-
|
|
13
|
-
|
|
19
|
+
global:
|
|
20
|
+
- COVERALLS=true
|
|
21
|
+
matrix:
|
|
22
|
+
- DB=postgres
|
|
23
|
+
- DB=mysql
|
|
14
24
|
|
|
15
25
|
gemfile:
|
|
16
26
|
- gemfiles/Gemfile.rails-4.0.rb
|
|
@@ -19,6 +29,7 @@ gemfile:
|
|
|
19
29
|
- gemfiles/Gemfile.rails-5.0.rb
|
|
20
30
|
- gemfiles/Gemfile.rails-5.1.rb
|
|
21
31
|
- gemfiles/Gemfile.rails-5.2.rb
|
|
32
|
+
- gemfiles/Gemfile.rails-6.0.rb
|
|
22
33
|
|
|
23
34
|
before_install:
|
|
24
35
|
- gem update bundler
|
|
@@ -27,31 +38,59 @@ matrix:
|
|
|
27
38
|
exclude:
|
|
28
39
|
- rvm: 2.1.0
|
|
29
40
|
gemfile: gemfiles/Gemfile.rails-5.2.rb
|
|
41
|
+
- rvm: 2.1.0
|
|
42
|
+
gemfile: gemfiles/Gemfile.rails-6.0.rb
|
|
30
43
|
- rvm: 2.2.0
|
|
31
44
|
gemfile: gemfiles/Gemfile.rails-5.2.rb
|
|
45
|
+
- rvm: 2.2.0
|
|
46
|
+
gemfile: gemfiles/Gemfile.rails-6.0.rb
|
|
32
47
|
- rvm: jruby-9.1.13.0
|
|
33
48
|
gemfile: gemfiles/Gemfile.rails-5.2.rb
|
|
49
|
+
- rvm: jruby-9.1.13.0
|
|
50
|
+
gemfile: gemfiles/Gemfile.rails-6.0.rb
|
|
51
|
+
- rvm: 2.1.0
|
|
52
|
+
gemfile: gemfiles/Gemfile.rails-5.0.rb
|
|
34
53
|
- rvm: 2.1.0
|
|
35
54
|
gemfile: gemfiles/Gemfile.rails-5.1.rb
|
|
55
|
+
- rvm: 2.1.0
|
|
56
|
+
gemfile: gemfiles/Gemfile.rails-6.0.rb
|
|
36
57
|
- rvm: 2.2.0
|
|
37
58
|
gemfile: gemfiles/Gemfile.rails-5.1.rb
|
|
38
|
-
- rvm: 2.
|
|
59
|
+
- rvm: 2.2.0
|
|
39
60
|
gemfile: gemfiles/Gemfile.rails-5.0.rb
|
|
40
61
|
- rvm: 2.2.0
|
|
62
|
+
gemfile: gemfiles/Gemfile.rails-6.0.rb
|
|
63
|
+
- rvm: 2.3.8
|
|
64
|
+
gemfile: gemfiles/Gemfile.rails-6.0.rb
|
|
65
|
+
- rvm: 2.4.6
|
|
66
|
+
gemfile: gemfiles/Gemfile.rails-4.0.rb
|
|
67
|
+
- rvm: 2.4.6
|
|
68
|
+
gemfile: gemfiles/Gemfile.rails-4.1.rb
|
|
69
|
+
- rvm: 2.4.6
|
|
70
|
+
gemfile: gemfiles/Gemfile.rails-6.0.rb
|
|
71
|
+
- rvm: 2.5.5
|
|
72
|
+
gemfile: gemfiles/Gemfile.rails-4.0.rb
|
|
73
|
+
- rvm: 2.5.5
|
|
74
|
+
gemfile: gemfiles/Gemfile.rails-4.1.rb
|
|
75
|
+
- rvm: 2.5.5
|
|
41
76
|
gemfile: gemfiles/Gemfile.rails-5.0.rb
|
|
42
|
-
- rvm: 2.
|
|
77
|
+
- rvm: 2.5.5
|
|
78
|
+
gemfile: gemfiles/Gemfile.rails-5.1.rb
|
|
79
|
+
- rvm: 2.6.3
|
|
43
80
|
gemfile: gemfiles/Gemfile.rails-4.0.rb
|
|
44
|
-
- rvm: 2.
|
|
81
|
+
- rvm: 2.6.3
|
|
45
82
|
gemfile: gemfiles/Gemfile.rails-4.1.rb
|
|
83
|
+
- rvm: 2.6.3
|
|
84
|
+
gemfile: gemfiles/Gemfile.rails-5.0.rb
|
|
85
|
+
- rvm: 2.6.3
|
|
86
|
+
gemfile: gemfiles/Gemfile.rails-5.1.rb
|
|
46
87
|
allow_failures:
|
|
47
88
|
- rvm: jruby-9.1.13.0
|
|
48
89
|
gemfile: gemfiles/Gemfile.rails-5.1.rb
|
|
49
90
|
- rvm: jruby-9.1.13.0
|
|
50
91
|
gemfile: gemfiles/Gemfile.rails-5.0.rb
|
|
51
92
|
|
|
52
|
-
sudo: false
|
|
53
|
-
|
|
54
93
|
before_script:
|
|
55
94
|
- bundle exec rake db:create db:up
|
|
56
95
|
|
|
57
|
-
script: '
|
|
96
|
+
script: 'bundle exec rake test'
|
data/Changelog.md
CHANGED
|
@@ -3,6 +3,21 @@
|
|
|
3
3
|
We would like to think our many [contributors](https://github.com/norman/friendly_id/graphs/contributors) for
|
|
4
4
|
suggestions, ideas and improvements to FriendlyId.
|
|
5
5
|
|
|
6
|
+
## 5.3.0 (2019-09-25)
|
|
7
|
+
|
|
8
|
+
* Record history when scope changes but slug does not ([#916](https://github.com/norman/friendly_id/pull/916))
|
|
9
|
+
* Add support for Rails 6 ([#897](https://github.com/norman/friendly_id/pull/897))
|
|
10
|
+
|
|
11
|
+
## 5.2.5 (2018-12-30)
|
|
12
|
+
|
|
13
|
+
* Pass all possible parameters to ActiveRecord::RecordNotFound.new when raising the exception ([#890](https://github.com/norman/friendly_id/pull/890))
|
|
14
|
+
* Use composite index for queries by sluggable ([#882](https://github.com/norman/friendly_id/pull/882))
|
|
15
|
+
* Scoped: generate new slug if scope changed ([#878](https://github.com/norman/friendly_id/pull/878))
|
|
16
|
+
* Fix History + SequentiallySlugged issues ([#877](https://github.com/norman/friendly_id/pull/877))
|
|
17
|
+
* Support scoped with STI ([#745](https://github.com/norman/friendly_id/pull/745))
|
|
18
|
+
* Fix exists? to behave the same as find for numeric slugs ([#875](https://github.com/norman/friendly_id/pull/875))
|
|
19
|
+
* Remove dirty tracking code from to_param ([#867](https://github.com/norman/friendly_id/pull/867))
|
|
20
|
+
|
|
6
21
|
## 5.2.4 (2018-04-24)
|
|
7
22
|
|
|
8
23
|
* Fix compatibility with Rails versions 4.0 -> 5.2. ([#863](https://github.com/norman/friendly_id/pull/863)).
|
data/README.md
CHANGED
|
@@ -117,8 +117,8 @@ If you have a bug to report, please include the following information:
|
|
|
117
117
|
If you are able to, it helps even more if you can fork FriendlyId on Github,
|
|
118
118
|
and add a test that reproduces the error you are experiencing.
|
|
119
119
|
|
|
120
|
-
For more
|
|
121
|
-
article](
|
|
120
|
+
For more inspiration on how to report bugs, please see [this
|
|
121
|
+
article](https://www.chiark.greenend.org.uk/~sgtatham/bugs.html).
|
|
122
122
|
|
|
123
123
|
## Thanks and Credits
|
|
124
124
|
|
data/friendly_id.gemspec
CHANGED
|
@@ -8,7 +8,6 @@ Gem::Specification.new do |s|
|
|
|
8
8
|
s.email = ["norman@njclarke.com", "p@arndt.io"]
|
|
9
9
|
s.homepage = "https://github.com/norman/friendly_id"
|
|
10
10
|
s.summary = "A comprehensive slugging and pretty-URL plugin."
|
|
11
|
-
s.rubyforge_project = "friendly_id"
|
|
12
11
|
s.files = `git ls-files`.split("\n")
|
|
13
12
|
s.test_files = `git ls-files -- {test}/*`.split("\n")
|
|
14
13
|
s.require_paths = ["lib"]
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
source 'https://rubygems.org'
|
|
2
|
+
|
|
3
|
+
gemspec path: '../'
|
|
4
|
+
|
|
5
|
+
gem 'activerecord', '~> 6.0.0'
|
|
6
|
+
gem 'railties', '~> 6.0.0'
|
|
7
|
+
|
|
8
|
+
# Database Configuration
|
|
9
|
+
group :development, :test do
|
|
10
|
+
platforms :jruby do
|
|
11
|
+
gem 'activerecord-jdbcmysql-adapter', '~> 51.1'
|
|
12
|
+
gem 'activerecord-jdbcpostgresql-adapter', '~> 51.1'
|
|
13
|
+
gem 'kramdown'
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
platforms :ruby, :rbx do
|
|
17
|
+
gem 'sqlite3'
|
|
18
|
+
gem 'mysql2'
|
|
19
|
+
gem 'pg'
|
|
20
|
+
gem 'redcarpet'
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
platforms :rbx do
|
|
24
|
+
gem 'rubysl', '~> 2.0'
|
|
25
|
+
gem 'rubinius-developer_tools'
|
|
26
|
+
end
|
|
27
|
+
end
|
data/lib/friendly_id/finders.rb
CHANGED
|
@@ -76,7 +76,7 @@ for models that use FriendlyId with something similar to the following:
|
|
|
76
76
|
def self.setup(model_class)
|
|
77
77
|
model_class.instance_eval do
|
|
78
78
|
relation.class.send(:include, friendly_id_config.finder_methods)
|
|
79
|
-
if (ActiveRecord::VERSION::MAJOR == 4 && ActiveRecord::VERSION::MINOR == 2) || ActiveRecord::VERSION::MAJOR
|
|
79
|
+
if (ActiveRecord::VERSION::MAJOR == 4 && ActiveRecord::VERSION::MINOR == 2) || ActiveRecord::VERSION::MAJOR >= 5
|
|
80
80
|
model_class.send(:extend, friendly_id_config.finder_methods)
|
|
81
81
|
end
|
|
82
82
|
end
|
data/lib/friendly_id/history.rb
CHANGED
|
@@ -122,7 +122,7 @@ method.
|
|
|
122
122
|
|
|
123
123
|
def create_slug
|
|
124
124
|
return unless friendly_id
|
|
125
|
-
return if
|
|
125
|
+
return if history_is_up_to_date?
|
|
126
126
|
# Allow reversion back to a previously used slug
|
|
127
127
|
relation = slugs.where(:slug => friendly_id)
|
|
128
128
|
if friendly_id_config.uses?(:scoped)
|
|
@@ -134,5 +134,14 @@ method.
|
|
|
134
134
|
record.scope = serialized_scope if friendly_id_config.uses?(:scoped)
|
|
135
135
|
end
|
|
136
136
|
end
|
|
137
|
+
|
|
138
|
+
def history_is_up_to_date?
|
|
139
|
+
latest_history = slugs.first
|
|
140
|
+
check = latest_history.try(:slug) == friendly_id
|
|
141
|
+
if friendly_id_config.uses?(:scoped)
|
|
142
|
+
check = check && latest_history.scope == serialized_scope
|
|
143
|
+
end
|
|
144
|
+
check
|
|
145
|
+
end
|
|
137
146
|
end
|
|
138
147
|
end
|
data/lib/friendly_id/version.rb
CHANGED
data/test/history_test.rb
CHANGED
|
@@ -377,6 +377,33 @@ class ScopedHistoryTest < TestCaseClass
|
|
|
377
377
|
end
|
|
378
378
|
end
|
|
379
379
|
|
|
380
|
+
test "should record history when scope changes" do
|
|
381
|
+
transaction do
|
|
382
|
+
city1 = City.create!
|
|
383
|
+
city2 = City.create!
|
|
384
|
+
with_instance_of(Restaurant) do |record|
|
|
385
|
+
record.name = "x"
|
|
386
|
+
record.slug = nil
|
|
387
|
+
|
|
388
|
+
record.city = city1
|
|
389
|
+
record.save!
|
|
390
|
+
assert_equal("city_id:#{city1.id}", record.slugs.reload.first.scope)
|
|
391
|
+
assert_equal("x", record.slugs.reload.first.slug)
|
|
392
|
+
|
|
393
|
+
record.city = city2
|
|
394
|
+
record.save!
|
|
395
|
+
assert_equal("city_id:#{city2.id}", record.slugs.reload.first.scope)
|
|
396
|
+
|
|
397
|
+
record.name = "y"
|
|
398
|
+
record.slug = nil
|
|
399
|
+
record.city = city1
|
|
400
|
+
record.save!
|
|
401
|
+
assert_equal("city_id:#{city1.id}", record.slugs.reload.first.scope)
|
|
402
|
+
assert_equal("y", record.slugs.reload.first.slug)
|
|
403
|
+
end
|
|
404
|
+
end
|
|
405
|
+
end
|
|
406
|
+
|
|
380
407
|
test "should allow equal slugs in different scopes" do
|
|
381
408
|
transaction do
|
|
382
409
|
city = City.create!
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: friendly_id
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 5.
|
|
4
|
+
version: 5.3.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Norman Clarke
|
|
@@ -9,7 +9,7 @@ authors:
|
|
|
9
9
|
autorequire:
|
|
10
10
|
bindir: bin
|
|
11
11
|
cert_chain: []
|
|
12
|
-
date:
|
|
12
|
+
date: 2019-09-24 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
|
14
14
|
- !ruby/object:Gem::Dependency
|
|
15
15
|
name: activerecord
|
|
@@ -167,6 +167,7 @@ files:
|
|
|
167
167
|
- gemfiles/Gemfile.rails-5.0.rb
|
|
168
168
|
- gemfiles/Gemfile.rails-5.1.rb
|
|
169
169
|
- gemfiles/Gemfile.rails-5.2.rb
|
|
170
|
+
- gemfiles/Gemfile.rails-6.0.rb
|
|
170
171
|
- guide.rb
|
|
171
172
|
- lib/friendly_id.rb
|
|
172
173
|
- lib/friendly_id/.gitattributes
|
|
@@ -228,8 +229,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
228
229
|
- !ruby/object:Gem::Version
|
|
229
230
|
version: '0'
|
|
230
231
|
requirements: []
|
|
231
|
-
|
|
232
|
-
rubygems_version: 2.7.6
|
|
232
|
+
rubygems_version: 3.0.3
|
|
233
233
|
signing_key:
|
|
234
234
|
specification_version: 4
|
|
235
235
|
summary: A comprehensive slugging and pretty-URL plugin.
|