読者です 読者をやめる 読者になる 読者になる

めも帖

「めも帖」代わりにダラダラと書いていったり、めもしたりしているだけです。

heroku のRails アプリでsitemap.xml を用意するときにはまったこと

Ruby on Rails

heroku での Rails 4 のアプリでsitemap.xml を用意してみました。Rails で sitemap.xml を生成するといえば、sitemap_generator というgem を利用するのが定番らしいです。

heroku でsitemap.xml を利用すると、静的なファイルをherokuでおくことが出来ないので、sitemap.xml を生成して、Amazon S3に用意して対応します

インストールする

Gemfile に追記

S3 へのファイル転送は「fog」というgemを利用します。Amazon S3への転送設定について、「carrierwave」というgemとも共有できます。なぜか、carrierwaveを使わないと転送できなかったです...(本当は出来るらしいんですが)

gem 'sitemap_generator'
gem 'carrierwave'
gem 'fog'
$ bundle install

設定ファイルを生成

設定ファイルを用意します。雛形を生成してくれます

$ rake sitemap:install

config/sitemap.rb

S3への設定も含むと下記のようになります。 sitemaps_host については、bucket名をURLにきちんと加えておく必要がありました

SitemapGenerator::Sitemap.default_host  = "http://app1.herokuapp.com/"
SitemapGenerator::Sitemap.sitemaps_host = 'https://s3.amazonaws.com/bucket_name/'
SitemapGenerator::Sitemap.public_path   = 'tmp/'
SitemapGenerator::Sitemap.sitemaps_path = 'sitemaps/'
SitemapGenerator::Sitemap.adapter = SitemapGenerator::WaveAdapter.new

SitemapGenerator::Sitemap.create do
    add "/foo"
end

config/initializers/carrierwave.rb

  • アクセスキーIDと、シークレットアクセスキーを取得しておきます。
  • AWS -> アカウント -> セキュリティ証明書
CarrierWave.configure do |config|
  config.cache_dir = "#{Rails.root}/tmp/"
  config.storage = :fog
  config.permissions = 0666
  config.fog_credentials = {
    :provider               => 'AWS',
    :aws_access_key_id      => 'xxxxxxxxxxx',
    :aws_secret_access_key  => 'xxxxxxxxxxx',
        #:region => 'ap-northeast-1'
  }
  config.fog_directory  = 'bucket_name'
end

sitemap.xml を生成する

開発環境などであれば、下記のような方法で生成できます。 この方法だと、GoogleなどにPINGを送りません。また、生成したSitemap.xmlを転送しません

$rake sitemap:refresh:no_ping

本番環境では、下記のような方法で生成できます。 この方法だと、GoogleなどにPINGを送ります。また、生成したSitemap.xmlを転送します

$rake sitemap:refresh

routes.rb を設定

生成が出来ても、S3においたままだと、Google ウェブマスターツールに登録できません。 なので、routes.rb でリダイレクトを設定しておきます。

get 'sitemap', to: redirect('https://s3.amazonaws.com/bucket_name/sitemaps/sitemap.xml.gz')

下記のようなURL でアクセスできます

Google ウェブマスターツールに登録

あとは、登録しておくだけです!

Google Analyticsパーフェクトガイド Ver.5対応版

Google Analyticsパーフェクトガイド Ver.5対応版