Tornar s3_region um valor string

Quais poderiam ser os motivos para tornar esta variável uma lista limitada. Para quê?

irb(main):007:0> SiteSetting.s3_region='fr-par'
Traceback (most recent call last):
        5: from (irb):7
        4: from lib/site_setting_extension.rb:548:in `block in setup_methods'
        3: from lib/site_setting_extension.rb:368:in `add_override!'
        2: from lib/site_settings/type_supervisor.rb:149:in `to_db_value'
        1: from lib/site_settings/type_supervisor.rb:207:in `validate_value'
Discourse::InvalidParameters (Valor inválido `fr-par` para `s3_region`)

A Scaleway tem suas próprias regiões.

Você pode definir valores diferentes através de variáveis de ambiente, conforme Configurar um provedor de armazenamento de objetos compatível com S3 para uploads

Você acha que eu não?

Se o valor permitido de uma variável for estritamente limitado no script de acordo com a lista de valores possíveis, você tem certeza de que isso ajudará?

Sim, tenho certeza porque escrevi o guia da Scaleway em Configure an S3 compatible object storage provider for uploads e testei que funcionava com uma instalação de produção.

Legal! Tente na 2.9.0.Beta9 :slight_smile: Por favor, explique por que você não pode alterar a variável através do console?

\u003e Discourse::InvalidParameters (Valor inválido fr-par para s3_region)

InvalidParameters

Entendeu? Valor inválido fr-par para s3_region - Parâmetros Inválidos! Ok?

Você não deve alterá-la no console, pois deve seguir Configure an S3 compatible object storage provider for uploads e defini-la como variáveis de ambiente :slightly_smiling_face:

Você diz coisas estranhas :exploding_head:

  1. Eu fiz isso antes de postar aqui originalmente.
  2. Isso não funciona
  3. Eu tentei DIRETAMENTE pelo console
  4. Isso não funciona

@Falco Vou fornecer um bucket e um token de acesso na Scaleway. Criarei um servidor agora e configurarei um fórum lá e lhe darei acesso. Se eu conseguir, vou me desculpar :smiling_face_with_three_hearts: :kissing_heart:

No meio do dia eu vou deletar o servidor. Até lá, o acesso é mantido.

Obviamente - as configurações sugeridas não funcionam

Basta definir o endpoint.

Using Scaleway s3-compatible object storage - #19 by Falco.

EDIT: Ah, de alguma forma eu tinha perdido todo o início deste tópico. . .

Muitas outras pessoas seguiram o guia e ele funciona.

nano /var/discourse/containers/app.yml

  DISCOURSE_S3_REGION: "fr-par"
  DISCOURSE_S3_ACCESS_KEY_ID: "SCW*******WYCGN"
  DISCOURSE_S3_SECRET_ACCESS_KEY: "***************"
  DISCOURSE_BACKUP_LOCATION: "s3"
  DISCOURSE_S3_BACKUP_BUCKET: "test-forum-falco-discourse-s3-region"
  DISCOURSE_S3_ENDPOINT: "https://s3.fr-par.scw.cloud"

./launcher rebuild app

Removing old container
+ /usr/bin/docker rm app
app

+ /usr/bin/docker run --shm-size=512m -d --restart=always -e LANG=en_US.UTF-8 -e RAILS_ENV=production -e UNICORN_WORKERS=4 -e UNICORN_SIDEKIQS=1 -e RUBY_GLOBAL_METHOD_CACHE_SIZE=131072 -e RUBY_GC_HEAP_GROWTH_MAX_SLOTS=40000 -e RUBY_GC_HEAP_INIT_SLOTS=400000 -e RUBY_GC_HEAP_OLDOBJECT_LIMIT_FACTOR=1.5 -e DISCOURSE_DB_SOCKET=/var/run/postgresql -e DISCOURSE_DB_HOST= -e DISCOURSE_DB_PORT= -e LETSENCRYPT_DIR=/shared/letsencrypt -e DISCOURSE_FORCE_HTTPS=true -e LC_ALL=en_US.UTF-8 -e LANGUAGE=en_US.UTF-8 -e DISCOURSE_S3_REGION=fr-par -e DISCOURSE_S3_ACCESS_KEY_ID=SCWDM************GN -e DISCOURSE_S3_SECRET_ACCESS_KEY=*********************** -e DISCOURSE_BACKUP_LOCATION=s3 -e DISCOURSE_S3_BACKUP_BUCKET=test-forum-falco-discourse-s3-region -e DISCOURSE_S3_ENDPOINT=https://s3.fr-par.scw.cloud -e DISCOURSE_HOSTNAME=********** -e DISCOURSE_DEVELOPER_EMAILS=***************** -e DISCOURSE_SMTP_ADDRESS=in-v3.mailjet.com -e DISCOURSE_SMTP_PORT=587 -e DISCOURSE_SMTP_USER_NAME=************************ -e DISCOURSE_SMTP_PASSWORD=**************************** -e DISCOURSE_NOTIFICATION_EMAIL=************************* -e LETSENCRYPT_ACCOUNT_EMAIL=me@example.com -h scw-jolly-merkle-app -e DOCKER_HOST_IP=172.17.0.1 --name app -t -p 80:80 -p 443:443 -v /var/discourse/shared/standalone:/shared -v /var/discourse/shared/standalone/log/var-log:/var/log --mac-address 02:53:96:b4:7e:e7 local_discourse/app /sbin/boot
e558fe6dbde62177ae4f4171fd1099f1844321c80f59cf4c3c0d4c56abfa9412

*** - segredos

./launcher enter app

rake site_settings:export

---
title: Discourse1
contact_email: *************************
default_dark_mode_color_scheme_id: '1'
invite_only: 'true'
login_required: 'true'
default_trust_level: '1'
allowed_iframes: https://www.google.com/maps/embed?|https://www.openstreetmap.org/export/embed.html?|https://calendar.google.com/calendar/embed?|https://codepen.io/|https://www.instagram.com|https://*************************/discobot/certificate.svg
default_email_digest_frequency: '1440'

Ainda não funciona

As variáveis de ambiente definidas em app.yaml não serão necessariamente refletidas em rake site_settings:export, não sei por que você assumiu isso.

Agora que parece que você configurou todas as variáveis de ambiente de acordo com o guia em Configurar um provedor de armazenamento de objetos compatível com S3 para uploads, o que acontece quando você tenta fazer upload de uma imagem para uma postagem? Algo interessante na página /logs?

Olá.

Ok. Eles não deveriam ser exibidos nas configurações do fórum também? Você obviamente tem uma abordagem interessante e especial para programação. Eles realmente não deveriam estar lá?

Por favor, me desculpe. Agora funciona :smiling_face_with_three_hearts: :kissing_heart:

  • Os campos de configurações estão faltando na interface web
  • site_settings:export - os campos estão faltando
  • SiteSetting.s3_region=‘fr-par’ - Erro “Valor inválido fr-par para s3_region

Mas

  • funciona
  • eu não entendo por que decidi isso

Obrigado. Desculpe :wink: