【问题标题】: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 上不起作用。

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


【解决方案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,这真的很有帮助!
    • 我想为这个页面上的所有内容投票。这让我发疯了!
    猜你喜欢
    • 2019-06-14
    • 2014-02-26
    • 2017-02-10
    • 2014-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-18
    相关资源
    最近更新 更多