需要为Heroku配置什么来处理基于CoffeeScript的模板?

时间:2011-09-18 22:34:23

标签: ruby-on-rails-3 heroku coffeescript

我有一个处理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文件。

3 个答案:

答案 0 :(得分:36)

我参加派对有点晚了,但这是我的解决方案,发布在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之后,事情才开始起作用。也许以某种方式在自述文件中明确这一点是个好主意,甚至可能将coffee-rails插件放在assets组之外的Rails中发布。

答案 1 :(得分:2)

我甚至稍后参加派对,但我遇到了同样的问题并且有一个简单的解释:

Gemfile中的“assets”宝石组仅用于开发。 Heroku不会在生产中加载这些宝石,因为它依赖于自己的资产管道的稳定版本。

如果您使用的是一个特殊的宝石,它听起来与资产管道相关但实际上并不属于标准管道(例如“coffeebeans”宝石),那么您应该将该宝石保留在“资产”组之外。

我刚刚测试了这个理论,它对我有用。

答案 2 :(得分:0)

在heroku雪松上,您需要根据本页的最后一部分Rails 3.1+ Asset Pipeline on Heroku Cedar向您的路径添加bin。 “如果需要在运行时编译资源,则必须将bin添加到PATH以访问JavaScript运行时。”