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 => href(protocol, fullpath, subdomain)
22
+ view.tag :link, :rel => 'canonical', :href => url(protocol, fullpath, subdomain)
23
23
  end
24
24
 
25
- private
26
-
27
- def href(protocol, fullpath, subdomain)
28
- fullpath = fullpath[(subdomain.length + 1)..-1] unless subdomain.empty?
29
- if self.subdomain
30
- "#{protocol}#{self.subdomain}.#{fullpath}"
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.before_filter :prepend_category_view_path
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 prepend_category_view_path
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
@@ -1,3 +1,3 @@
1
1
  module Ress
2
- VERSION = "0.0.4"
2
+ VERSION = "0.0.5"
3
3
  end
@@ -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 == :prepend_category_view_path
26
+ ActionControllerStub.action.should == :prepend_alternate_view_path
27
27
  end
28
28
 
29
- describe '#prepend_category_view_path' do
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.prepend_category_view_path
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.prepend_category_view_path
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
@@ -5,7 +5,7 @@
5
5
  (function(exports) {
6
6
 
7
7
  var MQ_TOUCH = /\(touch-enabled: (.*?)\)/;
8
- var FORCE_COOKIE = 'force-cannonical';
8
+ var FORCE_COOKIE = 'force_canonical';
9
9
 
10
10
  /**
11
11
  * Class responsible for deciding which version of the application to
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
- name: actionpack
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
- version_requirements: !ruby/object:Gem::Requirement
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
- name: rspec
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
- version_requirements: !ruby/object:Gem::Requirement
39
+ prerelease: false
40
+ requirement: !ruby/object:Gem::Requirement
41
41
  requirements:
42
42
  - - ! '>='
43
43
  - !ruby/object:Gem::Version