Como você sabe, o mapa do site é um dos elementos importantes do site. Esta é a maneira fácil de gerar sitemap.xml usando aplicativo / site baseado em Rails:
# Gemfile
gem 'big_sitemap'
# lib/tasks/sitemap.rake
require 'big_sitemap'
namespace :custom do
desc "Generate sitemap"
task :sitemap => :environment do
include Rails.application.routes.url_helpers
sitemap_options = {
document_root: Rails.root.join('public'),
url_options: { host: 'example.com' },
ping_google: true,
ping_bing: true,
gzip: true
}
if Rails.env.development?
sitemap_options = {
document_root: Rails.root.join('public'),
url_options: { host: 'localhost', port: 3000 },
ping_google: false,
ping_bing: false,
gzip: false
}
end
BigSitemap.generate(sitemap_options) do
add root_path, change_frequency: 'daily', priority: 1.0
Stuff.all.each do |stuff|
add stuff_path(stuff), change_frequency: 'daily', priority: 0.5
end
end
end
end
Então podemos gerar usando o comando:
rake custom:sitemap
A integração do Capistrano é bastante útil para gerar o mapa do site e executar ping nos mecanismos de pesquisa automaticamente durante a implantação.
# config/deploy.rb
namespace :deploy do
desc "Generate sitemap"
task :sitemap do
run "cd '#{current_path}' && #{rake} custom:sitemap RAILS_ENV=#{rails_env}"
end
end
after 'deploy:update', 'deploy:sitemap'