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 \

但并未生效。

它们的格式类似于环境变量。它们应该位于 app.yml 的 env: 部分。

2 个赞

我刚刚已经正确设置了(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__'