friendly_id 2.3.1 → 2.3.2
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.
- data/Changelog.md +15 -3
- data/Contributors.md +2 -0
- data/lib/friendly_id.rb +3 -2
- data/lib/friendly_id/active_record2/slugged_model.rb +8 -2
- data/lib/friendly_id/test.rb +8 -1
- data/lib/friendly_id/version.rb +1 -1
- data/test/friendly_id_test.rb +17 -1
- metadata +2 -2
data/Changelog.md
CHANGED
@@ -6,6 +6,18 @@ suggestions, ideas and improvements to FriendlyId.
|
|
6
6
|
* Table of Contents
|
7
7
|
{:toc}
|
8
8
|
|
9
|
+
## 2.3.2 (2010-02-14)
|
10
|
+
|
11
|
+
* Fixed finding by old slug when using cached slugs.
|
12
|
+
* Sequence separator parsing now correctly handles occurrences of the sequence
|
13
|
+
separator string inside the friendly_id text (Johan Kok).
|
14
|
+
* Fixed missing quotes on table names in a few places (Brian Collins).
|
15
|
+
|
16
|
+
|
17
|
+
## 2.3.1 (2010-02-09)
|
18
|
+
|
19
|
+
* Fixed stack level too deep error on #strip_diacritics.
|
20
|
+
|
9
21
|
|
10
22
|
## 2.3.0 (2010-02-04)
|
11
23
|
|
@@ -20,10 +32,10 @@ fork, then this upgrade may causes issues.
|
|
20
32
|
**Changes:**
|
21
33
|
|
22
34
|
* Sequence separator can now be configured to something other than "--".
|
23
|
-
* New option to pass arguments to {FriendlyId::SlugString#approximate_ascii!},
|
35
|
+
* New option to pass arguments to {FriendlyId::SlugString#approximate_ascii!},
|
24
36
|
allowing custom approximations specific to German or Spanish.
|
25
37
|
* FriendlyId now queries against the cached_slug column, which improves performance.
|
26
|
-
* {FriendlyId::SlugString} class added, allowing finer-grained control over
|
38
|
+
* {FriendlyId::SlugString} class added, allowing finer-grained control over
|
27
39
|
Unicode friendly_id strings.
|
28
40
|
* {FriendlyId::Configuration} class added, offering more flexible/hackable
|
29
41
|
options.
|
@@ -222,4 +234,4 @@ fork, then this upgrade may causes issues.
|
|
222
234
|
* Applied patch from Dan Blue to make friendly_id no longer ignore options on
|
223
235
|
ActiveRecordBase#find.
|
224
236
|
* Added call to options.assert_valid_keys in has_friendly_id. Thanks to W.
|
225
|
-
Andrew Loe III for pointing out that this was missing.
|
237
|
+
Andrew Loe III for pointing out that this was missing.
|
data/Contributors.md
CHANGED
@@ -7,6 +7,7 @@ community, in particular from the following people:
|
|
7
7
|
* Andrew Loe III
|
8
8
|
* Ben Woosley
|
9
9
|
* Bence Nagy
|
10
|
+
* Brian Collins
|
10
11
|
* Bruno Michel
|
11
12
|
* Chris Nolan
|
12
13
|
* David Ramalho
|
@@ -17,6 +18,7 @@ community, in particular from the following people:
|
|
17
18
|
* Ian Stewart
|
18
19
|
* Jesse Crouch
|
19
20
|
* Joe Van Dyk
|
21
|
+
* Johan Kok
|
20
22
|
* Josh Nichols
|
21
23
|
* Mikhail Shirkov
|
22
24
|
* Nathan Phelps
|
data/lib/friendly_id.rb
CHANGED
@@ -60,7 +60,8 @@ end
|
|
60
60
|
|
61
61
|
class String
|
62
62
|
def parse_friendly_id(separator = nil)
|
63
|
-
|
63
|
+
separator ||= FriendlyId::Configuration::DEFAULTS[:sequence_separator]
|
64
|
+
name, sequence = split(/#{Regexp.escape(separator)}(\d)*\z/)
|
64
65
|
return name, sequence ||= "1"
|
65
66
|
end
|
66
|
-
end
|
67
|
+
end
|
@@ -37,7 +37,7 @@ module FriendlyId
|
|
37
37
|
end
|
38
38
|
|
39
39
|
def find_options
|
40
|
-
{:select => "#{
|
40
|
+
{:select => "#{quoted_table_name}.*", :conditions => find_conditions,
|
41
41
|
:joins => slugs_included? ? options[:joins] : :slugs}
|
42
42
|
end
|
43
43
|
|
@@ -112,7 +112,7 @@ module FriendlyId
|
|
112
112
|
def find_options
|
113
113
|
slug_table = Slug.table_name
|
114
114
|
{
|
115
|
-
:select => "#{model_class.
|
115
|
+
:select => "#{model_class.quoted_table_name}.*",
|
116
116
|
:joins => slugs_included? ? options[:joins] : :slugs,
|
117
117
|
:conditions => {
|
118
118
|
"#{slug_table}.name" => name,
|
@@ -135,6 +135,12 @@ module FriendlyId
|
|
135
135
|
# circumstances unless the +:scope+ argument is present.
|
136
136
|
class CachedSingleFinder < SimpleModel::SingleFinder
|
137
137
|
|
138
|
+
def find
|
139
|
+
super
|
140
|
+
rescue ActiveRecord::RecordNotFound
|
141
|
+
SingleFinder.new(id, model_class, options).find
|
142
|
+
end
|
143
|
+
|
138
144
|
# The column used to store the cached slug.
|
139
145
|
def column
|
140
146
|
"#{table_name}.#{friendly_id_config.cache_column}"
|
data/lib/friendly_id/test.rb
CHANGED
@@ -139,6 +139,13 @@ module FriendlyId
|
|
139
139
|
assert_equal instance2, klass.send(find_method, instance2.friendly_id)
|
140
140
|
end
|
141
141
|
|
142
|
+
test "should remain findable by previous slugs" do
|
143
|
+
old_friendly_id = instance.friendly_id
|
144
|
+
instance.update_attributes :name => "#{old_friendly_id} updated"
|
145
|
+
assert_not_equal old_friendly_id, instance.friendly_id
|
146
|
+
assert_equal instance, klass.find(old_friendly_id)
|
147
|
+
end
|
148
|
+
|
142
149
|
end
|
143
150
|
|
144
151
|
# Tests for models to ensure that they properly implement using the
|
@@ -165,4 +172,4 @@ module FriendlyId
|
|
165
172
|
|
166
173
|
end
|
167
174
|
end
|
168
|
-
end
|
175
|
+
end
|
data/lib/friendly_id/version.rb
CHANGED
data/test/friendly_id_test.rb
CHANGED
@@ -18,6 +18,22 @@ module FriendlyId
|
|
18
18
|
assert_equal ["test", "2"], "test:2".parse_friendly_id(":")
|
19
19
|
end
|
20
20
|
|
21
|
+
test "should parse when default sequence separator occurs in friendly_id name" do
|
22
|
+
assert_equal ["test--test", "2"], "test--test--2".parse_friendly_id
|
23
|
+
end
|
24
|
+
|
25
|
+
test "should parse when custom sequence separator occurs in friendly_id name" do
|
26
|
+
assert_equal ["test:test", "2"], "test:test:2".parse_friendly_id(":")
|
27
|
+
end
|
28
|
+
|
29
|
+
test "should parse when sequence separator and number occur in friendly_id name" do
|
30
|
+
assert_equal ["test--2--test", "1"], "test--2--test".parse_friendly_id
|
31
|
+
end
|
32
|
+
|
33
|
+
test "should parse when sequence separator, number and sequence occur in friendly_id name" do
|
34
|
+
assert_equal ["test--2--test", "2"], "test--2--test--2".parse_friendly_id
|
35
|
+
end
|
36
|
+
|
21
37
|
end
|
22
38
|
end
|
23
|
-
end
|
39
|
+
end
|
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: 2.3.
|
4
|
+
version: 2.3.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Norman Clarke
|
@@ -11,7 +11,7 @@ autorequire:
|
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
13
|
|
14
|
-
date: 2010-02-
|
14
|
+
date: 2010-02-14 00:00:00 -08:00
|
15
15
|
default_executable:
|
16
16
|
dependencies:
|
17
17
|
- !ruby/object:Gem::Dependency
|