GlobalSetting.use_s3? - false

Попробуйте решить проблему с миграцией файлов в S3. Первое: команда возвращает

 GlobalSetting.use_s3?
 false

Теперь вопрос. Если загрузка новых изображений работает (то есть S3 настроен правильно), то что вызывает эту ошибку? (Я хочу перенести существующие изображения с помощью DRY_RUN=1 rake uploads:migrate_to_s3).

Нужно ли настроить что-то помимо параметров в панели администратора?
Я пробовал отредактировать discourse.conf следующим образом:

DISCOURSE_S3_BUCKET=00000 \
DISCOURSE_S3_REGION=eu-west-2 \
DISCOURSE_S3_ACCESS_KEY_ID=00000 \
DISCOURSE_S3_SECRET_ACCESS_KEY=00000 \

но это не помогло.

Они отформатированы как переменные окружения. Они должны находиться в секции env: вашего файла app.yml.

Я только что исправил это (GlobalSetting.use_s3? true)

К сожалению, ошибка осталась прежней. Команда rake uploads:migrate_to_s3 возвращает ошибку.

Если я не ошибаюсь, изменить глобальные настройки из консоли Rails нельзя; но вы можете изменить настройки сайта из консоли:

Базовый пример изменения настройки сайта:

pry(main)> SiteSetting.site_description
=> "My Cool Site"

pry(main)> SiteSetting.site_description = "My Great Discourse Site"
=> "My Great Discourse Site"

pry(main)> SiteSetting.site_description
=> "My Great Discourse Site"

Конкретный пример сравнения глобальных настроек и настроек сайта:

pry(main)> GlobalSetting.force_https
=> true

pry(main)> SiteSetting.force_https = false
false

pry(main)> SiteSetting.force_https
=> false

pry(main)> SiteSetting.force_https = true
=> true

pry(main)> GlobalSetting.force_https
=> true

pry(main)> GlobalSetting.force_https = false
NoMethodError: undefined method `force_https=' for GlobalSetting:Class
Did you mean? force_https
from (pry):61:in `__pry__'

pry(main)> GlobalSetting.force_https = true
NoMethodError: undefined method `force_https=' for GlobalSetting:Class
Did you mean? force_https
from (pry):62:in `__pry__'

Когда я проводил подобные тесты из консоли Rails, это привело меня к выводу, что глобальные настройки нельзя изменить в приложении после его сборки; однако настройки сайта можно изменить в приложении после его сборки и запуска.

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

В некоторых случаях глобальная настройка присваивается настройке сайта, и тогда в приложении используется настройка сайта, которую можно изменить; однако, когда в приложении используется глобальная настройка, это значение изменить нельзя (или, по крайней мере, так кажется во время тестирования).

По моим ограниченным тестам, это, по-видимому, одно из фундаментальных различий между глобальными настройками и настройками сайта.

Поэтому я считаю, что это основная причина, по которой @eextra, пытаясь установить GlobalSetting.use_s3? true, обнаружил, что это не сработало, как ожидалось:

pry(main)> GlobalSetting.use_s3?
=> false

pry(main)> GlobalSetting.use_s3 = true
NoMethodError: undefined method `use_s3=' for GlobalSetting:Class
Did you mean?  use_s3?
from (pry):8:in `__pry__'