slugged 1.1.0 → 2.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 +7 -0
- data/.travis.yml +2 -5
- data/Gemfile +2 -2
- data/README.md +6 -2
- data/lib/slugged/active_record_methods.rb +2 -2
- data/lib/slugged/caching.rb +2 -2
- data/lib/slugged/finders.rb +7 -7
- data/lib/slugged/scopes.rb +2 -2
- data/lib/slugged/slug.rb +3 -3
- data/lib/slugged/slug_history.rb +3 -3
- data/lib/slugged/version.rb +2 -2
- data/slugged.gemspec +3 -3
- data/test/helper.rb +6 -5
- metadata +136 -154
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 826ed7e245a1ed41d94a1c222fcf413011e27902
|
4
|
+
data.tar.gz: 6af346bdc4f70b054a8867ff21cc21e176a14dea
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: ee0bf448157c8c41a266692ca9a38c4f42d6f38f371fbf29b400ece5c7f1c4be0938c3c4cb9aac1d9ec50d2345b6f674a93da01bb4f7f94c5d50141e1c999c36
|
7
|
+
data.tar.gz: 6abeb15565c5b05c2ba6905e1bf13125ef8dda6ee735ba7d7d9c6d0b4f293e30edbbf26b77c1e4acc75a1eb18816c848ddb6bea4b2eab9ed3b3f83ee3d1bc35b
|
data/.travis.yml
CHANGED
@@ -1,14 +1,11 @@
|
|
1
1
|
---
|
2
2
|
language: ruby
|
3
3
|
rvm:
|
4
|
-
- 1.8.7
|
5
|
-
- 1.9.2
|
6
4
|
- 1.9.3
|
7
|
-
|
8
|
-
# - jruby-19mode
|
9
|
-
- ree
|
5
|
+
- 2.0.0
|
10
6
|
env:
|
11
7
|
- RAILS_VERSION=""
|
8
|
+
- RAILS_VERSION="~>4.0.0"
|
12
9
|
- RAILS_VERSION="~>3.2.0"
|
13
10
|
- RAILS_VERSION="~>3.1.0"
|
14
11
|
- RAILS_VERSION="~>3.0.0"
|
data/Gemfile
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
source
|
1
|
+
source 'https://rubygems.org'
|
2
2
|
|
3
3
|
# Allow testing multiple versions with Travis.
|
4
4
|
rails_version = ENV['RAILS_VERSION']
|
@@ -9,4 +9,4 @@ if rails_version && rails_version.length > 0
|
|
9
9
|
gem 'activerecord', rails_version
|
10
10
|
end
|
11
11
|
|
12
|
-
gemspec
|
12
|
+
gemspec
|
data/README.md
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Slugged [](http://travis-ci.org/Sutto/slugged)
|
2
2
|
|
3
3
|
## About ###
|
4
4
|
|
@@ -30,7 +30,7 @@ and built to work on Rails 3 from the start.
|
|
30
30
|
|
31
31
|
Using Slugged is simple. In Rails, simply drop this in your Gemfile:
|
32
32
|
|
33
|
-
gem 'slugged'
|
33
|
+
gem 'slugged', '~> 2.0'
|
34
34
|
|
35
35
|
Optionally restricting the version.
|
36
36
|
|
@@ -121,6 +121,10 @@ Thanks to the following who contributed functionality / bug fixes:
|
|
121
121
|
* Commit, do not mess with rakefile, version, or history. (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
|
122
122
|
* Send me a pull request. Bonus points for topic branches.
|
123
123
|
|
124
|
+
## Changes
|
125
|
+
|
126
|
+
* __2.0.0__ - Support Rails 4.
|
127
|
+
|
124
128
|
## Copyright
|
125
129
|
|
126
130
|
Copyright (c) 2010 Darcy Laycock. See LICENSE for details.
|
@@ -85,7 +85,7 @@ module Slugged
|
|
85
85
|
end
|
86
86
|
|
87
87
|
def slug_scope_relation(record)
|
88
|
-
has_slug_scope? ? where(slug_scope => record.send(slug_scope)) :
|
88
|
+
has_slug_scope? ? where(slug_scope => record.send(slug_scope)) : where(nil)
|
89
89
|
end
|
90
90
|
|
91
91
|
def slug_value_for(value)
|
@@ -125,4 +125,4 @@ module Slugged
|
|
125
125
|
end
|
126
126
|
end
|
127
127
|
end
|
128
|
-
end
|
128
|
+
end
|
data/lib/slugged/caching.rb
CHANGED
@@ -37,10 +37,10 @@ module Slugged
|
|
37
37
|
module ClassMethods
|
38
38
|
|
39
39
|
# Wraps find_using_slug to look in the cache.
|
40
|
-
def find_using_slug(slug
|
40
|
+
def find_using_slug(slug)
|
41
41
|
# First, attempt to load an id and then record from the cache.
|
42
42
|
if (cached_id = lookup_cached_id_from_slug(slug)).present?
|
43
|
-
return find(cached_id
|
43
|
+
return find(cached_id).tap { |r| r.found_via_slug = slug }
|
44
44
|
end
|
45
45
|
# Otherwise, fallback to the normal approach.
|
46
46
|
super.tap do |record|
|
data/lib/slugged/finders.rb
CHANGED
@@ -1,19 +1,19 @@
|
|
1
1
|
module Slugged
|
2
2
|
module Finders
|
3
3
|
|
4
|
-
def find_using_slug(slug
|
4
|
+
def find_using_slug(slug)
|
5
5
|
slug = slug.to_s
|
6
6
|
value = nil
|
7
|
-
value ||= find_by_id(slug.to_i
|
8
|
-
value ||= with_cached_slug(slug).first
|
9
|
-
value ||= find_using_slug_history(slug
|
7
|
+
value ||= find_by_id(slug.to_i) if slug =~ /\A\d+\Z/
|
8
|
+
value ||= with_cached_slug(slug).first
|
9
|
+
value ||= find_using_slug_history(slug) if use_slug_history
|
10
10
|
value.found_via_slug = slug if value.present?
|
11
11
|
value
|
12
12
|
end
|
13
13
|
|
14
|
-
def find_using_slug!(slug
|
15
|
-
find_using_slug(slug
|
14
|
+
def find_using_slug!(slug)
|
15
|
+
find_using_slug(slug) or raise ActiveRecord::RecordNotFound
|
16
16
|
end
|
17
17
|
|
18
18
|
end
|
19
|
-
end
|
19
|
+
end
|
data/lib/slugged/scopes.rb
CHANGED
@@ -6,8 +6,8 @@ module Slugged
|
|
6
6
|
end
|
7
7
|
|
8
8
|
def other_than(record)
|
9
|
-
record.new_record? ?
|
9
|
+
record.new_record? ? where(nil) : where("#{quoted_table_name}.#{connection.quote_column_name(:id)} != ?", record.id)
|
10
10
|
end
|
11
11
|
|
12
12
|
end
|
13
|
-
end
|
13
|
+
end
|
data/lib/slugged/slug.rb
CHANGED
@@ -4,8 +4,8 @@ module Slugged
|
|
4
4
|
|
5
5
|
validates_presence_of :record_id, :slug, :scope
|
6
6
|
|
7
|
-
scope :ordered, order('created_at DESC')
|
8
|
-
scope :only_slug, select(:slug)
|
7
|
+
scope :ordered, lambda { order('created_at DESC') }
|
8
|
+
scope :only_slug, lambda { select(:slug) }
|
9
9
|
scope :for_record, lambda { |r| where(:record_id => r.id, :scope => Slugged.key_for_scope(r)) }
|
10
10
|
scope :for_slug, lambda { |scope, slug| where(:scope=> scope.to_s, :slug => slug.to_s)}
|
11
11
|
|
@@ -48,4 +48,4 @@ module Slugged
|
|
48
48
|
end
|
49
49
|
|
50
50
|
end
|
51
|
-
end
|
51
|
+
end
|
data/lib/slugged/slug_history.rb
CHANGED
@@ -26,12 +26,12 @@ module Slugged
|
|
26
26
|
|
27
27
|
module ClassMethods
|
28
28
|
|
29
|
-
def find_using_slug_history(slug
|
29
|
+
def find_using_slug_history(slug)
|
30
30
|
id = Slugged.last_known_slug_id(self, slug)
|
31
|
-
id.present? ? find_by_id(id
|
31
|
+
id.present? ? find_by_id(id) : nil
|
32
32
|
end
|
33
33
|
|
34
34
|
end
|
35
35
|
|
36
36
|
end
|
37
|
-
end
|
37
|
+
end
|
data/lib/slugged/version.rb
CHANGED
data/slugged.gemspec
CHANGED
@@ -19,13 +19,13 @@ Gem::Specification.new do |s|
|
|
19
19
|
s.rdoc_options = ["--charset=UTF-8"]
|
20
20
|
s.summary = %q{Super simple slugs for ActiveRecord 3.0 and higher, with support for slug history}
|
21
21
|
|
22
|
-
s.add_runtime_dependency "activerecord", "
|
23
|
-
s.add_runtime_dependency "activesupport", "
|
22
|
+
s.add_runtime_dependency "activerecord", ">= 3.0"
|
23
|
+
s.add_runtime_dependency "activesupport", ">= 3.0"
|
24
24
|
s.add_runtime_dependency "uuid"
|
25
25
|
|
26
26
|
s.add_development_dependency "shoulda"
|
27
27
|
s.add_development_dependency "reversible_data"
|
28
|
-
s.add_development_dependency "sqlite3
|
28
|
+
s.add_development_dependency "sqlite3"
|
29
29
|
s.add_development_dependency "redgreen"
|
30
30
|
s.add_development_dependency "rake"
|
31
31
|
s.add_development_dependency "rdoc"
|
data/test/helper.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
|
-
|
1
|
+
# encoding: utf-8
|
2
|
+
$KCODE = 'UTF8' if RUBY_VERSION < '1.9'
|
2
3
|
|
3
4
|
require 'rubygems'
|
4
5
|
require 'bundler'
|
@@ -27,13 +28,13 @@ class Test::Unit::TestCase
|
|
27
28
|
User.is_sluggable field, options
|
28
29
|
end
|
29
30
|
|
30
|
-
def assert_same_as_slug(user, slug
|
31
|
-
found_user = User.find_using_slug(slug
|
31
|
+
def assert_same_as_slug(user, slug)
|
32
|
+
found_user = User.find_using_slug(slug)
|
32
33
|
assert_equal user, found_user, "#{slug.inspect} should return #{user.inspect}, got #{found_user.inspect}"
|
33
34
|
end
|
34
35
|
|
35
|
-
def assert_different_to_slug(user, slug
|
36
|
-
found_user = User.find_using_slug(slug
|
36
|
+
def assert_different_to_slug(user, slug)
|
37
|
+
found_user = User.find_using_slug(slug)
|
37
38
|
assert_not_equal user, found_user, "#{slug.inspect} should not return #{user.inspect}, got same record."
|
38
39
|
end
|
39
40
|
|
metadata
CHANGED
@@ -1,160 +1,150 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: slugged
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
prerelease:
|
6
|
-
segments:
|
7
|
-
- 1
|
8
|
-
- 1
|
9
|
-
- 0
|
10
|
-
version: 1.1.0
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 2.0.0
|
11
5
|
platform: ruby
|
12
|
-
authors:
|
6
|
+
authors:
|
13
7
|
- Darcy Laycock
|
14
8
|
autorequire:
|
15
9
|
bindir: bin
|
16
10
|
cert_chain: []
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
- !ruby/object:Gem::Dependency
|
11
|
+
date: 2011-01-01 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
21
14
|
name: activerecord
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
- !ruby/object:Gem::Version
|
28
|
-
hash: 7
|
29
|
-
segments:
|
30
|
-
- 3
|
31
|
-
- 0
|
32
|
-
version: "3.0"
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - '>='
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '3.0'
|
33
20
|
type: :runtime
|
34
|
-
version_requirements: *id001
|
35
|
-
- !ruby/object:Gem::Dependency
|
36
|
-
name: activesupport
|
37
21
|
prerelease: false
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - '>='
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '3.0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: activesupport
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - '>='
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '3.0'
|
48
34
|
type: :runtime
|
49
|
-
version_requirements: *id002
|
50
|
-
- !ruby/object:Gem::Dependency
|
51
|
-
name: uuid
|
52
35
|
prerelease: false
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - '>='
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '3.0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: uuid
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - '>='
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
62
48
|
type: :runtime
|
63
|
-
version_requirements: *id003
|
64
|
-
- !ruby/object:Gem::Dependency
|
65
|
-
name: shoulda
|
66
49
|
prerelease: false
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: shoulda
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
76
62
|
type: :development
|
77
|
-
version_requirements: *id004
|
78
|
-
- !ruby/object:Gem::Dependency
|
79
|
-
name: reversible_data
|
80
63
|
prerelease: false
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - '>='
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: reversible_data
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - '>='
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
90
76
|
type: :development
|
91
|
-
version_requirements: *id005
|
92
|
-
- !ruby/object:Gem::Dependency
|
93
|
-
name: sqlite3-ruby
|
94
77
|
prerelease: false
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - '>='
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: sqlite3
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - '>='
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
104
90
|
type: :development
|
105
|
-
version_requirements: *id006
|
106
|
-
- !ruby/object:Gem::Dependency
|
107
|
-
name: redgreen
|
108
91
|
prerelease: false
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - '>='
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: redgreen
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - '>='
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
118
104
|
type: :development
|
119
|
-
version_requirements: *id007
|
120
|
-
- !ruby/object:Gem::Dependency
|
121
|
-
name: rake
|
122
105
|
prerelease: false
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - '>='
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: rake
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - '>='
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
132
118
|
type: :development
|
133
|
-
version_requirements: *id008
|
134
|
-
- !ruby/object:Gem::Dependency
|
135
|
-
name: rdoc
|
136
119
|
prerelease: false
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - '>='
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0'
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: rdoc
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - '>='
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '0'
|
146
132
|
type: :development
|
147
|
-
|
148
|
-
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - '>='
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '0'
|
139
|
+
description: Super simple slugs for ActiveRecord 3.0 and higher, with support for
|
140
|
+
slug history
|
149
141
|
email: sutto@sutto.net
|
150
142
|
executables: []
|
151
|
-
|
152
143
|
extensions: []
|
153
|
-
|
154
|
-
extra_rdoc_files:
|
144
|
+
extra_rdoc_files:
|
155
145
|
- LICENSE
|
156
146
|
- README.md
|
157
|
-
files:
|
147
|
+
files:
|
158
148
|
- .document
|
159
149
|
- .gitignore
|
160
150
|
- .rvmrc
|
@@ -188,38 +178,30 @@ files:
|
|
188
178
|
- test/slugged_test.rb
|
189
179
|
homepage: http://github.com/Sutto/slugged
|
190
180
|
licenses: []
|
191
|
-
|
181
|
+
metadata: {}
|
192
182
|
post_install_message:
|
193
|
-
rdoc_options:
|
183
|
+
rdoc_options:
|
194
184
|
- --charset=UTF-8
|
195
|
-
require_paths:
|
185
|
+
require_paths:
|
196
186
|
- lib
|
197
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
none: false
|
208
|
-
requirements:
|
209
|
-
- - ">="
|
210
|
-
- !ruby/object:Gem::Version
|
211
|
-
hash: 3
|
212
|
-
segments:
|
213
|
-
- 0
|
214
|
-
version: "0"
|
187
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
188
|
+
requirements:
|
189
|
+
- - '>='
|
190
|
+
- !ruby/object:Gem::Version
|
191
|
+
version: '0'
|
192
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
193
|
+
requirements:
|
194
|
+
- - '>='
|
195
|
+
- !ruby/object:Gem::Version
|
196
|
+
version: '0'
|
215
197
|
requirements: []
|
216
|
-
|
217
198
|
rubyforge_project:
|
218
|
-
rubygems_version:
|
199
|
+
rubygems_version: 2.0.3
|
219
200
|
signing_key:
|
220
|
-
specification_version:
|
221
|
-
summary: Super simple slugs for ActiveRecord 3.0 and higher, with support for slug
|
222
|
-
|
201
|
+
specification_version: 4
|
202
|
+
summary: Super simple slugs for ActiveRecord 3.0 and higher, with support for slug
|
203
|
+
history
|
204
|
+
test_files:
|
223
205
|
- test/caching_test.rb
|
224
206
|
- test/editable_test.rb
|
225
207
|
- test/helper.rb
|