no_follow_external_links 0.1.3 → 0.1.4

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
  SHA1:
3
- metadata.gz: 8eb73dd6e22036ed4575558e8faa975c07c7c1db
4
- data.tar.gz: e59ac01af1393f9611c17eff980c0a54db749de2
3
+ metadata.gz: b7650233c1d858b784e9ed8ca97b3cbec2cc2ee8
4
+ data.tar.gz: ee78a404b057dfc275e3504cbdaf3e2070e15d79
5
5
  SHA512:
6
- metadata.gz: 138790c7ec0aa7d3048462d08646fc36dfa0aeda1ad07b1ed03c93951c2bd3736199927607d6d4a00ac1d36e434de540d4db0b834e7b26a69d3cc82980c9e5a0
7
- data.tar.gz: 773e90b0f5469abd738d62225919913aee857423fb00ce53b4a6d1c097717d62251f0c9149d67d9f2e427bcab4dc413c199aa79b27eca00578730a09fe19399a
6
+ metadata.gz: 3295784e00e2ef54acdea54684fe4369c5166574add9c101289fe547e63a1d1f0bb66f50ca6a94221cd98177d8975f6cfe5f401002c73a6dc92731056f9c684c
7
+ data.tar.gz: e6a6c407bf1398c52e4b4c9546e8bebe245a3a5ca40656de9c691ceef11f726544f5007ea983f1963b8d8e46c53007aa152e9742bcb9f78a200d20a927e3fa0f
data/README.md CHANGED
@@ -1,8 +1,16 @@
1
1
  # NoFollowExternalLinks
2
- Short description and motivation.
2
+ Links that point to external urls are recommended to include a rel=nofollow property to make sure the crawler bots do not follow the content of external resources as your own.
3
+ This plugin makes it easy to implement that for all existing links on a Rails application.
3
4
 
4
5
  ## Usage
5
- How to use my plugin.
6
+ This plugin will automatically add a nofollow rel property to all the external links you create using Rails `link_to` method
7
+ If you need to add an exception for instance for your own personal blog within a subdomain just add an intializer with the following:
8
+
9
+ ```
10
+ NoFollowExternalLinks.configure do |config|
11
+ config.excluded_urls = %w{https://blog.mydomain.com/}
12
+ end
13
+ ```
6
14
 
7
15
  ## Installation
8
16
  Add this line to your application's Gemfile:
@@ -1,15 +1,29 @@
1
+ require 'byebug'
2
+
3
+ NoFollowExternalLinks.configure do |config|
4
+ config.excluded_urls = []
5
+ end
6
+
1
7
  Rails.configuration.to_prepare do
2
8
  ApplicationHelper.class_eval do
3
9
  def link_to(name, options = {}, html_options = {})
4
- html_options.merge!(rel: :nofollow) unless internal_url? options
10
+ html_options.merge!(rel: :nofollow) if add_nofollow? options
5
11
  super(name, options, html_options)
6
12
  end
7
13
 
8
14
  private
9
15
 
10
- def internal_url?(url)
11
- return true unless self.respond_to? :root_url
12
- url.try(:first) == '/' || url.try(:include?, root_url)
16
+ def add_nofollow?(url)
17
+ external_url?(url) && excluded_url?(url)
18
+ end
19
+
20
+ def excluded_url?(url)
21
+ !NoFollowExternalLinks.configuration.excluded_urls.include?(url)
22
+ end
23
+
24
+ def external_url?(url)
25
+ return false unless self.respond_to? :root_url
26
+ url.try(:first) != '/' && !url.try(:include?, root_url)
13
27
  end
14
28
  end
15
29
  end
@@ -1,5 +1,13 @@
1
1
  require "no_follow_external_links/engine"
2
+ require "no_follow_external_links/configuration"
2
3
 
3
4
  module NoFollowExternalLinks
4
- # Your code goes here...
5
+ class << self
6
+ attr_accessor :configuration
7
+ end
8
+
9
+ def self.configure
10
+ self.configuration ||= Configuration.new
11
+ yield(configuration)
12
+ end
5
13
  end
@@ -0,0 +1,9 @@
1
+ module NoFollowExternalLinks
2
+ class Configuration
3
+ attr_accessor :excluded_urls
4
+
5
+ def initialize
6
+ @excluded_urls = []
7
+ end
8
+ end
9
+ end
@@ -1,3 +1,3 @@
1
1
  module NoFollowExternalLinks
2
- VERSION = '0.1.3'
2
+ VERSION = '0.1.4'
3
3
  end
@@ -1,3 +1,4 @@
1
1
  <%=link_to 'Internal cars', car_path('example'), id: 'car_internal_link'%>
2
2
  <%=link_to 'Internal cars full url', car_url('example'), id: 'car_internal_url_ink'%>
3
3
  <%=link_to 'External cars', 'https://www.cars.com/', id: 'car_external_link'%>
4
+ <%=link_to 'External cars but excluded', 'https://www.mycars.com/', id: 'car_external_excluded_link'%>
@@ -0,0 +1,22 @@
1
+ require 'spec_helper'
2
+
3
+ feature 'Add no follow attribute to external links' do
4
+ before do
5
+ NoFollowExternalLinks.configure do |config|
6
+ config.excluded_urls = %w{https://www.mycars.com/}
7
+ end
8
+ visit root_path
9
+ end
10
+
11
+ it 'should show the external link' do
12
+ expect(page).to have_selector :link_or_button, 'External cars but excluded'
13
+ end
14
+
15
+ it 'adds a nofollow rel to external link links' do
16
+ expect(find('a#car_external_link')['rel']).to eq('nofollow')
17
+ end
18
+
19
+ it 'does not add a nofollow rel to external excluded links' do
20
+ expect(find('a#car_external_excluded_link')['rel']).not_to be
21
+ end
22
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: no_follow_external_links
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pablo Gonzaga
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-01-19 00:00:00.000000000 Z
11
+ date: 2017-08-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -157,6 +157,7 @@ files:
157
157
  - config/initializers/no_follow_external_links.rb
158
158
  - config/routes.rb
159
159
  - lib/no_follow_external_links.rb
160
+ - lib/no_follow_external_links/configuration.rb
160
161
  - lib/no_follow_external_links/engine.rb
161
162
  - lib/no_follow_external_links/version.rb
162
163
  - lib/tasks/no_follow_external_links_tasks.rake
@@ -263,6 +264,7 @@ files:
263
264
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/x7/x7PYh8DJvPykcEqpVab2vcY9-GFz-3cqtoMlRAu94Uc.cache
264
265
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/yT/yTBgOVdriipCfu0f-gBdtxY7YwyFmTyw8XmeYbxRYRI.cache
265
266
  - spec/feature/external_links_spec.rb
267
+ - spec/feature/external_links_with_exception_spec.rb
266
268
  - spec/feature/internal_links_spec.rb
267
269
  - spec/spec_helper.rb
268
270
  homepage: https://github.com/pgonzaga2012/no_follow_external_links
@@ -393,5 +395,6 @@ test_files:
393
395
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/yT/yTBgOVdriipCfu0f-gBdtxY7YwyFmTyw8XmeYbxRYRI.cache
394
396
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/Zl/Zlabymek1OchThl--EYnug-w71BxsUbsswgwbbi3X4w.cache
395
397
  - spec/feature/external_links_spec.rb
398
+ - spec/feature/external_links_with_exception_spec.rb
396
399
  - spec/feature/internal_links_spec.rb
397
400
  - spec/spec_helper.rb