Heroku不会从资产管道加载资产

时间:2014-09-01 06:02:15

标签: ruby-on-rails heroku asset-pipeline

在我的Rails应用程序中,我有css和js,每个动作都是唯一的。

所以用户#new有自己的CSS。它的名称为users_new.css.scss

我将我的应用程序部署到Heroku,而Heroku并没有加载任何资产。您可以看到错误here。我如何解决这个问题,以便Heroku正确预编译并加载资产?

我通读了Heroku's docs on using the asset pipeline,但没有看到任何解决方案。

2 个答案:

答案 0 :(得分:1)

预编译

问题在于timelines_index.js不是precompiled

enter image description here

你可以告诉这个问题的方法是,当你在layout中调用资产时(我认为你正在使用正确的路径助手),Rails会自动引用最新的预编译版本该文件(因此application.js附加MD5 fingerprint

的原因

我相信您需要将自定义文件添加到precompiled_assets数组中:

#config/environments/production.rb
Rails.application.config.assets.precompile += ['timelines_index.js']

这将使Rails能够单独预编译这些资产,允许您在布局中调用它们:

#app/views/layouts/application.html.erb
<%= javascript_include_tag "timelines_index" %>

必须对您希望在布局中调用的所有自定义资源文件执行此操作。


Manifest

正如Anil所述,您可能希望使用Rails的manifest系统将所有资产文件连接到各自的application文件中。

这将消除将文件附加到Rails precompile数组的需要,允许您为各种资产调用单个文件:

#app/assets/javascripts/application.js
//= require_tree .

答案 1 :(得分:0)

添加你的Gemfile

gem 'rails_12factor', group: :production