page_meta 0.1.1 → 1.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 +5 -5
- data/.github/CODEOWNERS +4 -0
- data/.github/FUNDING.yml +3 -0
- data/.github/ISSUE_TEMPLATE/bug_report.md +41 -0
- data/.github/ISSUE_TEMPLATE/feature_request.md +23 -0
- data/.github/PULL_REQUEST_TEMPLATE.md +38 -0
- data/.github/dependabot.yml +15 -0
- data/.github/workflows/ruby-tests.yml +61 -0
- data/.gitignore +1 -1
- data/.rubocop.yml +18 -0
- data/.travis.yml +16 -2
- data/CHANGELOG.md +16 -0
- data/CONTRIBUTING.md +80 -0
- data/Gemfile +3 -1
- data/README.md +83 -37
- data/Rakefile +8 -2
- data/bin/console +1 -0
- data/gemfiles/6.0.gemfile +6 -0
- data/gemfiles/6.1.gemfile +6 -0
- data/lib/page_meta/action.rb +6 -2
- data/lib/page_meta/base.rb +33 -10
- data/lib/page_meta/hash_meta_tag.rb +16 -0
- data/lib/page_meta/helpers.rb +2 -0
- data/lib/page_meta/link.rb +7 -1
- data/lib/page_meta/meta_tag/charset.rb +4 -2
- data/lib/page_meta/meta_tag/dns_prefetch_control.rb +3 -1
- data/lib/page_meta/meta_tag/language.rb +3 -1
- data/lib/page_meta/meta_tag/og.rb +5 -9
- data/lib/page_meta/meta_tag/title.rb +4 -2
- data/lib/page_meta/meta_tag/twitter.rb +5 -9
- data/lib/page_meta/meta_tag.rb +8 -2
- data/lib/page_meta/naming.rb +8 -3
- data/lib/page_meta/railtie.rb +2 -0
- data/lib/page_meta/translator.rb +17 -6
- data/lib/page_meta/version.rb +3 -1
- data/lib/page_meta.rb +3 -0
- data/page_meta.gemspec +18 -9
- metadata +38 -25
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
|
-
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
2
|
+
SHA256:
|
|
3
|
+
metadata.gz: 0727fb1af7a2848d3cd1e6f2d44efd3c106c44588cd604d9738c0d1b90bdb67d
|
|
4
|
+
data.tar.gz: fd339b23e757843cab438e5078d17253bcbaca18bf4351082706a2ec81da065d
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 790616651e1425832a679050c2d6c9b1805d4236f88fedcf3b622a0176cf7020be0f78672094b1660417c06c8283dc123a143ae1f666393f0afc4bcee26013d7
|
|
7
|
+
data.tar.gz: 0c6981527e16056706a51088ad995a70167e8e55c47bd86c7c1613a394aea0835f4b047f642186a883c98c78f903dff905b7e804b63067a4bd838d4416509105
|
data/.github/CODEOWNERS
ADDED
data/.github/FUNDING.yml
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: "🐛 Bug Report"
|
|
3
|
+
about: Report a reproducible bug or regression.
|
|
4
|
+
title: 'Bug: '
|
|
5
|
+
labels: 'Status: Unconfirmed'
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
<!--
|
|
10
|
+
- Please provide a clear and concise description of what the bug is.
|
|
11
|
+
- If possible, add an example reproducing your issue.
|
|
12
|
+
- Please test using the latest version of page_meta
|
|
13
|
+
to make sure your issue has not already been fixed.
|
|
14
|
+
-->
|
|
15
|
+
|
|
16
|
+
## Description
|
|
17
|
+
|
|
18
|
+
[Add bug description here]
|
|
19
|
+
|
|
20
|
+
## How to reproduce
|
|
21
|
+
|
|
22
|
+
[Add steps on how to reproduce this issue]
|
|
23
|
+
|
|
24
|
+
## What do you expect
|
|
25
|
+
|
|
26
|
+
[Describe what do you expect to happen]
|
|
27
|
+
|
|
28
|
+
## What happened instead
|
|
29
|
+
|
|
30
|
+
[Describe the actual results]
|
|
31
|
+
|
|
32
|
+
## Software:
|
|
33
|
+
|
|
34
|
+
- Gem version: [Add gem version here]
|
|
35
|
+
- Ruby version: [Add version here]
|
|
36
|
+
|
|
37
|
+
## Full backtrace
|
|
38
|
+
|
|
39
|
+
```text
|
|
40
|
+
[Paste full backtrace here]
|
|
41
|
+
```
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: "💡 Feature request"
|
|
3
|
+
about: Have an idea that may be useful? Make a suggestion!
|
|
4
|
+
title: 'Feature Request: '
|
|
5
|
+
labels: 'Feature request'
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Description
|
|
10
|
+
|
|
11
|
+
_A clear and concise description of what the problem is._
|
|
12
|
+
|
|
13
|
+
## Describe the solution
|
|
14
|
+
|
|
15
|
+
_A clear and concise description of what you want to happen._
|
|
16
|
+
|
|
17
|
+
## Alternatives you considered
|
|
18
|
+
|
|
19
|
+
_A clear and concise description of any alternative solutions or features you've considered._
|
|
20
|
+
|
|
21
|
+
## Additional context
|
|
22
|
+
|
|
23
|
+
_Add any other context, screenshots, links, etc about the feature request here._
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
If you're making a doc PR or something tiny where the below is irrelevant,
|
|
3
|
+
delete this template and use a short description, but in your description aim to
|
|
4
|
+
include both what the change is, and why it is being made, with enough context
|
|
5
|
+
for anyone to understand.
|
|
6
|
+
-->
|
|
7
|
+
|
|
8
|
+
<details>
|
|
9
|
+
<summary>PR Checklist</summary>
|
|
10
|
+
|
|
11
|
+
### PR Structure
|
|
12
|
+
|
|
13
|
+
- [ ] This PR has reasonably narrow scope (if not, break it down into smaller
|
|
14
|
+
PRs).
|
|
15
|
+
- [ ] This PR avoids mixing refactoring changes with feature changes (split into
|
|
16
|
+
two PRs otherwise).
|
|
17
|
+
- [ ] This PR's title starts is concise and descriptive.
|
|
18
|
+
|
|
19
|
+
### Thoroughness
|
|
20
|
+
|
|
21
|
+
- [ ] This PR adds tests for the most critical parts of the new functionality or
|
|
22
|
+
fixes.
|
|
23
|
+
- [ ] I've updated any docs, `.md` files, etc… affected by this change.
|
|
24
|
+
|
|
25
|
+
</details>
|
|
26
|
+
|
|
27
|
+
### What
|
|
28
|
+
|
|
29
|
+
[TODO: Short statement about what is changing.]
|
|
30
|
+
|
|
31
|
+
### Why
|
|
32
|
+
|
|
33
|
+
[TODO: Why this change is being made. Include any context required to understand
|
|
34
|
+
the why.]
|
|
35
|
+
|
|
36
|
+
### Known limitations
|
|
37
|
+
|
|
38
|
+
[TODO or N/A]
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
---
|
|
2
|
+
# Documentation:
|
|
3
|
+
# https://help.github.com/github/administering-a-repository/configuration-options-for-dependency-updates
|
|
4
|
+
|
|
5
|
+
version: 2
|
|
6
|
+
updates:
|
|
7
|
+
- package-ecosystem: "github-actions"
|
|
8
|
+
directory: "/"
|
|
9
|
+
schedule:
|
|
10
|
+
interval: "daily"
|
|
11
|
+
|
|
12
|
+
- package-ecosystem: "bundler"
|
|
13
|
+
directory: "/"
|
|
14
|
+
schedule:
|
|
15
|
+
interval: "daily"
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ruby-tests
|
|
3
|
+
|
|
4
|
+
on:
|
|
5
|
+
pull_request:
|
|
6
|
+
branches:
|
|
7
|
+
- main
|
|
8
|
+
push:
|
|
9
|
+
branches:
|
|
10
|
+
- main
|
|
11
|
+
|
|
12
|
+
schedule:
|
|
13
|
+
- cron: "0 10 * * *"
|
|
14
|
+
|
|
15
|
+
jobs:
|
|
16
|
+
build:
|
|
17
|
+
name: Tests with Ruby ${{ matrix.ruby }} and ${{ matrix.gemfile }}
|
|
18
|
+
runs-on: "ubuntu-latest"
|
|
19
|
+
strategy:
|
|
20
|
+
fail-fast: false
|
|
21
|
+
matrix:
|
|
22
|
+
ruby: [2.7.x, 3.0.x]
|
|
23
|
+
gemfile:
|
|
24
|
+
- Gemfile
|
|
25
|
+
- gemfiles/6.1.gemfile
|
|
26
|
+
- gemfiles/6.0.gemfile
|
|
27
|
+
|
|
28
|
+
steps:
|
|
29
|
+
- uses: actions/checkout@v1
|
|
30
|
+
|
|
31
|
+
- uses: actions/cache@v2
|
|
32
|
+
with:
|
|
33
|
+
path: vendor/bundle
|
|
34
|
+
key: >
|
|
35
|
+
${{ runner.os }}-${{ matrix.ruby }}-gems-${{
|
|
36
|
+
hashFiles(matrix.gemfile) }}
|
|
37
|
+
restore-keys: >
|
|
38
|
+
${{ runner.os }}-${{ matrix.ruby }}-gems-${{
|
|
39
|
+
hashFiles(matrix.gemfile) }}
|
|
40
|
+
|
|
41
|
+
- name: Set up Ruby
|
|
42
|
+
uses: actions/setup-ruby@v1
|
|
43
|
+
with:
|
|
44
|
+
ruby-version: ${{ matrix.ruby }}
|
|
45
|
+
|
|
46
|
+
- name: Install gem dependencies
|
|
47
|
+
env:
|
|
48
|
+
BUNDLE_GEMFILE: ${{ matrix.gemfile }}
|
|
49
|
+
run: |
|
|
50
|
+
gem install bundler
|
|
51
|
+
bundle config path vendor/bundle
|
|
52
|
+
bundle update --jobs 4 --retry 3
|
|
53
|
+
|
|
54
|
+
- name: Run Tests
|
|
55
|
+
env:
|
|
56
|
+
PGHOST: localhost
|
|
57
|
+
PGUSER: postgres
|
|
58
|
+
BUNDLE_GEMFILE: ${{ matrix.gemfile }}
|
|
59
|
+
run: |
|
|
60
|
+
bundle exec rake
|
|
61
|
+
bundle exec rubocop
|
data/.gitignore
CHANGED
data/.rubocop.yml
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
---
|
|
2
|
+
inherit_gem:
|
|
3
|
+
rubocop-fnando: .rubocop.yml
|
|
4
|
+
|
|
5
|
+
AllCops:
|
|
6
|
+
TargetRubyVersion: 2.7
|
|
7
|
+
NewCops: enable
|
|
8
|
+
Exclude:
|
|
9
|
+
- test/support/dummy.rb
|
|
10
|
+
- vendor/**/*
|
|
11
|
+
- bin/**/*
|
|
12
|
+
- gemfiles/vendor/**/*
|
|
13
|
+
|
|
14
|
+
Layout/LineLength:
|
|
15
|
+
Enabled: false
|
|
16
|
+
|
|
17
|
+
Metrics:
|
|
18
|
+
Enabled: false
|
data/.travis.yml
CHANGED
|
@@ -2,5 +2,19 @@ language: ruby
|
|
|
2
2
|
cache: bundler
|
|
3
3
|
sudo: false
|
|
4
4
|
rvm:
|
|
5
|
-
- 2.
|
|
6
|
-
|
|
5
|
+
- 2.7.1
|
|
6
|
+
- 2.6.5
|
|
7
|
+
before_install: gem install bundler --pre
|
|
8
|
+
before_script:
|
|
9
|
+
- "curl -L
|
|
10
|
+
https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64
|
|
11
|
+
> ./cc-test-reporter"
|
|
12
|
+
- chmod +x ./cc-test-reporter
|
|
13
|
+
- "./cc-test-reporter before-build"
|
|
14
|
+
after_script:
|
|
15
|
+
- "./cc-test-reporter after-build --exit-code $TRAVIS_TEST_RESULT"
|
|
16
|
+
notifications:
|
|
17
|
+
email: false
|
|
18
|
+
env:
|
|
19
|
+
global:
|
|
20
|
+
secure: pN+1uDJEgbIfpvSmk9owADeqXcQAXzMYMkM6XHR3IgfjbRZ39sBL11EkYziF90boEJPoMkVYmwYuTfGePPN7uWxkDBQJXTEaAXGeuAlQc1Fhzsj0WQZlOcQn1JHYmLtzBVe/B8J4z5ZuQMDFTMe+f2i1qIk00P/R1ozcbz9+g3Pi/5Esf7+6NY2rxQYeEw21/D7WM4UGAOJ+uX6rHdEUo/ej18bUZC8GBxZZy6jVeVqbBE8PPdzNcLkkUu+soPbZVBZiVF2bXn+N3AqXQqA4oL4t7zorG7xU4+2mUldbHRr3HaJBPSwnWzw6mjnSEq6OO77nTOrpwdrkb/Qz/slgL5cuqjlO0MRNq6THdBZT29vCqErxAFs9w4AUoFgwkzMe1mR8ZB8QuUct3xFpAMtE2q35efCuHFb5h682Ske8v0COnzsIRjN1NgSX3nx1oKIh7V9c9O84oDx+W/h0oL2RH/OjW4DcLaVBDS5MhaMZ1ySuBktmqDJD2OqsfbO4Gn+LrWbQAM2RFp2TTROyfDJJU3ITgE7DMqn0QiOcZIoCWzastamGJJs99WzmliouO87ZDSG5Kct2JXml0syyY/jBuR5nnJ9x6TyJpDD9jNMz6LOW9LZ31aOttGbAOQbYVgUgtPkITEuo8xhLCBc6ae+GVA4t8NcJx/rAn1U9E/CXiPs=
|
data/CHANGELOG.md
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
<!--
|
|
4
|
+
Prefix your message with one of the following:
|
|
5
|
+
|
|
6
|
+
- [Added] for new features.
|
|
7
|
+
- [Changed] for changes in existing functionality.
|
|
8
|
+
- [Deprecated] for soon-to-be removed features.
|
|
9
|
+
- [Removed] for now removed features.
|
|
10
|
+
- [Fixed] for any bug fixes.
|
|
11
|
+
- [Security] in case of vulnerabilities.
|
|
12
|
+
-->
|
|
13
|
+
|
|
14
|
+
## 1.0.0
|
|
15
|
+
|
|
16
|
+
- Initial release.
|
data/CONTRIBUTING.md
ADDED
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
# Contributing to page_meta
|
|
2
|
+
|
|
3
|
+
👍🎉 First off, thanks for taking the time to contribute! 🎉👍
|
|
4
|
+
|
|
5
|
+
The following is a set of guidelines for contributing to this project. These are
|
|
6
|
+
mostly guidelines, not rules. Use your best judgment, and feel free to propose
|
|
7
|
+
changes to this document in a pull request.
|
|
8
|
+
|
|
9
|
+
## Code of Conduct
|
|
10
|
+
|
|
11
|
+
Everyone interacting in this project's codebases, issue trackers, chat rooms and
|
|
12
|
+
mailing lists is expected to follow the
|
|
13
|
+
[code of conduct](https://github.com/fnando/page_meta/blob/main/CODE_OF_CONDUCT.md).
|
|
14
|
+
|
|
15
|
+
## Reporting bugs
|
|
16
|
+
|
|
17
|
+
This section guides you through submitting a bug report. Following these
|
|
18
|
+
guidelines helps maintainers and the community understand your report, reproduce
|
|
19
|
+
the behavior, and find related reports.
|
|
20
|
+
|
|
21
|
+
- Before creating bug reports, please check the open issues; somebody may
|
|
22
|
+
already have submitted something similar, and you may not need to create a new
|
|
23
|
+
one.
|
|
24
|
+
- When you are creating a bug report, please include as many details as
|
|
25
|
+
possible, with an example reproducing the issue.
|
|
26
|
+
|
|
27
|
+
## Contributing with code
|
|
28
|
+
|
|
29
|
+
Before making any radicals changes, please make sure you discuss your intention
|
|
30
|
+
by [opening an issue on Github](https://github.com/fnando/page_meta/issues).
|
|
31
|
+
|
|
32
|
+
When you're ready to make your pull request, follow checklist below to make sure
|
|
33
|
+
your contribution is according to how this project works.
|
|
34
|
+
|
|
35
|
+
1. [Fork](https://help.github.com/forking/) page_meta
|
|
36
|
+
2. Create a topic branch - `git checkout -b my_branch`
|
|
37
|
+
3. Make your changes using [descriptive commit messages](#commit-messages)
|
|
38
|
+
4. Update CHANGELOG.md describing your changes by adding an entry to the
|
|
39
|
+
"Unreleased" section. If this section is not available, create one right
|
|
40
|
+
before the last version.
|
|
41
|
+
5. Push to your branch - `git push origin my_branch`
|
|
42
|
+
6. [Create a pull request](https://help.github.com/articles/creating-a-pull-request)
|
|
43
|
+
7. That's it!
|
|
44
|
+
|
|
45
|
+
## Styleguides
|
|
46
|
+
|
|
47
|
+
### Commit messages
|
|
48
|
+
|
|
49
|
+
- Use the present tense ("Add feature" not "Added feature")
|
|
50
|
+
- Use the imperative mood ("Move cursor to..." not "Moves cursor to...")
|
|
51
|
+
- Limit the first line to 72 characters or less
|
|
52
|
+
- Reference issues and pull requests liberally after the first line
|
|
53
|
+
|
|
54
|
+
### Changelog
|
|
55
|
+
|
|
56
|
+
- Add a message describing your changes to the "Unreleased" section. The
|
|
57
|
+
changelog message should follow the same style as the commit message.
|
|
58
|
+
- Prefix your message with one of the following:
|
|
59
|
+
- `[Added]` for new features.
|
|
60
|
+
- `[Changed]` for changes in existing functionality.
|
|
61
|
+
- `[Deprecated]` for soon-to-be removed features.
|
|
62
|
+
- `[Removed]` for now removed features.
|
|
63
|
+
- `[Fixed]` for any bug fixes.
|
|
64
|
+
- `[Security]` in case of vulnerabilities.
|
|
65
|
+
|
|
66
|
+
### Ruby code
|
|
67
|
+
|
|
68
|
+
- This project uses [Rubocop](https://rubocop.org) to enforce code style. Before
|
|
69
|
+
submitting your changes, make sure your tests are passing and code conforms to
|
|
70
|
+
the expected style by running `rake`.
|
|
71
|
+
- Do not change the library version. This will be done by the maintainer
|
|
72
|
+
whenever a new version is about to be released.
|
|
73
|
+
|
|
74
|
+
### JavaScript code
|
|
75
|
+
|
|
76
|
+
- This project uses [ESLint](https://eslint.org) to enforce code style. Before
|
|
77
|
+
submitting your changes, make sure your tests are passing and code conforms to
|
|
78
|
+
the expected style by running `yarn test:ci`.
|
|
79
|
+
- Do not change the library version. This will be done by the maintainer
|
|
80
|
+
whenever a new version is about to be released.
|
data/Gemfile
CHANGED
data/README.md
CHANGED
|
@@ -1,38 +1,43 @@
|
|
|
1
|
-
#
|
|
1
|
+
# page_meta
|
|
2
2
|
|
|
3
|
-
[](https://github.com/fnando/page_meta)
|
|
4
|
+
[](https://codeclimate.com/github/fnando/page_meta)
|
|
5
|
+
[](https://rubygems.org/gems/page_meta)
|
|
6
|
+
[](https://rubygems.org/gems/page_meta)
|
|
4
7
|
|
|
5
|
-
Easily define `<meta>` and `<link>` tags. I18n support for descriptions,
|
|
8
|
+
Easily define `<meta>` and `<link>` tags. I18n support for descriptions,
|
|
9
|
+
keywords and titles.
|
|
6
10
|
|
|
7
11
|
## Installation
|
|
8
12
|
|
|
9
|
-
|
|
13
|
+
```bash
|
|
14
|
+
gem install page_meta
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
Or add the following line to your project's Gemfile:
|
|
10
18
|
|
|
11
19
|
```ruby
|
|
12
20
|
gem "page_meta"
|
|
13
21
|
```
|
|
14
22
|
|
|
15
|
-
And then execute:
|
|
16
|
-
|
|
17
|
-
$ bundle
|
|
18
|
-
|
|
19
|
-
Or install it yourself as:
|
|
20
|
-
|
|
21
|
-
$ gem install page_meta
|
|
22
|
-
|
|
23
23
|
## Usage
|
|
24
24
|
|
|
25
|
-
Your controller and views have an object called `page_meta`. You can use it to
|
|
25
|
+
Your controller and views have an object called `page_meta`. You can use it to
|
|
26
|
+
define meta tags and links. By default, it will include the encoding and
|
|
27
|
+
language meta tags.
|
|
26
28
|
|
|
27
29
|
```html
|
|
28
|
-
<meta charset="utf-8"
|
|
29
|
-
<meta name="language" content="en"
|
|
30
|
-
<meta itemprop="language" content="en"
|
|
30
|
+
<meta charset="utf-8" />
|
|
31
|
+
<meta name="language" content="en" />
|
|
32
|
+
<meta itemprop="language" content="en" />
|
|
31
33
|
```
|
|
32
34
|
|
|
33
|
-
You can use I18n to define titles, descriptions and keywords. These values will
|
|
35
|
+
You can use I18n to define titles, descriptions and keywords. These values will
|
|
36
|
+
be inferred from the controller and action names. For an action
|
|
37
|
+
`SiteController#index` you'll need the following translation scope:
|
|
34
38
|
|
|
35
39
|
```yaml
|
|
40
|
+
---
|
|
36
41
|
page_meta:
|
|
37
42
|
titles:
|
|
38
43
|
base: "%{value} • MyApp"
|
|
@@ -40,14 +45,25 @@ page_meta:
|
|
|
40
45
|
index: "Welcome to MyApp"
|
|
41
46
|
```
|
|
42
47
|
|
|
43
|
-
|
|
48
|
+
The title can without the `base` context can be accessed through
|
|
49
|
+
`page_meta.title.simple`.
|
|
50
|
+
|
|
51
|
+
```erb
|
|
52
|
+
<%= page_meta.title %> // Welcome to MyApp • MyApp
|
|
53
|
+
<%= page_meta.title.simple %> // Welcome to MyApp
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
Sometimes you need to render some dynamic value. In this case, you can use the
|
|
57
|
+
I18n placeholders.
|
|
44
58
|
|
|
45
59
|
```yaml
|
|
60
|
+
---
|
|
46
61
|
en:
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
62
|
+
page_meta:
|
|
63
|
+
titles:
|
|
64
|
+
base: "%{title} • MyCompany"
|
|
65
|
+
workshops:
|
|
66
|
+
show: "%{name}"
|
|
51
67
|
```
|
|
52
68
|
|
|
53
69
|
You can then set dynamic values using the `PageMeta::Base#[]=`.
|
|
@@ -63,19 +79,20 @@ end
|
|
|
63
79
|
|
|
64
80
|
Some actions are aliased, so you don't have to duplicate the translations:
|
|
65
81
|
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
82
|
+
- Action `create` points to `new`
|
|
83
|
+
- Action `update` points to `edit`
|
|
84
|
+
- Action `destroy` points to `remove`
|
|
69
85
|
|
|
70
86
|
The same concept is applied to descriptions and keywords.
|
|
71
87
|
|
|
72
88
|
```yaml
|
|
89
|
+
---
|
|
73
90
|
en:
|
|
74
91
|
page_meta:
|
|
75
92
|
descriptions:
|
|
76
93
|
site:
|
|
77
94
|
home: MyApp is the best way of doing something.
|
|
78
|
-
|
|
95
|
+
|
|
79
96
|
keywords:
|
|
80
97
|
site:
|
|
81
98
|
home: "myapp, thing, other thing"
|
|
@@ -83,7 +100,8 @@ en:
|
|
|
83
100
|
|
|
84
101
|
### Defining meta tags
|
|
85
102
|
|
|
86
|
-
To define other meta tags, you have to use `PageMeta::Base#tag` like the
|
|
103
|
+
To define other meta tags, you have to use `PageMeta::Base#tag` like the
|
|
104
|
+
following:
|
|
87
105
|
|
|
88
106
|
```ruby
|
|
89
107
|
class Workshops Controller < ApplicationController
|
|
@@ -116,7 +134,7 @@ Finally, you can define meta tags for Facebook and Twitter:
|
|
|
116
134
|
```ruby
|
|
117
135
|
# Meta tags for Facebook
|
|
118
136
|
page_meta.tag :og, {
|
|
119
|
-
image: asset_url("fb.png"),
|
|
137
|
+
image: helpers.asset_url("fb.png"),
|
|
120
138
|
image_type: "image/png",
|
|
121
139
|
image_width: 800,
|
|
122
140
|
image_height: 600,
|
|
@@ -132,7 +150,7 @@ page_meta.tag :twitter, {
|
|
|
132
150
|
description: @workshop.description,
|
|
133
151
|
site: "@howto",
|
|
134
152
|
creator: "@fnando",
|
|
135
|
-
image: asset_url(@workshop.cover_image)
|
|
153
|
+
image: helpers.asset_url(@workshop.cover_image)
|
|
136
154
|
}
|
|
137
155
|
```
|
|
138
156
|
|
|
@@ -146,10 +164,11 @@ page_meta.link :last, href: article_url(articles.last)
|
|
|
146
164
|
page_meta.link :first, href: article_url(articles.first)
|
|
147
165
|
```
|
|
148
166
|
|
|
149
|
-
The hash can be any of the link tag's attributes. The following example defines
|
|
167
|
+
The hash can be any of the link tag's attributes. The following example defines
|
|
168
|
+
the Safari 9 Pinned Tab icon:
|
|
150
169
|
|
|
151
170
|
```ruby
|
|
152
|
-
page_meta.link :mask_icon, color: "#4078c0", href: asset_url("mask_icon.svg")
|
|
171
|
+
page_meta.link :mask_icon, color: "#4078c0", href: helpers.asset_url("mask_icon.svg")
|
|
153
172
|
```
|
|
154
173
|
|
|
155
174
|
### Rendering the elements
|
|
@@ -168,17 +187,44 @@ To render all tags, just do something like this:
|
|
|
168
187
|
</html>
|
|
169
188
|
```
|
|
170
189
|
|
|
171
|
-
|
|
190
|
+
#### Rendering titles and descriptions
|
|
191
|
+
|
|
192
|
+
You may want to render title and description on your page. In this case, you may
|
|
193
|
+
use something like this:
|
|
194
|
+
|
|
195
|
+
```erb
|
|
196
|
+
<h1><%= page_meta.title.simple %></h1>
|
|
197
|
+
<p><%= page_meta.description.simple %></p>
|
|
198
|
+
```
|
|
172
199
|
|
|
173
|
-
|
|
200
|
+
If your description contains HTML, you can use
|
|
201
|
+
`page_meta.description(html: true).simple` instead. It will use Rails'
|
|
202
|
+
`html_safe` helpers to safely retrieve the translation, just like regular Rails
|
|
203
|
+
would do.
|
|
204
|
+
[Please read Rails docs](http://guides.rubyonrails.org/i18n.html#using-safe-html-translations)
|
|
205
|
+
for more info.
|
|
174
206
|
|
|
175
|
-
|
|
207
|
+
## Maintainer
|
|
176
208
|
|
|
177
|
-
|
|
209
|
+
- [Nando Vieira](https://github.com/fnando)
|
|
178
210
|
|
|
179
|
-
|
|
211
|
+
## Contributors
|
|
180
212
|
|
|
213
|
+
- https://github.com/fnando/page_meta/contributors
|
|
214
|
+
|
|
215
|
+
## Contributing
|
|
216
|
+
|
|
217
|
+
For more details about how to contribute, please read
|
|
218
|
+
https://github.com/fnando/page_meta/blob/main/CONTRIBUTING.md.
|
|
181
219
|
|
|
182
220
|
## License
|
|
183
221
|
|
|
184
|
-
The gem is available as open source under the terms of the
|
|
222
|
+
The gem is available as open source under the terms of the
|
|
223
|
+
[MIT License](https://opensource.org/licenses/MIT). A copy of the license can be
|
|
224
|
+
found at https://github.com/fnando/page_meta/blob/main/LICENSE.md.
|
|
225
|
+
|
|
226
|
+
## Code of Conduct
|
|
227
|
+
|
|
228
|
+
Everyone interacting in the page_meta project's codebases, issue trackers, chat
|
|
229
|
+
rooms and mailing lists is expected to follow the
|
|
230
|
+
[code of conduct](https://github.com/fnando/page_meta/blob/main/CODE_OF_CONDUCT.md).
|
data/Rakefile
CHANGED
|
@@ -1,10 +1,16 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "bundler/setup"
|
|
1
4
|
require "bundler/gem_tasks"
|
|
2
5
|
require "rake/testtask"
|
|
6
|
+
require "rubocop/rake_task"
|
|
7
|
+
|
|
8
|
+
RuboCop::RakeTask.new
|
|
3
9
|
|
|
4
10
|
Rake::TestTask.new(:test) do |t|
|
|
5
11
|
t.libs << "test"
|
|
6
|
-
t.libs << "lib"
|
|
7
12
|
t.test_files = FileList["test/**/*_test.rb"]
|
|
13
|
+
t.warning = false
|
|
8
14
|
end
|
|
9
15
|
|
|
10
|
-
task :
|
|
16
|
+
task default: %i[test rubocop]
|
data/bin/console
CHANGED
data/lib/page_meta/action.rb
CHANGED
|
@@ -1,10 +1,14 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
module PageMeta
|
|
2
4
|
class Action
|
|
5
|
+
# rubocop:disable Style/MutableConstant
|
|
3
6
|
ALIASES = {
|
|
4
|
-
"update"
|
|
5
|
-
"create"
|
|
7
|
+
"update" => "edit",
|
|
8
|
+
"create" => "new",
|
|
6
9
|
"destroy" => "remove"
|
|
7
10
|
}
|
|
11
|
+
# rubocop:enable Style/MutableConstant
|
|
8
12
|
|
|
9
13
|
def initialize(action)
|
|
10
14
|
@action = action
|
data/lib/page_meta/base.rb
CHANGED
|
@@ -1,11 +1,16 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
module PageMeta
|
|
2
4
|
class Base
|
|
5
|
+
DEFAULT_META_TAGS = %i[language charset title keywords description].freeze
|
|
6
|
+
|
|
3
7
|
attr_reader :controller, :store
|
|
4
8
|
|
|
5
9
|
delegate :[], :[]=, to: :store
|
|
6
10
|
|
|
7
11
|
def initialize(controller)
|
|
8
12
|
@controller = controller
|
|
13
|
+
@description = {}
|
|
9
14
|
@store = {}
|
|
10
15
|
end
|
|
11
16
|
|
|
@@ -14,23 +19,23 @@ module PageMeta
|
|
|
14
19
|
end
|
|
15
20
|
|
|
16
21
|
def links
|
|
17
|
-
@links ||=
|
|
22
|
+
@links ||= []
|
|
18
23
|
end
|
|
19
24
|
|
|
20
25
|
def tag(name, value)
|
|
21
26
|
meta_tags[name] = value
|
|
22
27
|
end
|
|
23
28
|
|
|
24
|
-
def link(
|
|
25
|
-
links
|
|
29
|
+
def link(rel, options)
|
|
30
|
+
links << {rel: rel, options: options}
|
|
26
31
|
end
|
|
27
32
|
|
|
28
33
|
def title
|
|
29
34
|
@title ||= Translator.new(:titles, naming, store)
|
|
30
35
|
end
|
|
31
36
|
|
|
32
|
-
def description
|
|
33
|
-
@description ||= Translator.new(:descriptions, naming, store)
|
|
37
|
+
def description(html: false)
|
|
38
|
+
@description[html] ||= Translator.new(:descriptions, naming, store.merge(html: html))
|
|
34
39
|
end
|
|
35
40
|
|
|
36
41
|
def keywords
|
|
@@ -41,7 +46,7 @@ module PageMeta
|
|
|
41
46
|
compute_default_meta_tags
|
|
42
47
|
render_meta_tags + render_links
|
|
43
48
|
end
|
|
44
|
-
|
|
49
|
+
alias to_s render
|
|
45
50
|
|
|
46
51
|
def naming
|
|
47
52
|
@naming ||= Naming.new(controller)
|
|
@@ -50,22 +55,40 @@ module PageMeta
|
|
|
50
55
|
def render_meta_tags
|
|
51
56
|
meta_tags
|
|
52
57
|
.map {|name, value| MetaTag.build(name, value).render }
|
|
53
|
-
.join
|
|
58
|
+
.join
|
|
54
59
|
.html_safe
|
|
55
60
|
end
|
|
56
61
|
|
|
57
62
|
def render_links
|
|
58
63
|
links
|
|
59
|
-
.map {|
|
|
60
|
-
.join
|
|
64
|
+
.map {|info| Link.build(info[:rel], info[:options]).render }
|
|
65
|
+
.join
|
|
61
66
|
.html_safe
|
|
62
67
|
end
|
|
63
68
|
|
|
64
69
|
def compute_default_meta_tags
|
|
70
|
+
DEFAULT_META_TAGS.each do |method_name|
|
|
71
|
+
public_send("compute_default_#{method_name}")
|
|
72
|
+
end
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
def compute_default_language
|
|
65
76
|
tag(:language, I18n.locale)
|
|
66
|
-
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
def compute_default_title
|
|
67
80
|
tag(:title, title) unless title.to_s.empty?
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
def compute_default_charset
|
|
84
|
+
tag(:charset, Rails.configuration.encoding)
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
def compute_default_keywords
|
|
68
88
|
tag(:keywords, keywords.to_s) unless keywords.to_s.empty?
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
def compute_default_description
|
|
69
92
|
tag(:description, description.to_s) unless description.to_s.empty?
|
|
70
93
|
end
|
|
71
94
|
end
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module PageMeta
|
|
4
|
+
class HashMetaTag < MetaTag
|
|
5
|
+
def render
|
|
6
|
+
return if content.empty?
|
|
7
|
+
|
|
8
|
+
content.each_with_object([]) do |(attr, value), buffer|
|
|
9
|
+
next if value.blank?
|
|
10
|
+
|
|
11
|
+
attr = attr.to_s.tr("_", ":")
|
|
12
|
+
buffer << helpers.tag(:meta, property: "#{base_name}:#{attr}", content: value)
|
|
13
|
+
end.join
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
data/lib/page_meta/helpers.rb
CHANGED
data/lib/page_meta/link.rb
CHANGED
|
@@ -1,8 +1,14 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
module PageMeta
|
|
2
4
|
class Link
|
|
3
5
|
def self.build(rel, options)
|
|
4
6
|
klass_name = "::PageMeta::Link::#{rel.to_s.camelize}"
|
|
5
|
-
klass =
|
|
7
|
+
klass = begin
|
|
8
|
+
const_get(klass_name)
|
|
9
|
+
rescue ActionView::Template::Error, NameError
|
|
10
|
+
Link
|
|
11
|
+
end
|
|
6
12
|
klass.new(rel, options)
|
|
7
13
|
end
|
|
8
14
|
|
|
@@ -1,10 +1,12 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
module PageMeta
|
|
2
4
|
class MetaTag
|
|
3
5
|
class Charset < MetaTag
|
|
4
6
|
def render
|
|
5
|
-
return if content.
|
|
7
|
+
return if content.blank?
|
|
6
8
|
|
|
7
|
-
helpers.tag(:meta, charset: content)
|
|
9
|
+
helpers.tag(:meta, charset: content.to_s.upcase)
|
|
8
10
|
end
|
|
9
11
|
end
|
|
10
12
|
end
|
|
@@ -1,9 +1,11 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
module PageMeta
|
|
2
4
|
class MetaTag
|
|
3
5
|
class DnsPrefetchControl < MetaTag
|
|
4
6
|
def render
|
|
5
7
|
helpers.tag(:meta, "http-equiv" => "x-dns-prefetch-control", content: "on") +
|
|
6
|
-
|
|
8
|
+
helpers.tag(:link, rel: "dns-prefetch", href: content)
|
|
7
9
|
end
|
|
8
10
|
end
|
|
9
11
|
end
|
|
@@ -1,9 +1,11 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
module PageMeta
|
|
2
4
|
class MetaTag
|
|
3
5
|
class Language < MetaTag
|
|
4
6
|
def render
|
|
5
7
|
helpers.tag(:meta, name: name, content: content) +
|
|
6
|
-
|
|
8
|
+
helpers.tag(:meta, itemprop: name, content: content)
|
|
7
9
|
end
|
|
8
10
|
end
|
|
9
11
|
end
|
|
@@ -1,14 +1,10 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
module PageMeta
|
|
2
4
|
class MetaTag
|
|
3
|
-
class Og <
|
|
4
|
-
def
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
content.each_with_object("") do |(attr, value), buffer|
|
|
8
|
-
next if value.blank?
|
|
9
|
-
attr = attr.to_s.gsub(/_/, ":")
|
|
10
|
-
buffer << helpers.tag(:meta, property: "og:#{attr}", content: value)
|
|
11
|
-
end
|
|
5
|
+
class Og < HashMetaTag
|
|
6
|
+
def base_name
|
|
7
|
+
"og"
|
|
12
8
|
end
|
|
13
9
|
end
|
|
14
10
|
end
|
|
@@ -1,10 +1,12 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
module PageMeta
|
|
2
4
|
class MetaTag
|
|
3
5
|
class Title < MetaTag
|
|
4
6
|
def render
|
|
5
7
|
helpers.content_tag(:title, content.to_s) +
|
|
6
|
-
|
|
7
|
-
|
|
8
|
+
helpers.tag(:meta, name: "DC.title", content: content.simple) +
|
|
9
|
+
helpers.tag(:meta, itemprop: "name", content: content.simple)
|
|
8
10
|
end
|
|
9
11
|
end
|
|
10
12
|
end
|
|
@@ -1,14 +1,10 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
module PageMeta
|
|
2
4
|
class MetaTag
|
|
3
|
-
class Twitter <
|
|
4
|
-
def
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
content.each_with_object("") do |(attr, value), buffer|
|
|
8
|
-
next if value.blank?
|
|
9
|
-
attr = attr.to_s.gsub(/_/, ":")
|
|
10
|
-
buffer << helpers.tag(:meta, property: "twitter:#{attr}", content: value)
|
|
11
|
-
end
|
|
5
|
+
class Twitter < HashMetaTag
|
|
6
|
+
def base_name
|
|
7
|
+
"twitter"
|
|
12
8
|
end
|
|
13
9
|
end
|
|
14
10
|
end
|
data/lib/page_meta/meta_tag.rb
CHANGED
|
@@ -1,10 +1,16 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
module PageMeta
|
|
2
4
|
class MetaTag
|
|
3
5
|
attr_reader :name, :content
|
|
4
6
|
|
|
5
7
|
def self.build(name, content)
|
|
6
8
|
klass_name = "::PageMeta::MetaTag::#{name.to_s.camelize}"
|
|
7
|
-
klass =
|
|
9
|
+
klass = begin
|
|
10
|
+
const_get(klass_name)
|
|
11
|
+
rescue ActionView::Template::Error, NameError
|
|
12
|
+
MetaTag
|
|
13
|
+
end
|
|
8
14
|
klass.new(name, content)
|
|
9
15
|
end
|
|
10
16
|
|
|
@@ -26,7 +32,7 @@ module PageMeta
|
|
|
26
32
|
return if content.empty?
|
|
27
33
|
|
|
28
34
|
helpers.tag(:meta, name: name, content: content) +
|
|
29
|
-
|
|
35
|
+
helpers.tag(:meta, itemprop: name, content: content)
|
|
30
36
|
end
|
|
31
37
|
end
|
|
32
38
|
|
data/lib/page_meta/naming.rb
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
module PageMeta
|
|
2
4
|
class Naming
|
|
3
5
|
def initialize(controller)
|
|
@@ -12,9 +14,12 @@ module PageMeta
|
|
|
12
14
|
# Converts `PagesController` into `pages` and
|
|
13
15
|
# `Admin::PagesController` into `admin.pages`.
|
|
14
16
|
def controller
|
|
15
|
-
@controller ||= @_controller
|
|
16
|
-
|
|
17
|
-
|
|
17
|
+
@controller ||= @_controller
|
|
18
|
+
.class
|
|
19
|
+
.name
|
|
20
|
+
.underscore
|
|
21
|
+
.gsub(/_controller/, "")
|
|
22
|
+
.tr("/", ".")
|
|
18
23
|
end
|
|
19
24
|
end
|
|
20
25
|
end
|
data/lib/page_meta/railtie.rb
CHANGED
data/lib/page_meta/translator.rb
CHANGED
|
@@ -1,23 +1,34 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
module PageMeta
|
|
2
4
|
class Translator
|
|
3
|
-
|
|
5
|
+
include ::ActionView::Helpers::TranslationHelper
|
|
6
|
+
|
|
7
|
+
attr_reader :scope, :naming, :options, :html
|
|
4
8
|
|
|
5
9
|
def initialize(scope, naming, options = {})
|
|
6
10
|
@scope = scope
|
|
7
11
|
@naming = naming
|
|
12
|
+
@html = options[:html]
|
|
8
13
|
@options = options
|
|
9
14
|
end
|
|
10
15
|
|
|
11
16
|
def to_s
|
|
12
17
|
return "" if simple.blank?
|
|
13
|
-
|
|
18
|
+
|
|
19
|
+
t("page_meta.#{scope}.base", value: simple, default: simple)
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def translation_scope
|
|
23
|
+
"page_meta.#{scope}.#{naming.controller}.#{naming.action}"
|
|
14
24
|
end
|
|
15
25
|
|
|
16
26
|
def simple
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
)
|
|
27
|
+
override_options = options.merge(default: "")
|
|
28
|
+
|
|
29
|
+
translation = t("#{translation_scope}_html", **override_options) if html
|
|
30
|
+
translation = t(translation_scope, **override_options) if translation.blank?
|
|
31
|
+
translation
|
|
21
32
|
end
|
|
22
33
|
end
|
|
23
34
|
end
|
data/lib/page_meta/version.rb
CHANGED
data/lib/page_meta.rb
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
module PageMeta
|
|
2
4
|
require "i18n"
|
|
3
5
|
require "rails/railtie"
|
|
@@ -5,6 +7,7 @@ module PageMeta
|
|
|
5
7
|
require "page_meta/version"
|
|
6
8
|
require "page_meta/base"
|
|
7
9
|
require "page_meta/meta_tag"
|
|
10
|
+
require "page_meta/hash_meta_tag"
|
|
8
11
|
require "page_meta/meta_tag/charset"
|
|
9
12
|
require "page_meta/meta_tag/dns_prefetch_control"
|
|
10
13
|
require "page_meta/meta_tag/title"
|
data/page_meta.gemspec
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
require "./lib/page_meta/version"
|
|
2
4
|
|
|
3
5
|
Gem::Specification.new do |spec|
|
|
@@ -5,24 +7,31 @@ Gem::Specification.new do |spec|
|
|
|
5
7
|
spec.version = PageMeta::VERSION
|
|
6
8
|
spec.authors = ["Nando Vieira"]
|
|
7
9
|
spec.email = ["fnando.vieira@gmail.com"]
|
|
10
|
+
spec.required_ruby_version = Gem::Requirement.new(">= 2.7.0")
|
|
11
|
+
spec.metadata = {
|
|
12
|
+
"rubygems_mfa_required" => "true"
|
|
13
|
+
}
|
|
8
14
|
|
|
9
|
-
spec.summary = "Easily define <meta> and <link> tags. I18n support
|
|
15
|
+
spec.summary = "Easily define <meta> and <link> tags. I18n support " \
|
|
16
|
+
"for descriptions, keywords and titles."
|
|
10
17
|
spec.description = spec.summary
|
|
11
18
|
spec.homepage = "https://github.com/fnando/page_meta"
|
|
12
19
|
spec.license = "MIT"
|
|
13
20
|
|
|
14
|
-
spec.files = `git ls-files -z
|
|
21
|
+
spec.files = `git ls-files -z`
|
|
22
|
+
.split("\x0")
|
|
23
|
+
.reject {|f| f.match(%r{^(test|spec|features)/}) }
|
|
15
24
|
spec.bindir = "exe"
|
|
16
|
-
spec.executables = spec.files.grep(%r{^exe/}) {
|
|
25
|
+
spec.executables = spec.files.grep(%r{^exe/}) {|f| File.basename(f) }
|
|
17
26
|
spec.require_paths = ["lib"]
|
|
18
27
|
|
|
19
|
-
spec.add_dependency "rails"
|
|
28
|
+
spec.add_dependency "rails", ">=6.0"
|
|
20
29
|
|
|
21
|
-
spec.add_development_dependency "bundler"
|
|
22
|
-
spec.add_development_dependency "rake", "~> 10.0"
|
|
23
|
-
spec.add_development_dependency "minitest"
|
|
30
|
+
spec.add_development_dependency "bundler"
|
|
24
31
|
spec.add_development_dependency "minitest-utils"
|
|
25
|
-
spec.add_development_dependency "minitest-autotest"
|
|
26
|
-
spec.add_development_dependency "test_notifier"
|
|
27
32
|
spec.add_development_dependency "pry-meta"
|
|
33
|
+
spec.add_development_dependency "rake"
|
|
34
|
+
spec.add_development_dependency "rubocop"
|
|
35
|
+
spec.add_development_dependency "rubocop-fnando"
|
|
36
|
+
spec.add_development_dependency "simplecov"
|
|
28
37
|
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: page_meta
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 1.0.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Nando Vieira
|
|
8
|
-
autorequire:
|
|
8
|
+
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2021-11-25 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: rails
|
|
@@ -16,44 +16,44 @@ dependencies:
|
|
|
16
16
|
requirements:
|
|
17
17
|
- - ">="
|
|
18
18
|
- !ruby/object:Gem::Version
|
|
19
|
-
version: '0'
|
|
19
|
+
version: '6.0'
|
|
20
20
|
type: :runtime
|
|
21
21
|
prerelease: false
|
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
|
23
23
|
requirements:
|
|
24
24
|
- - ">="
|
|
25
25
|
- !ruby/object:Gem::Version
|
|
26
|
-
version: '0'
|
|
26
|
+
version: '6.0'
|
|
27
27
|
- !ruby/object:Gem::Dependency
|
|
28
28
|
name: bundler
|
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
|
30
30
|
requirements:
|
|
31
|
-
- - "
|
|
31
|
+
- - ">="
|
|
32
32
|
- !ruby/object:Gem::Version
|
|
33
|
-
version: '
|
|
33
|
+
version: '0'
|
|
34
34
|
type: :development
|
|
35
35
|
prerelease: false
|
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
|
37
37
|
requirements:
|
|
38
|
-
- - "
|
|
38
|
+
- - ">="
|
|
39
39
|
- !ruby/object:Gem::Version
|
|
40
|
-
version: '
|
|
40
|
+
version: '0'
|
|
41
41
|
- !ruby/object:Gem::Dependency
|
|
42
|
-
name:
|
|
42
|
+
name: minitest-utils
|
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
|
44
44
|
requirements:
|
|
45
|
-
- - "
|
|
45
|
+
- - ">="
|
|
46
46
|
- !ruby/object:Gem::Version
|
|
47
|
-
version: '
|
|
47
|
+
version: '0'
|
|
48
48
|
type: :development
|
|
49
49
|
prerelease: false
|
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
|
51
51
|
requirements:
|
|
52
|
-
- - "
|
|
52
|
+
- - ">="
|
|
53
53
|
- !ruby/object:Gem::Version
|
|
54
|
-
version: '
|
|
54
|
+
version: '0'
|
|
55
55
|
- !ruby/object:Gem::Dependency
|
|
56
|
-
name:
|
|
56
|
+
name: pry-meta
|
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
|
58
58
|
requirements:
|
|
59
59
|
- - ">="
|
|
@@ -67,7 +67,7 @@ dependencies:
|
|
|
67
67
|
- !ruby/object:Gem::Version
|
|
68
68
|
version: '0'
|
|
69
69
|
- !ruby/object:Gem::Dependency
|
|
70
|
-
name:
|
|
70
|
+
name: rake
|
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
|
72
72
|
requirements:
|
|
73
73
|
- - ">="
|
|
@@ -81,7 +81,7 @@ dependencies:
|
|
|
81
81
|
- !ruby/object:Gem::Version
|
|
82
82
|
version: '0'
|
|
83
83
|
- !ruby/object:Gem::Dependency
|
|
84
|
-
name:
|
|
84
|
+
name: rubocop
|
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
|
86
86
|
requirements:
|
|
87
87
|
- - ">="
|
|
@@ -95,7 +95,7 @@ dependencies:
|
|
|
95
95
|
- !ruby/object:Gem::Version
|
|
96
96
|
version: '0'
|
|
97
97
|
- !ruby/object:Gem::Dependency
|
|
98
|
-
name:
|
|
98
|
+
name: rubocop-fnando
|
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
|
100
100
|
requirements:
|
|
101
101
|
- - ">="
|
|
@@ -109,7 +109,7 @@ dependencies:
|
|
|
109
109
|
- !ruby/object:Gem::Version
|
|
110
110
|
version: '0'
|
|
111
111
|
- !ruby/object:Gem::Dependency
|
|
112
|
-
name:
|
|
112
|
+
name: simplecov
|
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|
|
114
114
|
requirements:
|
|
115
115
|
- - ">="
|
|
@@ -130,18 +130,31 @@ executables: []
|
|
|
130
130
|
extensions: []
|
|
131
131
|
extra_rdoc_files: []
|
|
132
132
|
files:
|
|
133
|
+
- ".github/CODEOWNERS"
|
|
134
|
+
- ".github/FUNDING.yml"
|
|
135
|
+
- ".github/ISSUE_TEMPLATE/bug_report.md"
|
|
136
|
+
- ".github/ISSUE_TEMPLATE/feature_request.md"
|
|
137
|
+
- ".github/PULL_REQUEST_TEMPLATE.md"
|
|
138
|
+
- ".github/dependabot.yml"
|
|
139
|
+
- ".github/workflows/ruby-tests.yml"
|
|
133
140
|
- ".gitignore"
|
|
141
|
+
- ".rubocop.yml"
|
|
134
142
|
- ".travis.yml"
|
|
143
|
+
- CHANGELOG.md
|
|
135
144
|
- CODE_OF_CONDUCT.md
|
|
145
|
+
- CONTRIBUTING.md
|
|
136
146
|
- Gemfile
|
|
137
147
|
- LICENSE.txt
|
|
138
148
|
- README.md
|
|
139
149
|
- Rakefile
|
|
140
150
|
- bin/console
|
|
141
151
|
- bin/setup
|
|
152
|
+
- gemfiles/6.0.gemfile
|
|
153
|
+
- gemfiles/6.1.gemfile
|
|
142
154
|
- lib/page_meta.rb
|
|
143
155
|
- lib/page_meta/action.rb
|
|
144
156
|
- lib/page_meta/base.rb
|
|
157
|
+
- lib/page_meta/hash_meta_tag.rb
|
|
145
158
|
- lib/page_meta/helpers.rb
|
|
146
159
|
- lib/page_meta/link.rb
|
|
147
160
|
- lib/page_meta/meta_tag.rb
|
|
@@ -159,8 +172,9 @@ files:
|
|
|
159
172
|
homepage: https://github.com/fnando/page_meta
|
|
160
173
|
licenses:
|
|
161
174
|
- MIT
|
|
162
|
-
metadata:
|
|
163
|
-
|
|
175
|
+
metadata:
|
|
176
|
+
rubygems_mfa_required: 'true'
|
|
177
|
+
post_install_message:
|
|
164
178
|
rdoc_options: []
|
|
165
179
|
require_paths:
|
|
166
180
|
- lib
|
|
@@ -168,16 +182,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
168
182
|
requirements:
|
|
169
183
|
- - ">="
|
|
170
184
|
- !ruby/object:Gem::Version
|
|
171
|
-
version:
|
|
185
|
+
version: 2.7.0
|
|
172
186
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
173
187
|
requirements:
|
|
174
188
|
- - ">="
|
|
175
189
|
- !ruby/object:Gem::Version
|
|
176
190
|
version: '0'
|
|
177
191
|
requirements: []
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
signing_key:
|
|
192
|
+
rubygems_version: 3.2.32
|
|
193
|
+
signing_key:
|
|
181
194
|
specification_version: 4
|
|
182
195
|
summary: Easily define <meta> and <link> tags. I18n support for descriptions, keywords
|
|
183
196
|
and titles.
|