Не удается выполнить пересборку из-за следующей ошибки.
I, [2024-11-07T08:00:56.758061 #1] INFO -- : > cd /var/www/discourse && sudo -E -u discourse bundle exec rake s3:upload_assets
rake aborted!
ArgumentError: Cannot set dual-stack in combination with a custom endpoint. (ArgumentError)
raise ArgumentError, "Cannot set dual-stack in combination with a custom endpoint."
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
FAILED
--------------------
Pups::ExecError: cd /var/www/discourse && sudo -E -u discourse bundle exec rake s3:upload_assets failed with return #<Process::Status: pid 3349 exit 1>
Location of failure: /usr/local/lib/ruby/gems/3.3.0/gems/pups-1.2.1/lib/pups/exec_command.rb:132:in `spawn'
exec failed with the params {"cd"=>"$home", "cmd"=>["sudo -E -u discourse bundle exec rake s3:upload_assets", "sudo -E -u discourse bundle exec rake s3:expire_missing_assets"]}
bootstrap failed with exit code 1
** FAILED TO BOOTSTRAP ** please scroll up and look for earlier error messages, there may be more than one.
./discourse-doctor may help diagnose the problem.
567dc9e1f9a4e662de6024b8504915d8b6ef1ee2d9b4303af75323ba478679e4
Я закомментировал эти строки, из-за чего пересборка проходит успешно, но сайт зависает на загрузочном экране, вероятно, потому что не может загрузить ресурсы. В безопасном режиме то же самое…
Мой процесс пересборки с настройкой Digital Ocean Spaces S3 начал завершаться ошибкой с следующим сообщением:
, [2024-11-07T19:09:38.615466 #1] INFO -- : > cd /var/www/discourse && sudo -E -u discourse bundle exec rake s3:upload_assets
rake aborted!
ArgumentError: Cannot set dual-stack in combination with a custom endpoint. (ArgumentError)
raise ArgumentError, "Cannot set dual-stack in combination with a custom endpoint."
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-s3-1.143.0/lib/aws-sdk-s3/endpoint_provider.rb:34:in `resolve_endpoint'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-s3-1.143.0/lib/aws-sdk-s3/plugins/endpoints.rb:37:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.191.3/lib/seahorse/client/plugins/endpoint.rb:47:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.191.3/lib/aws-sdk-core/plugins/param_validator.rb:26:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-s3-1.143.0/lib/aws-sdk-s3/plugins/sse_cpk.rb:24:in `call'
Однако, если не задавать значение whatever, сборка завершается ошибкой так:
I, [2024-11-07T19:15:31.060936 #1] INFO -- : > cd /var/www/discourse && sudo -E -u discourse bundle exec rake s3:upload_assets
ERROR: Ensure S3 is configured in config/discourse.conf or environment vars
I, [2024-11-07T19:15:36.056204 #1] INFO -- :
Я нашёл это:
и это:
Возможно, переменную S3_REGION следует очищать, если указан endpoint здесь?
EDIT: Ой. Мне казалось, я уже искал. Извините, Falco.
@martin Обычно мы здесь предоставляем GlobalSetting, чтобы отключить поведение, которое затем можно включить для обеспечения работы несовместимых клонов S3.
По моему мнению, текущее поведение должно оставаться по умолчанию, но следует добавить переключатели для повышения совместимости.
См. предыдущий опыт в DISCOURSE_S3_HTTP_CONTINUE_TIMEOUT, DISCOURSE_S3_INSTALL_CORS_RULE и т. д.
Ах, извините, моя вина, ребята. Эти клоны S3 всегда вылетают у меня из головы. Вчера мне как раз пришлось решать проблему с кастомной конечной точкой в Minio. Думаю, решение здесь простое: никогда не использовать dualstack, если задана переменная DISCOURSE_S3_ENDPOINT, так как они несовместимы. А судя по всему, все здесь используют именно её.
Это потому, что нужно держать в голове множество вещей! И, я думаю, спецификационные тесты потребовали бы тех надоедливых stub_request, которые я, как известно, ненавижу писать.
Только для информации, мне это кажется правильным. И вы, вероятно, могли бы написать для этого тесты, которые не требовали бы заглушек для stub_request.
Это наводит меня на мысль, что спецификации недостаточно широки, чтобы охватить все реальные случаи использования, и проходят изменения, которые не должны были проходить?
Похоже, что исправление работает только для сайтов, у которых включена опция use_s3, но не для тех, кто использует S3 исключительно для резервного копирования.
Восстановление возможно, но резервные копии в S3 не работают.