제 기억이 맞다면, rails 콘솔에서 전역 설정(global settings)을 변경할 수 없습니다. 하지만 콘솔에서 사이트 설정(site settings)은 변경할 수 있습니다:
사이트 설정을 변경하는 기본 예시:
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__'