seorel 0.0.1 → 0.0.2
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.
- data/README.md +7 -1
- data/app/models/seorel/seorel.rb +5 -8
- data/lib/generators/seorel/templates/seorel_config.rb +1 -0
- data/lib/seorel/config.rb +2 -0
- data/lib/seorel/controller/instance_methods.rb +2 -2
- data/lib/seorel/controller/params.rb +0 -2
- data/lib/seorel/engine.rb +0 -2
- data/lib/seorel/helper.rb +15 -20
- data/lib/seorel/model/base.rb +1 -1
- data/lib/seorel/model/instance_methods.rb +15 -5
- data/lib/seorel/version.rb +1 -1
- metadata +2 -51
- data/app/uploaders/seorel/image_uploader.rb +0 -53
data/README.md
CHANGED
@@ -2,13 +2,18 @@
|
|
2
2
|
|
3
3
|
Ruby on Rails SEO Metatags plugins for ActiveRecord models
|
4
4
|
|
5
|
+
[](http://badge.fury.io/rb/seorel)
|
6
|
+
|
5
7
|
## Rails Setup
|
6
8
|
|
7
9
|
|
8
10
|
`Gemfile.rb`:
|
9
11
|
|
10
12
|
```ruby
|
11
|
-
gem 'seorel',
|
13
|
+
gem 'seorel', '~> 0.0.2'
|
14
|
+
|
15
|
+
# the edge version can be had using:
|
16
|
+
# gem 'seorel', github: 'dalpo/seorel'
|
12
17
|
```
|
13
18
|
|
14
19
|
`Console`:
|
@@ -33,6 +38,7 @@ Seorel.configure do |config|
|
|
33
38
|
# config.default_image = nil
|
34
39
|
# config.prepend_title = nil
|
35
40
|
# config.append_title = nil
|
41
|
+
# config.store_seorel_if = :empty # Available values :empty | :changed
|
36
42
|
end
|
37
43
|
```
|
38
44
|
|
data/app/models/seorel/seorel.rb
CHANGED
@@ -2,14 +2,7 @@
|
|
2
2
|
module Seorel
|
3
3
|
class Seorel < ActiveRecord::Base
|
4
4
|
|
5
|
-
belongs_to :seorelable, polymorphic: true
|
6
|
-
|
7
|
-
mount_uploader :image, Seorel::ImageUploader
|
8
|
-
|
9
|
-
before_save do
|
10
|
-
self.title = ::ActionController::Base.helpers.strip_tags(self.title).first(255) if self.title?
|
11
|
-
self.description = ::ActionController::Base.helpers.strip_tags(self.description).first(255) if self.description?
|
12
|
-
end
|
5
|
+
belongs_to :seorelable, polymorphic: true, touch: true
|
13
6
|
|
14
7
|
def title?
|
15
8
|
self.title.present?
|
@@ -23,5 +16,9 @@ module Seorel
|
|
23
16
|
I18n.t("seorel.admin.label")
|
24
17
|
end
|
25
18
|
|
19
|
+
def image?
|
20
|
+
false
|
21
|
+
end
|
22
|
+
|
26
23
|
end
|
27
24
|
end
|
data/lib/seorel/config.rb
CHANGED
@@ -24,6 +24,7 @@ module Seorel
|
|
24
24
|
config_accessor :default_image
|
25
25
|
config_accessor :prepend_title
|
26
26
|
config_accessor :append_title
|
27
|
+
config_accessor :store_seorel_if
|
27
28
|
|
28
29
|
def param_name
|
29
30
|
config.param_name.respond_to?(:call) ? config.param_name.call : config.param_name
|
@@ -42,5 +43,6 @@ module Seorel
|
|
42
43
|
config.default_image = nil
|
43
44
|
config.prepend_title = nil
|
44
45
|
config.append_title = nil
|
46
|
+
config.store_seorel_if = :empty
|
45
47
|
end
|
46
48
|
end
|
@@ -16,14 +16,14 @@ module Seorel
|
|
16
16
|
def add_seorel_hash(values = {})
|
17
17
|
seorel_params.title = values[:title] if values[:title].present?
|
18
18
|
seorel_params.description = values[:description] if values[:description].present?
|
19
|
-
seorel_params.image = values[:image] if values[:image].present?
|
19
|
+
# seorel_params.image = values[:image] if values[:image].present?
|
20
20
|
seorel_params
|
21
21
|
end
|
22
22
|
|
23
23
|
def add_seorel_model(model)
|
24
24
|
seorel_params.title = model.seo_title
|
25
25
|
seorel_params.description = model.seo_description
|
26
|
-
seorel_params.image = model.seo_image.default.url if model.seo_image?
|
26
|
+
# seorel_params.image = model.seo_image.default.url if model.seo_image?
|
27
27
|
seorel_params
|
28
28
|
end
|
29
29
|
|
@@ -4,7 +4,6 @@ require 'active_support/configurable'
|
|
4
4
|
module Seorel
|
5
5
|
module Controller
|
6
6
|
class Params
|
7
|
-
|
8
7
|
include ActiveSupport::Configurable
|
9
8
|
|
10
9
|
config_accessor :title
|
@@ -30,7 +29,6 @@ module Seorel
|
|
30
29
|
def default_options
|
31
30
|
::Seorel.config
|
32
31
|
end
|
33
|
-
|
34
32
|
end
|
35
33
|
end
|
36
34
|
end
|
data/lib/seorel/engine.rb
CHANGED
@@ -8,9 +8,7 @@ module Seorel
|
|
8
8
|
app.config.to_prepare do
|
9
9
|
ActionController::Base.send :extend, ::Seorel::Controller::ClassMethods
|
10
10
|
ActionController::Base.send :include, ::Seorel::Controller::InstanceMethods
|
11
|
-
|
12
11
|
ActionController::Base.send :helper_method, :seorel_params
|
13
|
-
|
14
12
|
ActionView::Base.send :include, ::Seorel::Helper
|
15
13
|
end
|
16
14
|
end
|
data/lib/seorel/helper.rb
CHANGED
@@ -3,12 +3,7 @@ module Seorel
|
|
3
3
|
module Helper
|
4
4
|
|
5
5
|
def render_meta_tags
|
6
|
-
|
7
|
-
metas+= render_title
|
8
|
-
metas+= render_description
|
9
|
-
metas+= render_open_graph
|
10
|
-
metas+= render_twitter_cards
|
11
|
-
metas.html_safe
|
6
|
+
[render_title, render_description, render_open_graph, render_twitter_cards].join("\n").html_safe
|
12
7
|
end
|
13
8
|
|
14
9
|
def render_title
|
@@ -20,23 +15,23 @@ module Seorel
|
|
20
15
|
end
|
21
16
|
|
22
17
|
def render_open_graph
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
18
|
+
[
|
19
|
+
content_tag(:meta, nil, name: 'og:type', content: 'website'),
|
20
|
+
content_tag(:meta, nil, name: 'og:title', content: seorel_params.full_title),
|
21
|
+
content_tag(:meta, nil, name: 'og:description', content: seorel_params.description),
|
22
|
+
content_tag(:meta, nil, name: 'og:image', content: seorel_params.image),
|
23
|
+
content_tag(:meta, nil, name: 'og:locale', content: I18n.locale.to_s)
|
24
|
+
].join("\n").html_safe
|
30
25
|
end
|
31
26
|
|
32
27
|
def render_twitter_cards
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
28
|
+
[
|
29
|
+
content_tag(:meta, nil, name: 'twitter:card', content: 'summary'),
|
30
|
+
content_tag(:meta, nil, name: 'twitter:url', content: url_for),
|
31
|
+
content_tag(:meta, nil, name: 'twitter:title', content: seorel_params.full_title),
|
32
|
+
content_tag(:meta, nil, name: 'twitter:description', content: seorel_params.description),
|
33
|
+
content_tag(:meta, nil, name: 'twitter:image', content: seorel_params.image)
|
34
|
+
].join("\n").html_safe
|
40
35
|
end
|
41
36
|
|
42
37
|
end
|
data/lib/seorel/model/base.rb
CHANGED
@@ -22,7 +22,7 @@ module Seorel
|
|
22
22
|
has_one :seorel, as: :seorelable, dependent: :destroy, class_name: 'Seorel::Seorel'
|
23
23
|
accepts_nested_attributes_for :seorel, allow_destroy: false
|
24
24
|
|
25
|
-
before_save :
|
25
|
+
before_save :set_seorel
|
26
26
|
|
27
27
|
delegate :title, :title?, :description, :description?, :image, :image?, to: :seorel, prefix: :seo, allow_nil: true
|
28
28
|
end
|
@@ -7,19 +7,29 @@ module Seorel
|
|
7
7
|
self.try(:seorel).present?
|
8
8
|
end
|
9
9
|
|
10
|
-
def
|
10
|
+
def should_update_seo_title?
|
11
|
+
::Seorel.config.store_seorel_if.eql?(:changed) || !self.seo_title?
|
12
|
+
end
|
13
|
+
|
14
|
+
def should_update_seo_description?
|
15
|
+
::Seorel.config.store_seorel_if.eql?(:changed) || !self.seo_description?
|
16
|
+
end
|
17
|
+
|
18
|
+
def set_seorel
|
11
19
|
self.build_seorel unless self.seorel?
|
12
20
|
|
13
|
-
self.seorel.title = self.seorel_title_value if self.
|
14
|
-
self.seorel.description = self.seorel_description_value if self.
|
21
|
+
self.seorel.title = self.seorel_title_value if self.should_update_seo_title?
|
22
|
+
self.seorel.description = self.seorel_description_value if self.should_update_seo_description?
|
15
23
|
end
|
16
24
|
|
17
25
|
def seorel_title_value
|
18
|
-
self.class.seorel_title_field && self.send(self.class.seorel_title_field)
|
26
|
+
raw_title = self.class.seorel_title_field && self.send(self.class.seorel_title_field)
|
27
|
+
::ActionController::Base.helpers.strip_tags(raw_title.to_s).first(255)
|
19
28
|
end
|
20
29
|
|
21
30
|
def seorel_description_value
|
22
|
-
self.class.seorel_description_field && self.send(self.class.seorel_description_field)
|
31
|
+
raw_description = self.class.seorel_description_field && self.send(self.class.seorel_description_field)
|
32
|
+
::ActionController::Base.helpers.strip_tags(raw_description.to_s).first(255)
|
23
33
|
end
|
24
34
|
|
25
35
|
def seorel_default_value?
|
data/lib/seorel/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: seorel
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-
|
12
|
+
date: 2013-10-25 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rails
|
@@ -27,54 +27,6 @@ dependencies:
|
|
27
27
|
- - ! '>='
|
28
28
|
- !ruby/object:Gem::Version
|
29
29
|
version: '3.2'
|
30
|
-
- !ruby/object:Gem::Dependency
|
31
|
-
name: carrierwave
|
32
|
-
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
|
-
requirements:
|
35
|
-
- - ! '>='
|
36
|
-
- !ruby/object:Gem::Version
|
37
|
-
version: '0'
|
38
|
-
type: :runtime
|
39
|
-
prerelease: false
|
40
|
-
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
|
-
requirements:
|
43
|
-
- - ! '>='
|
44
|
-
- !ruby/object:Gem::Version
|
45
|
-
version: '0'
|
46
|
-
- !ruby/object:Gem::Dependency
|
47
|
-
name: mini_magick
|
48
|
-
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
|
-
requirements:
|
51
|
-
- - ! '>='
|
52
|
-
- !ruby/object:Gem::Version
|
53
|
-
version: '0'
|
54
|
-
type: :runtime
|
55
|
-
prerelease: false
|
56
|
-
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
|
-
requirements:
|
59
|
-
- - ! '>='
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: '0'
|
62
|
-
- !ruby/object:Gem::Dependency
|
63
|
-
name: sqlite3
|
64
|
-
requirement: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
|
-
requirements:
|
67
|
-
- - ! '>='
|
68
|
-
- !ruby/object:Gem::Version
|
69
|
-
version: '0'
|
70
|
-
type: :development
|
71
|
-
prerelease: false
|
72
|
-
version_requirements: !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
|
-
requirements:
|
75
|
-
- - ! '>='
|
76
|
-
- !ruby/object:Gem::Version
|
77
|
-
version: '0'
|
78
30
|
description: Easy management of SEO Metatags for your ActiveRecord models
|
79
31
|
email:
|
80
32
|
- info@andreadalponte.com
|
@@ -83,7 +35,6 @@ extensions: []
|
|
83
35
|
extra_rdoc_files: []
|
84
36
|
files:
|
85
37
|
- app/models/seorel/seorel.rb
|
86
|
-
- app/uploaders/seorel/image_uploader.rb
|
87
38
|
- config/locales/en.seorel.yml
|
88
39
|
- config/locales/it.seorel.yml
|
89
40
|
- config/routes.rb
|
@@ -1,53 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
module Seorel
|
3
|
-
class ImageUploader < CarrierWave::Uploader::Base
|
4
|
-
|
5
|
-
# Include RMagick or MiniMagick support:
|
6
|
-
# include CarrierWave::RMagick
|
7
|
-
# include CarrierWave::Processing::RMagick
|
8
|
-
include CarrierWave::MiniMagick
|
9
|
-
|
10
|
-
# Include the Sprockets helpers for Rails 3.1+ asset pipeline compatibility:
|
11
|
-
include Sprockets::Helpers::RailsHelper
|
12
|
-
include Sprockets::Helpers::IsolatedHelper
|
13
|
-
|
14
|
-
# Choose what kind of storage to use for this uploader:
|
15
|
-
storage :file
|
16
|
-
# storage :fog
|
17
|
-
|
18
|
-
# Override the directory where uploaded files will be stored.
|
19
|
-
# This is a sensible default for uploaders that are meant to be mounted:
|
20
|
-
def store_dir
|
21
|
-
File.join('system', model.class.to_s.underscore.to_s, mounted_as.to_s, model.id.to_s)
|
22
|
-
end
|
23
|
-
|
24
|
-
# Provide a default URL as a default if there hasn't been a file uploaded:
|
25
|
-
def default_url
|
26
|
-
# For Rails 3.1+ asset pipeline compatibility:
|
27
|
-
asset_path('seorel/default.jpg')
|
28
|
-
end
|
29
|
-
|
30
|
-
process convert: 'jpeg'
|
31
|
-
|
32
|
-
version :thumbnail do
|
33
|
-
process resize_to_fill: [150, 150]
|
34
|
-
end
|
35
|
-
|
36
|
-
version :default do
|
37
|
-
process resize_and_pad: [300, 300, '#ffffff']
|
38
|
-
end
|
39
|
-
|
40
|
-
# Add a white list of extensions which are allowed to be uploaded.
|
41
|
-
# For images you might use something like this:
|
42
|
-
def extension_white_list
|
43
|
-
%w(jpg jpeg gif png bmp tif tiff)
|
44
|
-
end
|
45
|
-
|
46
|
-
# Override the filename of the uploaded files:
|
47
|
-
# Avoid using model.id or version_name here, see uploader/store.rb for details.
|
48
|
-
# def filename
|
49
|
-
# "something.jpg" if original_filename
|
50
|
-
# end
|
51
|
-
|
52
|
-
end
|
53
|
-
end
|