【rails/heroku/sitemap】heroku環境下のrailsでsitemapを設定する
heroku環境下で動いているrailsは、sitemap_generator gemだけではうまく動かない (作成したファイルを置けないなんだよ。。。)
そこで、AWSのS3に置く方法を用いる
sitemapの作成
sitemap_generator gemをインストールして
rake sitemap:install
すると、sitemapの設定ファイルができるのでいい感じに編集する
今回は、音楽系のサイトで アーティスト一覧や、曲一覧がある場合を考える。
config/sitemap.rb
SitemapGenerator::Sitemap.default_host = "http://www.testes.com" SitemapGenerator::Sitemap.sitemaps_host = 'http://s3-ap-northeast-1.amazonaws.com/bucket_name' SitemapGenerator::Sitemap.adapter = SitemapGenerator::AwsSdkAdapter.new('bucket_name') SitemapGenerator::Sitemap.create do add root_path # 曲一覧 add songs_path # アーティスト一覧 add artists_path # 各アーティストのパス show(id) Artist.all.find_each do |artist| add artist_path(artist), :lastmod => artist.updated_at end # 各曲のパス show(id) Song.all.find_each do |song| add song_path(song), :lastmod => song.updated_at end end
これで、sitemap_generaterが勝手にアップしてくれる
s3の設定
S3に任意のバケットを作成しておく
gem 'aws-sdk'
だけインストールしておく。
ルーティング
config/routes.rb
get 'sitemap.xml', to: redirect('https://s3-ap-northeast-1.amazonaws.com/BUCKET_NAME/sitemaps/sitemap.xml.gz')
heroku設定
awsの各情報を登録しておく
heroku config:add AWS_ACCESS_KEY_ID=hogehoge heroku config:add AWS_SECRET_ACCESS_KEY=hogehoge heroku config:add AWS_REGION=ap-northeast-1
herokuにdeployした後に
heroku run rake sitemap:refresh
したら完了
まとめ
簡単に登録できる。