Alchemy CMS - объединение существующей конфигурации Heroku Dragonfly с Alchemy v3.5 (визуализация промежуточного программного обеспечения Dragonfly)

Я не могу заставить Alchemy v3.6 и Dragonfly S3 работать в существующей среде Heroku.

Я обновляю свою производственную среду Alchemy CMS 3.2 (развернутую на Heroku) до Alchemy CMS 3.6. Моя производственная установка с Alchemy CMS использует хранилище Dragonfly и S3.

Моя проблемная область - инициализатор Dragonfly v3.5, и как он взаимодействует / конфликтует с руководством по развертыванию Alchemy Heroku здесь: https://guides.alchemy-cms.com/edge/deploy_on_heroku.html.

Обновление v3.5 устанавливает стандартный инициализатор Dragonfly для Alchemy, который теперь использует промежуточное программное обеспечение Dragonfly для рендеринга всех изображений (обновитель v3.5 копирует конфигурацию dragonfly здесь: https://github.com/AlchemyCMS/alchemy_cms/blob/3.5-stable/lib/alchemy/upgrader/three_point_five.rb).

Я пытался преобразовать это в единый инициализатор, который работает на Heroku с использованием S3 и локально для разработки. Пока у меня есть конфиг ниже.

Этот инициализатор ниже работает в большинстве ситуаций. Однако, что наиболее важно, он не допускает рендеринга существующих производственных изображений, хранящихся на S3, или рендеринга новых изображений, которые только что были загружены на S3.

В версии 3.2 производственные изображения получили URL-адрес, такой как:

/content/pictures/191/show/my-image.jpg?sh=1c4dbd224d95fab4

После обновления до v3.6 URL-адреса этих изображений становятся примерно такими (но они получают ответ 404):

/ W1siZiIsIjIwMTgvMDgvMjgvMDUvNDgvNTMvMGY3YmI2ZTctYWIxNS00M2E3LTkzN2UtMGI5ZTNjMzQ1ZTVjL2Nob2NvbGF0ZS10cmVlLWJhbm5lci5wbmciXSxbInAiLCJlbmNvZGUiLCJqcGciLCItcXVhbGl0eSA4NSJdXQ / мой образ? Ша =2cd4ba612a2ad88a

Моя объединенная конфигурация Dragonfly.rb (моя попытка пересмотренной конфигурации развертывания руководства Heroku - первая половина):

if Rails.env.production?
  require 'dragonfly'
  require 'dragonfly/s3_data_store'

  aws_defaults = {
      access_key_id: Rails.configuration.aws_access_key_id,
      secret_access_key: Rails.configuration.aws_secret_access_key,
      region: 'eu-west-1',
      storage_headers: {'x-amz-acl' => 'public-read'},
      url_scheme: 'https'
  }

  Dragonfly.app(:alchemy_pictures).configure do
    plugin :imagemagick
    secret ENV['DRAGONFLY_SECRET']
    url_format '/pictures/:job/:name.:ext'

    datastore :s3,
              { bucket_name: Rails.configuration.aws_images_directory }.merge(aws_defaults)
  end

  # Mount as middleware
  Rails.application.middleware.use Dragonfly::Middleware, :alchemy_pictures

  Dragonfly.app(:alchemy_attachments).configure do
    datastore :s3,
              { bucket_name: Rails.configuration.aws_attachments_directory }.merge(aws_defaults)
  end
else
  Dragonfly.app(:alchemy_pictures).configure do
    dragonfly_url nil
    plugin :imagemagick
    plugin :svg
    secret ENV['DRAGONFLY_SECRET']
    url_format '/pictures/:job/:name.:ext'

    datastore :file,
              root_path: Rails.root.join('uploads/pictures').to_s,
              server_root: Rails.root.join('public'),
              store_meta: false
  end

  # Mount as middleware
  Rails.application.middleware.use Dragonfly::Middleware, :alchemy_pictures

  # Attachments
  Dragonfly.app(:alchemy_attachments).configure do
    datastore :file,
              root_path:  Rails.root.join('uploads/attachments').to_s,
              store_meta: false
  end
end

Должен ли я указать url_format для существующего производства Heroku установить в производственном блоке?

Кроме того, я должен установить середину Стрекозы в производственном блоке?

Я добавил secret линия к конфигу Heroku S3, это правильно?

Непроизводственный блок оптом от установщика v3.5 dragonfly.rb файл, скопированный установщиком в мое приложение.

Без объединения инициализаторов существующая производственная конфигурация была перезаписана (она была сохранена в файле с именем initializers/alchemy.rb который бежал раньше initializers/dragonfly.rb) перезаписывает конфиг Heroku Dragonfly.

Я чувствую, что это почти здесь, поскольку существующие и новые изображения работают на dev localmachine, а с помощью Heroku новые загрузки поступают в корзину S3 в производственной среде. Это рендеринг картинок, который терпит неудачу.

Я получаю ошибку 404, как в:

2018-08-27T23: 36: 15,068230+00:00 Heroku[маршрутизатор]: при = Информация = метод GET путь = "/W1siZiIsIjIwMTYvMDMvMDkvMjEvMzYvMjQvNmE3NDA1ZTItOWU3Yi00NThiLWE2MjAtN2U3MWRmYzFiZjhjL2Nob2NvbGF0ZS10cmVlLWxvZ28ucG5nIl0sWyJwIiwidGh1bWIiLCIxNjB4MTIwXHUwMDNlIl0sWyJwIiwiZW5jb2RlIiwianBnIiwiLXF1YWxpdHkgODUgLWZsYXR0ZW4iXV0/ мой образ ша =55745937790605fd" хост =xyz.herokuapp.com request_id= ххххххх FWD ="xx.xx.xx.xx" dyno=web.1 connect=1ms service=114ms status=404 байта =4420 protocol=https

0 ответов

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