12

Vorrei in qualche modo impedire che alcune risorse vengano incluse nella pipeline degli asset nell'ambiente di sviluppo.Escludere determinate risorse dalla pipeline nell'ambiente di sviluppo?

Finora, ho provato quanto segue:

# app/assets/javascripts/application.js.erb 
<% if Rails.env.production? %> 
//= require google_analytics_snippet 
<% end %> 

e

# app/assets/javascripts/application.js.erb  
<% if ENV['RACK_ENV'] == 'production' %> 
//= require google_analytics_snippet 
<% end %> 

Tutto quello che sembra essere il raggiungimento è se non la linea //= require google_analytics_snippet compare nel manifesto. Il codice effettivo nel file google_analytics_snippet.js non viene mai caricato, indipendentemente dall'ambiente quando utilizzo una di queste soluzioni tentate.

C'è un modo per farlo?

Edit:
Io sto usando un file JavaScript denominato olark.js Nel mio esempio, quando ho postato questa domanda. Questa è stata una cattiva scelta di esempio dal Olark ha un rubino che può risolvere il problema. Ho cambiato l'esempio perché sto cercando la soluzione di forma generale.

+0

Avete qualcosa gemmato in Gemfile per olark? Stai solo dipendendo dal file olark.js per includerlo nella tua app? – James

+0

Non sto usando la gemma. Tutto quello che sto usando per Olark è lo snippet JS. Ad ogni modo, non volevo che la domanda riguardasse specificamente Olark. Sto cercando una soluzione più astratta. –

risposta

19

Ho guardato attraverso la fonte delle ruote dentate e ho trovato, che la direttiva il preprocessore funziona sempre prima di qualsiasi motore. Quindi, non è possibile aggiungere alcuna logica condizionale nella sezione delle direttive con ERB o altro motore.

UPDATE

Joshua Peek, answered sulla mia domanda:

La risposta è sì, ma se questo è ciò che stanno cercando di fare:

<% if Rails.env.production? %> 
//= require google_analytics_snippet 
<% end %> 

Prova a modificare:

<% if Rails.env.production? 
require_asset "google_analytics_snippet" 
end %> 
+2

È molto importante dire che il file dovrebbe essere chiamato application.js.erb o la sintassi è sbagliata! –

0

In base all'ambiente di distribuzione, è possibile consultare rack/olark gem.

Si potrebbe allora probabilmente provare qualcosa di simile nella vostra Gemfile:

group :production do 
    gem 'rack-olark' 
end 

Solo un pensiero ..

+0

Grazie, ma sto cercando una soluzione più generale. Olark voleva solo essere un esempio. Ho modificato la domanda. –

Problemi correlati