para-seo_tools 0.4.6 → 0.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +4 -4
- data/app/views/admin/para/seo_tools/pages/_actions.html.haml +3 -3
- data/app/views/admin/para/seo_tools/pages/_filters.html.haml +15 -17
- data/app/views/admin/para/seo_tools/pages/_form.html.haml +9 -8
- data/app/views/admin/para/seo_tools/pages/_table.html.haml +5 -6
- data/config/locales/para-seo_tools.fr.yml +18 -3
- data/lib/generators/para/seo_tools/install/templates/skeleton.rb +31 -3
- data/lib/para/seo_tools/controller.rb +1 -1
- data/lib/para/seo_tools/helpers.rb +1 -0
- data/lib/para/seo_tools/helpers/default_data_methods_helper.rb +31 -0
- data/lib/para/seo_tools/meta_tags/renderer.rb +15 -1
- data/lib/para/seo_tools/meta_tags/tags/base.rb +2 -2
- data/lib/para/seo_tools/meta_tags/tags/description.rb +7 -15
- data/lib/para/seo_tools/meta_tags/tags/image.rb +3 -11
- data/lib/para/seo_tools/meta_tags/tags/keywords.rb +2 -2
- data/lib/para/seo_tools/meta_tags/tags/title.rb +7 -12
- data/lib/para/seo_tools/sitemap.rb +5 -2
- data/lib/para/seo_tools/skeleton/page_builder.rb +12 -1
- data/lib/para/seo_tools/skeleton/site.rb +1 -1
- data/lib/para/seo_tools/version.rb +1 -1
- data/lib/tasks/para_seo_tools_tasks.rake +4 -0
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7897b0a3299f5d4e457e8eba6b499c24e7a0b2c0
|
4
|
+
data.tar.gz: d5356532cdaeb00740c523d945665a5f945fcf56
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2f21f538ce3f45348d99cbc0936bda4f9699f8bf8bf137cffb368ccfb8b18aaedb3484e565a194ad03f09a2bfb0de4ea37dfce2b7527f8cf24cfe885006c2480
|
7
|
+
data.tar.gz: a79fb1e83edf1f3c587d109910ec1af1ffc8beabeb683ae3637139eb34da1c7c47f6133bc75d13668906e27f383b8b1375a22c41d04c1b20bc93e5cefc696f30
|
data/README.md
CHANGED
@@ -11,7 +11,7 @@ for filling out all the pages' meta tags.
|
|
11
11
|
Add this line to your application's Gemfile:
|
12
12
|
|
13
13
|
```ruby
|
14
|
-
gem 'seo_tools
|
14
|
+
gem 'para-seo_tools'
|
15
15
|
```
|
16
16
|
|
17
17
|
And then execute:
|
@@ -29,7 +29,7 @@ gem install seo_tools-para
|
|
29
29
|
Run the installation generator :
|
30
30
|
|
31
31
|
```bash
|
32
|
-
rails generate seo_tools:install
|
32
|
+
rails generate para:seo_tools:install
|
33
33
|
```
|
34
34
|
|
35
35
|
## Usage
|
@@ -48,7 +48,7 @@ In the following section, you'll find how to :
|
|
48
48
|
|
49
49
|
### 1. Define the sitemap
|
50
50
|
|
51
|
-
When you run the `seo_tools:install` generator, a file is created at
|
51
|
+
When you run the `para:seo_tools:install` generator, a file is created at
|
52
52
|
`config/skeleton.rb` for you to create the sitemap.
|
53
53
|
|
54
54
|
This file allows you to define which pages you want to make available for
|
@@ -233,7 +233,7 @@ end
|
|
233
233
|
Then use the following rake task :
|
234
234
|
|
235
235
|
```bash
|
236
|
-
rake seo_tools:skeleton:build
|
236
|
+
rake para:seo_tools:skeleton:build
|
237
237
|
```
|
238
238
|
|
239
239
|
#### Domain and subdomains handling
|
@@ -1,10 +1,10 @@
|
|
1
|
-
%ul.
|
1
|
+
%ul.actions-control
|
2
2
|
%li
|
3
|
-
= link_to run_admin_skeleton_refresh_path, class: 'btn btn-default', remote: true, data: { :'job-tracker-button' => true } do
|
3
|
+
= link_to run_admin_skeleton_refresh_path, class: 'btn btn-default btn-shadow', remote: true, data: { :'job-tracker-button' => true } do
|
4
4
|
= fa_icon 'refresh'
|
5
5
|
= t('para.seo_tools.pages.refresh_skeleton')
|
6
6
|
|
7
7
|
%li
|
8
|
-
= link_to ping_admin_skeleton_refresh_path, class: 'btn btn-default', remote: true, data: { :'job-tracker-button' => true } do
|
8
|
+
= link_to ping_admin_skeleton_refresh_path, class: 'btn btn-default btn-shadow', remote: true, data: { :'job-tracker-button' => true } do
|
9
9
|
= fa_icon 'cloud-upload'
|
10
10
|
= t('para.seo_tools.pages.ping_search_engines')
|
@@ -1,18 +1,16 @@
|
|
1
1
|
= search_form_for @q, builder: SimpleForm::FormBuilder, url: @component.path, html: { data: { :'filters-form' => true } } do |form|
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
%td{ width: '20%' }
|
18
|
-
= form.submit t('para.shared.search'), class: 'btn btn-default btn-block'
|
2
|
+
|
3
|
+
- if Para::SeoTools.handle_subdomain
|
4
|
+
.flextable-item
|
5
|
+
= form.input_field :subdomain_eq, as: :selectize, collection: Para::SeoTools::Page.available_subdomains, class: 'form-control', placeholder: t('para.seo_tools.pages.subdomain')
|
6
|
+
|
7
|
+
- if @available_locales.length > 1
|
8
|
+
.flextable-item
|
9
|
+
= form.input_field :locale_eq, as: :selectize, collection: @available_locales, class: 'form-control', placeholder: t('para.seo_tools.pages.choose_locale')
|
10
|
+
|
11
|
+
.flextable-item.flextable-primary
|
12
|
+
.input-group.filter-form
|
13
|
+
= form.input_field :identifier_or_path_or_title_or_description_or_keywords_or_canonical_cont, as: :string, placeholder: t('para.shared.search'), class: 'form-control'
|
14
|
+
.input-group-btn
|
15
|
+
%button.btn{ type: 'submit' }
|
16
|
+
= fa_icon 'search'
|
@@ -1,13 +1,14 @@
|
|
1
1
|
= para_form_for(resource) do |form|
|
2
|
-
= form.
|
3
|
-
=
|
2
|
+
= form.tabs do |tabs|
|
3
|
+
= tabs.tab :informations, icon: 'info-circle' do
|
4
|
+
= form.input :path, disabled: true
|
4
5
|
|
5
|
-
|
6
|
-
|
7
|
-
|
6
|
+
= meta_tag_input form, :title
|
7
|
+
= meta_tag_input form, :description
|
8
|
+
= meta_tag_input form, :keywords
|
8
9
|
|
9
|
-
|
10
|
-
|
11
|
-
|
10
|
+
= tabs.tab :additional_meta_tags, icon: 'cog' do
|
11
|
+
= meta_tag_input form, :image, as: :image, hint: t('para.seo_tools.pages.image_hint')
|
12
|
+
= meta_tag_input form, :canonical, hint: t('para.seo_tools.pages.canonical_hint')
|
12
13
|
|
13
14
|
= form.actions
|
@@ -5,7 +5,7 @@
|
|
5
5
|
= table.header_for(:title)
|
6
6
|
= table.header_for(:description)
|
7
7
|
= table.header_for(:locale) if @available_locales.length > 1
|
8
|
-
%th
|
8
|
+
%th.table-row-actions
|
9
9
|
|
10
10
|
= table.rows(resources) do |resource|
|
11
11
|
= table.data_for(resource.subdomain) if Para::SeoTools.handle_subdomain
|
@@ -14,9 +14,8 @@
|
|
14
14
|
= table.data_for(resource.meta_tag(:description))
|
15
15
|
= table.data_for(resource, :locale) if @available_locales.length > 1
|
16
16
|
|
17
|
-
%td
|
18
|
-
.
|
19
|
-
= table.edit_button(resource)
|
17
|
+
%td.table-row-actions
|
18
|
+
= table.edit_button(resource)
|
20
19
|
|
21
|
-
|
22
|
-
|
20
|
+
= link_to resource.path, target: '_blank', class: 'btn btn-sm btn-icon-default btn-shadow hint--left', aria: { label: t('para.seo_tools.pages.see_in_app') } do
|
21
|
+
= fa_icon 'eye'
|
@@ -4,11 +4,16 @@ fr:
|
|
4
4
|
pages:
|
5
5
|
see_in_app: "Voir la page"
|
6
6
|
default_meta_tag_value: "Valeur par défaut : <b>%{value}</b>"
|
7
|
-
additional_meta_tags: "Meta-données avancées"
|
8
7
|
refresh_skeleton: "Mettre à jour"
|
9
8
|
ping_search_engines: "Envoyer le sitemap aux moteurs de recherche"
|
10
9
|
choose_locale: "Choisissez une langue"
|
11
10
|
subdomain: Sous-domaine
|
11
|
+
image_hint: |
|
12
|
+
Cette image sera utilisée par défaut comme prévisualisation de la page
|
13
|
+
lors de son partage sur les réseaux sociaux.
|
14
|
+
canonical_hint: |
|
15
|
+
Si la page ne doit pas être référencée au profit d'une autre page,
|
16
|
+
collez ici l'adresse de la page à référencer à la place.
|
12
17
|
|
13
18
|
jobs:
|
14
19
|
para/seo_tools/skeleton/job:
|
@@ -18,6 +23,16 @@ fr:
|
|
18
23
|
progressing: "Le plan du site est actuellement envoyé aux différents moteurs de recherche ..."
|
19
24
|
success: "Le plan du site a bien été transmis aux moteurs de recherche !"
|
20
25
|
|
26
|
+
components:
|
27
|
+
component:
|
28
|
+
sitemap: "Gestion SEO / Plan du site"
|
29
|
+
|
30
|
+
forms:
|
31
|
+
tabs:
|
32
|
+
para/seo_tools/page:
|
33
|
+
informations: "Informations"
|
34
|
+
additional_meta_tags: "Meta-données avancées"
|
35
|
+
|
21
36
|
activemodel:
|
22
37
|
models:
|
23
38
|
para/seo_tools/skeleton/job: "Mise à jour du plan du site"
|
@@ -31,8 +46,8 @@ fr:
|
|
31
46
|
title: "Titre"
|
32
47
|
description: "Description"
|
33
48
|
keywords: "Mots-clés de la page"
|
34
|
-
image: "Image pour le partage
|
35
|
-
canonical: "URL canonique"
|
49
|
+
image: "Image pour le partage"
|
50
|
+
canonical: "URL canonique (Canonical)"
|
36
51
|
locale: "Langue"
|
37
52
|
subdomain: "Sous-domaine"
|
38
53
|
|
@@ -1,11 +1,11 @@
|
|
1
1
|
# Use `lazy: true` to avoid generating the pages skeleton on server run
|
2
2
|
#
|
3
|
-
# You'll then have to run `rake seo_tools:skeleton:build` to refresh it or
|
4
|
-
# the `Para::SeoTools::Skeleton::Job.perform` method in some worker to
|
3
|
+
# You'll then have to run `rake para:seo_tools:skeleton:build` to refresh it or
|
4
|
+
# use the `Para::SeoTools::Skeleton::Job.perform` method in some worker to
|
5
5
|
# refresh it periodically
|
6
6
|
#
|
7
7
|
# Note that you also have to always refresh the sitemap manually with the
|
8
|
-
# following task : `rake seo_tools:sitemap:generate`
|
8
|
+
# following task : `rake para:seo_tools:sitemap:generate`
|
9
9
|
#
|
10
10
|
Para::SeoTools::Skeleton.draw(lazy: false) do
|
11
11
|
# Define your website SEO targetted structure here.
|
@@ -16,11 +16,13 @@ Para::SeoTools::Skeleton.draw(lazy: false) do
|
|
16
16
|
#
|
17
17
|
# page :posts
|
18
18
|
#
|
19
|
+
#
|
19
20
|
# If you want to define the page path yourself, just add the `:path` option
|
20
21
|
# to the `page` call
|
21
22
|
#
|
22
23
|
# page :home, path: root_path
|
23
24
|
#
|
25
|
+
#
|
24
26
|
# When the page is linked to a resource : often, a #show page, you'll need to
|
25
27
|
# pass the `:resource` option
|
26
28
|
#
|
@@ -28,10 +30,36 @@ Para::SeoTools::Skeleton.draw(lazy: false) do
|
|
28
30
|
# page :post, resource: post
|
29
31
|
# end
|
30
32
|
#
|
33
|
+
#
|
31
34
|
# Also, you can pass options for the sitemap generation tool.
|
32
35
|
# The options are `:priority`, `:change_frequency` which are left blank
|
33
36
|
# by default.
|
34
37
|
#
|
35
38
|
# page :posts, priority: 1, change_frequency: 'weekly'
|
36
39
|
#
|
40
|
+
#
|
41
|
+
# By default, when you pass a resource to a route, it will try to find
|
42
|
+
# default a title and description from your resource, using the method
|
43
|
+
# configured in the seo_tools.rb initializer at `config.title_methods` and
|
44
|
+
# `config.description_methods`.
|
45
|
+
#
|
46
|
+
# For non-resource pages or if you need to add your own defaults, you can
|
47
|
+
# pass them to the `#page` method the following way :
|
48
|
+
#
|
49
|
+
# page :posts, defaults: { title: 'Blog index', description: 'Read our blog ...' }
|
50
|
+
# page :post, resource: post, defaults: { description: post.excerpt }
|
51
|
+
#
|
52
|
+
#
|
53
|
+
# By default, every page that is not referenced in the skeleton will not be
|
54
|
+
# indexed by search engines.
|
55
|
+
#
|
56
|
+
# But if some of your skeleton pages shouldn't be
|
57
|
+
# indexed or links shouldn't be followed on that page, you can explicitly pass
|
58
|
+
# the `:noindex` and `:nofollow` options to the `#page` method.
|
59
|
+
#
|
60
|
+
# It allows to let the admins edit the page title but avoids it to be indexed.
|
61
|
+
#
|
62
|
+
# page :posts, noindex: true
|
63
|
+
# page :report_abuse, noindex: true, nofollow: true
|
64
|
+
#
|
37
65
|
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
module Para
|
2
|
+
module SeoTools
|
3
|
+
module Helpers
|
4
|
+
module DefaultDataMethodsHelper
|
5
|
+
def default_title_for(resource)
|
6
|
+
default_data_from_method_for(:title, resource)
|
7
|
+
end
|
8
|
+
|
9
|
+
def default_description_for(resource)
|
10
|
+
default_data_from_method_for(:description, resource)
|
11
|
+
end
|
12
|
+
|
13
|
+
def default_image_for(resource)
|
14
|
+
default_data_from_method_for(:image, resource)
|
15
|
+
end
|
16
|
+
|
17
|
+
# Try all default methods on resource
|
18
|
+
def default_data_from_method_for(method, resource)
|
19
|
+
return unless resource
|
20
|
+
|
21
|
+
Para::SeoTools.send(:"#{ method }_methods").each do |method|
|
22
|
+
data = resource.try(method)
|
23
|
+
return data if data.present?
|
24
|
+
end
|
25
|
+
# Avoid returning the methods enumerable returned by the #each call
|
26
|
+
nil
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -21,7 +21,8 @@ module Para
|
|
21
21
|
keywords_tag,
|
22
22
|
canonical_tag,
|
23
23
|
vendor_tags,
|
24
|
-
hreflang_tags
|
24
|
+
hreflang_tags,
|
25
|
+
index_tags
|
25
26
|
].flatten.compact.join(LINE_SEPARATOR).html_safe
|
26
27
|
end
|
27
28
|
|
@@ -81,6 +82,19 @@ module Para
|
|
81
82
|
end
|
82
83
|
end
|
83
84
|
|
85
|
+
def index_tags
|
86
|
+
noindex = !meta_tags.page || meta_tags.page.config['noindex']
|
87
|
+
nofollow = meta_tags.page && meta_tags.page.config['nofollow']
|
88
|
+
|
89
|
+
if noindex || nofollow
|
90
|
+
content = []
|
91
|
+
content << 'noindex' if noindex
|
92
|
+
content << 'nofollow' if nofollow
|
93
|
+
|
94
|
+
tag(:meta, name: 'robots', content: content.join(','))
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
84
98
|
def meta_tags
|
85
99
|
@meta_tags ||= template.controller.meta_tags_store
|
86
100
|
end
|
@@ -34,9 +34,9 @@ module Para
|
|
34
34
|
key.join(".")
|
35
35
|
end
|
36
36
|
|
37
|
-
# TODO : Define if we'll still support
|
37
|
+
# TODO : Define if we'll still support resource meta tags and refactor
|
38
38
|
# accordingly
|
39
|
-
def
|
39
|
+
def resource
|
40
40
|
end
|
41
41
|
|
42
42
|
def model_name
|
@@ -3,9 +3,11 @@ module Para
|
|
3
3
|
module MetaTags
|
4
4
|
module Tags
|
5
5
|
class Description < Base
|
6
|
+
include Para::SeoTools::Helpers::DefaultDataMethodsHelper
|
7
|
+
|
6
8
|
def value
|
7
9
|
self.class.process(
|
8
|
-
meta_taggable_description ||
|
10
|
+
meta_taggable_description || resource_description || action_name
|
9
11
|
)
|
10
12
|
end
|
11
13
|
|
@@ -16,22 +18,12 @@ module Para
|
|
16
18
|
private
|
17
19
|
|
18
20
|
def meta_taggable_description
|
19
|
-
|
20
|
-
|
21
|
+
resource && resource.meta_tagged? &&
|
22
|
+
resource.meta_tags_list.meta_description.presence
|
21
23
|
end
|
22
24
|
|
23
|
-
def
|
24
|
-
|
25
|
-
Para::SeoTools.description_methods.each do |method|
|
26
|
-
if instance.respond_to?(method)
|
27
|
-
if (description = instance.send(method).presence)
|
28
|
-
return description
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
return nil
|
34
|
-
end
|
25
|
+
def resource_description
|
26
|
+
default_description_for(resource)
|
35
27
|
end
|
36
28
|
|
37
29
|
def action_name
|
@@ -4,7 +4,7 @@ module Para
|
|
4
4
|
module Tags
|
5
5
|
class Image < Base
|
6
6
|
def value
|
7
|
-
self.class.process(
|
7
|
+
self.class.process(resource_image)
|
8
8
|
end
|
9
9
|
|
10
10
|
def self.process(value)
|
@@ -23,16 +23,8 @@ module Para
|
|
23
23
|
|
24
24
|
private
|
25
25
|
|
26
|
-
def
|
27
|
-
|
28
|
-
Para::SeoTools.image_methods.each do |method|
|
29
|
-
if instance.respond_to?(method) && instance.send(method)
|
30
|
-
return instance.send(method).url
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
|
-
nil
|
35
|
-
end
|
26
|
+
def resource_image
|
27
|
+
default_image_for(resource).try(:url)
|
36
28
|
end
|
37
29
|
|
38
30
|
def self.url_from(value)
|
@@ -10,8 +10,8 @@ module Para
|
|
10
10
|
private
|
11
11
|
|
12
12
|
def meta_taggable_keywords
|
13
|
-
|
14
|
-
|
13
|
+
resource && resource.meta_tagged? &&
|
14
|
+
resource.meta_tags_list.meta_keywords.presence
|
15
15
|
end
|
16
16
|
end
|
17
17
|
end
|
@@ -3,26 +3,21 @@ module Para
|
|
3
3
|
module MetaTags
|
4
4
|
module Tags
|
5
5
|
class Title < Base
|
6
|
+
include Para::SeoTools::Helpers::DefaultDataMethodsHelper
|
7
|
+
|
6
8
|
def value
|
7
|
-
meta_taggable_title ||
|
9
|
+
meta_taggable_title || resource_title || action_name || model_name_translation
|
8
10
|
end
|
9
11
|
|
10
12
|
private
|
11
13
|
|
12
14
|
def meta_taggable_title
|
13
|
-
|
14
|
-
|
15
|
+
resource && resource.meta_tagged? &&
|
16
|
+
resource.meta_tags_list.meta_title.presence
|
15
17
|
end
|
16
18
|
|
17
|
-
def
|
18
|
-
|
19
|
-
Para::SeoTools.title_methods.each do |method|
|
20
|
-
if instance.respond_to?(method) && (title = instance.send(method)).presence
|
21
|
-
return title
|
22
|
-
end
|
23
|
-
end
|
24
|
-
return nil
|
25
|
-
end
|
19
|
+
def resource_title
|
20
|
+
default_title_for(resource)
|
26
21
|
end
|
27
22
|
|
28
23
|
def action_name
|
@@ -10,8 +10,11 @@ module Para
|
|
10
10
|
prepare
|
11
11
|
|
12
12
|
SitemapGenerator::Sitemap.create do
|
13
|
-
Para::SeoTools::Page.where(
|
14
|
-
|
13
|
+
Para::SeoTools::Page.where(
|
14
|
+
"path ~* ? AND CAST(config->>'noindex' AS boolean) != ?",
|
15
|
+
Para::SeoTools.sitemap_path_regexp, true
|
16
|
+
).find_each do |page|
|
17
|
+
add(page.path, host: page.host) unless page.config['noindex']
|
15
18
|
end
|
16
19
|
end
|
17
20
|
end
|
@@ -5,6 +5,7 @@ module Para
|
|
5
5
|
|
6
6
|
class PageBuilder
|
7
7
|
include Rails.application.routes.url_helpers
|
8
|
+
include Para::SeoTools::Helpers::DefaultDataMethodsHelper
|
8
9
|
|
9
10
|
attr_reader :name, :resource, :locale, :defaults, :config
|
10
11
|
|
@@ -58,8 +59,9 @@ module Para
|
|
58
59
|
# Override path (i.e.: slug changed)
|
59
60
|
page.path = path if path.to_s != page.path
|
60
61
|
page.locale = locale
|
62
|
+
|
61
63
|
# Do not override meta tags if already present
|
62
|
-
page.defaults =
|
64
|
+
page.defaults = process_defaults
|
63
65
|
page.config = config
|
64
66
|
end
|
65
67
|
end
|
@@ -74,6 +76,15 @@ module Para
|
|
74
76
|
end
|
75
77
|
end
|
76
78
|
|
79
|
+
def process_defaults
|
80
|
+
return {} if defaults == false
|
81
|
+
|
82
|
+
defaults[:title] ||= default_title_for(resource)
|
83
|
+
defaults[:description] ||= default_description_for(resource)
|
84
|
+
|
85
|
+
defaults
|
86
|
+
end
|
87
|
+
|
77
88
|
def self.model_for(page)
|
78
89
|
models[unique_identifier_for(page)] ||= ::Para::SeoTools::Page.new(
|
79
90
|
identifier: page.identifier
|
@@ -3,6 +3,7 @@ namespace :para do
|
|
3
3
|
namespace :skeleton do
|
4
4
|
desc "Builds or refreshes the app skeleton."
|
5
5
|
task build: :environment do
|
6
|
+
puts " * Build app skeleton ..."
|
6
7
|
Para::SeoTools::Skeleton.build(load_skeleton: true)
|
7
8
|
end
|
8
9
|
end
|
@@ -10,6 +11,9 @@ namespace :para do
|
|
10
11
|
namespace :sitemap do
|
11
12
|
desc "Generates a new sitemap."
|
12
13
|
task generate: :environment do
|
14
|
+
Rake.application.invoke_task('para:seo_tools:skeleton:build')
|
15
|
+
|
16
|
+
puts " * Generate sitemap ..."
|
13
17
|
Para::SeoTools::Sitemap.generate!
|
14
18
|
end
|
15
19
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: para-seo_tools
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Valentin Ballestrino
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-04-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -125,6 +125,7 @@ files:
|
|
125
125
|
- lib/para/seo_tools/controller.rb
|
126
126
|
- lib/para/seo_tools/engine.rb
|
127
127
|
- lib/para/seo_tools/helpers.rb
|
128
|
+
- lib/para/seo_tools/helpers/default_data_methods_helper.rb
|
128
129
|
- lib/para/seo_tools/helpers/page_helper.rb
|
129
130
|
- lib/para/seo_tools/helpers/view_helper.rb
|
130
131
|
- lib/para/seo_tools/meta_tags.rb
|