Как я могу просматривать промежуточные файлы, обрабатываемые конвейером активов?

У меня есть файл somefile.js.coffee.erb, который обрабатывается конвейером ресурсов Rails. Мой код ERB возвращает некоторую строку, которую Coffee не может проанализировать, что приводит к исключению SyntaxError. Я хотел бы заглянуть в сгенерированный файл somefile.js.coffee или в любой промежуточный файл, обработанный конвейером активов.

Я безуспешно пытался изучить Sprockets:

environment = Sprockets::Environment.new
MyApplication::Application.config.assets.paths.each {|p| environment.append_path p}
rerb = environment['somefile.js.coffee.erb']
rerb.source #=> it's already preprocessed

Или заглянуть в \tmp\cache\assets, но там тоже только предварительно обработанные файлы, дополнительно закрытые отпечатком имени.

Может быть, есть способ подключиться к конвейеру активов, я понятия не имею, как это сделать.

Зачем мне ЭРБ? Для создания заглушек клиентской модели с полями и проверками, соответствующими модели Rails, с помощью KnockoutJS (https://github.com/dnagir/knockout-rails расширено -> https://github.com/KrzysztofMadejski/knockout-rails).

Я использую Rails '~> 3.2.12', звездочки (2.2.2).

Редактировать: я вставил код erb в комментарии ###, чтобы получить доступ к сгенерированному коду, пока файл coffeescript все еще компилируется:

###
<%= somefun() %>
###

Хотя я бы предложил использовать ответ @Semyon Perepelitsa, поскольку он создает файл сценария кофе, как его видит компилятор кофе.


person Kangur    schedule 19.03.2013    source источник


Ответы (2)


Просто временно удалите «кофе» из расширения файла: somefile.js.erb. Вы увидите его промежуточное состояние в /assets/somefile.js, так как он не будет обрабатываться CoffeeScript.

person Simon Perepelitsa    schedule 19.03.2013
comment
Чем проще ответ, тем лучше! Спасибо. Я закончил сам, используя жесткие комментарии ### и поместив код ERB внутрь, но это даже лучше, поскольку он создает целый файл, как его увидит компилятор кофе. - person Kangur; 19.03.2013

Интересно, можно ли поставить <% binding.pry %> прямо перед строкой и возиться, пока не получится правильно. Никогда не пробовал во время компиляции и не использовал coffeescript. Теоретически это должно работать (или стоит попробовать), если вы поместите gem pry в свой Gemfile и сначала запустите bundle.

person pjammer    schedule 19.03.2013