Ho recentemente distribuito un'applicazione e ottenuto un errore interno del server a causa della produzione mancante secret_key_base. Dopo ore di test, sono riuscito a risolvere questo problema con due metodi:Produzione mancante secret_key_base in rotaie
Metodo 1:
Ho generato un nuovo SECRET_KEY con rake secret
e sostituirlo con <%= ENV["SECRET_KEY_BASE"] %>
in secrets.yml
. Ha distribuito di nuovo l'app e questa volta ha funzionato. Ma penso che questo metodo sia sbagliato.
Metodo 2:
Ho generato un nuovo SECRET_KEY con rake secret
e aggiunta environments/production.rb
come config.secret_key_base = 'd1f4810e662acf46a33960e3aa5bd0************************
, senza modificare secrets.yml
(default è production: <%= ENV["SECRET_KEY_BASE"] %>
). Distribuito di nuovo l'app e funziona correttamente.
Le mie domande:
- Quale metodo è il migliore?
- Se il secondo metodo è corretto, perché rails non genera un secret_key_base in production.rb per impostazione predefinita?
- C'è qualche altro metodo per farlo?
Questo metodo rhc è utilizzabile solo quando si effettua l'hosting su openshift.redhat.com? –
È possibile trovare il metodo appropriato per ciascun servizio nei suoi documenti. Ad esempio per heroku è possibile controllare questa pagina: https://devcenter.heroku.com/articles/config-vars – user3631047
Alla fine ho finito col radunare un segreto sul mio VPS e inserendolo nel mio file secrets.yml. –