Secondo il link c’è interesse ma sono passati diversi anni e non so se l’hanno effettivamente implementato o meno.
Uno scenario molto utile per questo è configurare un server VPS con le impostazioni esatte del server di produzione, e questo VPS clonato sarebbe esclusivamente per lo sviluppo. In questo modo, posso lavorare in modo più efficace con il mio team di sviluppatori.
Hai bisogno di molto più delle sole impostazioni per vedere che le cose funzionano. Perché non ripristinare semplicemente il database di produzione nello staging? Vedi Impostare un server di staging.
Una domanda: questo clona anche le credenziali e i contenuti del forum? Perché ovviamente gli sviluppatori non ne hanno bisogno, solo la configurazione di base per sviluppare i plugin. Non voglio che abbiano accesso agli account dei miei utenti, tanto meno agli account di amministratore.
Sì, clona assolutamente tutto. Se hai sviluppatori non fidati, potrebbe non essere la cosa migliore. Personalmente, assumerei sviluppatori fidati!
Allo stato attuale, dovresti impegnarti a clonare la struttura di cui hai bisogno (ad esempio, impostazioni, categorie, gruppi, plugin, ecc.) e o mantenerla sincronizzata manualmente, clonarla di nuovo quando necessario, o sviluppare una tua soluzione per automatizzarla.
Anche se ti fidi dei tuoi sviluppatori, potrebbero esserci normative (come il GDPR) che ti impediscono di condividere informazioni personali con persone al di fuori di una certa giurisdizione o che richiedono di ridurre al minimo la quantità di informazioni personali copiate in un altro sistema. Inoltre, un server di sviluppo o di staging esegue software non testato che potrebbe contenere problemi di sicurezza.
Eseguiamo sempre qualcosa di simile sul server di staging immediatamente dopo aver ripristinato il backup dalla produzione, che anonimizza tutti gli utenti tranne lo staff e quelli nel gruppo testusers.
keep_groups = Group.where(name: ['staff', 'testusers']).pluck(:id)
acting_user = User.find(-1)
User.all.each do |u|
next if u.in_any_groups? keep_groups
user = UserAnonymizer.new(u, acting_user).make_anonymous
end