canonical-rails 0.2.4 → 0.2.10
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
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7cc8c724bb2b64e543b2becad527e27a2828bd4113032ecb396f5c8f6425f0e2
|
4
|
+
data.tar.gz: df6126c3991db70dfea28424bf78b64a8a216e1634e3d8f33f1e9c624e33218a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: dafcabbeea6d18de1a8e50d7402e4169d0e451d8fa47a4bb4b311c7e9f616aa78314725ef2ef6684fe44c7a424525d92f58bbd6f9a99540805ecacc0416ab4da
|
7
|
+
data.tar.gz: 3ddf2e2e9fd2423c7eb6f2675755d7ea0461233aa13a61289274129124e1e32cc1b6e9470d74911902baeb5ca165493f8125d5fa1f875186d242c46ee4115b65
|
@@ -4,11 +4,22 @@ module CanonicalRails
|
|
4
4
|
request.params.key?('action') && CanonicalRails.sym_collection_actions.include?(request.params['action'].to_sym)
|
5
5
|
end
|
6
6
|
|
7
|
+
# Leave force_trailing_slash as nil to get the original behavior of trailing_slash_if_needed
|
8
|
+
def trailing_slash_config(force_trailing_slash = nil)
|
9
|
+
if force_trailing_slash
|
10
|
+
"/"
|
11
|
+
elsif force_trailing_slash.nil?
|
12
|
+
trailing_slash_if_needed
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
7
16
|
def trailing_slash_if_needed
|
8
|
-
"/" if trailing_slash_needed?
|
17
|
+
"/" if trailing_slash_needed?
|
9
18
|
end
|
10
19
|
|
11
20
|
def path_without_html_extension
|
21
|
+
return '' if request.path == '/'
|
22
|
+
|
12
23
|
request.path.sub(/\.html$/, '')
|
13
24
|
end
|
14
25
|
|
@@ -24,18 +35,18 @@ module CanonicalRails
|
|
24
35
|
(CanonicalRails.port || request.port).to_i
|
25
36
|
end
|
26
37
|
|
27
|
-
def canonical_href(host = canonical_host, port = canonical_port)
|
38
|
+
def canonical_href(host = canonical_host, port = canonical_port, force_trailing_slash = nil)
|
28
39
|
default_ports = { 'https://' => 443, 'http://' => 80 }
|
29
40
|
port = port.present? && port.to_i != default_ports[canonical_protocol] ? ":#{port}" : ''
|
30
|
-
raw "#{canonical_protocol}#{host}#{port}#{path_without_html_extension}#{
|
41
|
+
raw "#{canonical_protocol}#{host}#{port}#{path_without_html_extension}#{trailing_slash_config(force_trailing_slash)}#{allowed_query_string}"
|
31
42
|
end
|
32
|
-
|
33
|
-
def canonical_path
|
34
|
-
raw "#{path_without_html_extension}#{
|
43
|
+
|
44
|
+
def canonical_path(force_trailing_slash = nil)
|
45
|
+
raw "#{path_without_html_extension}#{trailing_slash_config(force_trailing_slash)}#{allowed_query_string}"
|
35
46
|
end
|
36
47
|
|
37
|
-
def canonical_tag(host = canonical_host, port = canonical_port)
|
38
|
-
canonical_url = canonical_href(host, port)
|
48
|
+
def canonical_tag(host = canonical_host, port = canonical_port, force_trailing_slash = nil)
|
49
|
+
canonical_url = canonical_href(host, port, force_trailing_slash)
|
39
50
|
capture do
|
40
51
|
if CanonicalRails.opengraph_url
|
41
52
|
concat tag(:meta, property: 'og:url', content: canonical_url)
|
@@ -44,15 +55,15 @@ module CanonicalRails
|
|
44
55
|
end
|
45
56
|
end
|
46
57
|
|
47
|
-
def
|
58
|
+
def allowed_params
|
48
59
|
selected_params = params.select do |key, value|
|
49
|
-
value.present? && CanonicalRails.
|
60
|
+
value.present? && CanonicalRails.sym_allowed_parameters.include?(key.to_sym)
|
50
61
|
end
|
51
62
|
|
52
63
|
selected_params.respond_to?(:to_unsafe_h) ? selected_params.to_unsafe_h : selected_params.to_h
|
53
64
|
end
|
54
65
|
|
55
|
-
def
|
66
|
+
def allowed_query_string
|
56
67
|
# Rack 1.4.5 fails to handle params that are not strings
|
57
68
|
# So if
|
58
69
|
# my_hash = { "a" => 1, "b" => 2}
|
@@ -63,7 +74,7 @@ module CanonicalRails
|
|
63
74
|
# Rack 1.6.0 has it
|
64
75
|
# https://github.com/rack/rack/blob/65a7104b6b3e9ecd8f33c63a478ab9a33a103507/test/spec_utils.rb#L251
|
65
76
|
|
66
|
-
wl_params =
|
77
|
+
wl_params = allowed_params
|
67
78
|
|
68
79
|
"?" + Rack::Utils.build_nested_query(convert_numeric_params(wl_params)) if wl_params.present?
|
69
80
|
end
|
data/lib/canonical-rails.rb
CHANGED
@@ -23,8 +23,8 @@ module CanonicalRails
|
|
23
23
|
mattr_accessor :collection_actions
|
24
24
|
@@collection_actions = [:index]
|
25
25
|
|
26
|
-
mattr_accessor :
|
27
|
-
@@
|
26
|
+
mattr_accessor :allowed_parameters
|
27
|
+
@@allowed_parameters = []
|
28
28
|
|
29
29
|
mattr_accessor :opengraph_url
|
30
30
|
@@opengraph_url = false
|
@@ -33,7 +33,7 @@ module CanonicalRails
|
|
33
33
|
@@sym_collection_actions ||= self.collection_actions.map(&:to_sym)
|
34
34
|
end
|
35
35
|
|
36
|
-
def self.
|
37
|
-
@@
|
36
|
+
def self.sym_allowed_parameters
|
37
|
+
@@sym_allowed_parameters ||= self.allowed_parameters.map(&:to_sym)
|
38
38
|
end
|
39
39
|
end
|
@@ -1,9 +1,11 @@
|
|
1
|
+
require_relative '../../app/helpers/canonical_rails/tag_helper'
|
2
|
+
|
1
3
|
module CanonicalRails
|
2
4
|
class Engine < ::Rails::Engine
|
3
|
-
|
5
|
+
|
4
6
|
initializer 'canonical_rails.add_helpers' do |app|
|
5
7
|
ActionView::Base.send :include, CanonicalRails::TagHelper
|
6
8
|
end
|
7
|
-
|
9
|
+
|
8
10
|
end
|
9
11
|
end
|
@@ -20,9 +20,9 @@ CanonicalRails.setup do |config|
|
|
20
20
|
config.collection_actions# = [:index]
|
21
21
|
|
22
22
|
# Parameter spamming can cause index dilution by creating seemingly different URLs with identical or near-identical content.
|
23
|
-
# Unless
|
23
|
+
# Unless allowed, these parameters will be omitted
|
24
24
|
|
25
|
-
config.
|
25
|
+
config.allowed_parameters# = []
|
26
26
|
|
27
27
|
# Output a matching OpenGraph URL meta tag (og:url) with the canonical URL, as recommended by Facebook et al
|
28
28
|
config.opengraph_url#= true
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: canonical-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.10
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Denis Ivanov
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-12-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -19,7 +19,7 @@ dependencies:
|
|
19
19
|
version: '4.1'
|
20
20
|
- - "<"
|
21
21
|
- !ruby/object:Gem::Version
|
22
|
-
version: '
|
22
|
+
version: '6.2'
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
25
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -29,7 +29,7 @@ dependencies:
|
|
29
29
|
version: '4.1'
|
30
30
|
- - "<"
|
31
31
|
- !ruby/object:Gem::Version
|
32
|
-
version: '
|
32
|
+
version: '6.2'
|
33
33
|
- !ruby/object:Gem::Dependency
|
34
34
|
name: appraisal
|
35
35
|
requirement: !ruby/object:Gem::Requirement
|
@@ -45,19 +45,19 @@ dependencies:
|
|
45
45
|
- !ruby/object:Gem::Version
|
46
46
|
version: '0'
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
|
-
name:
|
48
|
+
name: sprockets
|
49
49
|
requirement: !ruby/object:Gem::Requirement
|
50
50
|
requirements:
|
51
|
-
- - "
|
51
|
+
- - "~>"
|
52
52
|
- !ruby/object:Gem::Version
|
53
|
-
version: '0'
|
53
|
+
version: '3.0'
|
54
54
|
type: :development
|
55
55
|
prerelease: false
|
56
56
|
version_requirements: !ruby/object:Gem::Requirement
|
57
57
|
requirements:
|
58
|
-
- - "
|
58
|
+
- - "~>"
|
59
59
|
- !ruby/object:Gem::Version
|
60
|
-
version: '0'
|
60
|
+
version: '3.0'
|
61
61
|
- !ruby/object:Gem::Dependency
|
62
62
|
name: rspec-rails
|
63
63
|
requirement: !ruby/object:Gem::Requirement
|
@@ -109,7 +109,7 @@ files:
|
|
109
109
|
homepage: https://github.com/jumph4x/canonical-rails
|
110
110
|
licenses: []
|
111
111
|
metadata: {}
|
112
|
-
post_install_message:
|
112
|
+
post_install_message:
|
113
113
|
rdoc_options: []
|
114
114
|
require_paths:
|
115
115
|
- lib
|
@@ -124,9 +124,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
124
124
|
- !ruby/object:Gem::Version
|
125
125
|
version: '0'
|
126
126
|
requirements: []
|
127
|
-
|
128
|
-
|
129
|
-
signing_key:
|
127
|
+
rubygems_version: 3.0.6
|
128
|
+
signing_key:
|
130
129
|
specification_version: 4
|
131
130
|
summary: Simple and configurable Rails canonical ref tag helper
|
132
131
|
test_files: []
|