Domanda

Le risorse di precompilazione sul server di produzione sono molto lente. Così ho deciso di ricompilarli sulla macchina per lo sviluppo e di caricare risorse su Amazon S3 di jammit. Tutto è fatto ma ho dei problemi negativi:

  1. Devo includere public/assets directory a git controllo. Perchè se public/assets La directory è vuota sul server di produzione fallisce
  2. Se precompilo le risorse sulla macchina per lo sviluppo application.js Include nell'HTML come compresso e in questo modo ho un codice JS duplicato. Cambiare JS non ha alcun effetto perché precompilato application.js interrompe questo codice.

In questo modo il mio processo di sviluppo include i seguenti passaggi:

  1. Rimuovi le risorse precompilate se ho intenzione di cambiare JS o CSS
  2. Fai alcune modifiche
  3. Beni precompili
  4. Carica le risorse su S3 di jammit-s3
  5. Impegna e spingi le mie modifiche, comprese le risorse al server Git
  6. Distribuire da Capistrano

Le mie domande sono:

  1. È possibile configurare l'ambiente di sviluppo non includere compresso application.js Se ce l'ho dentro public/assets directory?
  2. È possibile configurare l'ambiente di produzione per lavorare con vuoto public/assets directory? Le risorse saranno solo sul server S3.
È stato utile?

Soluzione 2

Ho risolto questo problema includendo le risorse Dir in Gitignore ed escludo un solo file - public/assets/manifest.yml e il server di produzione funziona correttamente ora, cioè config.action_controller.asset_host = "http://assets.example.com" lavori. Richiede solo manifest.yml file

Altri suggerimenti

Per la domanda uno non conosco una soluzione permanente oltre alla corsa:

bundle exec rake assets:clean

Prima di tornare alla modalità di sviluppo. Sarei interessato a vedere se riesci a ignorare le risorse nello sviluppo senza disattivare l'intera pipeline di risorse.

In Production.rb c'è un'opzione per la tua seconda domanda:

# Enable serving of images, stylesheets, and JavaScripts from an asset server
config.action_controller.asset_host = "http://assets.example.com"

Dovrebbe quindi ignorare la directory delle risorse poiché si basa sull'host remoto. Spero possa aiutare.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top