Sitemap_generator не удается загрузить

Я следовал инструкциям на нескольких страницах, чтобы получить карту сайта для генерации и загрузки в мой S3 Bucket. Карта сайта генерируется, но не загружается.

Я использую carrierwave для загрузки, которая отлично работает для загрузки изображений.

Ключевым файлом является файл config/sitemap.rb. Вот мой:

require 'rubygems'
require 'sitemap_generator'

# Set the host name for URL creation
SitemapGenerator::Sitemap.default_host = "https://www.driverhunt.com"

# pick a place safe to write the files
SitemapGenerator::Sitemap.public_path = 'tmp/'

# store on S3 using #Fog# Carrierwave
SitemapGenerator::Sitemap.adapter = SitemapGenerator::WaveAdapter.new
# SitemapGenerator::Sitemap.adapter = SitemapGenerator::S3Adapter.new
# This is a different problem to the one in the question, but using this second adaptor gives the error: "...lib/fog/storage.rb:27:in `new':  is not a recognized storage provider (ArgumentError)"

# inform the map cross-linking where to find the other maps
SitemapGenerator::Sitemap.sitemaps_host = "http://#{ENV['S3_BUCKET']}.s3.amazonaws.com/"

# pick a namespace within your bucket to organize your maps
SitemapGenerator::Sitemap.sitemaps_path = 'sitemaps/'

SitemapGenerator::Sitemap.create do
  add '/home', :changefreq => 'daily', :priority => 0.9
  # add '/contact_us', :changefreq => 'weekly'
end
# SitemapGenerator::Sitemap.ping_search_engines # Not needed if you use the rake tasks

В чем дело? Как отладить загрузку несущей?

1 ответ

Я отвечу на вопрос, поскольку ваш комментарий к S3Adapter привел меня к этой теме, когда я занимался поиском неопознанного провайдера. Если вы вернетесь к комментарию с помощью S3Adapter и выполните следующее, вы получите его работающим.

Если вы не укажете туман ENV VARS для драгоценного камня fog-aws, вы получите ошибку:

ArgumentError:  is not a recognized provider

используя в качестве адаптера SitemapGenerator::S3Adapter.new

Установки, которые вы получили выше, совершенно хороши, просто используйте S3Adapter.new вместо WaveAdapter! Ошибка, которую вы получаете (и я тоже получаю), связана с тем, что SitemapGenerator:: S3Adapter использует fog-aws, и для того, чтобы запустить его по умолчанию, у вас должны быть следующие ENV VARS:

ENV['AWS_ACCESS_KEY_ID']     = XXX
ENV['AWS_SECRET_ACCESS_KEY'] = XXX
ENV['FOG_PROVIDER']          = AWS
ENV['FOG_DIRECTORY']         = your-bucket-name
ENV['FOG_REGION']            = your-bucket-region (ex: us-west-2)

Если вы пропустили хотя бы одно из следующих действий, вы получите ошибку:

ArgumentError:  is not a recognized provider

В качестве альтернативы, если вы хотите по какой-то причине отказаться от использования ENV VARS, вы должны указать значения при инициализации адаптера следующим образом:

SitemapGenerator::Sitemap.adapter = SitemapGenerator::S3Adapter.new(fog_provider: 'AWS',
                                     aws_access_key_id: 'your-access-key-id',
                                     aws_secret_access_key: 'your-access-key',
                                     fog_directory: 'your-bucket',
                                     fog_region: 'your-aws-region')

Однако, используя только вышеупомянутые ENV VARS, все будет в порядке, и ваш файл сайта будет запущен и запущен. Эта установка была протестирована с версией sitemap_generator: 5.1.0


На ваш вопрос: Загрузка изображений работает, поскольку она не требует точно такой же конфигурации, как WaveAdapter. Я предполагаю, что в вашем файле carrierwave.rb отсутствует следующее:

 config.cache_dir = "#{Rails.root}/tmp/"
 config.permissions = 0666

Полная конфигурация для инициализатора carrierwave может быть найдена здесь: Генерация файлов Sitemap для файловых систем, доступных только для чтения, таких как Heroku (проверьте, что вы что-то упустили, или используйте другой адаптер)

Однако я считаю, что ваша проблема связана с отсутствием ENV VARS в производственной среде.

Другие вопросы по тегам