# GlobalSetting.use\_s3? - false

**URL:** https://meta.discourse.org/t/globalsetting-use-s3-false/145088
**Category:** Self-hosting
**Tags:** s3
**Created:** [3월 21, 2020, 8:48오후 UTC](https://meta.discourse.org/t/globalsetting-use-s3-false/145088 "2020-03-21T20:48:30Z")
**Posts on this page:** 4
**Page:** 1

<div class="post-metadata">

### Author: ![eextra](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/eextra/32/170266_2.png) [@eextra](https://meta.discourse.org/u/eextra)
#### Post date: [3월 21, 2020, 8:48오후 UTC](https://meta.discourse.org/t/globalsetting-use-s3-false/145088/1 "2020-03-21T20:48:31Z")

</div>

S3로의 파일 마이그레이션 문제를 해결하려고 합니다. 먼저, 해당 명령을 실행하면 다음과 같은 결과가 반환됩니다.

```
 GlobalSetting.use_s3?
 false

```

그리고 질문입니다. 새 이미지 로딩이 정상적으로 작동한다면(즉, S3가 올바르게 설정되었다면), 이 오류는 어떤 원인으로 발생하는 것일까요? (기존 이미지를 _DRY\_RUN=1 rake uploads:migrate\_to\_s3_로 전송하려고 합니다.)

관리자 패널의 설정 외에 별도로 설정해야 할 것이 있을까요?  
다음과 같이 `discourse.conf` 파일을 수정해 보았지만 작동하지 않았습니다:

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

```

---

<div class="post-metadata">

### Author: ![riking](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/riking/32/170938_2.png) [@riking](https://meta.discourse.org/u/riking)
#### Post date: [3월 23, 2020, 9:16오후 UTC](https://meta.discourse.org/t/globalsetting-use-s3-false/145088/2 "2020-03-23T21:16:02Z")

</div>

이것들은 환경 변수처럼 포맷되어 있습니다. 앱의 `app.yml` 파일에서 `env:` 섹션에 포함해야 합니다.

---

<div class="post-metadata">

### Author: ![eextra](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/eextra/32/170266_2.png) [@eextra](https://meta.discourse.org/u/eextra)
#### Post date: [3월 23, 2020, 9:22오후 UTC](https://meta.discourse.org/t/globalsetting-use-s3-false/145088/3 "2020-03-23T21:22:06Z")

</div>

방금 설정을 올바르게 변경했습니다 (GlobalSetting.use\_s3? true).

불행히도 여전히 동일한 오류가 발생합니다. _rake uploads:migrate\_to\_s3_ 명령을 실행하면 오류가 반환됩니다.

---

<div class="post-metadata">

### Author: ![neounix](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/neounix/32/215617_2.png) [@neounix](https://meta.discourse.org/u/neounix)
#### Post date: [6월 10, 2020, 6:47오전 UTC](https://meta.discourse.org/t/globalsetting-use-s3-false/145088/4 "2020-06-10T06:47:10Z")

</div>

> [@eextra](#):
>
> 방금 설정했습니다 (GlobalSetting.use\_s3? true )
> 
> 불행히도 여전히 동일한 오류가 발생합니다. _rake uploads:migrate\_to\_s3_ 명령을 실행하면 오류가 반환됩니다.

제 기억이 맞다면, rails 콘솔에서 전역 설정(global settings)을 변경할 수 없습니다. 하지만 콘솔에서 사이트 설정(site settings)은 변경할 수 있습니다:

사이트 설정을 변경하는 기본 예시:

```plaintext
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"

```

전역 설정과 사이트 설정을 비교하는 구체적인 예시:

```plaintext
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`를 설정하려고 했을 때 기대대로 작동하지 않은 근본적인 이유는 이것이라고 생각합니다:

```plaintext
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__'

```
