Heroku 需要配置啥来处理基于 CoffeeScript 的模板?
Posted
技术标签:
【中文标题】Heroku 需要配置啥来处理基于 CoffeeScript 的模板?【英文标题】:What needs to be configured for Heroku to handle templates based on CoffeeScript?Heroku 需要配置什么来处理基于 CoffeeScript 的模板? 【发布时间】:2011-11-19 20:43:18 【问题描述】:我有一个处理 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 文件。
【问题讨论】:
你有没有得到这个答案?我在 Heroku 上遇到了同样的问题。我尝试将以下内容添加到我的 gemfile 中:gem "coffeebeans", :git => git://github.com/marcelloma/coffeebeans.git", :ref => "7b106"
这是对 coffeebeans gem 的拉取请求,以允许 .js.coffee 在视图中,它再次在本地工作,但在 Heroku 上不起作用。
【参考方案1】:
在 heroku cedar 上,您需要按照本页的最后一部分 Rails 3.1+ Asset Pipeline on Heroku Cedar 将 bin 添加到您的路径中。 “如果需要在运行时编译资产,则必须将 bin 添加到 PATH 以访问 JavaScript 运行时。”
【讨论】:
我也需要这个功能,但是当我检查我的 Heroku 配置时,PATH 目前根本没有设置,而不是像您引用的文档中那样具有多个值。你知道这是否正常,并且设置一个只有 /bin 的 PATH 就可以解决问题吗?【参考方案2】:我迟到了,但我也遇到了同样的问题,有一个简单的解释:
Gemfile 中的“资产”组仅用于开发。 Heroku 不会在生产环境中加载这些 gem,因为它的 Asset Pipeline 依赖于自己的稳定版本。
如果您使用的特殊 gem 听起来与资产管道相关,但实际上并不属于标准管道(例如“coffeebeans” gem),您应该将该 gem 放在“资产”组之外。
我刚刚测试了这个理论,它对我有用。
【讨论】:
【参考方案3】:我参加聚会有点晚了,但这是我的解决方案,发布在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
组之后,事情才开始起作用。也许最好在自述文件中明确说明这一点,甚至在发布 Rails 时将 coffee-rails
插件放在 assets
组之外。
【讨论】:
这对我来说非常有效,但不确定为什么会这样。 感谢 Jean,这真的很有帮助! 我想为这个页面上的所有内容投票。这让我发疯了!以上是关于Heroku 需要配置啥来处理基于 CoffeeScript 的模板?的主要内容,如果未能解决你的问题,请参考以下文章