2015-12-08 15 views
7

Recentemente, nel mio ultimo rilascio su Heroku, ho ricevuto un avviso advising not to use AssetSync.Alternativa alla gemma AssetSync per Heroku

remote: ###### WARNING: 
remote:  You are using the `asset_sync` gem. 
remote:  See https://devcenter.heroku.com/articles/please-do-not-use-asset-sync for more information. 

Il problema originale che stavamo cercando di risolvere utilizzando AssetSync era che stavamo ottenendo una dimensione lumaca enorme causato dalle grandi risorse nella nostra applicazione. Dei 300 MB che Heroku ci consente, probabilmente stavamo usando quasi 230 MB - anche se il nostro repository git è solo di circa 80 MB.

Abbiamo risolto questo problema utilizzando AssetSync per sincronizzare tutte le risorse compilate in un bucket S3 da offrire tramite Cloudfront. Dopo l'esecuzione di AssetSync, abbiamo un hook che elimina tutte le risorse precompilate per ridurre la dimensione dello slug. In sostanza, il flusso di lavoro durante la compilazione lumaca si presentava così:

  1. Let Heroku precompilare il patrimonio
  2. AssetSync sincronizza tutte le attività compilati a S3
  3. Tutte le copie locali dei beni compilati vengono eliminati

L'articolo collegato argomenta alcuni punti sul perché è cattivo e su cosa invece usare.

L'utilizzo di Asset Sync può causare errori. È difficile eseguire il debug, non necessario e aggiunge ulteriore complessità. Non usarlo Utilizzare invece un CDN .

[...]

Ora si dovrebbe utilizzare un CDN invece. Piuttosto che copia le tue risorse su S3 dopo che sono state precompilate, il CDN le prende dal tuo sito web. Ecco alcuni motivi per cui è meglio.

beni canoniche

[...] Essa consente di avere singoli, luoghi autorevoli dove si Archivio informazioni. Se è necessario modificare tali informazioni, è sufficiente che lo sia modificato in un unico punto. [...] Cosa succede se qualcuno ha una distribuzione fallita dopo che le risorse vengono sincronizzate? Cosa succede se qualcuno modifica un file nel bucket S3? Invece di fissare una copia delle risorse, ora è necessario correggere due.

Deploy determinismo

Se stai debug all'interno di un banco prova con bash corsa Heroku e si esegue asset rake: precompilare questo non si limita a modificare la propria copia locale. Lo modifica effettivamente anche la copia su S3. [...] La parte di sincronizzazione di asset_sync può anche non riuscire se c'è un problema tecnico nella rete. Cosa succede se si scrive solo una parte di un file o solo la metà delle risorse viene sincronizzata? Queste cose accadono.

Anche se sono d'accordo con i loro punti, la domanda rimane: qual è il modo consigliato di distribuire un'applicazione Heroku che diventa enorme quando le risorse precompilate sono memorizzate nello slug?

+0

hai capito qualcosa qui? – hso

risposta

-1

La domanda è quali file di risorse stanno rendendo lo slug enorme?

Per impostazione predefinita, la pipeline delle risorse di Rails deve essere utilizzata solo per risorse interne piccole e limitate (come JS, CSS, alcuni loghi, ecc.).

Non è una buona idea archiviare una grande quantità di file esterni o di grandi dimensioni come risorse di Rails per diversi motivi a parte la pipeline (come se fosse anche la dimensione della directory di Git).

+0

Questo non risponde alla domanda ed è anche errato. – sevenseacat

Problemi correlati