diff --git a/.gitignore b/.gitignore index f4b9c99fb..35f5651a4 100644 --- a/.gitignore +++ b/.gitignore @@ -29,3 +29,5 @@ # Mac finder artifacts .DS_Store .ruby-gemset + +public/sitemap.xml \ No newline at end of file diff --git a/Gemfile b/Gemfile index 1ce218638..b50540b5f 100644 --- a/Gemfile +++ b/Gemfile @@ -55,6 +55,7 @@ gem 'devise-async' gem 'newrelic_rpm', '~> 3.17.0.325' gem 'whenever', require: false gem 'pg_search' +gem 'sitemap_generator' gem 'ahoy_matey', '~> 1.4.2' gem 'groupdate', '~> 3.1.0' # group temporary data diff --git a/Gemfile.lock b/Gemfile.lock index 50ab5bb9d..d787b4a81 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -381,6 +381,8 @@ GEM json (>= 1.8, < 3) simplecov-html (~> 0.10.0) simplecov-html (0.10.0) + sitemap_generator (5.2.0) + builder (~> 3.0) social-share-button (0.3.1) coffee-rails sass-rails @@ -511,6 +513,7 @@ DEPENDENCIES rvm1-capistrano3 sass-rails (~> 5.0, >= 5.0.4) savon + sitemap_generator social-share-button spring spring-commands-rspec @@ -522,3 +525,6 @@ DEPENDENCIES unicorn (~> 5.1.0) web-console (= 3.3.0) whenever + +BUNDLED WITH + 1.13.6 diff --git a/config/schedule.rb b/config/schedule.rb index 308cdc69c..f4c03fd61 100644 --- a/config/schedule.rb +++ b/config/schedule.rb @@ -22,3 +22,7 @@ every 1.minute do command "date > ~/cron-test.txt" end + +every 1.day, at: '5:00 am' do + rake "-s sitemap:refresh" +end diff --git a/config/sitemap.rb b/config/sitemap.rb new file mode 100644 index 000000000..11ec9fb09 --- /dev/null +++ b/config/sitemap.rb @@ -0,0 +1,36 @@ +# not use compression +class SitemapGenerator::FileAdapter + def gzip(stream, data); stream.write(data); stream.close end +end +SitemapGenerator::Sitemap.namer = SitemapGenerator::SimpleNamer.new(:sitemap, extension: '.xml') + +# default host +SitemapGenerator::Sitemap.default_host = Setting["url"] + +# sitemap generator +SitemapGenerator::Sitemap.create do + pages = Dir.entries(File.join(Rails.root,"app","views","pages")) + pages.each do |page| + page_name = page.split(".").first + add page_name if page_name.present? + end + + add "help_translate" + + add debates_path, priority: 0.7, changefreq: "daily" + Debate.find_each do |debate| + add debate_path(debate), lastmod: debate.updated_at + end + + add proposals_path, priority: 0.7, changefreq: "daily" + Proposal.find_each do |proposal| + add proposal_path(proposal), lastmod: proposal.updated_at + end + + add proposal_ballots_path + + add spending_proposals_path, priority: 0.7, changefreq: "daily" + SpendingProposal.find_each do |spending_proposal| + add spending_proposal_path(spending_proposal), lastmod: spending_proposal.updated_at + end +end