Попробуйте решить проблему с миграцией файлов в S3. Первое: команда возвращает
GlobalSetting.use_s3?
false
Теперь вопрос. Если загрузка новых изображений работает (то есть S3 настроен правильно), то что вызывает эту ошибку? (Я хочу перенести существующие изображения с помощью DRY_RUN=1 rake uploads:migrate_to_s3).
Нужно ли настроить что-то помимо параметров в панели администратора?
Я пробовал отредактировать discourse.conf следующим образом:
Если я не ошибаюсь, изменить глобальные настройки из консоли 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__'