2011-05-23 9 views
12

誰かがこのオプションをRails 3.1で使用するにはどうすればよいですか? 今度はCoffeScriptが各ファイルに.call(this)という機能を追加しますが、これを削除したいと思います。Rails 3.1でCoffeeScriptに "--bare"オプションを使用するにはどうすればよいですか?

編集: 「Can't find variable” error with Rails 3.1 and Coffeescript」と「Pattern for CoffeeScript modules」には必要なものがあります。私は@globalスコープを使用するように私のグローバルバールを変更します。

+0

あなたはCoffeeScriptコンパイルにどのような宝石を使用するかによって大きく異なります。 –

+0

Rails 3.1の 'gem 'coffee-script''標準 –

答えて

20

これを行うことをお勧めします。理由のいくつかは私の答えPattern for CoffeeScript modulesを参照してください。 (「アウト・オブ・ボックスのRails 3.1を使用してのCoffeeScriptのコードに互換性がない作ることは」まだ別の理由である。)より良いだけ

window.a = b 

あるいは

@a = b 

代わりのa = bあなた」を使用しますグローバルスコープに何かをエクスポートしようとしています。

以前のバージョンのRails 3.1では、bareコンパイルが有効でした。これはclassified as a bugで、RC1で修正されました。

は、だから私は強く、このをしないことをお勧めながら、ここに戻って上の裸のコンパイルを有効にする方法は次のとおりです。あなたのenvironment.rb

Tilt::CoffeeScriptTemplate.default_bare = true 

を追加します。

+0

はい、私は同意します。私は新しいプロジェクトを開始するので、正しい方法から始めたいと思います。私はあなたの戦略に従います。ありがとう:) –

+1

あなたはいくつかのcoffeescriptファイルを持っている場合私は同意しますが、各クラス/オブジェクトのためのcoffeescriptファイルを使用する場合は、それぞれにグローバル変数を定義したくありません。とにかく+1の答えは – makevoid

4

私は、CoffeeScriptのクロージャを利用し、CommonJSモジュールのパターンに従うことをお勧めします。しかし時には時には、--bareオプションを使いたい場合もあります。私の場合、Jasmineスペックヘルパーをレンダリングするときに、トップレベルに物事を維持し、Jasmineスペックのinclude Sprocketsディレクティブを利用することもできます。

この目的のために、私はここで学ぶことができる "スプロケット - ブラックコーヒー"宝石を作りました。 https://github.com/metaskills/sprockets-blackcoffee

+1

私は今すべてが視点とプロジェクトの種類に依存していることを認識しています。あなたの場合のように、私は同意します。 :) –

+0

非常に気の利いた。私は、Rails 3.2でminitestとCoffeeScriptを使用しているので、あなたのものはここ数日でたくさん集まってきました...乾杯! :-) –

関連する問題