"unexpected INDENT" Ruby 版本更改后的 Rails Coffescript 中



原始问题

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

我已经三次检查空格/制表符文件不一致,这不是问题。当我注释整个脚本时,同样的错误跳转到下一个/另一个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

回答不再必要,但如果有人能解释…我很乐意。

这种语法是"故意"不允许的,它被允许仅仅是因为编译器拒绝生成'a'(...)ID block是一个调用

最新更新