Как сделать удаленный файл с рельсами - PullRequest
6 голосов
/ 30 июля 2011

У меня есть карта сайта www.mysite.com, размещенная на https://s3.amazonaws.com/mysite/sitemaps/sitemap1.xml.gz

Можно ли настроить Rails (маршруты, контроллеры, ...) для отображения файла sitemap1.xml в www.mysite?.com / sitemap1.xml.gz?

Спасибо.

Ps.причина, по которой карта сайта находится под AWS, заключается в следующем: https://github.com/kjvarga/sitemap_generator/wiki/Generate-Sitemaps-on-read-only-filesystems-like-Heroku

Ответы [ 3 ]

3 голосов
/ 20 октября 2015

на основе https://github.com/kjvarga/sitemap_generator/issues/173

Я пытаюсь это ...
в routes.rb

get 'sitemap(:id).:format.:compression' => 'sitemap#show'

в sitemap_controller.rb

class SitemapController < ApplicationController
  def show
    data = open("http://{ENV['AWS_BUCKET_PROD']}.s3.amazonaws.com/sitemaps/sitemap#{params[:id]}.xml.gz")
    send_data data.read, :type => data.content_type
  end
end

Также убедитесь, что файл sitemap (index) содержит ссылки на другие файлы sitemap (sitemap1, sitemap2 ...), расположенные на вашем сайте, а не amazon.

0 голосов
/ 17 июля 2012

Насколько я понимаю, вы развертываете файловую систему только для чтения, такую ​​как Heroku.

Если это так, вот несколько статей, которые помогут:

  • Создание карты сайта для Rails и Heroku : «Чтобы решить эту проблему, мы написали быстрое действие контроллера для создания карты сайта на лету, а затем кэшировали его с помощью кэширования страницы.»
  • Rails Google Sitemaps на Heroku : показывает, как использовать контроллер для анализа внешней карты сайта и последующей визуализации карты сайта в формате XML.
  • Создание файла sitemap.xml в Heroku с Ruby on Rails : «Вот описание того, как динамически генерировать карту сайта xml при каждом обращении к ней».
0 голосов
/ 30 июля 2011

Создайте контроллер, который будет перенаправлять в расположение файла Amazon S3 и создайте для него соответствующий маршрут.

routes.rb:

match 'sitemap1.xml.gz' => 'site_map#redirect'

site_map_controller.b:

class SiteMapController < ApplicationController
   def redirect
      redirect_to 'https://s3.amazonaws.com/mysite/sitemaps/sitemap1.xml.gz'
   end
end
...