such_meta 0.0.1

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 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: