such_meta 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 14982da1bb32c3747a98aaa0609dfa816a648bad
4
+ data.tar.gz: c4830e3d52d116c9c49172521fc864a570055285
5
+ SHA512:
6
+ metadata.gz: 3253b00d9fbdf090c8848c570a0a6c663e2e8ebaf6b16834c4beb5b7065bc5d8c4544338f695867ea6d4c1aac5ff1611cb509e822f46ca2db861a5b161f9ef93
7
+ data.tar.gz: 6167d13668634c402128d0f29df41daaf26175e2c843612c9b1503f838e28301edb7ae7d76c21bbb9f8f4525c8eeaf8e6e6ac9e624a0884f2dc1ea98ff92af0a
data/.gitignore ADDED
@@ -0,0 +1,15 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /Gemfile.lock
4
+ /_yardoc/
5
+ /coverage/
6
+ /doc/
7
+ /pkg/
8
+ /spec/reports/
9
+ /tmp/
10
+ *.bundle
11
+ *.so
12
+ *.o
13
+ *.a
14
+ mkmf.log
15
+ *.gem
data/.rspec ADDED
@@ -0,0 +1 @@
1
+ --format documentation --color
data/.rubocop.yml ADDED
@@ -0,0 +1,39 @@
1
+ AllCops:
2
+ RunRailsCops: false
3
+ Excludes:
4
+ - spec/test_app/**
5
+ - bin/**
6
+
7
+ LineLength:
8
+ Max: 120
9
+
10
+ ClassLength:
11
+ CountComments: false # count full line comments?
12
+ Max: 175
13
+
14
+ MethodLength:
15
+ CountComments: false # count full line comments?
16
+ Max: 10
17
+
18
+ HashSyntax:
19
+ EnforcedStyle: hash_rockets
20
+
21
+ Documentation:
22
+ Enabled: false
23
+
24
+ DefaultScope:
25
+ Enabled: false
26
+
27
+ CollectionMethods:
28
+ PreferredMethods:
29
+ map: 'collect'
30
+ map!: 'collect!'
31
+ reduce: 'inject'
32
+ find: 'detect'
33
+ find_all: 'select'
34
+
35
+ Output:
36
+ Enabled: false
37
+
38
+ HasAndBelongsToMany:
39
+ Enabled: false
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in such_meta.gemspec
4
+ gemspec
data/Guardfile ADDED
@@ -0,0 +1,11 @@
1
+ guard 'rspec', :cmd => 'rspec --colour', :all_on_start => false, :all_after_pass => false do
2
+ watch('spec/spec_helper.rb') { 'spec' }
3
+ watch(%r{^spec/.+_spec\.rb})
4
+ watch(%r{^lib/(.+)\.rb}) { |m| "spec/lib/#{m[1]}_spec.rb" }
5
+ end
6
+
7
+ guard :rubocop do
8
+ watch(/.+\.gemspec$/)
9
+ watch(/.+\.rb$/)
10
+ watch(%r{(?:.+/)?\.rubocop\.yml$}) { |m| File.dirname(m[0]) }
11
+ end
data/LICENSE.txt ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2015 Anisha Vasandani
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,138 @@
1
+ # SuchMeta
2
+
3
+ A gem that simplifies SEO meta tags, allowing for customization and internationalization.
4
+
5
+ ## Setup & Installation
6
+
7
+ Add this line to your application's Gemfile:
8
+
9
+ ```ruby
10
+ gem 'such_meta'
11
+ ```
12
+
13
+ And then execute:
14
+
15
+ $ bundle install
16
+
17
+ Or install it yourself as:
18
+
19
+ $ gem install such_meta
20
+
21
+ Use the built-in generator to set up `such_meta.en.yml`:
22
+
23
+
24
+ $ bundle exec rails g such_meta:install
25
+
26
+
27
+ The generator will add the `such_meta.en.yml` file to `config/locales/such_meta.en.yml`. Use this yml file to set **default** meta tags for the site and to target **specific** controller actions. Examples are included below.
28
+
29
+ ## Included In This Gem:
30
+
31
+ There are two basic ways to configure your meta tags:
32
+
33
+ ### Get
34
+
35
+ You can either "get" the meta tag, by passing a `tag_type`: `such_meta(tag_type)`. If there is a controller/action defined in such_meta.en.yml under `specific`, the custom tag is returned. Otherwise, the default tags defined under `default`.
36
+
37
+
38
+ ### Set
39
+
40
+ Or, you can "set" the meta tag, by passing the `tag_type` and the `value` that you'd like to override: `such_meta(tag_type, value)`.
41
+
42
+ ## Setting Up Your Yaml File
43
+
44
+ ### Default Meta Tags:
45
+ ```
46
+ en:
47
+ such_meta:
48
+ default:
49
+ title: 'Default'
50
+ description: 'Default description for Such Meta'
51
+ keywords: 'Default Keyword 1, Default Keyword 2, Default Keyword 3'
52
+ og:
53
+ title: 'Default Facebook Title'
54
+ type: 'Default Facebook Type'
55
+ image: 'Default Image'
56
+ twitter:
57
+ card: 'Default Twitter'
58
+ site: 'Default Site'
59
+ ```
60
+
61
+ ### Specific Meta Tags
62
+ ```
63
+ en:
64
+ such_meta:
65
+ default: <!-- please see above -->
66
+ specific:
67
+ controller_name:
68
+ index:
69
+ title: 'Controller Index Title'
70
+ description: 'Description for Controller Index'
71
+ keywords: 'Keyword 1, Keyword 2, Keyword 3'
72
+ show:
73
+ title: 'Controller Show Title'
74
+ description: 'Description for Controller Show'
75
+ keywords:
76
+ og:
77
+ title: 'Facebook'
78
+ type: 'Type'
79
+ url: 'http://www.sampleurl.com'
80
+ image: 'https://image.com/300/400'
81
+ twitter:
82
+ card: 'Twitter'
83
+ site: 'Site'
84
+ ```
85
+
86
+ ## Recommended Usage
87
+
88
+ Here are some recommended meta tags to get you started. These tags belong in `application.html.erb` in a traditional Rails application:
89
+
90
+ ### Title
91
+
92
+ `<title><%= such_meta(:title) %></title>`
93
+
94
+ ### Description
95
+
96
+ `<meta name="description" content="<%= such_meta(:description) %>">`
97
+
98
+ ### Keywords
99
+
100
+ `<meta name="keywords" content="<%= such_meta(:keywords) %>">`
101
+
102
+ ### Facebook
103
+
104
+ `<meta property="og:title" content="<%= such_meta('og.title') %>">`
105
+
106
+ `<meta property="og:type" content="<%= such_meta('og.type') %>">`
107
+
108
+ `<meta property="og:image" content="<%= such_meta('og.image') %>">`
109
+
110
+ `<meta property="og:url" content="<%= such_meta('og.url') %>">`
111
+
112
+ ### Twitter
113
+
114
+ `<meta property="twitter:card" content="<%= such_meta('twitter.card') %>">`
115
+
116
+ `<meta property="twitter:description" content="<%= such_meta('twitter.description') %>">`
117
+
118
+ `<meta property="twitter:site" content="<%= such_meta('twitter.site') %>">`
119
+
120
+ `<meta property="twitter:title" content="<%= such_meta('twitter.title') %>">`
121
+
122
+ `<meta property="twitter:image" content="<%= such_meta('twitter.image') %>">`
123
+
124
+
125
+ ## Contributing
126
+
127
+ 1. Fork it ( https://github.com/crushlovely/suchmeta/fork )
128
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
129
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
130
+ 4. Push to the branch (`git push origin my-new-feature`)
131
+ 5. Create a new Pull Request
132
+
133
+ ## Running tests
134
+
135
+ ```bash
136
+ bundle exec guard
137
+ ```
138
+
data/Rakefile ADDED
@@ -0,0 +1 @@
1
+ require 'bundler/gem_tasks'
@@ -0,0 +1,31 @@
1
+ en:
2
+ such_meta:
3
+ default:
4
+ title: 'Default'
5
+ description: 'Default description for Such Meta'
6
+ keywords: 'Default Keyword 1, Default Keyword 2, Default Keyword 3'
7
+ og:
8
+ title: 'Default Facebook Title'
9
+ type: 'Default Facebook Type'
10
+ image: 'Default Image'
11
+ twitter:
12
+ card: 'Default Twitter'
13
+ site: 'Default Site'
14
+ specific:
15
+ muppets:
16
+ index:
17
+ title: 'Muppets Index Title'
18
+ description: 'Description for Muppets'
19
+ keywords: 'Keyword 1, Keyword 2, Keyword 3'
20
+ show:
21
+ title: 'Muppets Show Title'
22
+ description:
23
+ keywords:
24
+ og:
25
+ title: 'Muppet Facebook'
26
+ type: 'Muppet Type'
27
+ url: 'http://www.muppets.com'
28
+ image: 'https://placekitten.com/300/400'
29
+ twitter:
30
+ card: 'Muppet Twitter'
31
+ site: 'Muppet Site'
@@ -0,0 +1,13 @@
1
+ require 'rails/generators/base'
2
+
3
+ module SuchMeta
4
+ module Generators
5
+ class InstallGenerator < Rails::Generators::Base
6
+ source_root File.expand_path('../', __FILE__)
7
+
8
+ def copy_locale
9
+ copy_file '../../../config/locales/such_meta.en.yml', 'config/locales/such_meta.en.yml'
10
+ end
11
+ end
12
+ end
13
+ end
data/lib/such_meta.rb ADDED
@@ -0,0 +1,17 @@
1
+ require 'action_controller'
2
+
3
+ require 'active_support/concern'
4
+ require 'such_meta/version'
5
+ require 'such_meta/exceptions'
6
+ require 'such_meta/fetcher'
7
+ require 'such_meta/fetchers/override_hash_fetcher'
8
+ require 'such_meta/fetchers/i18n_fetcher'
9
+ require 'such_meta/fetchers/default_i18n_fetcher'
10
+ require 'such_meta/fetchers/specific_i18n_fetcher'
11
+
12
+ require 'such_meta/controller_extensions'
13
+
14
+ module SuchMeta
15
+ end
16
+
17
+ ActionController::Base.send :include, SuchMeta::ControllerExtensions
@@ -0,0 +1,37 @@
1
+ module SuchMeta
2
+ module ControllerExtensions
3
+ extend ActiveSupport::Concern
4
+
5
+ included do
6
+ helper_method :such_meta
7
+ end
8
+
9
+ def such_meta(tag_type, value = nil)
10
+ value ? set_meta_data(tag_type, value) : get_meta_data(tag_type)
11
+ end
12
+
13
+ private
14
+
15
+ def such_meta_data
16
+ @such_meta_data ||= {}
17
+ end
18
+
19
+ def set_meta_data(tag_type, value)
20
+ such_meta_data[tag_type.to_sym] = value
21
+ end
22
+
23
+ def get_meta_data(tag_type)
24
+ content = [
25
+ # 1. Check the override hash
26
+ OverrideHashFetcher.new(tag_type, such_meta_data),
27
+ # 2. Check for specific I18n data
28
+ SpecificI18nFetcher.new(tag_type, controller_name, action_name),
29
+ # 3. Check for default I18n data
30
+ DefaultI18nFetcher.new(tag_type, controller_name, action_name)
31
+ ].detect(&:content?)
32
+
33
+ # Return the content or raise an error
34
+ content ? content.call : fail(MissingMetaDataError, "Missing meta data for key: #{tag_type}")
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,5 @@
1
+ module SuchMeta
2
+ class SuchMetaError < StandardError; end
3
+ class MissingMetaDataError < SuchMetaError; end
4
+ class OverrideInSubclassError < SuchMetaError; end
5
+ end
@@ -0,0 +1,17 @@
1
+ module SuchMeta
2
+ class Fetcher
3
+ attr_reader :tag_type
4
+
5
+ def initialize(tag_type)
6
+ @tag_type = tag_type
7
+ end
8
+
9
+ def content?
10
+ call
11
+ end
12
+
13
+ def call
14
+ fail OverrideInSubclassError
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,9 @@
1
+ module SuchMeta
2
+ class DefaultI18nFetcher < I18nFetcher
3
+ private
4
+
5
+ def translation_key
6
+ "such_meta.default.#{tag_type}"
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,23 @@
1
+ module SuchMeta
2
+ class I18nFetcher < Fetcher
3
+ attr_reader :controller, :action
4
+
5
+ def initialize(tag_type, controller, action)
6
+ super(tag_type)
7
+ @controller = controller
8
+ @action = action
9
+ end
10
+
11
+ def call
12
+ I18n.t(translation_key, :raise => true)
13
+ rescue I18n::MissingTranslationData
14
+ nil
15
+ end
16
+
17
+ private
18
+
19
+ def translation_key
20
+ fail OverrideInSubclassError
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,14 @@
1
+ module SuchMeta
2
+ class OverrideHashFetcher < Fetcher
3
+ attr_reader :data
4
+
5
+ def initialize(tag_type, data)
6
+ super(tag_type)
7
+ @data = data
8
+ end
9
+
10
+ def call
11
+ data.fetch(tag_type.to_sym, nil)
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,9 @@
1
+ module SuchMeta
2
+ class SpecificI18nFetcher < I18nFetcher
3
+ private
4
+
5
+ def translation_key
6
+ "such_meta.specific.#{controller}.#{action}.#{tag_type}"
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,3 @@
1
+ module SuchMeta
2
+ VERSION = '0.0.1'
3
+ end
@@ -0,0 +1,31 @@
1
+ en:
2
+ such_meta:
3
+ default:
4
+ title: 'Default'
5
+ description: 'Default description for Such Meta'
6
+ keywords: 'Default Keyword 1, Default Keyword 2, Default Keyword 3'
7
+ og:
8
+ title: 'Default Facebook Title'
9
+ type: 'Default Facebook Type'
10
+ image: 'Default Image'
11
+ twitter:
12
+ card: 'Default Twitter'
13
+ site: 'Default Site'
14
+ specific:
15
+ muppets:
16
+ index:
17
+ title: 'Muppets Index Title'
18
+ description: 'Description for Muppets'
19
+ keywords: 'Keyword 1, Keyword 2, Keyword 3'
20
+ show:
21
+ title: 'Muppets Show Title'
22
+ description:
23
+ keywords:
24
+ og:
25
+ title: 'Muppet Facebook'
26
+ type: 'Muppet Type'
27
+ url: 'http://www.muppets.com'
28
+ image: 'https://placekitten.com/300/400'
29
+ twitter:
30
+ card: 'Muppet Twitter'
31
+ site: 'Muppet Site'
@@ -0,0 +1 @@
1
+ require 'such_meta'
@@ -0,0 +1,60 @@
1
+ require 'spec_helper'
2
+
3
+ class MuppetsController < ActionController::Base
4
+ def index
5
+ end
6
+ end
7
+
8
+ describe SuchMeta::ControllerExtensions do
9
+ subject { MuppetsController.new }
10
+
11
+ before do
12
+ I18n.backend.load_translations('spec/data/test.yml')
13
+ end
14
+
15
+ context 'SuchMeta module' do
16
+ it 'should be mixed into ActionController::Base' do
17
+ expect(ActionController::Base.included_modules).to include(SuchMeta::ControllerExtensions)
18
+ end
19
+
20
+ it "should respond to 'such_meta' helper" do
21
+ expect(subject).to respond_to(:such_meta)
22
+ end
23
+ end
24
+
25
+ describe '#such_meta' do
26
+ let(:tag_type) { :title }
27
+ let(:value) { nil }
28
+ let(:default_translation_key) { "such_meta.default.#{tag_type}" }
29
+
30
+ context 'specific translation is not provided' do
31
+ it 'returns default translation for tag_type' do
32
+ expect(subject.such_meta(tag_type)).to eq(I18n.t(default_translation_key))
33
+ end
34
+ end
35
+
36
+ context 'overriding the defaults' do
37
+ context 'via a controller/action specific translation' do
38
+ before do
39
+ ActionController::Base.any_instance.stub(:controller_name).and_return('muppets')
40
+ ActionController::Base.any_instance.stub(:action_name).and_return('show')
41
+ end
42
+
43
+ let(:specific_translation_key) { "such_meta.specific.muppets.show.#{tag_type}" }
44
+
45
+ it 'returns specific translation for tag_type' do
46
+ expect(subject.such_meta(tag_type)).to eq(I18n.t(specific_translation_key))
47
+ end
48
+ end
49
+
50
+ context 'via a value passed in' do
51
+ let(:value) { 'Sample String' }
52
+
53
+ it 'returns overriden translation for tag_type' do
54
+ subject.such_meta(tag_type, value)
55
+ expect(subject.such_meta(tag_type)).to eq(value)
56
+ end
57
+ end
58
+ end
59
+ end
60
+ end
@@ -0,0 +1,20 @@
1
+ require 'spec_helper'
2
+
3
+ describe SuchMeta::Fetcher do
4
+ subject { SuchMeta::Fetcher.new(tag_type) }
5
+ let(:tag_type) { :title }
6
+
7
+ context 'tag type is provided' do
8
+ it 'returns appropriate tag type' do
9
+ expect(subject.tag_type).to eq(tag_type)
10
+ end
11
+ end
12
+
13
+ describe '#call' do
14
+ subject { SuchMeta::Fetcher.new(tag_type).call }
15
+
16
+ it 'throws an error' do
17
+ expect { subject }.to raise_error(SuchMeta::OverrideInSubclassError)
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,20 @@
1
+ require 'spec_helper'
2
+
3
+ describe SuchMeta::DefaultI18nFetcher do
4
+ before do
5
+ I18n.backend.load_translations('spec/data/test.yml')
6
+ end
7
+
8
+ subject { SuchMeta::DefaultI18nFetcher.new(tag_type, controller, action) }
9
+ let(:tag_type) { :title }
10
+ let(:controller) { nil }
11
+ let(:action) { nil }
12
+
13
+ context 'I18n translations are not available for given controller and action' do
14
+ describe '#call' do
15
+ it 'returns the default title' do
16
+ expect(subject.call).to eq(I18n.t("such_meta.default.#{tag_type}"))
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,32 @@
1
+ require 'spec_helper'
2
+
3
+ describe SuchMeta::I18nFetcher do
4
+ before do
5
+ I18n.backend.load_translations('spec/data/test.yml')
6
+ end
7
+
8
+ subject { SuchMeta::I18nFetcher.new(tag_type, controller, action) }
9
+ let(:tag_type) { :title }
10
+
11
+ context 'I18n translations are available for given controller and action' do
12
+ let(:controller) { 'muppets' }
13
+ let(:action) { 'index' }
14
+
15
+ describe '#call' do
16
+ it 'throws an error' do
17
+ expect { subject.call }.to raise_error(SuchMeta::OverrideInSubclassError)
18
+ end
19
+ end
20
+ end
21
+
22
+ context 'I18n translations are not available for given controller and action' do
23
+ let(:controller) { nil }
24
+ let(:action) { nil }
25
+
26
+ describe '#call' do
27
+ it 'throws an error' do
28
+ expect { subject.call }.to raise_error(SuchMeta::OverrideInSubclassError)
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,14 @@
1
+ require 'spec_helper'
2
+
3
+ describe SuchMeta::OverrideHashFetcher do
4
+ subject { SuchMeta::OverrideHashFetcher.new(tag_type, :title => 'custom title') }
5
+ let(:tag_type) { :title }
6
+
7
+ context 'custom hash is provided' do
8
+ describe '#call' do
9
+ it 'returns overriden value of hash' do
10
+ expect(subject.call).to eq('custom title')
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,20 @@
1
+ require 'spec_helper'
2
+
3
+ describe SuchMeta::SpecificI18nFetcher do
4
+ before do
5
+ I18n.backend.load_translations('spec/data/test.yml')
6
+ end
7
+
8
+ subject { SuchMeta::SpecificI18nFetcher.new(tag_type, controller, action) }
9
+ let(:tag_type) { :title }
10
+ let(:controller) { 'muppets' }
11
+ let(:action) { 'index' }
12
+
13
+ context 'I18n translations are available for given controller and action' do
14
+ describe '#call' do
15
+ it 'returns an internationalized, custom meta data' do
16
+ expect(subject.call).to eq(I18n.t("such_meta.specific.#{controller}.#{action}.#{tag_type}"))
17
+ end
18
+ end
19
+ end
20
+ end
data/such_meta.gemspec ADDED
@@ -0,0 +1,35 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+
4
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
5
+ require 'such_meta/version'
6
+
7
+ Gem::Specification.new do |spec|
8
+ spec.name = 'such_meta'
9
+ spec.version = SuchMeta::VERSION
10
+ spec.authors = ['Anisha Vasandani', 'PJ Kelly']
11
+ spec.email = ['anisha@crushlovely.com', 'pj@crushlovely.com']
12
+ spec.summary = 'Simple SEO meta tag helper that offers customization and internationalization.'
13
+ spec.description = 'Simple SEO meta tag helper that offers customization and internationalization.'
14
+ spec.homepage = 'https://github.com/crushlovely/such_meta'
15
+ spec.license = 'MIT'
16
+
17
+ spec.files = `git ls-files -z`.split("\x0")
18
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
19
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
20
+ spec.require_paths = ['lib']
21
+
22
+ spec.add_dependency 'actionpack'
23
+ spec.add_dependency 'i18n'
24
+
25
+ spec.add_development_dependency 'rails', '~> 4.2.0'
26
+ spec.add_development_dependency 'bundler', '~> 1.7'
27
+ spec.add_development_dependency 'pry'
28
+ spec.add_development_dependency 'rake', '~> 10.4.2'
29
+ spec.add_development_dependency 'rspec'
30
+ spec.add_development_dependency 'rubocop'
31
+ spec.add_development_dependency 'guard'
32
+ spec.add_development_dependency 'guard-rspec'
33
+ spec.add_development_dependency 'guard-rubocop'
34
+ spec.add_development_dependency 'codeclimate-test-reporter'
35
+ end
metadata ADDED
@@ -0,0 +1,251 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: such_meta
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Anisha Vasandani
8
+ - PJ Kelly
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2015-05-20 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: actionpack
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - ">="
19
+ - !ruby/object:Gem::Version
20
+ version: '0'
21
+ type: :runtime
22
+ prerelease: false
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - ">="
26
+ - !ruby/object:Gem::Version
27
+ version: '0'
28
+ - !ruby/object:Gem::Dependency
29
+ name: i18n
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - ">="
33
+ - !ruby/object:Gem::Version
34
+ version: '0'
35
+ type: :runtime
36
+ prerelease: false
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - ">="
40
+ - !ruby/object:Gem::Version
41
+ version: '0'
42
+ - !ruby/object:Gem::Dependency
43
+ name: rails
44
+ requirement: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - "~>"
47
+ - !ruby/object:Gem::Version
48
+ version: 4.2.0
49
+ type: :development
50
+ prerelease: false
51
+ version_requirements: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - "~>"
54
+ - !ruby/object:Gem::Version
55
+ version: 4.2.0
56
+ - !ruby/object:Gem::Dependency
57
+ name: bundler
58
+ requirement: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - "~>"
61
+ - !ruby/object:Gem::Version
62
+ version: '1.7'
63
+ type: :development
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - "~>"
68
+ - !ruby/object:Gem::Version
69
+ version: '1.7'
70
+ - !ruby/object:Gem::Dependency
71
+ name: pry
72
+ requirement: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - ">="
75
+ - !ruby/object:Gem::Version
76
+ version: '0'
77
+ type: :development
78
+ prerelease: false
79
+ version_requirements: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - ">="
82
+ - !ruby/object:Gem::Version
83
+ version: '0'
84
+ - !ruby/object:Gem::Dependency
85
+ name: rake
86
+ requirement: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - "~>"
89
+ - !ruby/object:Gem::Version
90
+ version: 10.4.2
91
+ type: :development
92
+ prerelease: false
93
+ version_requirements: !ruby/object:Gem::Requirement
94
+ requirements:
95
+ - - "~>"
96
+ - !ruby/object:Gem::Version
97
+ version: 10.4.2
98
+ - !ruby/object:Gem::Dependency
99
+ name: rspec
100
+ requirement: !ruby/object:Gem::Requirement
101
+ requirements:
102
+ - - ">="
103
+ - !ruby/object:Gem::Version
104
+ version: '0'
105
+ type: :development
106
+ prerelease: false
107
+ version_requirements: !ruby/object:Gem::Requirement
108
+ requirements:
109
+ - - ">="
110
+ - !ruby/object:Gem::Version
111
+ version: '0'
112
+ - !ruby/object:Gem::Dependency
113
+ name: rubocop
114
+ requirement: !ruby/object:Gem::Requirement
115
+ requirements:
116
+ - - ">="
117
+ - !ruby/object:Gem::Version
118
+ version: '0'
119
+ type: :development
120
+ prerelease: false
121
+ version_requirements: !ruby/object:Gem::Requirement
122
+ requirements:
123
+ - - ">="
124
+ - !ruby/object:Gem::Version
125
+ version: '0'
126
+ - !ruby/object:Gem::Dependency
127
+ name: guard
128
+ requirement: !ruby/object:Gem::Requirement
129
+ requirements:
130
+ - - ">="
131
+ - !ruby/object:Gem::Version
132
+ version: '0'
133
+ type: :development
134
+ prerelease: false
135
+ version_requirements: !ruby/object:Gem::Requirement
136
+ requirements:
137
+ - - ">="
138
+ - !ruby/object:Gem::Version
139
+ version: '0'
140
+ - !ruby/object:Gem::Dependency
141
+ name: guard-rspec
142
+ requirement: !ruby/object:Gem::Requirement
143
+ requirements:
144
+ - - ">="
145
+ - !ruby/object:Gem::Version
146
+ version: '0'
147
+ type: :development
148
+ prerelease: false
149
+ version_requirements: !ruby/object:Gem::Requirement
150
+ requirements:
151
+ - - ">="
152
+ - !ruby/object:Gem::Version
153
+ version: '0'
154
+ - !ruby/object:Gem::Dependency
155
+ name: guard-rubocop
156
+ requirement: !ruby/object:Gem::Requirement
157
+ requirements:
158
+ - - ">="
159
+ - !ruby/object:Gem::Version
160
+ version: '0'
161
+ type: :development
162
+ prerelease: false
163
+ version_requirements: !ruby/object:Gem::Requirement
164
+ requirements:
165
+ - - ">="
166
+ - !ruby/object:Gem::Version
167
+ version: '0'
168
+ - !ruby/object:Gem::Dependency
169
+ name: codeclimate-test-reporter
170
+ requirement: !ruby/object:Gem::Requirement
171
+ requirements:
172
+ - - ">="
173
+ - !ruby/object:Gem::Version
174
+ version: '0'
175
+ type: :development
176
+ prerelease: false
177
+ version_requirements: !ruby/object:Gem::Requirement
178
+ requirements:
179
+ - - ">="
180
+ - !ruby/object:Gem::Version
181
+ version: '0'
182
+ description: Simple SEO meta tag helper that offers customization and internationalization.
183
+ email:
184
+ - anisha@crushlovely.com
185
+ - pj@crushlovely.com
186
+ executables: []
187
+ extensions: []
188
+ extra_rdoc_files: []
189
+ files:
190
+ - ".gitignore"
191
+ - ".rspec"
192
+ - ".rubocop.yml"
193
+ - Gemfile
194
+ - Guardfile
195
+ - LICENSE.txt
196
+ - README.md
197
+ - Rakefile
198
+ - config/locales/such_meta.en.yml
199
+ - lib/generators/such_meta/install_generator.rb
200
+ - lib/such_meta.rb
201
+ - lib/such_meta/controller_extensions.rb
202
+ - lib/such_meta/exceptions.rb
203
+ - lib/such_meta/fetcher.rb
204
+ - lib/such_meta/fetchers/default_i18n_fetcher.rb
205
+ - lib/such_meta/fetchers/i18n_fetcher.rb
206
+ - lib/such_meta/fetchers/override_hash_fetcher.rb
207
+ - lib/such_meta/fetchers/specific_i18n_fetcher.rb
208
+ - lib/such_meta/version.rb
209
+ - spec/data/test.yml
210
+ - spec/spec_helper.rb
211
+ - spec/such_meta/controller_extensions_spec.rb
212
+ - spec/such_meta/fetcher_spec.rb
213
+ - spec/such_meta/fetchers/default_i18n_fetcher_spec.rb
214
+ - spec/such_meta/fetchers/i18n_fetcher_spec.rb
215
+ - spec/such_meta/fetchers/override_hash_fetcher_spec.rb
216
+ - spec/such_meta/fetchers/specific_i18n_fetcher_spec.rb
217
+ - such_meta.gemspec
218
+ homepage: https://github.com/crushlovely/such_meta
219
+ licenses:
220
+ - MIT
221
+ metadata: {}
222
+ post_install_message:
223
+ rdoc_options: []
224
+ require_paths:
225
+ - lib
226
+ required_ruby_version: !ruby/object:Gem::Requirement
227
+ requirements:
228
+ - - ">="
229
+ - !ruby/object:Gem::Version
230
+ version: '0'
231
+ required_rubygems_version: !ruby/object:Gem::Requirement
232
+ requirements:
233
+ - - ">="
234
+ - !ruby/object:Gem::Version
235
+ version: '0'
236
+ requirements: []
237
+ rubyforge_project:
238
+ rubygems_version: 2.4.5
239
+ signing_key:
240
+ specification_version: 4
241
+ summary: Simple SEO meta tag helper that offers customization and internationalization.
242
+ test_files:
243
+ - spec/data/test.yml
244
+ - spec/spec_helper.rb
245
+ - spec/such_meta/controller_extensions_spec.rb
246
+ - spec/such_meta/fetcher_spec.rb
247
+ - spec/such_meta/fetchers/default_i18n_fetcher_spec.rb
248
+ - spec/such_meta/fetchers/i18n_fetcher_spec.rb
249
+ - spec/such_meta/fetchers/override_hash_fetcher_spec.rb
250
+ - spec/such_meta/fetchers/specific_i18n_fetcher_spec.rb
251
+ has_rdoc: