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 的模板?的主要内容,如果未能解决你的问题,请参考以下文章

停止 Heroku 运行 npm start + 运行啥来代替?

hbase中用啥来区分多版本的数据

json 我的Peet's Coffees

我必须做些啥来解决我的项目的“处理器架构之间的不匹配”?

模块解析失败:在部署Heroku时出现意外令牌(14:6)

我们需要啥来创建 CORS? [复制]