Ruby版本更改后,Rails Coffeescript中的“意外INDENT”

时间:2013-05-01 18:22:09

标签: ruby-on-rails ruby coffeescript

原始问题

更改了ruby版本(1.9.3> 1.9.2),突然所有coffeescripts开始产生unexpected INDENT

我已经三次检查 space / tabs 文件的不一致性,这不是问题。当我评论整个脚本时,同样的错误会跳转到下一个/另一个coffeescript文件。

尝试使用coffee-rails版本3.2.1和3.2.2。两者都没有成功。

任何人都可以点亮一盏灯吗?

更多细节

我找到了导致这种情况的原因,但我无法理解为什么它对于不同的Ruby版本会有不同的工作方式。这是一个很长的故事,但它就在这里。

我使用技巧向我的类声明静态动态 getter和setter。这就像:

Function::dynamic = (prop, desc) ->
  Object.defineProperty @prototype, prop, desc

Function::static = (prop, desc) ->
  Object.defineProperty @, prop, desc

这为我提供了一种声明这样的属性的方法:

class MyClass
  @static 'accessor'
    get: -> _accessor
    set: (value) -> _acessor = value

我的代码中有大量的,但在Ruby降级之后,代码结构才停止工作。现在我必须在方法的第一个参数后添加逗号。像:

@static 'accessor',
  get: -> (...)

这就是它的全部内容。 :S

回答它不再需要,但如果有人能解释它......我会很高兴。

1 个答案:

答案 0 :(得分:1)

这个语法不是“故意”允许的,只是因为编译器拒绝生成'a'(...)而被允许。 ID block是一个电话

请参阅this issue