Подтвердить что ты не робот

Что нужно настроить для Heroku для обработки шаблонов на основе CoffeeScript?

У меня есть действие create, которое обрабатывает запрос AJAX. На моей машине разработки шаблон с именем create.js.coffee успешно обрабатывается для генерации ответа на javascript. Однако, когда я развертываю в Heroku, приложение жалуется, что не может найти шаблон.

ActionView::MissingTemplate (Missing template /expenses/create with {:handlers=>[:erb, :builder], :formats=>[:js, :html], :locale=>[:en, :en]}. Searched in:
* "/app/app/views"
* "/app"
* "/"
):

Ясно, что обработчик кофе не существует, чтобы препроцитировать *.js.coffee шаблон.

Может ли кто-нибудь предложить, как я могу настроить Heroku для распознавания и обработки этих шаблонов?

Примечание. Heroku успешно выполняет предварительную обработку моих файлов CoffeeScript, которые присутствуют в конвейере активов.

4b9b3361

Ответ 1

Я немного опаздываю на вечеринку, но вот мое решение, как опубликовано на Github.


Я столкнулся с проблемой, когда мой файл create.js.coffee работал в development, но перестал работать в production (на Heroku). Журналы показывают, что Rails даже не ищет обработчик кофе:

2011-10-14T08:26:29+00:00 app[web.1]: ActionView::MissingTemplate (Missing template page_blocks/create, application/create with {:handlers=>[:erb, :builder, :haml], :formats=>[:html, :text, :js, :css, :ics, :csv, :xml, :rss, :atom, :yaml, :multipart_form, :url_encoded_form, :json], :locale=>[:nl, :nl]}. Searched in:
2011-10-14T08:26:29+00:00 app[web.1]:   * "/app/app/views"
2011-10-14T08:26:29+00:00 app[web.1]: ):

Это (важная) часть моего Gemfile:

group :assets do
  gem "sass-rails", "~> 3.1.0"
  gem "coffee-rails", "~> 3.1.0"
  gem "uglifier"
  gem "compass", "~> 0.12.alpha"
end

# asset templates
gem "jquery-rails"
gem "haml"

Только после того, как я переместил coffee-rails вне группы :assets, все стало работать. Возможно, было бы неплохо как-то разъяснить это в readme и, возможно, даже отправить Rails с плагином coffee-rails, размещенным вне группы assets.

Ответ 2

Я даже позже на вечеринку, но у меня была такая же проблема, и там было простое объяснение:

Группа "активы" драгоценных камней в Gemfile предназначена только для разработки. Heroku не загружает эти драгоценные камни в производство, потому что он полагается на свои собственные стабильные версии для своего Asset Pipeline.

Если вы используете специальный камень, который звучит так, как будто он связан с конвейером активов, но на самом деле не принадлежит к стандартному конвейеру (например, драгоценный камень "кофе" ), вы должны сохранить этот драгоценный камень вне группы "Активы".

Я просто испытал эту теорию, и это сработало для меня.

Ответ 3

На гегке-кедре вам нужно добавить корзину на ваш путь в соответствии с самым последним разделом этой страницы Rails 3.1+ Asset Pipeline на кедрах Героку, "Если вам нужно скомпилировать активы во время выполнения, вы должны добавить bin в свой PATH для доступа к среде выполнения JavaScript".