meta-tags 2.14.0 → 2.15.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 +4 -4
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/CHANGELOG.md +16 -0
- data/CONTRIBUTING.md +6 -6
- data/Gemfile +1 -1
- data/README.md +23 -2
- data/lib/meta_tags.rb +1 -1
- data/lib/meta_tags/configuration.rb +7 -0
- data/lib/meta_tags/controller_helper.rb +3 -3
- data/lib/meta_tags/renderer.rb +28 -7
- data/lib/meta_tags/text_normalizer.rb +6 -4
- data/lib/meta_tags/version.rb +1 -1
- data/meta-tags.gemspec +2 -1
- metadata +5 -5
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 623738e419a62299132050216fd53ae9e8c6bbc44cd1f17befd3e3560a1a4b98
|
4
|
+
data.tar.gz: 89e2a81fd16a51b31512adbcb732d76fa973c01d28f30fa92cdbec8961b9b88c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e5a8ddfaa667a93609c15955690aadd8e6afa01a02f1d1c7a469a2e0621cb2f1def23efffca69bd2a1c7a2ee5bbf2a2ddf6304d29c49a1024ff36c7c4429185d
|
7
|
+
data.tar.gz: baa13d008e47c3fb9a49826435382256dc14c8395d2a3fe00adb0a80fab9ca1ae8e4f776ab20a21cbfd0f8cd8afb0ce8a12c2efbcdf0af4b7b86d65611035f54
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data.tar.gz.sig
CHANGED
Binary file
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,19 @@
|
|
1
|
+
# Changelog
|
2
|
+
|
3
|
+
## 2.15.0 (August 2, 2021) [☰](https://github.com/kpumuk/meta-tags/compare/v2.14.0...v2.15.0)
|
4
|
+
|
5
|
+
Changes:
|
6
|
+
|
7
|
+
- Added Ruby 3.0 to supported versions
|
8
|
+
- Ruby 2.5 is now a required minimum version (we dropped official support for Ruby versions older than 2.5 about 8 months ago)
|
9
|
+
- Added `skip_canonical_links_on_noindex` configuration variable that allows to disable canonical links of the pages that are excluded from indexing ([214](https://github.com/kpumuk/meta-tags/pull/214))
|
10
|
+
- Added support for `itemprop` in `_` tag for custom tags ([203](https://github.com/kpumuk/meta-tags/pull/203))
|
11
|
+
|
12
|
+
Bugfixes:
|
13
|
+
|
14
|
+
- Fixed error "can't modify frozen String" in `strip_tags`.
|
15
|
+
- Fixed Ruby warning about an instance variable that is not initialized.
|
16
|
+
|
1
17
|
## 2.14.0 (December 10, 2020) [☰](https://github.com/kpumuk/meta-tags/compare/v2.13.0...v2.14.0)
|
2
18
|
|
3
19
|
Changes:
|
data/CONTRIBUTING.md
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# Contributing
|
2
2
|
|
3
3
|
We love pull requests from everyone. By participating in this project, you
|
4
|
-
agree to abide by the [code of conduct](https://github.com/kpumuk/meta-tags/blob/
|
4
|
+
agree to abide by the [code of conduct](https://github.com/kpumuk/meta-tags/blob/main/CODE_OF_CONDUCT.md).
|
5
5
|
|
6
6
|
## Configuring Development Environment
|
7
7
|
|
@@ -29,13 +29,13 @@ Make your change. Add tests for your change. Make the tests pass:
|
|
29
29
|
argument for the meta tag name should be `name`:
|
30
30
|
|
31
31
|
```html
|
32
|
-
<meta name="keywords" content="HTML,CSS,XML,JavaScript"
|
32
|
+
<meta name="keywords" content="HTML,CSS,XML,JavaScript" />
|
33
33
|
```
|
34
34
|
|
35
35
|
Some social networks require to use `property` argument instead (Facebook Open Graph).
|
36
36
|
MetaTags supports the most popular meta tags, but there will be tags that are not covered
|
37
37
|
by default. If you found one, and you feel like the community would benefit from
|
38
|
-
MetaTags supporting it out of the box, feel free to add it to [the list](https://github.com/kpumuk/meta-tags/blob/
|
38
|
+
MetaTags supporting it out of the box, feel free to add it to [the list](https://github.com/kpumuk/meta-tags/blob/main/lib/meta_tags/configuration.rb#L23-L57)
|
39
39
|
and submit a pull request.
|
40
40
|
|
41
41
|
## Raising a Pull Request
|
@@ -47,6 +47,6 @@ within couple days. We may suggest some changes or improvements or alternatives.
|
|
47
47
|
|
48
48
|
Some things that will increase the chance that your pull request is accepted:
|
49
49
|
|
50
|
-
|
51
|
-
|
52
|
-
|
50
|
+
- Write tests.
|
51
|
+
- Make sure [CodeClimate](https://codeclimate.com/github/kpumuk/meta-tags/builds) build is clean.
|
52
|
+
- Write a [good commit message](http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html).
|
data/Gemfile
CHANGED
@@ -13,7 +13,7 @@ end
|
|
13
13
|
group :test do
|
14
14
|
# Lock rubocop to a specific version we use on CI. If you update this,
|
15
15
|
# don't forget to switch rubocop channel in the .codeclimate.yml
|
16
|
-
gem 'rubocop', '~>
|
16
|
+
gem 'rubocop', '~> 1.18.0'
|
17
17
|
# Cops for rails apps
|
18
18
|
gem 'rubocop-rails'
|
19
19
|
# Apply RSpec rubocop cops
|
data/README.md
CHANGED
@@ -5,13 +5,13 @@
|
|
5
5
|
[](https://codeclimate.com/github/kpumuk/meta-tags)
|
6
6
|
[](https://codeclimate.com/github/kpumuk/meta-tags/coverage)
|
7
7
|
[](https://badge.fury.io/rb/meta-tags)
|
8
|
-
[](https://github.com/kpumuk/meta-tags/blob/
|
8
|
+
[](https://github.com/kpumuk/meta-tags/blob/main/CHANGELOG.md)
|
9
9
|
|
10
10
|
Search Engine Optimization (SEO) plugin for Ruby on Rails applications.
|
11
11
|
|
12
12
|
## Ruby on Rails
|
13
13
|
|
14
|
-
MetaTags
|
14
|
+
MetaTags main branch fully supports Ruby on Rails 5.1+, and is tested against all
|
15
15
|
major Rails releases up to 6.1.
|
16
16
|
|
17
17
|
Ruby versions older than 2.5 are no longer officially supported.
|
@@ -409,6 +409,9 @@ Canonical link element tells a search engine what is the canonical or main URL
|
|
409
409
|
for a content which have multiple URLs. The search engine will always return
|
410
410
|
that URL, and link popularity and authority will be applied to that URL.
|
411
411
|
|
412
|
+
Note: If you like follow a hint of John Mueller that you shouldn't mix canonical with noindex, then you can
|
413
|
+
set `MetaTags.config.skip_canonical_links_on_noindex = true` and we'll handle it for you.
|
414
|
+
|
412
415
|
```ruby
|
413
416
|
set_meta_tags canonical: "http://yoursite.com/canonical/url"
|
414
417
|
# <link rel="canonical" href="http://yoursite.com/canonical/url">
|
@@ -694,6 +697,24 @@ set_meta_tags twitter: {
|
|
694
697
|
# <meta name="twitter:image:height" content="100">
|
695
698
|
```
|
696
699
|
|
700
|
+
Special parameter `itemprop` can be used on a "anonymous" tag "\_" to generate "itemprop" HTML attribute:
|
701
|
+
|
702
|
+
```ruby
|
703
|
+
set_meta_tags twitter: {
|
704
|
+
card: "photo",
|
705
|
+
image: {
|
706
|
+
_: "http://example.com/1.png",
|
707
|
+
width: 100,
|
708
|
+
height: 100,
|
709
|
+
itemprop: "image",
|
710
|
+
}
|
711
|
+
}
|
712
|
+
# <meta name="twitter:card" content="photo">
|
713
|
+
# <meta name="twitter:image" content="http://example.com/1.png" itemprop="image">
|
714
|
+
# <meta name="twitter:image:width" content="100">
|
715
|
+
# <meta name="twitter:image:height" content="100">
|
716
|
+
```
|
717
|
+
|
697
718
|
Further reading:
|
698
719
|
|
699
720
|
- [Twitter Cards Documentation](https://dev.twitter.com/cards/)
|
data/lib/meta_tags.rb
CHANGED
@@ -33,6 +33,12 @@ module MetaTags
|
|
33
33
|
# - an array of strings or symbols representing their names or name-prefixes.
|
34
34
|
attr_reader :property_tags
|
35
35
|
|
36
|
+
# Configure whenever Meta-Tags should skip canonicals on pages with noindex: true
|
37
|
+
# "shouldn't mix noindex & rel=canonical comes from: they're very contradictory pieces of information for us."
|
38
|
+
# - John Mueller (Webmaster Trends Analyst at Google)
|
39
|
+
# https://www.reddit.com/r/TechSEO/comments/8yahdr/2_questions_about_the_canonical_tag/e2dey9i/
|
40
|
+
attr_accessor :skip_canonical_links_on_noindex
|
41
|
+
|
36
42
|
# Initializes a new instance of Configuration class.
|
37
43
|
def initialize
|
38
44
|
reset_defaults!
|
@@ -77,6 +83,7 @@ module MetaTags
|
|
77
83
|
@property_tags = default_property_tags.dup
|
78
84
|
@open_meta_tags = true
|
79
85
|
@minify_output = false
|
86
|
+
@skip_canonical_links_on_noindex = false
|
80
87
|
end
|
81
88
|
end
|
82
89
|
end
|
@@ -15,9 +15,9 @@ module MetaTags
|
|
15
15
|
# Processes the <tt>@page_title</tt>, <tt>@page_keywords</tt>, and
|
16
16
|
# <tt>@page_description</tt> instance variables and calls +render+.
|
17
17
|
def render(*args, &block)
|
18
|
-
meta_tags[:title] = @page_title if @page_title
|
19
|
-
meta_tags[:keywords] = @page_keywords if @page_keywords
|
20
|
-
meta_tags[:description] = @page_description if @page_description
|
18
|
+
meta_tags[:title] = @page_title if defined?(@page_title) && @page_title
|
19
|
+
meta_tags[:keywords] = @page_keywords if defined?(@page_keywords) && @page_keywords
|
20
|
+
meta_tags[:description] = @page_description if defined?(@page_description) && @page_description
|
21
21
|
|
22
22
|
super
|
23
23
|
end
|
data/lib/meta_tags/renderer.rb
CHANGED
@@ -26,6 +26,7 @@ module MetaTags
|
|
26
26
|
render_with_normalization(tags, :description)
|
27
27
|
render_with_normalization(tags, :keywords)
|
28
28
|
render_refresh(tags)
|
29
|
+
render_canonical_link(tags)
|
29
30
|
render_noindex(tags)
|
30
31
|
render_alternate(tags)
|
31
32
|
render_open_search(tags)
|
@@ -150,7 +151,7 @@ module MetaTags
|
|
150
151
|
# @param [Array<Tag>] tags a buffer object to store tag in.
|
151
152
|
#
|
152
153
|
def render_links(tags)
|
153
|
-
[ :amphtml, :
|
154
|
+
[ :amphtml, :prev, :next, :image_src, :manifest ].each do |tag_name|
|
154
155
|
href = meta_tags.extract(tag_name)
|
155
156
|
if href.present?
|
156
157
|
@normalized_meta_tags[tag_name] = href
|
@@ -159,6 +160,19 @@ module MetaTags
|
|
159
160
|
end
|
160
161
|
end
|
161
162
|
|
163
|
+
# Renders canonical link
|
164
|
+
#
|
165
|
+
# @param [Array<Tag>] tags a buffer object to store tag in.
|
166
|
+
#
|
167
|
+
def render_canonical_link(tags)
|
168
|
+
href = meta_tags.extract(:canonical) # extract, so its not used anywhere else
|
169
|
+
return if MetaTags.config.skip_canonical_links_on_noindex && meta_tags[:noindex]
|
170
|
+
return if href.blank?
|
171
|
+
|
172
|
+
@normalized_meta_tags[:canonical] = href
|
173
|
+
tags << Tag.new(:link, rel: :canonical, href: href)
|
174
|
+
end
|
175
|
+
|
162
176
|
# Renders complex hash objects.
|
163
177
|
#
|
164
178
|
# @param [Array<Tag>] tags a buffer object to store tag in.
|
@@ -201,16 +215,17 @@ module MetaTags
|
|
201
215
|
# @param [Hash, Array, String, Symbol] content text content or a symbol reference to
|
202
216
|
# top-level meta tag.
|
203
217
|
#
|
204
|
-
def process_tree(tags, property, content, **opts)
|
218
|
+
def process_tree(tags, property, content, itemprop: nil, **opts)
|
205
219
|
method = case content
|
206
220
|
when Hash
|
207
221
|
:process_hash
|
208
222
|
when Array
|
209
223
|
:process_array
|
210
224
|
else
|
225
|
+
iprop = itemprop
|
211
226
|
:render_tag
|
212
227
|
end
|
213
|
-
__send__(method, tags, property, content, **opts)
|
228
|
+
__send__(method, tags, property, content, itemprop: iprop, **opts)
|
214
229
|
end
|
215
230
|
|
216
231
|
# Recursive method to process a hash with meta tags
|
@@ -220,10 +235,16 @@ module MetaTags
|
|
220
235
|
# @param [Hash] content nested meta tag attributes.
|
221
236
|
#
|
222
237
|
def process_hash(tags, property, content, **opts)
|
238
|
+
itemprop = content.delete(:itemprop)
|
223
239
|
content.each do |key, value|
|
224
|
-
|
240
|
+
if key.to_s == '_'
|
241
|
+
iprop = itemprop
|
242
|
+
key = property
|
243
|
+
else
|
244
|
+
key = "#{property}:#{key}"
|
245
|
+
end
|
225
246
|
value = normalized_meta_tags[value] if value.kind_of?(Symbol)
|
226
|
-
process_tree(tags, key, value, **opts)
|
247
|
+
process_tree(tags, key, value, **opts.merge(itemprop: iprop))
|
227
248
|
end
|
228
249
|
end
|
229
250
|
|
@@ -244,9 +265,9 @@ module MetaTags
|
|
244
265
|
# @param [String, Symbol] value text content or a symbol reference to
|
245
266
|
# top-level meta tag.
|
246
267
|
#
|
247
|
-
def render_tag(tags, name, value,
|
268
|
+
def render_tag(tags, name, value, itemprop: nil)
|
248
269
|
name_key ||= configured_name_key(name)
|
249
|
-
tags << Tag.new(:meta, name_key => name.to_s,
|
270
|
+
tags << Tag.new(:meta, name_key => name.to_s, content: value, itemprop: itemprop) if value.present?
|
250
271
|
end
|
251
272
|
|
252
273
|
# Returns meta tag property name for a give meta tag based on the
|
@@ -110,10 +110,12 @@ module MetaTags
|
|
110
110
|
return '' if string.nil?
|
111
111
|
raise ArgumentError, 'Expected a string or an object that implements #to_str' unless string.respond_to?(:to_str)
|
112
112
|
|
113
|
-
strip_tags(string.to_str)
|
114
|
-
|
115
|
-
|
116
|
-
|
113
|
+
s = strip_tags(string.to_str)
|
114
|
+
s = s.dup if s.frozen?
|
115
|
+
s.gsub!(/\s+/, ' ')
|
116
|
+
s.strip! if strip
|
117
|
+
|
118
|
+
s
|
117
119
|
end
|
118
120
|
|
119
121
|
# Cleans multiple strings up.
|
data/lib/meta_tags/version.rb
CHANGED
data/meta-tags.gemspec
CHANGED
@@ -15,6 +15,7 @@ Gem::Specification.new do |spec|
|
|
15
15
|
spec.homepage = "http://github.com/kpumuk/meta-tags"
|
16
16
|
spec.license = "MIT"
|
17
17
|
spec.platform = Gem::Platform::RUBY
|
18
|
+
spec.required_ruby_version = '>= 2.5.0'
|
18
19
|
|
19
20
|
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(\.|(bin|test|spec|features)/)}) }
|
20
21
|
spec.bindir = "exe"
|
@@ -25,7 +26,7 @@ Gem::Specification.new do |spec|
|
|
25
26
|
|
26
27
|
spec.add_development_dependency "railties", ">= 3.2.0", "< 6.2"
|
27
28
|
spec.add_development_dependency "rake", "~> 13.0"
|
28
|
-
spec.add_development_dependency "rspec", "~> 3.
|
29
|
+
spec.add_development_dependency "rspec", "~> 3.10.0"
|
29
30
|
spec.add_development_dependency "rspec-html-matchers", "~> 0.9.1"
|
30
31
|
|
31
32
|
spec.cert_chain = ["certs/kpumuk.pem"]
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: meta-tags
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.15.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dmytro Shteflyuk
|
@@ -29,7 +29,7 @@ cert_chain:
|
|
29
29
|
U97JEQmXCpruLEeSVT2UqR+iJAWEAxPzqzDbTzZBTSPKn+nXeuF6h81e4hsJtkeJ
|
30
30
|
HkYAoatF9iZrxT4E
|
31
31
|
-----END CERTIFICATE-----
|
32
|
-
date:
|
32
|
+
date: 2021-08-02 00:00:00.000000000 Z
|
33
33
|
dependencies:
|
34
34
|
- !ruby/object:Gem::Dependency
|
35
35
|
name: actionpack
|
@@ -91,14 +91,14 @@ dependencies:
|
|
91
91
|
requirements:
|
92
92
|
- - "~>"
|
93
93
|
- !ruby/object:Gem::Version
|
94
|
-
version: 3.
|
94
|
+
version: 3.10.0
|
95
95
|
type: :development
|
96
96
|
prerelease: false
|
97
97
|
version_requirements: !ruby/object:Gem::Requirement
|
98
98
|
requirements:
|
99
99
|
- - "~>"
|
100
100
|
- !ruby/object:Gem::Version
|
101
|
-
version: 3.
|
101
|
+
version: 3.10.0
|
102
102
|
- !ruby/object:Gem::Dependency
|
103
103
|
name: rspec-html-matchers
|
104
104
|
requirement: !ruby/object:Gem::Requirement
|
@@ -155,7 +155,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
155
155
|
requirements:
|
156
156
|
- - ">="
|
157
157
|
- !ruby/object:Gem::Version
|
158
|
-
version:
|
158
|
+
version: 2.5.0
|
159
159
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
160
160
|
requirements:
|
161
161
|
- - ">="
|
metadata.gz.sig
CHANGED
Binary file
|