ress 0.0.4 → 0.0.5
Sign up to get free protection for your applications and to get access to all the features.
@@ -19,19 +19,17 @@ module Ress
|
|
19
19
|
# Create a tag of this format:
|
20
20
|
# `<link rel="canonical" href="http://www.example.com/page-1" >`
|
21
21
|
def link_tag(protocol, fullpath, subdomain, view)
|
22
|
-
view.tag :link, :rel => 'canonical', :href =>
|
22
|
+
view.tag :link, :rel => 'canonical', :href => url(protocol, fullpath, subdomain)
|
23
23
|
end
|
24
24
|
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
else
|
32
|
-
"#{protocol}#{fullpath}"
|
33
|
-
end
|
25
|
+
def url(protocol, fullpath, subdomain)
|
26
|
+
fullpath = fullpath[(subdomain.length + 1)..-1] unless subdomain.empty?
|
27
|
+
if self.subdomain
|
28
|
+
"#{protocol}#{self.subdomain}.#{fullpath}"
|
29
|
+
else
|
30
|
+
"#{protocol}#{fullpath}"
|
34
31
|
end
|
32
|
+
end
|
35
33
|
|
36
34
|
end
|
37
35
|
|
@@ -5,10 +5,18 @@ module Ress
|
|
5
5
|
|
6
6
|
def self.included(base)
|
7
7
|
base.helper_method :canonical_request?
|
8
|
-
base.
|
8
|
+
base.helper_method :force_canonical_url
|
9
|
+
base.before_filter :set_force_canonical_cookie
|
10
|
+
base.before_filter :prepend_alternate_view_path
|
9
11
|
end
|
10
12
|
|
11
|
-
def
|
13
|
+
def set_force_canonical_cookie
|
14
|
+
if params[:force_canonical]
|
15
|
+
cookies[:force_canonical] = 1
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
def prepend_alternate_view_path
|
12
20
|
Ress.alternate_versions.each do |cat|
|
13
21
|
prepend_view_path(cat.view_path) if cat.matches?(request.subdomain)
|
14
22
|
end
|
@@ -18,6 +26,14 @@ module Ress
|
|
18
26
|
Ress.canonical_version.matches?(request.subdomain)
|
19
27
|
end
|
20
28
|
|
29
|
+
def force_canonical_url
|
30
|
+
path = "#{request.host_with_port}#{request.fullpath}"
|
31
|
+
url = Ress.canonical_version.url(request.protocol, path, request.subdomain)
|
32
|
+
sep = url.include?('?') ? '&' : '?'
|
33
|
+
|
34
|
+
"#{url}#{sep}force_canonical=1"
|
35
|
+
end
|
36
|
+
|
21
37
|
end
|
22
38
|
end
|
23
39
|
|
data/lib/ress/version.rb
CHANGED
@@ -23,10 +23,10 @@ end
|
|
23
23
|
describe Ress::ControllerAdditions do
|
24
24
|
|
25
25
|
it 'adds a before_filter to all actions when it is included' do
|
26
|
-
ActionControllerStub.action.should == :
|
26
|
+
ActionControllerStub.action.should == :prepend_alternate_view_path
|
27
27
|
end
|
28
28
|
|
29
|
-
describe '#
|
29
|
+
describe '#prepend_alternate_view_path' do
|
30
30
|
|
31
31
|
let(:controller) { ActionControllerStub.new }
|
32
32
|
|
@@ -40,7 +40,7 @@ describe Ress::ControllerAdditions do
|
|
40
40
|
Ress.stub(:alternate_versions => [category])
|
41
41
|
|
42
42
|
controller.should_receive(:prepend_view_path).with('foo/bar')
|
43
|
-
controller.
|
43
|
+
controller.prepend_alternate_view_path
|
44
44
|
end
|
45
45
|
|
46
46
|
it 'does not prepend view paths of alternate_versions that dont match' do
|
@@ -48,7 +48,7 @@ describe Ress::ControllerAdditions do
|
|
48
48
|
Ress.stub(:alternate_versions => [category])
|
49
49
|
|
50
50
|
controller.should_not_receive(:prepend_view_path)
|
51
|
-
controller.
|
51
|
+
controller.prepend_alternate_view_path
|
52
52
|
end
|
53
53
|
|
54
54
|
end
|
@@ -69,4 +69,29 @@ describe Ress::ControllerAdditions do
|
|
69
69
|
|
70
70
|
end
|
71
71
|
|
72
|
+
describe '#force_canonical_url' do
|
73
|
+
|
74
|
+
let(:controller) { ActionControllerStub.new }
|
75
|
+
|
76
|
+
before do
|
77
|
+
@request = stub({
|
78
|
+
:subdomain => 'foo',
|
79
|
+
:host_with_port => 'foo.bar.com',
|
80
|
+
:protocol => 'http://'
|
81
|
+
})
|
82
|
+
controller.stub(:request => @request)
|
83
|
+
end
|
84
|
+
|
85
|
+
it 'appends params to the current url properly if there are no GET params' do
|
86
|
+
@request.stub(:fullpath => '/some_place')
|
87
|
+
controller.force_canonical_url.should == 'http://bar.com/some_place?force_canonical=1'
|
88
|
+
end
|
89
|
+
|
90
|
+
it 'appends params to the current url properly when there are GET params' do
|
91
|
+
@request.stub(:fullpath => '/some_place?param=something')
|
92
|
+
controller.force_canonical_url.should == 'http://bar.com/some_place?param=something&force_canonical=1'
|
93
|
+
end
|
94
|
+
|
95
|
+
end
|
96
|
+
|
72
97
|
end
|
metadata
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ress
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.4
|
5
4
|
prerelease:
|
5
|
+
version: 0.0.5
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Matthew Robertson
|
@@ -12,32 +12,32 @@ cert_chain: []
|
|
12
12
|
date: 2013-01-29 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
|
-
|
16
|
-
prerelease: false
|
17
|
-
requirement: !ruby/object:Gem::Requirement
|
15
|
+
version_requirements: !ruby/object:Gem::Requirement
|
18
16
|
requirements:
|
19
17
|
- - ~>
|
20
18
|
- !ruby/object:Gem::Version
|
21
19
|
version: '3.0'
|
22
20
|
none: false
|
21
|
+
name: actionpack
|
23
22
|
type: :runtime
|
24
|
-
|
23
|
+
prerelease: false
|
24
|
+
requirement: !ruby/object:Gem::Requirement
|
25
25
|
requirements:
|
26
26
|
- - ~>
|
27
27
|
- !ruby/object:Gem::Version
|
28
28
|
version: '3.0'
|
29
29
|
none: false
|
30
30
|
- !ruby/object:Gem::Dependency
|
31
|
-
|
32
|
-
prerelease: false
|
33
|
-
requirement: !ruby/object:Gem::Requirement
|
31
|
+
version_requirements: !ruby/object:Gem::Requirement
|
34
32
|
requirements:
|
35
33
|
- - ! '>='
|
36
34
|
- !ruby/object:Gem::Version
|
37
35
|
version: '0'
|
38
36
|
none: false
|
37
|
+
name: rspec
|
39
38
|
type: :development
|
40
|
-
|
39
|
+
prerelease: false
|
40
|
+
requirement: !ruby/object:Gem::Requirement
|
41
41
|
requirements:
|
42
42
|
- - ! '>='
|
43
43
|
- !ruby/object:Gem::Version
|