如何在Rails 3.1中使用选项"--bare"来处理CoffeeScript?

13

很大程度上取决于您用于编译CoffeeScript的宝石(gem)。 - Marcel Jackwerth
Rails 3.1 中的标准是 gem 'coffee-script' - Edison Machado
2个回答

20

我建议不要这样做。请看我在Pattern for CoffeeScript modules的答案,了解部分原因。 (“使您的CoffeeScript代码与即插即用的Rails 3.1不兼容”是另一个原因。)最好只使用

window.a = b

甚至更多

@a = b

如果你想要将某些内容导出到全局作用域,可以使用 a = window.b 来代替 a = b

在早期的Rails 3.1版本中启用了编译。这被归类为错误并在RC1中修复。

因此,尽管我强烈建议你不要这样做,但以下是如何重新启用bare编译的方法:

Tilt::CoffeeScriptTemplate.default_bare = true

将其添加到你的environment.rb文件中。


是的,我同意。我正在开始一个新项目,所以我想从正确的方式开始,我会遵循你的策略。谢谢 :) - Edison Machado
1
如果你只有一些CoffeeScript文件,我同意你的观点。但是,如果你为每个类/对象使用一个CoffeeScript文件,你不想为每个文件定义一个全局变量。无论如何,对于这个答案我还是点赞。 - makevoid

4
我建议利用CoffeeScript的闭包并遵循CommonJS模块模式。但有时,只有偶尔,想使用--bare选项也是可以的。在我的情况下,我需要渲染Jasmine spec helper,这样我就可以保持顶级,并利用所述Jasmine specs中的include Sprockets指令。
为此,我创建了“sprockets-blackcoffee”宝石,您可以在此处了解更多信息。 https://github.com/metaskills/sprockets-blackcoffee

1
我现在意识到一切都取决于观点和项目的类型。就像在你的情况下,我同意。 :) - Edison Machado
非常巧妙。在过去的几天中,我在Rails 3.2中使用minitest和CoffeeScript,你的东西一直出现...干杯! :-) - Graham Ashton

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接