неожиданный INDENT в Rails Coffescript после изменения версии Ruby

Исходная проблема

Поменял рубиновую версию (1.9.3 > 1.9.2) и вдруг все кофескрипты стали выдавать unexpected INDENT.

Я трижды проверил несоответствие пробелов/табуляции в файлах, и это не проблема. Когда я комментирую весь скрипт, та же ошибка переходит к следующему/другому файлу coffeescript.

Пробовал с coffee-rails версиями 3.2.1 и 3.2.2. И в том, и в другом успеха нет.

Кто-нибудь может зажечь лампу?

Подробнее

Я нашел причину этого, но не могу понять, почему это должно работать по-разному для разных версий Ruby. Это длинная история, но вот она.

Я использую прием, чтобы объявить статические или динамические геттеры и сеттеры для своих классов. Это что-то вроде:

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: -> (...)

И в этом все дело. :С

Отвечать уже не надо, но если бы кто-нибудь объяснил... Буду рад.


person Alvaro Lourenço    schedule 01.05.2013    source источник
comment
Только что сделал это: первым добавил, первым позвонил, первым прослушал. :(   -  person Alvaro Lourenço    schedule 01.05.2013


Ответы (1)


Этот синтаксис не был разрешен «нарочно», если он был просто разрешен, потому что компилятор отказался генерировать 'a'(...). ID block это звонок

См. эту проблему.

person Ven    schedule 01.05.2013
comment
Да, теперь я вижу. Но... почему один и тот же coffee-rails драгоценный камень в конечном итоге использует разные версии компилятора coffeescript? - person Alvaro Lourenço; 02.05.2013
comment
возможно, вы не тщательно заблокировали свою версию :) - person Ven; 02.05.2013