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 \

Those are formatted like environment variables. They should be in the env: section of your app.yml.

「いいね!」 2

I set it rigth now (GlobalSetting.use_s3? true )

Unfortunately, still the same mistake. Command rake uploads:migrate_to_s3 returns the error

もし私の記憶が正しければ、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 ファイルで設定され、この値はアプリケーション内では変更できません。これはサイトへのセキュリティ層を追加するものです。

場合によっては、グローバル設定がサイト設定に割り当てられ、その後そのサイト設定がアプリケーション内で使用されるため変更可能になります。しかし、グローバル設定が直接使用されている場合、その値は変更できないようです(テスト中の観察結果から)。

限られたテストに基づくと、これはグローバル設定とサイト設定の根本的な違いの一つのようです。

したがって、@eextraGlobalSetting.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__'