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