solidus_dynamic_sitemaps 1.0

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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: a7ed2599639e802b3ca670636782aa680d6d5a8e57787f8c07ad6034b6f1532c
4
+ data.tar.gz: 5eeaebd00c0119c43b4456c8b0c4528d3b0c9b25c71897d9cdf32e0bdde33bf7
5
+ SHA512:
6
+ metadata.gz: dadcb1b504a3bcdb78c41dede9a6c6fe76ee2a98a2dd9709614b6e932986a7d641004721c46ae7a81d78ee6e0697f3e06ae7a6ae2f00c8566d19f5134e3a3fd3
7
+ data.tar.gz: f365705587ebb5839170ed4f7d1a10b96f749fd12814a1197cf048d927534c5dfff8a486c7dc49bbecbf8bdf9885bbaebba5b00e73ba34a3e7479859c4fc4de9
@@ -0,0 +1,23 @@
1
+ Redistribution and use in source and binary forms, with or without modification,
2
+ are permitted provided that the following conditions are met:
3
+
4
+ * Redistributions of source code must retain the above copyright notice,
5
+ this list of conditions and the following disclaimer.
6
+ * Redistributions in binary form must reproduce the above copyright notice,
7
+ this list of conditions and the following disclaimer in the documentation
8
+ and/or other materials provided with the distribution.
9
+ * Neither the name of the Rails Dog LLC nor the names of its
10
+ contributors may be used to endorse or promote products derived from this
11
+ software without specific prior written permission.
12
+
13
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
14
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
15
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
16
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
17
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
18
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
19
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
20
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
21
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
22
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
23
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
@@ -0,0 +1,115 @@
1
+ # Solidus Dynamic Sitemaps
2
+
3
+ Solidus Dynamic Sitemaps is a sitemap generator based on the [sitemap_generator][1] gem.
4
+ It adheres to the Sitemap 0.9 protocol specification. This is a continuation of
5
+ the [original Spree version](https://github.com/spree-contrib/spree_sitemap),
6
+ updated to work with the [Solidus](https://solidus.io) eCommerce platform.
7
+
8
+ ### Features
9
+
10
+ - Notifies search engine of new sitemaps (Google, Yahoo, Ask, Bing)
11
+ - Supports large huge product catalogs
12
+ - Adheres to 0.9 Sitemap protocol specification
13
+ - Compresses sitemaps with gzip
14
+ - Provides basic sitemap of a Solidus site (products, taxons, login page, signup page)
15
+ - Easily add additional sitemaps for pages you add to your solidus site
16
+ - Supports Amazon S3 and other hosting services
17
+ - Thin wrapper over battle tested sitemap generator
18
+ - Add /sitemap route to display the sitemap
19
+
20
+ ### Configuration Options
21
+
22
+ Check out the [README][1] for the [sitemap_generator][1].
23
+
24
+ ---
25
+
26
+ ## Installation
27
+
28
+ 1. Add the gem to your Solidus store's `Gemfile`:
29
+ ```ruby
30
+ gem 'solidus_dynamic_sitemaps', github: 'jtapia/solidus_dynamic_sitemaps'
31
+ ```
32
+
33
+ 2. Update your bundle:
34
+
35
+ ```
36
+ $ bundle install
37
+ ```
38
+
39
+ 3. Run the installer, it will create a `config/sitemap.rb` file with some sane
40
+ defaults
41
+
42
+ ```
43
+ $ rails g solidus_dynamic_sitemaps:install
44
+ ```
45
+
46
+ 4. Add the sitemap to your `.gitignore`, since it will be regenerated
47
+ server-side.
48
+
49
+ ```
50
+ $ echo "public/sitemap*" >> .gitignore
51
+ ```
52
+
53
+ 5. Set up a cron job to regenrate your sitemap via the `rake sitemap:refresh`
54
+ task. If you use the [Whenever gem](https://github.com/javan/whenever), add
55
+ this to your `config/schedule.rb`:
56
+
57
+ ```ruby
58
+ every 1.day, at: '5:00 am' do
59
+ rake '-s sitemap:refresh'
60
+ end
61
+ ```
62
+
63
+ 6. Ensure crawlers can find the sitemap, by adding the following line to your
64
+ `public/robots.txt` with your correct domain name
65
+
66
+ ```
67
+ $ echo "Sitemap: http://www.example.com/sitemap.xml.gz" >> public/robots.txt
68
+ ```
69
+
70
+ 7. Add link to sitemap to a view[Optional]
71
+ `<%= link_to 'Sitemap', '/sitemap' %>`
72
+
73
+ ---
74
+
75
+ ## Acknowledgements
76
+
77
+ - [The original Spree version of this gem](https://github.com/spree-contrib/spree_sitemap)
78
+ - [The creators & contributors of sitemap_generator](http://github.com/kjvarga/sitemap_generator/contributors)
79
+ - [Joshua Nussbaum's original implementation of spree-sitemap-generator](https://github.com/joshnuss/spree-sitemap-generator)
80
+
81
+ ---
82
+
83
+ ## Upgrading
84
+
85
+ If you upgrade from early versions of `solidus_dynamic_sitemaps` you need to change your sitemaps from:
86
+ ```ruby
87
+ SitemapGenerator::Sitemap.add_links do
88
+ # ...
89
+ end
90
+ ```
91
+
92
+ to this:
93
+ ```ruby
94
+ SitemapGenerator::Sitemap.create do
95
+ # ...
96
+ end
97
+ ```
98
+
99
+ ---
100
+
101
+ ## Contributing
102
+
103
+ See corresponding [guidelines][2]
104
+
105
+ ---
106
+
107
+ Copyright (c) 2016 [Stembolt](https://stembolt.com/)
108
+
109
+ Copyright (c) 2011-2015 [Jeff Dutil][5] and other [contributors][6], released under the [New BSD License][4].
110
+
111
+ [1]: http://github.com/kjvarga/sitemap_generator
112
+ [2]: https://github.com/spree-contrib/spree_i18n/blob/master/CONTRIBUTING.md
113
+ [4]: https://github.com/spree-contrib/spree_sitemap/blob/master/LICENSE.md
114
+ [5]: https://github.com/jdutil
115
+ [6]: https://github.com/solidusio-contrib/solidus_sitemap/graphs/contributors
@@ -0,0 +1,23 @@
1
+ # encoding: utf-8
2
+
3
+ require 'bundler'
4
+ Bundler::GemHelper.install_tasks
5
+
6
+ require 'rspec/core/rake_task'
7
+ require 'spree/testing_support/extension_rake'
8
+
9
+ RSpec::Core::RakeTask.new
10
+
11
+ task :default do
12
+ if Dir["spec/dummy"].empty?
13
+ Rake::Task[:test_app].invoke
14
+ Dir.chdir("../../")
15
+ end
16
+ Rake::Task[:spec].invoke
17
+ end
18
+
19
+ desc 'Generates a dummy app for testing'
20
+ task :test_app do
21
+ ENV['LIB_NAME'] = 'solidus_dynamic_sitemaps'
22
+ Rake::Task['extension:test_app'].invoke
23
+ end
@@ -0,0 +1,103 @@
1
+ class Spree::SitemapController < Spree::BaseController
2
+ def index
3
+ @public_dir = root_url
4
+ @products = Spree::Product.available
5
+ @taxonomies = Spree::Taxonomy.all
6
+ @pages = _select_static_pages
7
+
8
+ respond_to do |format|
9
+ format.html { }
10
+ format.xml do
11
+ nav = _build_taxon_hash
12
+ nav = _build_pages_hash nav
13
+ nav = _add_products_to_tax nav, false
14
+ render layout: false, xml: _build_xml(nav)
15
+ end
16
+
17
+ format.text do
18
+ @nav = _add_products_to_tax(_build_taxon_hash, false)
19
+ render layout: false
20
+ end
21
+ end
22
+ end
23
+
24
+ private
25
+
26
+ def _build_xml(nav)
27
+ ''.tap do |output|
28
+ xml = Builder::XmlMarkup.new(:target => output, :indent => 2)
29
+ xml.instruct! :xml, :version => "1.0", :encoding => "UTF-8"
30
+ xml.urlset( :xmlns => "http://www.sitemaps.org/schemas/sitemap/0.9" ) {
31
+ xml.url {
32
+ xml.loc @public_dir
33
+ xml.lastmod Date.today
34
+ xml.changefreq 'daily'
35
+ xml.priority '1.0'
36
+ }
37
+ nav.each do |k, v|
38
+ xml.url {
39
+ xml.loc @public_dir + v['link']
40
+ xml.lastmod v['updated'].xmlschema #change timestamp of last modified
41
+ xml.changefreq 'weekly'
42
+ xml.priority '0.8'
43
+ }
44
+ end
45
+ }
46
+ end
47
+ end
48
+
49
+ def _build_taxon_hash
50
+ nav = Hash.new
51
+
52
+ Spree::Taxon.all.each do |taxon|
53
+ tinfo = Hash.new
54
+ tinfo['name'] = taxon.name
55
+ tinfo['depth'] = taxon.permalink.split('/').size
56
+ tinfo['link'] = 't/' + taxon.permalink
57
+ tinfo['updated'] = taxon.updated_at
58
+ nav[taxon.permalink] = tinfo
59
+ end
60
+
61
+ nav
62
+ end
63
+
64
+ def _add_products_to_tax(nav, multiples_allowed)
65
+ Spree::Product.available.each do |product|
66
+ pinfo = Hash.new
67
+ pinfo['name'] = product.name
68
+ pinfo['link'] = 'products/' + product.permalink # primary
69
+ pinfo['updated'] = product.updated_at
70
+ nav[pinfo['link']] = pinfo # store primary
71
+ end
72
+
73
+ nav
74
+ end
75
+
76
+ def _build_pages_hash(nav)
77
+ return nav if @pages.empty?
78
+
79
+ @pages.each do |page|
80
+ nav[page.slug] = {'name' => page.title,
81
+ 'link' => page.slug.gsub(/^\//, ''),
82
+ 'updated' => page.updated_at}
83
+ end
84
+
85
+ nav
86
+ end
87
+
88
+ def _select_static_pages
89
+ pages = []
90
+
91
+ begin
92
+ slugs_to_reject = ["/on-main-page"]
93
+
94
+ Spree::Page.visible.each do |page|
95
+ pages << page unless slugs_to_reject.include?(page.slug)
96
+ end
97
+
98
+ pages
99
+ rescue NameError
100
+ pages = []
101
+ end
102
+ end
103
+ end
@@ -0,0 +1,2 @@
1
+ module Spree::SitemapHelper
2
+ end
@@ -0,0 +1,3 @@
1
+ Spree::Product.class_eval do
2
+ scope :last_updated, -> { available.order(updated_at: :asc).first }
3
+ end
@@ -0,0 +1,34 @@
1
+ <h1><%= Spree.t(:sitemap) %></h1>
2
+ <%= link_to Spree::Store.default.name, @public_dir %><br />
3
+
4
+ <% unless @pages %>
5
+ <ul>
6
+ <% @pages.each do |page| %>
7
+ <li><%= link_to page.title, @public_dir + page.slug %></li>
8
+ <% end %>
9
+ </ul>
10
+ <% end %>
11
+
12
+ <% unless @taxonomies.blank? %>
13
+ <% @taxonomies.each do |taxonomy| %>
14
+ <% taxons = Spree::Taxon.where(taxonomy_id: taxonomy.id) %>
15
+
16
+ <h3><%= taxonomy.name %></h3>
17
+
18
+ <ul>
19
+ <% taxons.each do |taxon| %>
20
+ <% unless taxon.name == taxonomy.name %><li><%= link_to taxon.name, @public_dir + taxon.permalink %></li><% end %>
21
+ <% end %>
22
+ </ul>
23
+ <% end %>
24
+ <% end %>
25
+
26
+ <% unless @products %>
27
+ <h3>Products</h3>
28
+
29
+ <ul>
30
+ <% @products.each do |product| %>
31
+ <li><%= link_to product.name, @public_dir + "products/" + product.slug %></li>
32
+ <% end %>
33
+ </ul>
34
+ <% end %>
@@ -0,0 +1,4 @@
1
+ <%= @public_dir %>
2
+ <% @nav.sort.each do |k,v| -%>
3
+ <%= @public_dir %><%= v['link'] %>
4
+ <% end -%>
@@ -0,0 +1,3 @@
1
+ en:
2
+ spree:
3
+ sitemap: Sitemap
@@ -0,0 +1,3 @@
1
+ es-MX:
2
+ spree:
3
+ sitemap: Mapa de Sitio
@@ -0,0 +1,3 @@
1
+ Spree::Core::Engine.routes.draw do
2
+ resources :sitemap
3
+ end
@@ -0,0 +1,12 @@
1
+ module SolidusDynamicSitemaps
2
+ module Generators
3
+ class InstallGenerator < Rails::Generators::Base
4
+ source_root File.expand_path('../../../templates', __FILE__)
5
+
6
+ desc 'Configures your Rails application for use with solidus_sitemap'
7
+ def copy_config
8
+ directory 'config'
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,52 @@
1
+ SitemapGenerator::Sitemap.default_host = "http://#{Spree::Store.default.url}"
2
+
3
+ ##
4
+ ## If using Heroku or similar service where you want sitemaps to live in S3 you'll need to setup these settings.
5
+ ##
6
+
7
+ ## Pick a place safe to write the files
8
+ # SitemapGenerator::Sitemap.public_path = 'tmp/'
9
+
10
+ ## Store on S3 using Fog - Note must add fog to your Gemfile.
11
+ # SitemapGenerator::Sitemap.adapter = SitemapGenerator::S3Adapter.new(aws_access_key_id: Spree::Config[:s3_access_key],
12
+ # aws_secret_access_key: Spree::Config[:s3_secret],
13
+ # fog_provider: 'AWS',
14
+ # fog_directory: Spree::Config[:s3_bucket])
15
+
16
+ ## Inform the map cross-linking where to find the other maps.
17
+ # SitemapGenerator::Sitemap.sitemaps_host = "http://#{Spree::Config[:s3_bucket]}.s3.amazonaws.com/"
18
+
19
+ ## Pick a namespace within your bucket to organize your maps. Note you'll need to set this directory to be public.
20
+ # SitemapGenerator::Sitemap.sitemaps_path = 'sitemaps/'
21
+
22
+ SitemapGenerator::Sitemap.create do
23
+ # Put links creation logic here.
24
+ #
25
+ # The root path '/' and sitemap index file are added automatically.
26
+ # Links are added to the Sitemap in the order they are specified.
27
+ #
28
+ # Usage: add(path, options = {})
29
+ # (default options are used if you don't specify)
30
+ #
31
+ # Defaults: priority: 0.5, changefreq: 'weekly',
32
+ # lastmod: Time.now, host: default_host
33
+ #
34
+ #
35
+ # Examples:
36
+ #
37
+ # Add '/articles'
38
+ #
39
+ # add articles_path, priority: 0.7, changefreq: 'daily'
40
+ #
41
+ # Add individual articles:
42
+ #
43
+ # Article.find_each do |article|
44
+ # add article_path(article), lastmod: article.updated_at
45
+ # end
46
+ add_login
47
+ add_signup
48
+ add_account
49
+ add_password_reset
50
+ add_taxons
51
+ add_products
52
+ end
@@ -0,0 +1,7 @@
1
+ require 'solidus_core'
2
+ require 'solidus_backend'
3
+ require 'solidus_frontend'
4
+ require 'solidus_support'
5
+ require 'sitemap_generator'
6
+ require 'solidus_dynamic_sitemaps/engine'
7
+ require 'solidus_dynamic_sitemaps/version'
@@ -0,0 +1,22 @@
1
+ module SolidusDynamicSitemaps
2
+ class Engine < ::Rails::Engine
3
+ require 'spree'
4
+
5
+ engine_name 'solidus_dynamic_sitemaps'
6
+
7
+ config.autoload_paths += %W(#{config.root}/lib)
8
+
9
+ # use rspec for tests
10
+ config.generators do |g|
11
+ g.test_framework :rspec
12
+ end
13
+
14
+ def self.activate
15
+ Dir.glob(File.join(File.dirname(__FILE__), "../../app/**/*_decorator*.rb")) do |c|
16
+ Rails.env.production? ? require(c) : load(c)
17
+ end
18
+ end
19
+
20
+ config.to_prepare &method(:activate).to_proc
21
+ end
22
+ end
@@ -0,0 +1,6 @@
1
+ FactoryBot.define do
2
+ # Define your Spree extensions Factories within this file to enable applications, and other extensions to use and override them.
3
+ #
4
+ # Example adding this to your spec_helper will load these Factories for use:
5
+ # require 'solidus_dynamic_sitemaps/factories'
6
+ end
@@ -0,0 +1,107 @@
1
+ module SolidusDynamicSitemaps::SolidusDefaults
2
+ include Spree::Core::Engine.routes.url_helpers
3
+ include Spree::BaseHelper # for meta_data
4
+
5
+ def default_url_options
6
+ { host: SitemapGenerator::Sitemap.default_host }
7
+ end
8
+
9
+ def add_login(options = {})
10
+ add(login_path, options)
11
+ end
12
+
13
+ def add_signup(options = {})
14
+ add(signup_path, options)
15
+ end
16
+
17
+ def add_account(options = {})
18
+ add(account_path, options)
19
+ end
20
+
21
+ def add_password_reset(options = {})
22
+ add(new_spree_user_password_path, options)
23
+ end
24
+
25
+ def add_products(options = {})
26
+ available_products = Spree::Product.available.distinct
27
+
28
+ add(products_path, options.merge(lastmod: available_products.last_updated))
29
+ available_products.each do |product|
30
+ add_product(product, options)
31
+ end
32
+ end
33
+
34
+ def add_product(product, options = {})
35
+ opts = options.merge(lastmod: product.updated_at)
36
+
37
+ if gem_available?('spree_videos') && product.videos.present?
38
+ # TODO: add exclusion list configuration option
39
+ # https://sites.google.com/site/webmasterhelpforum/en/faq-video-sitemaps#multiple-pages
40
+
41
+ # don't include all the videos on the page to avoid duplicate title warnings
42
+ primary_video = product.videos.first
43
+ opts.merge!(video: [video_options(primary_video.youtube_ref, product)])
44
+ end
45
+
46
+ add(product_path(product), opts)
47
+ end
48
+
49
+ def add_pages(options = {})
50
+ # TODO: this should be refactored to add_pages & add_page
51
+
52
+ Spree::Page.active.each do |page|
53
+ add(page.path, options.merge(lastmod: page.updated_at))
54
+ end if gem_available? 'spree_essential_cms'
55
+
56
+ Spree::Page.visible.each do |page|
57
+ add(page.slug, options.merge(lastmod: page.updated_at))
58
+ end if gem_available? 'spree_static_content'
59
+ end
60
+
61
+ def add_taxons(options = {})
62
+ Spree::Taxon.roots.each { |taxon| add_taxon(taxon, options) }
63
+ end
64
+
65
+ def add_taxon(taxon, options = {})
66
+ add(nested_taxons_path(taxon.permalink), options.merge(lastmod: taxon.products.last_updated)) if taxon.permalink.present?
67
+ taxon.children.each { |child| add_taxon(child, options) }
68
+ end
69
+
70
+ def gem_available?(name)
71
+ Gem::Specification.find_by_name(name)
72
+ rescue Gem::LoadError
73
+ false
74
+ rescue
75
+ Gem.available?(name)
76
+ end
77
+
78
+ def main_app
79
+ Rails.application.routes.url_helpers
80
+ end
81
+
82
+ private
83
+
84
+ ##
85
+ # Multiple videos of the same ID can exist, but all videos linked in the sitemap should be inique
86
+ #
87
+ # Required video fields:
88
+ # http://www.seomoz.org/blog/video-sitemap-guide-for-vimeo-and-youtube
89
+ #
90
+ # YouTube thumbnail images:
91
+ # http://www.reelseo.com/youtube-thumbnail-image/
92
+ #
93
+ # NOTE title should match the page title, however the title generation isn't self-contained
94
+ # although not a future proof solution, the best (+ easiest) solution is to mimic the title for product pages
95
+ # https://github.com/solidusio/solidus/blob/1-3-stable/core/lib/spree/core/controller_helpers/common.rb#L39
96
+ # https://github.com/solidusio/solidus/blob/1-3-stable/core/app/controllers/spree/products_controller.rb#L41
97
+ #
98
+ def video_options(youtube_id, object = false)
99
+ ({ description: meta_data(object)[:description] } rescue {}).merge(
100
+ ({ title: [Spree::Config[:site_name], object.name].join(' - ') } rescue {})
101
+ ).merge(
102
+ thumbnail_loc: "http://img.youtube.com/vi/#{youtube_id}/0.jpg",
103
+ player_loc: "http://www.youtube.com/v/#{youtube_id}",
104
+ autoplay: 'ap=1'
105
+ )
106
+ end
107
+ end
@@ -0,0 +1,3 @@
1
+ module SolidusDynamicSitemaps
2
+ VERSION = '1.0'
3
+ end
metadata ADDED
@@ -0,0 +1,221 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: solidus_dynamic_sitemaps
3
+ version: !ruby/object:Gem::Version
4
+ version: '1.0'
5
+ platform: ruby
6
+ authors:
7
+ - Jonathan Tapia
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2017-12-14 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: solidus_core
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: 1.2.0
20
+ - - "<"
21
+ - !ruby/object:Gem::Version
22
+ version: '3'
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ version: 1.2.0
30
+ - - "<"
31
+ - !ruby/object:Gem::Version
32
+ version: '3'
33
+ - !ruby/object:Gem::Dependency
34
+ name: solidus_support
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ version: 0.1.3
40
+ type: :runtime
41
+ prerelease: false
42
+ version_requirements: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - ">="
45
+ - !ruby/object:Gem::Version
46
+ version: 0.1.3
47
+ - !ruby/object:Gem::Dependency
48
+ name: sitemap_generator
49
+ requirement: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - "~>"
52
+ - !ruby/object:Gem::Version
53
+ version: 5.1.0
54
+ type: :runtime
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - "~>"
59
+ - !ruby/object:Gem::Version
60
+ version: 5.1.0
61
+ - !ruby/object:Gem::Dependency
62
+ name: byebug
63
+ requirement: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - ">="
66
+ - !ruby/object:Gem::Version
67
+ version: '0'
68
+ type: :development
69
+ prerelease: false
70
+ version_requirements: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - ">="
73
+ - !ruby/object:Gem::Version
74
+ version: '0'
75
+ - !ruby/object:Gem::Dependency
76
+ name: database_cleaner
77
+ requirement: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - "~>"
80
+ - !ruby/object:Gem::Version
81
+ version: 1.4.0
82
+ type: :development
83
+ prerelease: false
84
+ version_requirements: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - "~>"
87
+ - !ruby/object:Gem::Version
88
+ version: 1.4.0
89
+ - !ruby/object:Gem::Dependency
90
+ name: factory_bot
91
+ requirement: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - "~>"
94
+ - !ruby/object:Gem::Version
95
+ version: '4.5'
96
+ type: :development
97
+ prerelease: false
98
+ version_requirements: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - "~>"
101
+ - !ruby/object:Gem::Version
102
+ version: '4.5'
103
+ - !ruby/object:Gem::Dependency
104
+ name: ffaker
105
+ requirement: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - ">="
108
+ - !ruby/object:Gem::Version
109
+ version: 1.25.0
110
+ type: :development
111
+ prerelease: false
112
+ version_requirements: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - ">="
115
+ - !ruby/object:Gem::Version
116
+ version: 1.25.0
117
+ - !ruby/object:Gem::Dependency
118
+ name: pry-rails
119
+ requirement: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - ">="
122
+ - !ruby/object:Gem::Version
123
+ version: 0.3.0
124
+ type: :development
125
+ prerelease: false
126
+ version_requirements: !ruby/object:Gem::Requirement
127
+ requirements:
128
+ - - ">="
129
+ - !ruby/object:Gem::Version
130
+ version: 0.3.0
131
+ - !ruby/object:Gem::Dependency
132
+ name: rubocop
133
+ requirement: !ruby/object:Gem::Requirement
134
+ requirements:
135
+ - - ">="
136
+ - !ruby/object:Gem::Version
137
+ version: 0.24.1
138
+ type: :development
139
+ prerelease: false
140
+ version_requirements: !ruby/object:Gem::Requirement
141
+ requirements:
142
+ - - ">="
143
+ - !ruby/object:Gem::Version
144
+ version: 0.24.1
145
+ - !ruby/object:Gem::Dependency
146
+ name: rspec-rails
147
+ requirement: !ruby/object:Gem::Requirement
148
+ requirements:
149
+ - - "~>"
150
+ - !ruby/object:Gem::Version
151
+ version: '3.5'
152
+ type: :development
153
+ prerelease: false
154
+ version_requirements: !ruby/object:Gem::Requirement
155
+ requirements:
156
+ - - "~>"
157
+ - !ruby/object:Gem::Version
158
+ version: '3.5'
159
+ - !ruby/object:Gem::Dependency
160
+ name: simplecov
161
+ requirement: !ruby/object:Gem::Requirement
162
+ requirements:
163
+ - - "~>"
164
+ - !ruby/object:Gem::Version
165
+ version: '0.9'
166
+ type: :development
167
+ prerelease: false
168
+ version_requirements: !ruby/object:Gem::Requirement
169
+ requirements:
170
+ - - "~>"
171
+ - !ruby/object:Gem::Version
172
+ version: '0.9'
173
+ description: Soldius Engine for sitemaps
174
+ email: jonathan.tapia@magmalabs.io
175
+ executables: []
176
+ extensions: []
177
+ extra_rdoc_files: []
178
+ files:
179
+ - MIT-LICENSE
180
+ - README.md
181
+ - Rakefile
182
+ - app/controllers/spree/sitemap_controller.rb
183
+ - app/helpers/spree/sitemap_helper.rb
184
+ - app/models/product_decorator.rb
185
+ - app/views/spree/sitemap/index.html.erb
186
+ - app/views/spree/sitemap/index.text.erb
187
+ - app/views/spree/sitemap/index.xml.builder
188
+ - config/locales/en.yml
189
+ - config/locales/es-MX.yml
190
+ - config/routes.rb
191
+ - lib/generators/solidus_dynamic_sitemaps/install/install_generator.rb
192
+ - lib/generators/templates/config/sitemap.rb
193
+ - lib/solidus_dynamic_sitemaps.rb
194
+ - lib/solidus_dynamic_sitemaps/engine.rb
195
+ - lib/solidus_dynamic_sitemaps/factories.rb
196
+ - lib/solidus_dynamic_sitemaps/solidus_defaults.rb
197
+ - lib/solidus_dynamic_sitemaps/version.rb
198
+ homepage: http://github.com/jtapia/solidus_dynamic_sitemaps
199
+ licenses: []
200
+ metadata: {}
201
+ post_install_message:
202
+ rdoc_options: []
203
+ require_paths:
204
+ - lib
205
+ required_ruby_version: !ruby/object:Gem::Requirement
206
+ requirements:
207
+ - - ">="
208
+ - !ruby/object:Gem::Version
209
+ version: '0'
210
+ required_rubygems_version: !ruby/object:Gem::Requirement
211
+ requirements:
212
+ - - ">="
213
+ - !ruby/object:Gem::Version
214
+ version: '0'
215
+ requirements: []
216
+ rubyforge_project:
217
+ rubygems_version: 2.7.3
218
+ signing_key:
219
+ specification_version: 4
220
+ summary: Soldius Engine for sitemaps
221
+ test_files: []