2011-05-23 11 views
12

Qualcuno sa come posso usare questa opzione in Rails 3.1? Ora CoffeScript mette una funzione con .call(this) su ogni file, ma voglio rimuoverlo.Come posso usare l'opzione "--bare" in Rails 3.1 per CoffeeScript?

MODIFICA: "Can't find variable” error with Rails 3.1 and Coffeescript" e "Pattern for CoffeeScript modules" hanno quello che voglio. Cambierò le mie vars globali per utilizzare l'ambito @global.

+0

Molto dipende da quale gemma si utilizza per la compilazione di CoffeeScript. –

+0

standard 'gem 'coffee-script'' in Rails 3.1 –

risposta

20

Mi raccomando di non farlo. Vedere la mia risposta al Pattern for CoffeeScript modules per alcuni dei motivi per cui. ("Rendere il codice CoffeeScript incompatibile con out-of-the-box Rails 3.1" è un altro motivo.) Meglio usare solo

window.a = b 

o anche

@a = b 

invece di a = b quando si' sta cercando di esportare qualcosa in ambito globale.

Nelle versioni precedenti di Rails 3.1, la compilazione bare era abilitata. Questo era classified as a bug e risolto in RC1.

Così, mentre io caldamente incoraggio a non fare questo, ecco come fare per trasformare la compilazione schiena nuda su: Aggiungi

Tilt::CoffeeScriptTemplate.default_bare = true 

al vostro environment.rb.

+0

Sì, sono d'accordo. Sto iniziando un nuovo progetto, quindi voglio iniziare dal modo giusto, seguirò la tua strategia. Grazie :) –

+1

Sono d'accordo se hai solo alcuni file coffeescript, ma se usi un file coffeescript per ogni classe/oggetto che fai non vuoi definire una variabile globale per ognuno. +1 in ogni caso per la risposta – makevoid

4

Mi raccomando di sfruttare le chiusure di CoffeeScript e seguendo un patter del modulo CommonJS. Ma a volte, solo qualche volta, va bene usare l'opzione --bare. Nel mio caso, quando si esegue il rendering di un helper per le specifiche di Jasmine in modo da poter mantenere le cose al livello più alto e sfruttare anche la direttiva include Sprockets nelle specifiche Jasmine.

A tal fine, ho creato la gemma "sprockets-blackcoffee", che puoi conoscere qui. https://github.com/metaskills/sprockets-blackcoffee

+1

Ora mi rendo conto che tutto dipende dal punto di vista e dal tipo di progetto. Come nel tuo caso, sono d'accordo. :) –

+0

Molto elegante. Le tue cose sono cresciute molto negli ultimi giorni, mentre uso Minitest e CoffeeScript in Rails 3.2 ... Saluti! :-) –